415 Commits

Author SHA1 Message Date
Hepatica
6ab7f062fb Add styles for chat element 2024-01-27 02:09:54 +01:00
Hepatica
c9cc8144b6 Merge branch 'main' of https://github.com/danilt2000/LuckyDiamond 2024-01-27 01:30:41 +01:00
Hepatica
85031adbcf Add formating word for chat 2024-01-27 01:30:40 +01:00
Kostya
aa59faf28a Merge branch 'main' into DevelopCkutls 2024-01-26 15:51:04 +03:00
Kostya
85b7ddd989 Merge branch 'main' of https://github.com/danilt2000/LuckyDiamond 2024-01-26 15:50:57 +03:00
Kostya
9739a91e8a fixed bug with img if claimwinning-money 2024-01-26 15:50:40 +03:00
Kostya
1f10748dd4 added logic for return old-game and fixed bug with upd balance if game-over 2024-01-26 15:40:25 +03:00
Kostya
4f36cdafef added sound about start-game 2024-01-26 15:21:38 +03:00
Hepatica
55af0ccf2d add chat class 2024-01-25 23:53:11 +01:00
Hepatica
92f6a0f953 Add max length 100 2024-01-25 23:36:25 +01:00
Hepatica
10594ef117 delete css role for chat 2024-01-25 23:30:58 +01:00
Hepatica
8b840f56a5 Merge branch 'DevelopHepatica' 2024-01-25 23:18:46 +01:00
Hepatica
5568b6b635 Add chat changes 2024-01-25 23:18:39 +01:00
Hepatica
65e76ddefc Test 2024-01-25 23:06:18 +01:00
Hepatica
b1507a2a1d Add if check if user not log not sending message 2024-01-25 22:55:22 +01:00
Hepatica
4c5fdde2d3 Implement chat logic in vue 2024-01-25 22:45:36 +01:00
Kostya
0ffda8b25d deleted comments peace-code 2024-01-26 00:12:24 +03:00
Kostya
13367b0243 added dinamic-update for balance 2024-01-26 00:06:09 +03:00
Kostya
bd8b3d6dcc added adaptive-styles for element img on square 2024-01-25 23:33:07 +03:00
Kostya
03d7209942 added logic for vision-img on click in circle saper 2024-01-25 23:29:53 +03:00
Kostya
e11011bace added logic for end-game if circles === maxcircles 2024-01-25 23:15:57 +03:00
Kostya
7ae4fcb79e added logic for sounds on play-game 2024-01-25 21:12:41 +03:00
Kostya
e3612f5f01 refactor logic for MAX-btn and added validation for check integer-type 2024-01-25 20:47:21 +03:00
Kostya
fe52c01dae fixed vulnerability with claim winning-amount 2024-01-25 20:04:18 +03:00
Kostya
bf1d593117 refactor logic for get winning-amount 2024-01-25 19:49:44 +03:00
Kostya
706ccf5f79 delete comments and added logic for notification end-game 2024-01-25 19:45:13 +03:00
Kostya
bd78f21615 update logic for end game 2024-01-25 19:37:55 +03:00
Kostya
cb20c9987f delete comments in code 2024-01-25 18:53:38 +03:00
Kostya
9e848d789f refactor validation for click btn in saper 2024-01-24 15:15:53 +03:00
Kostya
6166260f63 added logic to added money on balance 2024-01-23 23:24:53 +03:00
Kostya
d463ef75a1 added vision for winning amount 2024-01-23 22:37:42 +03:00
Kostya
6390376668 added logic for end-game 2024-01-23 22:23:42 +03:00
Kostya
30b6d17075 fixed bug with infinity-game saper 2024-01-23 22:14:42 +03:00
Kostya
07fe48fd1f added if-block for check game user 2024-01-23 22:11:26 +03:00
Kostya
6f69a21c5a added debugger for value 2024-01-23 22:03:09 +03:00
Kostya
455503c484 added debugger 2024-01-23 22:01:22 +03:00
Kostya
883ae2ef23 test 2024-01-23 21:55:05 +03:00
Kostya
cde320628a added logic for end-game 2024-01-21 20:59:44 +03:00
Kostya
610fdde274 added logic for off click on cards if send request 2024-01-21 20:58:09 +03:00
Kostya
2964a58175 deleted console.log from SaperAPI 2024-01-21 20:56:43 +03:00
Kostya
01646ef756 fixed error with import 2024-01-21 20:49:35 +03:00
Kostya
c54db1662f fixed error with fetch 2024-01-21 13:15:45 +03:00
Kostya
e234bf4248 fixed findY in block if x <= 5, saper 2024-01-21 13:08:22 +03:00
Kostya
6c587cadb2 refactor logic for the formula findX, saper 2024-01-21 13:02:39 +03:00
Kostya
38267ffe49 refactor code template for request-send, saper 2024-01-21 12:46:33 +03:00
Kostya
5140b9e457 refactor logic for findX 2024-01-21 12:44:32 +03:00
Kostya
c26e57a972 эfixed bug with connect server, fixed findY/x for server 2024-01-21 12:32:43 +03:00
Kostya
8d98c43568 added handler for /play request, saper 2024-01-21 12:24:40 +03:00
Kostya
e6c9d88c24 fixed bug with deployment on vercel 2024-01-21 12:18:43 +03:00
Kostya
95edb7012e added logic for findX/Y if x <= 5 and fixed bug if click in 5 circle 2024-01-21 12:18:04 +03:00
Kostya
26d4fd8cda added request-body for play saper 2024-01-21 12:15:52 +03:00
Kostya
9c0f839356 added comment for future work game-over 2024-01-21 12:09:26 +03:00
Kostya
1dc5566597 refactor logic for checking maxCircles 2024-01-21 12:06:46 +03:00
Kostya
21b7695ecb refactor code, changed variables 2024-01-21 12:05:49 +03:00
Kostya
693ee3a711 fixed bug with the formula for findX 2024-01-21 12:02:37 +03:00
Kostya
d9d798397b refactor logic, changed naming for variables and added the formula for findX 2024-01-21 12:00:06 +03:00
Kostya
75da63a13b added the formula for findY 2024-01-21 11:57:35 +03:00
Kostya
dd55ef04f0 fixed bug with formula for findX 2024-01-21 11:55:10 +03:00
Kostya
feb82ad244 refactor the formula for findX 2024-01-21 11:49:34 +03:00
Kostya
f5e0336427 fixed bug with +1 circles logic 2024-01-21 11:45:22 +03:00
Kostya
0a7ef70591 added logic for gameCircles 2024-01-21 11:43:36 +03:00
Kostya
43336a4890 added logic for search X 2024-01-21 11:40:34 +03:00
Kostya
dc7cc3a700 added template for logic get X-Cordinate for send request /play, saper 2024-01-21 11:28:40 +03:00
Kostya
8fdd35c283 fixed bug with deployment on vercel 2024-01-21 11:18:37 +03:00
Kostya
2717141904 added test logic for play in saper 2024-01-21 11:16:47 +03:00
Kostya
a59b2ce666 fixed bug without deep in flippedcards watcher 2024-01-21 10:57:57 +03:00
Kostya
543fef319b refactor watcher for flippedcards 2024-01-21 10:55:14 +03:00
Kostya
aa4f3583fd fixed bug with type object 2024-01-21 10:51:55 +03:00
Kostya
a3ddd32035 refactor, added watcher for flippedcards 2024-01-21 10:50:08 +03:00
Kostya
469a579cf1 fixed bug with type object - flippedcard 2024-01-21 10:36:19 +03:00
Kostya
dac434e39e test for checked value flippedcards 2024-01-21 10:31:11 +03:00
Kostya
442f38b1a6 added logic for off/on pointer-events if start-game, saper 2024-01-21 10:00:28 +03:00
Hepatica
29806252e3 delete await 2024-01-21 03:28:36 +01:00
Hepatica
c30dbd9326 Fix position of property 2024-01-21 03:26:43 +01:00
Hepatica
154b6b2dd5 final test 2024-01-21 03:14:54 +01:00
Hepatica
1e34ff841f псачвпва авп пв 2024-01-21 03:04:41 +01:00
Hepatica
89589bb462 вапрп ав пав рпа 2024-01-21 03:02:17 +01:00
Hepatica
a22781b615 gfdgfdgdfgf d 2024-01-21 02:53:48 +01:00
Hepatica
45bf25a55f gfdgfdgfd gfd 2024-01-21 02:51:48 +01:00
Hepatica
80b1f07861 павпавпававппвап 2024-01-21 02:49:44 +01:00
Hepatica
b950b893dc павпвапавпва 2024-01-21 02:38:38 +01:00
Hepatica
d639302315 hsdhfdhsfdh 2024-01-21 02:20:54 +01:00
Hepatica
3bafc814b8 add access 2024-01-21 01:18:36 +01:00
Hepatica
4ad6de5082 test 2024-01-21 00:21:48 +01:00
Hepatica
108c350f2d Refactor 2024-01-21 00:17:34 +01:00
Hepatica
c60b8850a7 delete await 2024-01-21 00:07:21 +01:00
Hepatica
fa9270cb76 Delete no cors 2024-01-20 23:59:54 +01:00
Hepatica
858d11b57d Add to no cors 2024-01-20 23:52:13 +01:00
Hepatica
f3df95dd8b change property name 2024-01-20 23:41:55 +01:00
Kostya
4a1a998366 fixed value balance in amountdeposit, saper 2024-01-21 01:10:55 +03:00
Kostya
42d5b47a9f fixed amountdeposit value from api, saper 2024-01-21 01:07:55 +03:00
Kostya
d1be8d4cb9 fixed template for code-method in clickedbtnchoice, saper 2024-01-21 01:00:42 +03:00
Kostya
a2e51b5c7f fixed clicked-btn on max 2024-01-21 00:56:17 +03:00
Kostya
a7064a716f added logic for check balance user 2024-01-21 00:45:20 +03:00
Kostya
6bbd7e0195 added notification about start-game in saper 2024-01-21 00:38:23 +03:00
Kostya
041f0c19e4 added styles and logic for checkvalidation, erorbtn and clickplaybtn 2024-01-21 00:31:32 +03:00
Kostya
0f02a92b23 added style for disabled game 2024-01-21 00:01:01 +03:00
Kostya
c5746aea6b added API to get-userdata for saper 2024-01-20 23:51:20 +03:00
Kostya
7bb8d4d504 refactor logic for request 2024-01-20 23:11:02 +03:00
Kostya
5e5a224157 added delete old slider if have new value 2024-01-20 22:55:15 +03:00
Kostya
5da7d15729 added if-block for check crystal count 2024-01-20 22:48:05 +03:00
Kostya
5ced3cff2d fixed styles and type slider 2024-01-20 22:33:47 +03:00
Kostya
590aa3aafb changed dynamics styles for slider 2024-01-20 21:49:52 +03:00
Kostya
38d86f7b73 changed slides-per-view 2024-01-20 21:12:08 +03:00
Kostya
4bdad0332b added spacebetween for elements 2024-01-20 21:06:36 +03:00
Kostya
8739c75450 fixed styles for slider elements 2024-01-20 20:48:03 +03:00
Kostya
ef80ce25cb fixed styles for btn in slider 2024-01-20 20:38:50 +03:00
Kostya
527d40347d delete styles for slider 2024-01-20 20:32:50 +03:00
Kostya
e360977411 refactor logic for save array 2024-01-20 20:28:21 +03:00
Kostya
65e59d0100 refactor logic for send request 2024-01-20 20:02:42 +03:00
Kostya
e9e1f95535 fixed bug with func in step-vision 2024-01-20 13:31:55 +03:00
Kostya
7d64bd285f fixed bug with styles 2024-01-20 13:24:58 +03:00
Kostya
ec54e06431 fixed bug with index type 2024-01-20 13:13:51 +03:00
Kostya
70cb8c6564 fixed bug with 0-step 2024-01-20 13:05:38 +03:00
Kostya
506f508924 changed styles for btns in slider 2024-01-20 13:01:01 +03:00
Kostya
07b2574436 fixed bug with func for step 2024-01-20 12:59:47 +03:00
Kostya
32f962ac64 changed template for slider 2024-01-20 12:51:43 +03:00
Kostya
32f6af3655 fixed bug with func 2024-01-20 12:50:37 +03:00
Kostya
eaef153740 added method for vision step 2024-01-20 12:44:14 +03:00
Kostya
ae4f3f5cdd fixed swipe for slider 2024-01-20 12:25:19 +03:00
Kostya
2bf2336ceb fixed bug with navigation slider, changed styles for slider 2024-01-20 12:20:35 +03:00
Kostya
b513c1f8d9 changed styles for slider 2024-01-20 12:05:30 +03:00
Kostya
224a39270b fixed navigation for slider 2024-01-19 23:30:27 +03:00
Kostya
4098143a3d fixed bug with width for sliders 2024-01-19 23:23:50 +03:00
Kostya
bbb446ba29 changed type slider 2024-01-19 23:18:03 +03:00
Kostya
2cb3dc7c6c remove space-between for slides 2024-01-19 23:12:04 +03:00
Kostya
61f0a06e8c fixed bug with send request and ref code for slider 2024-01-19 23:05:30 +03:00
Kostya
40ebdd7bad added vision for swiper 2024-01-19 23:03:28 +03:00
Kostya
e360363dca fixed slider for host 2024-01-19 22:57:03 +03:00
Kostya
e74e51b35e added request for get percentage-steps in saper-game 2024-01-19 21:20:21 +03:00
Kostya
b25141b781 changed margin for btn-deposit in payments-modal 2024-01-19 19:56:11 +03:00
Kostya
5942e24f9f Merge branch 'DevelopCkutls' 2024-01-19 19:48:09 +03:00
Kostya
c09f895260 added text about promocode-status in payments-modal, promocode-input 2024-01-19 19:47:55 +03:00
Kostya
e06d9acb10 fixed text in notification abou money-operation 2024-01-19 19:10:26 +03:00
Kostya
c42a697e4b Merge branch 'DevelopCkutls' 2024-01-19 19:07:39 +03:00
Kostya
b0f21d5dfc fixed notification text 2024-01-19 19:06:22 +03:00
Kostya
8c248b0109 added event-listener click for crystals amount in sapergame 2024-01-19 18:31:31 +03:00
Kostya
dd48dbf940 added slider in saper-page, saper-menu 2024-01-19 15:23:43 +03:00
Kostya
0618396d8b changed styles for icon-user in profile 2024-01-19 14:44:31 +03:00
Kostya
c20832953f refactor styles for payments-mobile 2024-01-19 14:29:37 +03:00
Kostya
eae674ba54 refactor styles for chat 2024-01-19 14:00:06 +03:00
Hepatica
6108498aaf small refactor in ChatLogic 2024-01-15 22:03:49 +01:00
Hepatica
3e7d5b39bc update console log in webSocket reconnection 2024-01-15 22:01:11 +01:00
Hepatica
eec9c7aa02 Add on close connection reconect to web sockets 2024-01-15 21:58:00 +01:00
Kostya
e2713f5ff8 added vision chat from server in client 2024-01-15 23:16:57 +03:00
Hepatica
f193fea9d2 Add chat logic class for web sockets 2024-01-15 20:29:32 +01:00
Kostya
63e4c8122c added styles for payments-mobile 2024-01-13 22:00:08 +03:00
Kostya
7f31d89255 added some styles for payments-mobile 2024-01-13 12:18:50 +03:00
Kostya
ad804c3dea added template for payments-mobile, add show for payments-mobile in profile-mobiile 2024-01-13 12:00:37 +03:00
Kostya
d0477a3c12 added file for paymentsmodal on mobile 2023-12-26 22:32:06 +03:00
Kostya
8df8b22265 refactoring profile-mobile page 2023-12-26 21:43:45 +03:00
Kostya
aa72ee65d1 fixed styles for captcha in payments modal 2023-12-23 15:31:03 +03:00
Kostya
f199babb64 fixed icons user url 2023-12-23 15:07:54 +03:00
Kostya
31d17d71d9 added styles from ld-test server 2023-12-23 10:26:59 +03:00
Kostya
1145907d2d Merge branch 'DevelopCkutls' 2023-12-23 10:18:16 +03:00
Kostya
b862ee1856 added media request for profile 2023-12-23 10:16:26 +03:00
Kostya
58f2d1df5c added media request for 1200-1399px 2023-12-23 10:04:55 +03:00
Kostya
f0fcdd1924 added template styles media for 1200-1399px 2023-12-23 09:13:08 +03:00
Kostya
dd61c6cb3c added media request for 1400-1600px 2023-12-21 17:23:54 +03:00
Kostya
e710bf3571 added template for profile-mobile with styles 2023-12-21 17:04:47 +03:00
Kostya
d01eda328d added styles for error with dont clicked checkbox in payments modal 2023-12-21 16:37:16 +03:00
Kostya
0624497e48 Merge branch 'DevelopCkutls' 2023-12-21 00:36:34 +03:00
Kostya
89ba138405 added some styles for profile-mobile 2023-12-20 18:48:10 +03:00
Kostya
e6cfb7a32d fixed bug with infinity notification 2023-12-20 17:50:37 +03:00
Kostya
4c4355ce57 added router push on clicked img in aside-menu and in wallet in header component 2023-12-20 17:41:47 +03:00
Kostya
66b4062f4d fixed bug with disabled btn in created modal payments 2023-12-20 17:35:27 +03:00
Kostya
613ea20bb7 added logic for notification 2023-12-20 17:29:02 +03:00
Kostya
33d40cc65a added event listener for notification money withdraw 2023-12-20 16:53:19 +03:00
Kostya
a407f85c91 added event for close modal 2023-12-20 16:32:14 +03:00
Kostya
a8d8f27796 added validation for check on true values and undisabled btn for withdraw 2023-12-20 16:29:03 +03:00
Kostya
42c14b06d8 fixed bug 2023-12-19 18:34:40 +03:00
Kostya
1a00c5b466 changed input type 2023-12-19 18:29:03 +03:00
Kostya
dac137e02e changed in wihdraw request claiming arguments 2023-12-19 18:25:28 +03:00
Kostya
8f88e9beb9 changed logic 2023-12-19 18:14:55 +03:00
Kostya
77d918e659 added request post to withdrawmoney 2023-12-19 18:03:31 +03:00
Kostya
e2c5e87522 added captcha in paymentsmodal withdraw 2023-12-19 17:33:09 +03:00
Kostya
4c42b77fa8 Merge branch 'main' into DevelopCkutls 2023-12-19 13:44:31 +03:00
Hepatica
13cc0d3e97 add captcha 2023-12-17 17:35:16 +01:00
Hepatica
4393191315 Merge branch 'main' of https://github.com/danilt2000/LuckyDiamond 2023-12-17 16:35:10 +01:00
Hepatica
fc32cfbaa3 Fix url bug 2023-12-17 16:35:04 +01:00
Kostya
d4c5c2108d fixed conflict with merging 2023-12-17 18:31:05 +03:00
Kostya
2a0c209061 added debuger for check value url in payments modal 2023-12-17 18:29:59 +03:00
Hepatica
5d1c2fdb48 delete captcha 2023-12-17 16:22:19 +01:00
Hepatica
32fce904d4 add test captcha 2023-12-17 16:15:57 +01:00
Kostya
8138c53ee4 added template and styles for profilemobile 2023-12-17 14:51:07 +03:00
Kostya
0632e374e1 merging with DevelopCkutls 2023-12-17 14:15:59 +03:00
Kostya
54de1e997d refactor method checkoffbtn in payments modal 2023-12-17 14:15:07 +03:00
Kostya
2c87c2411f deleted comment for url 2023-12-17 13:17:31 +03:00
Kostya
43ee274787 changed checking on completed tasks in payments modal 2023-12-17 13:13:43 +03:00
Kostya
24a8298135 added test v. for method checkoffbtn payments modal 2023-12-17 13:13:11 +03:00
Kostya
f9952c9d4a fixed conflict merging 2023-12-17 12:57:14 +03:00
Kostya
c75c950ec4 fixed offbtn method in payments modal 2023-12-17 12:56:00 +03:00
Kostya
dca2ceceb0 added debuger 2023-12-17 12:18:55 +03:00
Kostya
d62b06fd55 fixed checkbox and method offbtn 2023-12-17 12:16:51 +03:00
Kostya
2b49eb168e added test logic for input-checkbox in payments modal 2023-12-17 12:12:06 +03:00
Kostya
f763c1f301 added mixin for mobile check 2023-12-16 15:15:24 +03:00
Kostya
4960d1dbd6 created profilemobile page template and grid 2023-12-16 14:50:58 +03:00
Kostya
704090a5e1 changed template and margin for menu-mobile 2023-12-16 14:42:47 +03:00
Kostya
7c56fed55e fixed styles for menu-mobile 2023-12-16 14:38:51 +03:00
Kostya
7ef9103efc deleted icons and changed icon diamond 2023-12-15 21:24:29 +03:00
Kostya
ddbf55ddee refactor footer mobile 2023-12-15 21:20:29 +03:00
Kostya
c5363e5a81 refactor header-mobile 2023-12-15 20:56:59 +03:00
Kostya
e856182e63 changed template mobile, separation his on components header and menu 2023-12-14 21:06:51 +03:00
Kostya
51656e5479 refactor card in saper game 2023-12-14 20:51:15 +03:00
Kostya
5836c16003 Merge branch 'main' into DevelopCkutls 2023-12-14 20:26:56 +03:00
Kostya
2079f6b4dc fixed getting money in profile page 2023-12-14 20:25:03 +03:00
Kostya
5b4ab39655 fixed get auth and search token/code 2023-12-14 20:21:40 +03:00
Kostya
63dacbf122 added test for auth and search token get from cookie in profile page 2023-12-14 20:18:16 +03:00
Kostya
c1ed27254a added vision for balance from request in profile page 2023-12-14 20:15:24 +03:00
Kostya
f797aa17d7 changed logic for offbtn in watcher, payments modal 2023-12-13 23:55:38 +03:00
Kostya
74b543afe7 fix bug with checker in payments modal 2023-12-13 23:53:59 +03:00
Kostya
de8aacbc3d Merge branch 'main' of https://github.com/danilt2000/LuckyDiamond 2023-12-13 23:52:01 +03:00
Kostya
64199167f6 added checking amount 2023-12-13 23:51:57 +03:00
Hepatica
eaa721aab6 Merge branch 'main' of https://github.com/danilt2000/LuckyDiamond 2023-12-13 21:13:06 +01:00
Hepatica
445e75ced7 Change amount number 1->0 2023-12-13 21:13:04 +01:00
Kostya
d22fc6499c added styles for withdraw modal, payments modal 2023-12-13 23:10:43 +03:00
Kostya
24f928ed84 added styles for btn-dep in payments modal 2023-12-13 22:59:56 +03:00
Kostya
80879db5f1 added styles for checkbox in payments modal 2023-12-13 22:55:16 +03:00
Kostya
3dbefb199e added user img in profile page 2023-12-13 22:28:06 +03:00
Kostya
b1f74469db Merge branch 'main' of https://github.com/danilt2000/LuckyDiamond 2023-12-13 22:23:35 +03:00
Kostya
4806f65be6 added username getting 2023-12-13 22:23:00 +03:00
Hepatica
3577588268 Update README.md 2023-12-13 20:21:42 +01:00
Kostya
930fa2be01 added debuger for checking status offbtn 2023-12-13 21:06:20 +03:00
Kostya
0a76103b95 fixed bug with off btn v.2 2023-12-13 21:04:52 +03:00
Kostya
8e589baa27 fixed bug with off btn 2023-12-13 21:01:16 +03:00
Kostya
95cbda6842 added off btn if dont have response 2023-12-13 20:57:48 +03:00
Kostya
3ce04dbf22 Merge branch 'main' of https://github.com/danilt2000/LuckyDiamond 2023-12-13 20:52:57 +03:00
Kostya
c505d88aee added redirected on click btn 2023-12-13 20:52:14 +03:00
Hepatica
cee88f8632 remove api word 2023-12-13 18:44:53 +01:00
Hepatica
52335f9d59 Merge branch 'main' of https://github.com/danilt2000/LuckyDiamond 2023-12-13 18:41:37 +01:00
Hepatica
4ae4be04c4 change payment api call 2023-12-13 18:40:35 +01:00
Kostya
7618c902f4 fixed return in claimmoney method 2023-12-13 20:38:51 +03:00
Kostya
33a43547d2 Merge branch 'main' of https://github.com/danilt2000/LuckyDiamond 2023-12-13 20:33:17 +03:00
Kostya
2410a8845c fixed merging with developckutls 2023-12-13 20:32:58 +03:00
Kostya
6b1bcade58 changed api path in claimmoney method 2023-12-13 20:30:39 +03:00
Hepatica
9e2606502a comment gettingMoneyOperation 2023-12-13 18:05:44 +01:00
Kostya
554cc88c4c added acces for testing server working 2023-12-13 17:58:42 +03:00
Kostya
ec2f71009c deleted mode for post 2023-12-13 17:53:34 +03:00
Kostya
91d6c93a45 added for testing, mode no-cors 2023-12-13 17:41:55 +03:00
Kostya
e58b3bede8 changed data in claimmoney method 2023-12-13 17:29:29 +03:00
Kostya
40cacebed7 added test code for checking working a request on spsystems, payments modal 2023-12-13 17:23:23 +03:00
Kostya
3d276ffc13 added favicon for index.html 2023-12-13 17:06:14 +03:00
Hepatica
c2d6553c76 change name of api point 2023-12-11 23:12:33 +01:00
Hepatica
99b30abdd2 change icon 16 -> 32 2023-12-10 19:39:39 +01:00
Hepatica
940cdacebd change icon + add new 2023-12-10 19:38:31 +01:00
Kostya
4cbb23c988 fixed jumping in chat, writecomponent 2023-12-09 13:43:38 +03:00
Kostya
fe59112da8 changed template for firstline gamemode, homepage 2023-12-09 13:30:20 +03:00
Kostya
924ca9ae6b fixed bug with auth card discord in header component for a laptop 2023-12-08 22:26:37 +03:00
Kostya
d4ef038ed1 added width for auth card discord for a laptop 2023-12-08 22:23:33 +03:00
Kostya
9f0ffde2de fixed adaptive for a laptop 1200-1399px 2023-12-08 14:59:47 +03:00
Kostya
776b85186f fixed adaptive for laptop 1400-1600px 2023-12-08 14:52:31 +03:00
Kostya
09088e5675 test 2023-12-06 17:24:46 +03:00
Kostya
a290e3e3c2 added width for header-balance card, header component 2023-12-06 13:51:31 +03:00
Kostya
79256c1bcf Merge branch 'main' into DevelopCkutls 2023-12-06 13:48:44 +03:00
Kostya
efa6b725f4 fixed font-size for header 2023-12-06 13:36:44 +03:00
Kostya
48e24cee54 changed in discord-card % -> px 2023-12-06 13:24:30 +03:00
Kostya
b7e4c3a452 fixed btn in discord-card, headercomponent 2023-12-06 13:23:07 +03:00
Kostya
2f6b84ef1a deleted some styles in saper-profile pages 2023-12-06 12:46:55 +03:00
Kostya
e5038e89c3 added listener on click enter, chatcomponent - writechatcomponent 2023-12-06 12:35:45 +03:00
Kostya
6285eef3ed refactor profile btns, profilepage 2023-12-06 12:28:00 +03:00
Kostya
7642dc1cb5 changed padding for btns deposit-withdraw profilepage 2023-12-06 12:22:27 +03:00
Kostya
f0ef3f05cf changed icons for btn deposit-withdraw in profile page 2023-12-06 12:09:21 +03:00
Kostya
58c1708021 changed width and styles for profile placing, profile page 2023-12-06 12:05:10 +03:00
Kostya
097e41fb7f added test width, height for diamond-icon 2023-12-06 11:59:46 +03:00
Kostya
7d59e6caf0 fixed margin in transaction history, profilepage 2023-12-06 11:55:46 +03:00
Kostya
54e38236eb fixed bug with added history from arrayhistory in profilepage 2023-12-06 11:53:08 +03:00
Kostya
cebf9a4eae added methods for get data in profilepage 2023-12-06 11:51:54 +03:00
Kostya
10d73921bc added margin for btns-diamonds in paymentsmodal component 2023-12-06 11:41:14 +03:00
Kostya
ba963c0a4d added logic on click btn in paymentsmodal component 2023-12-06 11:40:02 +03:00
Kostya
95f3fa0719 added logic for Ðbtn click in saperpage 2023-12-06 11:33:39 +03:00
Kostya
6b28e3b39c changed template and added styles for modal payments in paymentsmodal component 2023-12-06 11:00:17 +03:00
Kostya
1f82c56905 added mocks for paymentsmodal component 2023-12-06 10:41:53 +03:00
Kostya
44d4db9f24 changed template for paymentsmodal and styles 2023-12-05 21:56:41 +03:00
Kostya
6d17b9bd67 added logic for fliper square in saper-game block, saperpage 2023-12-05 20:23:41 +03:00
Kostya
44b6a1e828 added circles in saper-game block in saperpage 2023-12-05 19:30:29 +03:00
Kostya
f6c1feb9ea changed height for chat and for block saper-game in saperpage 2023-12-05 19:21:02 +03:00
Kostya
1408dc303d changed margin in homepage 2023-12-05 19:14:06 +03:00
Kostya
19c67d68d2 changed height for chat component in profilepage 2023-12-05 00:02:17 +03:00
Kostya
fd8112667d added listener for click on logo img, headercomponent 2023-12-05 00:00:03 +03:00
Kostya
a68b8c83fa import inter fonts in index.html, changed px -> % in saperpage 2023-12-04 23:56:59 +03:00
Kostya
479e6b9f4b added info card in saper-game, saperpage 2023-12-04 23:01:54 +03:00
Kostya
85c88f22b2 upd template for saper-game, saperpage, added field for game 2023-12-04 22:44:38 +03:00
Kostya
0bcb077309 added template for saper-game, saperpage 2023-12-04 22:23:16 +03:00
Kostya
cb20a1e053 deleted debugger for route 2023-12-04 14:26:50 +03:00
Kostya
c4b6f9f0f1 fixed bug with class header-nav-now, header component 2023-12-04 14:24:46 +03:00
Kostya
acbf2420cb upd debuger 2023-12-04 14:21:46 +03:00
Kostya
0f9a55fd1d added console log for debugging route 2023-12-04 14:16:56 +03:00
Kostya
2545cf0f83 fixed route vision in header component 2023-12-04 14:06:24 +03:00
Kostya
9bbb2242ef changed title for vue project 2023-12-04 13:59:16 +03:00
Kostya
ef74c0f5d8 changed margin-top for mobile v. in homemobile page 2023-12-04 13:57:27 +03:00
Hepatica
77ee5b31f8 Merge pull request #3 from danilt2000/DevelopCkutls
Added home-mobile page, Profile page
2023-12-03 23:02:10 +01:00
Hepatica
0bc620d1bf Merge branch 'main' into DevelopCkutls 2023-12-03 23:00:40 +01:00
Kostya
b53444840e refactor px -> % in diamonds-btns, saperpage 2023-12-03 11:05:19 +03:00
Kostya
a9562d15e4 fixed margin-padding for diamonds btns, saperpage 2023-12-03 11:04:23 +03:00
Kostya
a59c750175 changed bg-two styles, saperpage 2023-12-03 11:00:19 +03:00
Kostya
af490996dd added two-bg with filter blur, saperpage 2023-12-03 10:57:00 +03:00
Kostya
525c35fb45 added blur filter in saperpage 2023-12-03 10:54:36 +03:00
Kostya
aed1463e36 changed px -> % in saperpage 2023-12-03 10:43:10 +03:00
Kostya
4a825daf61 delete default css style for btn-focus in saperpage 2023-12-03 10:16:02 +03:00
Kostya
efb3262315 changed height and padding-top for saper and saper-start window, saperpage 2023-12-03 10:15:22 +03:00
Kostya
bd795fce1f added margin and changed cursor for all btns, saperpage 2023-12-03 10:14:34 +03:00
Kostya
0c85ce289f added styles and template for steps-btns, saperpage 2023-12-03 10:12:14 +03:00
Kostya
6d5dbd0804 added styles for btns, saperpage 2023-12-03 10:06:07 +03:00
Kostya
8801f47f76 added styles for diamond input and some styles for btns start and claim, saperpage 2023-12-03 10:03:08 +03:00
Kostya
fa45f06f4b changed margin-top for crystal-icon, saperpage 2023-12-03 09:21:40 +03:00
Kostya
a987e9d64b added vision from mocks in btns, saperpage 2023-12-03 09:09:50 +03:00
Kostya
9802ee3dbf added styles for btns in saper-start window, saperpage 2023-12-03 09:06:20 +03:00
Kostya
e33156e70f added import for sapernumbers, mocks. Saperpage 2023-12-03 09:01:29 +03:00
Kostya
5d2906e23a added mocks for saperpage 2023-12-03 09:00:22 +03:00
Kostya
feb88a8e08 added styles for text in input, saper page 2023-12-03 08:55:06 +03:00
Kostya
a9f0ad9a10 added styles for text and input in saperpage 2023-12-03 08:53:19 +03:00
Kostya
f3161918e3 added template for saper-start window 2023-12-03 08:41:02 +03:00
Kostya
3e1406a60c added style for saper-start window in saperpage 2023-12-03 08:28:18 +03:00
Kostya
bd8c98a1bc added bg for saper and padding for saper content, changed height chat in saperpage 2023-12-03 08:24:36 +03:00
Kostya
4b64ac2aed changed template for saperpage 2023-12-03 08:20:45 +03:00
Kostya
693b4bfd72 added css file for saperpage 2023-12-03 08:16:02 +03:00
Kostya
e1ee4849d2 changed template for saper-start window in saperpage 2023-12-03 08:14:56 +03:00
Kostya
48729352d2 built a grid for saper page 2023-12-03 08:11:27 +03:00
Kostya
61d435eda2 added path for saper and added sapergame page 2023-12-03 08:02:04 +03:00
Kostya
77c8f47f53 added media for some small media for a laptop 2023-12-03 07:54:21 +03:00
Kostya
932543124b changed font-size and margin, home page, media for a laptop 2023-12-03 07:48:12 +03:00
Kostya
47939e7162 changed width and margin for line-img, home page, media for a laptop 2023-12-03 07:46:09 +03:00
Kostya
27312e89c5 changed font-size for title in first line, home, media for a laptop 2023-12-02 21:58:56 +03:00
Kostya
feea81f00c changed padding for btns in gamemode section, home page, media for a laptop 2023-12-02 21:56:08 +03:00
Kostya
fe59e5237e changed height for chat 2023-12-02 21:46:09 +03:00
Kostya
f31978b22d added margin for icons-btns in footer, home-mobile 2023-12-02 21:33:37 +03:00
Kostya
c70714fc86 fixed margin for write box in home page, for a laptop media 2023-12-02 21:20:35 +03:00
Kostya
5b555d52a0 fixed chat width and margin for write in home page, media for a laptop 2023-12-02 21:18:28 +03:00
Kostya
39a1ced127 fixed margin-top for main gamemode, home page, media for a laptop 2023-12-02 21:14:21 +03:00
Kostya
1febf82483 changed px -> em in media for a laptop, home page 2023-12-02 21:09:31 +03:00
Kostya
6b633e9326 added beta v. for a laptop home page 2023-12-02 21:08:00 +03:00
Kostya
dc433e7702 added adaptive for a laptop(1280px), incomplete to the end 2023-12-02 20:53:02 +03:00
Hepatica
7fb400b559 fix bug with money 2023-12-02 16:19:33 +01:00
Hepatica
9e2a7136f4 add removing balance 2023-12-02 06:51:00 +01:00
Hepatica
1abb58e267 ad then events 2023-12-02 06:46:25 +01:00
Hepatica
05fe9d98ae fix url 2023-12-02 06:32:51 +01:00
Hepatica
837fc2a6f3 second change 2023-12-02 06:31:24 +01:00
Hepatica
c64b41545d Change rest method 2023-12-02 06:30:55 +01:00
Hepatica
98a39ee763 add access control 2023-12-02 06:14:06 +01:00
Hepatica
cd93db0d22 publish 2023-12-02 06:10:36 +01:00
Hepatica
4f44fa9255 add no cors 2023-12-02 06:02:39 +01:00
Hepatica
38e9b34df6 change get method 2023-12-02 05:50:18 +01:00
Hepatica
81672d7265 delete no cors 2023-12-02 05:33:25 +01:00
Hepatica
0fa501cfee delete error label 2023-12-02 05:31:05 +01:00
Hepatica
59c0457f91 fix bugs 2023-12-02 05:29:29 +01:00
Hepatica
0d78b3bd13 add no cors mod to API for getting money 2023-12-02 05:18:01 +01:00
Hepatica
3744f7d5ee fix small bug with getting money 2023-12-02 05:13:41 +01:00
Hepatica
2ea6de645a add get money funcs 2023-12-02 05:10:45 +01:00
Hepatica
c511585508 change json authtoken value 2023-12-02 03:24:41 +01:00
Hepatica
152fb6f0ee change json return value 2023-12-02 03:21:15 +01:00
Hepatica
184cb3d34a delete mods 2023-12-02 03:16:07 +01:00
Hepatica
963e563855 add no cors to post request 2023-12-02 02:41:30 +01:00
Hepatica
40e369ea12 change comment line 2023-12-02 02:32:53 +01:00
Hepatica
b4af934922 Change backend url for testing 2023-12-02 02:29:48 +01:00
Hepatica
e516edafdc add auth connection with backend part 2023-12-02 02:27:30 +01:00
Kostya
affddb7cbe added router push on click home-icon in home-mobile 2023-11-30 13:32:06 +03:00
Kostya
32f1c93dba refactor home-mobile units of measurement, px -> %, em 2023-11-30 13:27:10 +03:00
Kostya
2e1cea27fb refactor styles footer-mobile, home-mobile. Change template and styles for icons-btn 2023-11-30 13:04:01 +03:00
Kostya
afbd0f68a6 refactor styles for mobile v., added btn in img and styles for btn-img 2023-11-30 12:53:42 +03:00
Kostya
950df68981 added template for footer-mobile 2023-11-30 12:49:00 +03:00
Kostya
9525e2714d added template for home-mobile 2023-11-29 16:13:47 +03:00
Kostya
2b44078371 added styles for btn home-mobile 2023-11-29 16:00:18 +03:00
Kostya
405d06cc46 added styled and refactor styles for home-mobile 2023-11-29 15:54:43 +03:00
Kostya
3042801dc3 refactor styles for header and added margin for main 2023-11-29 15:40:12 +03:00
Kostya
4a59b150db refactor template home-mobile 2023-11-29 15:33:12 +03:00
Kostya
a74f177780 added scroll for home-mobile 2023-11-27 18:06:44 +03:00
Kostya
cc2914380d added template for gamemodes block in mobile-home 2023-11-27 18:03:32 +03:00
Kostya
74f50014ac changed template for main 2023-11-27 14:42:10 +03:00
Kostya
7d2852552b refactor styles for header in mobile 2023-11-27 14:33:50 +03:00
Kostya
1a3312c809 added styles for mobile-header 2023-11-26 18:35:39 +03:00
Kostya
b246e5adb6 building grid for mobile v. 2023-11-26 18:15:34 +03:00
Kostya
5ea14bc077 added test logic for adaptive 2023-11-26 18:06:52 +03:00
Kostya
5a7226f35e refactor, changed px -> %/em in profile page 2023-11-26 17:48:43 +03:00
Kostya
e5542ab56b changed margin in payments card, profile 2023-11-26 17:27:25 +03:00
Kostya
29c426b774 added dynamic styles for color transactions in profile 2023-11-26 17:26:34 +03:00
Kostya
e9807e0efb added vision from array in profile page, payments section 2023-11-26 17:14:23 +03:00
Kostya
3d86619802 added logic for accept data from modal 2023-11-26 17:08:00 +03:00
Kostya
8d5e7e3475 added logic for send data from modal 2023-11-26 16:59:23 +03:00
Kostya
4db9f31442 added template for withdraw in payments modal 2023-11-26 16:44:40 +03:00
Kostya
1e1542cbc2 added template for deposit modal 2023-11-26 16:34:22 +03:00
Kostya
e566193454 added logic payments modal 2023-11-26 16:15:24 +03:00
Kostya
f96a7acf38 fixed changed from main branch in developckutls 2023-11-26 15:39:06 +03:00
Kostya
24d20ab1a5 added edits from main branch, main -> DevelopCkutls 2023-11-26 15:33:41 +03:00
Kostya
753432e7b7 added directory for archive components or test components in /components/archive 2023-11-26 00:33:09 +03:00
Kostya
a3531dfda8 changed styles for a-now in headercomponent 2023-11-26 00:29:58 +03:00
Hepatica
b79503bac0 Change url 2023-11-25 22:19:02 +01:00
Kostya
7628690b05 added logic for dynamic changed nav color in header component 2023-11-26 00:18:00 +03:00
Kostya
f05e15dcb2 added payments template and styles 2023-11-26 00:09:44 +03:00
Hepatica
e4d4389444 Change BackendApiUrl 2023-11-25 21:59:32 +01:00
Hepatica
28b3846ec7 Add auth provider 2023-11-25 21:56:01 +01:00
Kostya
2d199a4730 changed margin for btn send msg in chat component 2023-11-25 23:46:21 +03:00
Kostya
ca303e8637 added styles for profile-user info in profile page 2023-11-25 23:44:03 +03:00
Kostya
814be2e8fb fixed grid for profile 2023-11-25 23:12:39 +03:00
Kostya
0e9beda3c7 install bootstrap 2023-11-25 23:10:52 +03:00
Kostya
36683d8074 deleted template for profile and import style profile in profilepage.vue 2023-11-25 23:07:23 +03:00
Kostya
ff57fb8ab0 create profile css 2023-11-25 23:00:48 +03:00
Kostya
71b74eb757 added test template for profile and payments for profile page 2023-11-25 22:45:57 +03:00
Kostya
a3156fc16e added grid for profile page 2023-11-25 22:41:40 +03:00
Kostya
5de313bf19 refactor naming for components in homepage 2023-11-25 22:34:49 +03:00
Kostya
0443f1eeb9 added template for profile, add components 2023-11-25 22:33:00 +03:00
Kostya
73a7d8d161 added router for profile 2023-11-25 22:29:44 +03:00
Kostya
5efe622a48 added router for redirect on home and add router for profile page 2023-11-25 22:28:25 +03:00
Kostya
9e281d111f changed padding for main card in gamemodes 2023-11-25 22:21:36 +03:00
Hepatica
041c54c4ac Update Asidebar icons 2023-11-25 16:17:48 +01:00
Hepatica
31c59f6c0e Fix padding in game modes 2023-11-25 15:12:19 +01:00
Hepatica
5ef819ecb1 Merge remote-tracking branch 'origin/DevelopCkutls' 2023-11-25 15:06:14 +01:00
Hepatica
999710a59f add auth service 2023-11-25 15:05:58 +01:00
Kostya
55cc295faf refactor styles for chat 2023-11-25 12:19:48 +03:00
Kostya
3d8e585ecf changed margin for icon discord in discord-auth card, header 2023-11-25 12:09:10 +03:00
Kostya
26df176045 changed icon and bg for btn discord-auth in header 2023-11-25 12:02:18 +03:00
Kostya
b536562a74 fix error with width line gamemode-textcontent 2023-11-24 17:08:04 +03:00
Kostya
d090afd6cf fixed height card and margin for gamemode-twolines elements 2023-11-24 16:39:47 +03:00
Kostya
2027d5cb2b fix placed btn in gamemode-main 2023-11-24 16:32:57 +03:00
Kostya
50ce0e9e44 fix error with margin for template 2023-11-24 16:32:32 +03:00
Hepatica
32b55d4b5c deploy 2023-11-24 03:44:49 +01:00
81 changed files with 4980 additions and 244 deletions

View File

@@ -23,9 +23,8 @@ https://github.com/sp-worlds/api-docs
https://discord.com/developers/docs/topics/oauth2#oauth2
<h2>Bootstrap 5 Tutorial </h2>
<p>Если получится то использовать его для фронта</p>
https://www.w3schools.com/bootstrap5/
<h2>Откуда берём вдохновление </h2>
https://cs.fail/en/
</body>
</html>

View File

@@ -2,26 +2,26 @@
# abort on errors
set -e
# build
npm run build
# navigate into the build output directory
cd dist
# git checkout main
# if you are deploying to a custom domain
# echo 'www.example.com' > CNAME
git init
# git init
git add -A
git commit -m 'deploy'
# if you are deploying to https://<USERNAME>.github.io
# git push -f git@github.com:<USERNAME>/<USERNAME>.github.io.git main
git push -f git@github.com:danilt2000/danilt2000.github.io.git main
# if you are deploying to https://<USERNAME>.github.io/<REPO>
# git pull origin
git push -f git@github.com:danilt2000/LuckyDiamond.git main:gh-pages
# git push -f git@github.com:danilt2000/LuckyDiamond.git main:gh-pages
# git subtree push --prefix dist origin gh-pages
cd -

View File

@@ -1 +1 @@
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/LuckyDiamond/favicon.ico"><link href="https://fonts.googleapis.com/css2?family=Montserrat+Alternates:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;700&family=Poppins:wght@400;600&family=Press+Start+2P&display=swap" rel="stylesheet"><title>luckydiamond</title><script defer="defer" src="/LuckyDiamond/js/chunk-vendors.9ebc3acb.js"></script><script defer="defer" src="/LuckyDiamond/js/app.d5fdf871.js"></script><link href="/LuckyDiamond/css/app.bc469998.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but luckydiamond doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><link href="https://fonts.googleapis.com/css2?family=Montserrat+Alternates:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;700&family=Poppins:wght@400;600&family=Press+Start+2P&display=swap" rel="stylesheet"><title>luckydiamond</title><script defer="defer" src="/js/chunk-vendors.9ebc3acb.js"></script><script defer="defer" src="/js/app.f8938cd1.js"></script><link href="/css/app.bc469998.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but luckydiamond doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -9,9 +9,18 @@
"deploy": "sh deploy.sh"
},
"dependencies": {
"@popperjs/core": "^2.11.8",
"@vuelidate/core": "^2.0.3",
"@vuelidate/validators": "^2.0.4",
"bootstrap": "^5.3.2",
"core-js": "^3.8.3",
"howler": "^2.2.4",
"mitt": "^3.0.1",
"swiper": "^11.0.5",
"vue": "^3.2.13",
"vue-router": "^4.2.5"
"vue-recaptcha": "^3.0.0-alpha.6",
"vue-router": "^4.2.5",
"vue3-recaptcha2": "^1.8.0"
},
"devDependencies": {
"@babel/core": "^7.12.16",
@@ -22,4 +31,4 @@
"eslint": "^7.32.0",
"eslint-plugin-vue": "^8.0.3"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -1,21 +1,39 @@
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<link href="https://fonts.googleapis.com/css2?family=Montserrat+Alternates:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;700&family=Poppins:wght@400;600&family=Press+Start+2P&display=swap" rel="stylesheet">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>ldicon.png">
<link
href="https://fonts.googleapis.com/css2?family=Montserrat+Alternates:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"
rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;700&family=Poppins:wght@400;600&family=Press+Start+2P&display=swap"
rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@700&display=swap" rel="stylesheet">
<title>LuckyDiamond</title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<!-- <div class="g-recaptcha" id="rcaptcha" data-callback="get_action" data-sitekey="6LcuUDQpAAAAAPz8007pFD2FigaSh6InnUq_MEd8"></div>-->
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
<script src='https://www.google.com/recaptcha/api.js'></script>
<script src="https://cdn.jsdelivr.net/npm/vue@3"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-demi"></script>
<script src="https://cdn.jsdelivr.net/npm/@vuelidate/core"></script>
<script src="https://cdn.jsdelivr.net/npm/@vuelidate/validators"></script>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 B

View File

@@ -0,0 +1,88 @@
/* Header */
.header-mobile {
grid-area: header-mobile;
border-radius: 20px;
background: #17181C;
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
height: 45%;
}
.header-mobile__content {
display: flex;
align-items: center;
justify-content: space-between;
}
.header-mobile__logo {
padding: 6% 0 2.5% 4%;
}
.header-mobile__logo img {
width: 85%;
}
.header-mobile__end {
display: flex;
align-items: center;
}
.header-mobile__balance--content {
display: flex;
align-items: center;
}
.header-mobile__card {
border-radius: 7px;
background: #22252F;
box-shadow: 4px 4px 4px 0px rgba(0, 0, 0, 0.25);
}
.card-display h2 {
display: flex;
align-items: flex-end;
padding: 13% 15px 13% 6%;
}
.card-img img {
width: 35%;
height: 100%;
}
.card-text {
color: #FFF;
font-weight: 700;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
font-family: Montserrat Alternates;
font-size: 13px;
}
.btn-card {
border-radius: 13px;
background: #EF4444;
box-shadow: 4px 4px 4px 0px rgba(0, 0, 0, 0.25);
text-align: center;
padding: 4px;
}
.btn-card img {
width: 90%;
height: 40px;
}
.btn-card__margin {
margin-left: -1%;
}
.header-mobile__user-icon {
display: flex;
align-items: center;
}
.user-icon img {
width: 70%;
margin-left: 15px;
}
/* /Header */

View File

@@ -0,0 +1,41 @@
/* Footer */
.footer-mobile {
grid-area: footer-mobile;
width: 100%;
height: 10%;
background: #17181C;
box-shadow: 4px 4px 4px 0px rgba(0, 0, 0, 0.25);
position: fixed;
bottom: 0;
}
.footer-mobile__content {
display: flex;
justify-content: center;
align-items: center;
margin-top: 2%;
}
.icons-size img {
width: 10%;
}
.footer-mobile__icons {
margin: 2% 0;
width: 100%;
}
.icon-start {
margin-left: 8%;
}
.icon-end {
margin-left: 9%;
}
.icon-center {
margin-left: 9%;
}
/* /Footer */

View File

@@ -0,0 +1,200 @@
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
input:focus {
outline: none;
}
.root-mobile {
position: absolute;
top: 15%;
left: 10%;
background: #22252F;
border-radius: 25px;
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
width: 80%;
height: 455px;
max-width: 400px;
}
.margin-mobile___payments {
margin-left: 10px;
}
.payments-modal-mobile {
display: flex;
align-items: center;
justify-content: space-between;
}
.text-style-mobile h1 {
font-size: 22px;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
font-family: Montserrat Alternates;
font-weight: 700;
}
.padding-elements__mobile h1,
.padding-elements__mobile img {
padding: 3% 3%;
}
.icon-close__mobile {
margin-top: 2%;
}
.payments-modal-mobile__content h2 {
color: #44C6EF54;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
font-family: Montserrat Alternates;
line-height: 31px;
font-weight: 700;
font-size: 18px;
}
.payments-modal-mobile__content {
display: flex;
flex-direction: column;
align-items: flex-start;
}
.payments-modal__btns-mobile ul {
display: flex;
}
.input-style__mobile input {
border-radius: 15px;
border: 2px solid #2B3458;
background: #22252F;
width: 250px;
}
.input-mobile__number {
padding-left: 15px;
font-family: Montserrat Alternates;
font-weight: 700;
}
.img-style img {
position: absolute;
width: 22px;
height: 22px;
}
.button-style__mobile li button {
padding: 6px 12px;
background: #252C47;
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
border-radius: 6px;
border: none;
margin: 5px 0 5px 5px;
font-weight: 700;
font-family: Montserrat Alternates;
}
.payments-modal__agree {
display: flex;
}
.payments-modal__agree h3 {
color: #44C6EF54;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
font-family: Montserrat Alternates;
line-height: 31px;
font-weight: 700;
font-size: 9px;
margin-left: 5px;
line-height: unset;
}
.payments-modal__submit {
display: flex;
width: 95%;
margin: 0 auto;
flex-direction: column;
justify-content: center;
text-align: center;
margin-top: 20%;
}
.payments-modal__submit p {
color: #949494F2;
font-family: Montserrat Alternates;
font-size: 8px;
font-weight: 700;
}
.payments-modal__submit button {
margin-top: 10px;
border-radius: 10px;
background: #EF4444;
border: none;
padding: 20px 20px;
font-family: Montserrat Alternates;
font-weight: 700;
font-size: 18px;
}
.payments-modal__promocode {
margin-top: 10px;
}
.payments-modal__promocode input {
height: 25px;
width: 250px;
}
.payments-modal__promocode input[placeholder] {
color: rgba(148, 148, 148, 0.95);
font-family: Montserrat Alternates;
font-weight: 700;
padding-left: 10px;
}
.payments-modal__agree {
margin-top: 6px;
display: flex;
align-items: center;
}
.captcha-mobile {
top: 25px;
left: -10px;
}
/* Media */
@media screen and (max-width: 600px) and (min-width: 420px) {
.root-mobile {
left: 12%;
}
.input-style__mobile input {
width: 300px !important;
}
.button-style__mobile li button {
padding: 8px 14px;
}
.payments-modal__agree h3 {
font-size: 10.5px;
}
}
@media screen and (max-width: 340px) {
.input-style__mobile input {
width: 225px;
}
.button-style__mobile li button {
padding: 6px 8px;
}
.checkbox-styles input[type="checkbox"] {
width: 15px;
height: 15px;
}
input[type="checkbox"]:checked::before {
font-size: 10px;
line-height: unset;
}
}

View File

@@ -31,13 +31,25 @@
border-radius: 20px;
}
.menu__content--slots-icon {
margin-left: 5px
}
.menu__content--cruch-icon {
margin-left: 6px
}
.menu__content--bomb-icon {
margin-left: 6px
}
.menu__content--gamemodes {
display: flex;
text-align: center;
flex-direction: column;
}
.menu__content--gamemodes a {
.menu__content--gamemodes a {
padding: 35% 7%;
}

View File

@@ -1,5 +1,23 @@
::-webkit-scrollbar {
width: 10px;
}
::-webkit-scrollbar-track {
background: #121212;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: #EF4444;
border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
background: #b30000;
}
.chat {
margin: 1% 1.2% 0 0;
margin: 1% 3.2% 0 0;
}
.chat__content {
@@ -23,14 +41,33 @@
font-weight: 700;
}
.content p {
/* .content p {
width: 80%;
word-wrap: break-word;
margin: 0 auto;
} */
.content p {
display: block;
word-wrap: break-word;
overflow-wrap: break-word;
overflow: hidden;
}
.chat__content--users {
height: 70%;
height: 590px;
width: auto;
overflow-y: auto;
overflow-x: auto;
}
.chat__content,
.chat__content--users {
box-sizing: border-box;
}
.chat__content--users {
margin: 0;
}
.card__user {
@@ -38,10 +75,13 @@
display: flex;
}
.fade-enter-active, .fade-leave-active {
transition: opacity 0.5s, transform 0.5s;
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.1s, transform 0.1s;
}
.fade-enter, .fade-leave-to {
.fade-enter,
.fade-leave-to {
opacity: 0;
transform: translateY(20px);
}
@@ -72,7 +112,8 @@
bottom: 0;
margin: 24% 87% 6% 6%;
user-select: none;
width: 50%;
/* width: 50%; */
width: 90%;
}
.write__content {
@@ -81,13 +122,46 @@
}
.write__content input {
padding: 14px 35% 14px 12px;
padding: 14px 25% 14px 12px;
border-radius: 13px;
background: #22252F;
color: #A9A99D;
border: none;
}
/* .write__content textarea {
padding: 14px 25% 14px 12px;
border-radius: 13px;
background: #22252F;
color: #A9A99D;
border: none;
} */
/* .write__content textarea {
padding: 14px 12px;
border-radius: 13px;
background: #22252F;
color: #A9A99D;
border: none;
width: 600px;
box-sizing: border-box;
resize: vertical;
} */
.write__content textarea {
padding: 14px 12px;
border-radius: 13px;
background: #22252F;
color: #A9A99D;
border: none;
width: 600px; /* или другое значение, которое вы хотите использовать */
box-sizing: border-box;
resize: none; /* Убирает ручку изменения размера */
}
.write__content textarea:focus {
outline: none;
}
.write__content input::placeholder {
color: #A9A99D;
font-weight: 800;
@@ -97,7 +171,8 @@
.write__content button {
padding: 8px 9px;
margin-left: -15%;
/* margin-left: -20%; */
margin-right: -5%;
border-radius: 6px;
background: #3D3F48;
border: none;

View File

@@ -14,17 +14,21 @@
padding: 1.8% 0 1.2% 2.6%;
}
.header__logo img {
cursor: pointer;
}
.header__nav nav a {
margin-right: 30%;
text-decoration: none;
font-family: Montserrat Alternates;
font-weight: 700;
font-size: 18px;
margin-right: 3em;
}
.header__nav--now {
color: #EF4444;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
font-size: 18px;
position: relative;
}
@@ -40,6 +44,10 @@
z-index: 1;
}
.header__balance {
width: 120px;
}
.header__content--balance {
display: flex;
align-items: center;
@@ -111,6 +119,7 @@
background: #30323E;
text-decoration: none;
padding: 6px 2px 6px 2px;
width: 75px;
}
.discord__card--name a span img {
@@ -131,9 +140,9 @@
display: flex;
align-items: center;
border-radius: 13px;
background: #5865F2;
background: #5865f2;
box-shadow: 4px 4px 4px 0px rgba(0, 0, 0, 0.25);
color: #000;
color: #fff;
font-size: 16px;
font-weight: 600;
font-family: Montserrat;
@@ -143,5 +152,5 @@
}
.auth__card--content a span img {
margin-right: 5px;
margin: 8% 5px 0 0;
}

View File

@@ -0,0 +1,268 @@
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
input:focus {
outline: none;
}
.payment-modal {
position: absolute;
top: 20%;
left: 35%;
border-radius: 25px;
background: #22252F;
box-shadow: 4px 4px 4px 0px rgba(0, 0, 0, 0.25);
width: 390px;
height: 420px;
}
.payments-modal__content {
text-align: center;
display: flex;
justify-content: space-between;
}
.close-modal__icon img {
margin: 21px 22px 0 0;
cursor: pointer;
filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25));
}
.text-styles__margin h1 {
margin: 16px 0 0 26px;
}
.payments-modal__content h1 {
color: #fff;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
font-weight: 700;
font-family: Montserrat Alternates;
font-size: 20px;
}
.payments-modal__deposit {
margin-left: 26px;
}
.deposit-text h3 {
color: rgba(68, 198, 239, 0.33);
font-weight: 700;
line-height: 31px;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
font-family: Montserrat Alternates;
font-size: 12px;
margin-top: -10px;
}
.deposit-icon-diamond img {
position: absolute;
top: 16%;
left: 10%;
}
.deposit-icon__input .promo-input,
.deposit-icon__input .deposit-amount__input,
.withdraw-input .with-input{
width: 350px;
height: 44px;
border-radius: 15px;
border: 2px solid #2B3458;
background: #22252F;
color: rgba(148, 148, 148, 0.95);
font-weight: 700;
font-family: Montserrat Alternates;
font-size: 12px;
padding-left: 40px;
}
.display-btns {
display: flex;
margin-top: 10px;
}
.btns-style-diamonds button {
border-radius: 10px;
background: #252C47;
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
color: #FFF;
font-weight: 700;
line-height: 31px;
font-family: Montserrat Alternates;
font-size: 12px;
border: none;
margin-right: 6px;
padding: 4px 19px;
}
.deposit-promocode {
margin-top: 15px;
}
.deposit-promocode__padding--input input {
padding-left: 15px;
}
.deposit-checkbox {
display: flex;
margin-top: 11px;
}
.withdraw-checkbox {
display: flex;
align-items: center;
margin-top: 11px;
}
.withdraw-checkbox h3 {
margin: 0 0 0 5px;
}
.checkbox-styles input[type="checkbox"] {
background: #22252F;
border-radius: 8px;
border: 2px solid #2B3458;
width: 25px;
height: 25px;
outline: none;
cursor: pointer;
-webkit-appearance: none;
}
input[type="checkbox"]:checked::before {
content: '\2713';
font-weight: 700;
font-size: 16px;
display: block;
text-align: center;
line-height: 22px;
color: #fff;
}
.deposit-checkbox h3 {
margin: 0 0 0 10px;
}
.btn-deposit,
.btn-withdraw {
display: flex;
text-align: center;
align-items: center;
justify-content: center;
margin: 10% 6% 0 0;
}
.btn-display-deposit {
display: flex;
flex-direction: column;
}
.btn-text-style p {
color: #949494F2;
font-weight: 700;
font-family: Montserrat Alternates;
font-size: 7.5px;
margin: 5px 0;
}
.btn-style-payments button {
border-radius: 10px;
background: #EF4444;
ont-family: Montserrat Alternates;
font-size: 16px;
color: #fff;
font-weight: 700;
line-height: 19px;
padding: 22px 120px;
border: none;
}
.btn-style-payments button:disabled {
background: #3d3a3a;
}
.btn-click {
border-radius: 10px !important;
background: #EF4444 !important;
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25) !important;
}
/* Withdraw */
.withdraw-modal {
height: 520px;
}
.payments-modal__withdraw {
margin-left: 26px;
}
.error-checkbox {
position: absolute;
}
.error-checkbox h2 {
font-size: 13px;
font-weight: 700;
color: #BA3636;
font-family: "Montserrat Alternates";
}
.error-promocode {
position: absolute;
left: 49%;
top: 35%;
}
.error-promocode .error-text__promocode {
font-size: 11px;
font-weight: 700;
color: #BA3636;
font-family: "Montserrat Alternates";
margin-left: 55px;
}
.error-promocode .correct-text__promocode {
font-size: 11px;
font-weight: 700;
color: #3BA44C;
font-family: "Montserrat Alternates";
}
.checkbox-styles input:disabled:hover {
animation: shake 0.6s cubic-bezier(.36, .07, .19, .97);
}
@keyframes shake {
0%, 100% {
transform: translateX(0);
}
10%, 30%, 50%, 70%, 90% {
transform: translateX(-4px);
}
20%, 40%, 60%, 80% {
transform: translateX(4px);
}
}
.number-card {
margin-top: 15px;
}
.btn-withdraw {
margin-top: 15%;
}
/* /Withdraw */
/* Captcha Styles */
.captcha-withdraw {
position: relative;
left: 20px;
top: 15px;
}
/* /Captcha Styles */

View File

@@ -0,0 +1,96 @@
body {
overflow-y: scroll;
}
.content-grid__mobile-home {
display: grid;
grid-auto-columns: 1fr;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(7, 1fr);
grid-template-areas:
"header-mobile header-mobile header-mobile header-mobile"
"main-mobile main-mobile main-mobile main-mobile"
"main-mobile main-mobile main-mobile main-mobile"
"footer-mobile footer-mobile footer-mobile footer-mobile";
height: 100%;
width: 100%;
}
.main-mobile {
grid-area: main-mobile;
width: 100%;
height: 100%;
}
/* Main */
.main-mobile__content {
margin-top: 6%;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
}
.bg-mobile {
border-radius: 10px;
background: #EF4444;
box-shadow: 4px 4px 4px 0px rgba(0, 0, 0, 0.25);
width: 100%;
height: 10em;
}
.main-mobile__first-line {
display: flex;
width: 100%;
}
.main-mobile__two-line {
display: flex;
width: 100%;
}
.card-mobile__content { /* text display */
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
}
.card-first {
margin: 0 2.5% 0 3%;
}
.card-game__text h2 {
color: #FFF;
font-weight: 700;
font-size: 41px;
text-align: center;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
font-family: Montserrat Alternates;
text-transform: uppercase;
}
.card-two {
margin: 5.1% 2.5% 0 3%;
}
.card-mobile__btn a {
text-decoration: none;
color: #000;
font-weight: 700;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
font-family: Montserrat Alternates;
font-size: 30px;
border-radius: 21px;
background: #FFF;
padding: 6px 11px;
box-shadow: 4px 4px 4px 0px rgba(0, 0, 0, 0.25);
}
.card-mobile__btn span {
font-size: 29px;
color: #000;
}
/* /Main */

View File

@@ -0,0 +1,95 @@
body {
overflow-y: scroll;
}
.header-mobile {
height: 70%;
}
.profile-mobile {
grid-area: profile-mobile;
width: 100%;
height: 100%;
}
.profile-mobile__btns-payments {
display: flex;
flex-direction: column;
}
.profile-mobile__btns-payments a {
color: #17181C;
border-radius: 10px;
font-family: Montserrat Alternates;
font-size: 18px;
font-weight: 700;
text-decoration: none;
padding: 20px 20px;
margin: 0 0 2% 0
}
.profile-mobile__btns-payments .deposit-button {
background: #62D4B2;
margin-top: 4%;
}
.withdraw-button {
background: #EF4444;
}
.text-default-mobile h2, h3 {
font-weight: 700;
color: #fff;
}
.macroinfo-profile {
margin: 5% 10% 0 10%;
text-align: center;
}
.macroinfo-profile img {
width: 45%;
height: 100%;
}
.img-margin img {
margin-top: 15px;
}
.macroinfo-profile h2 {
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.00);
font-family: Montserrat Alternates;
font-size: 33px;
}
.header-off {
pointer-events: none !important;
filter: blur(15px) !important;
}
.info-profile {
margin: 6% 10% 0 10%;
text-align: center;
}
.info-profile .text-nickname-user {
font-family: Montserrat;
font-size: 2em;
}
.info-profile .balance-border {
border-radius: 20px;
width: 100%;
background: #22252F;
}
.info-profile .balance-display {
display: flex;
justify-content: center;
align-items: center;
}
.info-profile .balance-text {
font-family: Montserrat Alternates;
font-size: 28px;
}

View File

@@ -0,0 +1,603 @@
#chat {
height: 95.65%;
}
button {
cursor: pointer;
}
button:focus {
outline: none;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
.saper {
display: flex;
padding-top: 10%;
border-radius: 20px;
background: #17181C;
backdrop-filter: blur(100px);
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
}
.bg {
background: #293561;
filter: blur(120px);
position: absolute;
top: 250px;
transform: rotate(180deg);
left: 200px;
width: 40%;
height: 55%;
z-index: -1;
}
.bg-two {
background: #293561;
filter: blur(120px);
position: absolute;
top: 220px;
transform: rotate(330deg);
left: 600px;
width: 60%;
height: 35%;
z-index: -1;
}
.saper-start {
z-index: 1;
margin-left: 5%;
border-radius: 20px;
background: #22252F;
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
width: 27%;
height: 74%;
margin-top: 2.6%;
}
.padding-elements {
padding-left: 5%;
}
.title-saper h2 {
padding: 16px 0 5px 0;
color: #FFF;
font-weight: 700;
line-height: 31px;
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.00);
font-family: Montserrat Alternates;
font-size: 26px;
}
.saper-start__content p {
color: #FFFFFF84;
font-weight: 700;
line-height: 31px;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
font-family: Montserrat Alternates;
font-size: 13px;
}
.crystals h3,
.diamonds h3 {
color: #44C6EF54;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
font-family: Montserrat Alternates;
font-size: 12px;
font-weight: 700;
line-height: 31px;
}
.crystals .crystals__choises input,
.diamonds .diamonds__choises input {
width: 110px;
height: 38px;
color: #FFF;
font-weight: 700;
line-height: 31px;
font-family: Montserrat Alternates;
font-size: 12px;
border-radius: 10px;
padding-left: 25px;
border: 2px solid #2B3458;
background: #22252F;
}
.crystals__choises {
display: flex;
align-items: center;
}
.crystals .crystals__choises input:focus,
.diamonds .diamonds__choises input:focus {
outline: none;
}
.crystals-input__margin {
margin-left: -5.5%;
}
.btn-click {
border-radius: 10px !important;
background: #EF4444 !important;
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25) !important;
}
.crystals-btns__choices button,
.btn-style__diamonds button {
margin-left: 5px;
border-radius: 10px;
background: #252C47;
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
border: none;
color: #FFF;
font-weight: 700;
line-height: 31px;
font-family: Montserrat Alternates;
font-size: 12px;
padding: 4px 23px;
}
.crystal-icon,
.diamond-icon {
position: relative;
left: 25px;
top: 2px;
}
.crystals-btns__display {
display: flex;
}
#diamonds-input {
width: 347px;
height: 38px;
}
.diamonds h3 {
margin: 1.2% 0 0 5.8%;
}
.diamonds-input__margin {
margin-left: -5.6%;
}
.diamonds .diamonds__choises input {
padding-left: 35px;
}
.diamond-icon {
top: 12px;
left: 35px;
}
.diamonds__btns {
margin: 2.5% 0 0 5.5%;
}
.diamonds-btns__display {
display: flex;
margin-left: -1%;
}
.btn-style__diamonds button {
padding: 4px 20px;
}
#max-button {
text-transform: uppercase;
font-family: Inter;
font-size: 16px;
font-weight: 700;
padding: 4px 15px;
}
.saper-start__btns {
margin: 3.7% 2.7% 0 0;
display: flex;
flex-direction: column;
}
.saper-start__btns button {
width: 100%;
padding: 12px;
margin-bottom: 5px;
border: none;
color: #FFF;
font-weight: 700;
line-height: 19px;
font-style: normal;
font-family: Inter;
font-size: 16px;
}
.btn-start {
border-radius: 10px;
background: #EF4444;
}
.btn-claim {
border-radius: 10px;
background: #252C47;
}
.saper-start__steps {
margin-top: 1%;
}
.steps-btns__display span {
display: flex;
justify-content: center;
font-size: 10px;
color: #adadad;
}
.steps-btns__display {
display: flex;
}
.btns-style__steps button {
border-radius: 10px;
background: #252C47;
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
border: none;
color: #FFF;
font-weight: 700;
font-family: Montserrat Alternates;
font-size: 12px;
width: 100px;
height: 40px;
}
.error-block {
position: absolute;
top: 440px;
}
.error-block h2 {
color: #982f2f;
font-weight: 700;
font-family: Montserrat Alternates;
font-size: 10px;
}
.animate-start-btn {
animation: shake 0.6s cubic-bezier(.36, .07, .19, .97);
opacity: 50%;
}
/* Saper Game */
.start-game {
position: absolute;
top: 15%;
left: 45%;
background: #000;
padding: 20px;
}
.saper-game {
margin: -2.75% 0 0 5.1%;
}
.saper-game__content {
display: flex;
border-radius: 20px;
background: #22252F;
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
width: 85%;
height: 90%;
}
.square {
border-radius: 10px;
background: #252C47;
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
width: 95px;
height: 95px;
cursor: pointer;
transition: transform 0.6s;
transform-style: preserve-3d;
}
.square-fliper {
transform: rotateY(180deg);
}
.square h2 {
transition: .2s;
opacity: 1;
user-select: none;
}
.square-text {
color: #303751;
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.00);
font-family: Montserrat Alternates;
font-size: 33px;
font-weight: 700;
text-transform: uppercase;
text-align: center;
padding-top: 25px;
}
.game {
pointer-events: none;
}
.game-end {
pointer-events: none;
user-select: none;
filter: blur(5px);
}
.img-style-click {
position: relative;
width: 110px;
height: 110px;
top: -70px;
}
.crystal-img {
left: -5px;
}
.game-start {
pointer-events: unset !important;
}
.game-start__menu-off .crystals, .game-start__menu-off .diamonds,
.game-start__menu-off .saper-start__btns .btn-start {
pointer-events: none;
}
.hidden {
opacity: 0 !important;
}
.display-lines {
display: flex;
}
.margin-lines .firstline {
margin-top: 5%;
}
.margin-lines {
padding-left: 4%;
}
.margin-lines li {
margin: 2% 10px 1% 0;
}
.info-emeralds {
margin: 13.5% 0 0 10.5%;
}
.card-info {
border-radius: 15px;
border: 1px solid #2B4D6C;
background: linear-gradient(180deg, #252C47 0%, #252C47 8.33%, rgba(37, 44, 71, 0.00) 100%);
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
width: 85%;
height: 100%;
}
.text-style__subtitle h2 {
margin: 8% 0 6px 6.3%;
color: #FFF;
font-weight: 800;
line-height: 18px;
text-transform: uppercase;
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.00);
font-family: Montserrat Alternates;
font-size: 17px;
}
.text-style__comment p {
margin-left: 6.3%;
color: #9CA5C7;
font-weight: 400;
line-height: 13px;
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.00);
font-family: Montserrat Alternates;
font-size: 13px;
}
.info-crystals {
margin: 13.5% 0 0 10.5%;
}
.circles__content {
user-select: none;
display: flex;
justify-content: center;
position: relative;
left: 7px;
}
.circles {
position: absolute;
}
.circles-1 {
top: 125px;
}
.circles-2 {
top: 235px;
}
.circles-3 {
top: 345px;
}
.circles-4 {
top: 455px;
}
/* /Saper Game */
/* Media */
@media screen and (min-device-width: 1400px) and (max-device-width: 1600px) {
.saper-game__content {
width: auto;
}
.saper-start {
width: 30%;
height: 80%;
}
.btns-style__steps button {
width: 60px;
height: 50px;
}
.swiper-slide {
margin-right: 29px !important;
}
.steps-btns__display {
justify-content: center;
}
.margin-lines .firstline {
margin-top: 2%;
}
.info-emeralds {
margin-top: 6.5%;
}
.info-crystals {
margin-top: 6.5%;
}
.crystals-btns__choices button, .btn-style__diamonds button {
padding: 4px 13px;
}
.diamond-icon {
top: 12px;
left: 35px;
}
#diamonds-input {
width: 60%;
}
.btns-style__steps button {
padding: 6px 9px;
}
.card-info img {
width: 100%;
}
.circles-1 {
top: 110px;
}
.circles-2 {
top: 220px;
}
.circles-3 {
top: 330px;
}
.circles-4 {
top: 440px;
}
}
@media screen and (min-device-width: 1200px) and (max-device-width: 1399px) {
.bg-two {
left: 300px;
}
.saper-game__content {
width: auto;
}
.saper-start {
width: 30%;
height: 75%;
}
.steps-btns__display {
justify-content: center;
}
.btns-style__steps button {
width: 60px;
height: 50px;
}
.swiper-slide {
margin-right: 30px !important;
}
.margin-lines .firstline {
margin-top: 2%;
}
.square {
width: 75px;
}
.img-style-click {
left: -15px;
}
.info-emeralds {
margin-top: 6.5%;
}
.info-crystals {
margin-top: 6.5%;
}
.text-style__subtitle h2 {
font-size: 11px;
}
.text-style__comment p {
font-size: 11px;
}
.crystals-btns__choices button, .btn-style__diamonds button {
padding: 4px 7px;
}
.diamonds-btns__display {
margin-left: 3%;
}
.diamond-icon {
top: 12px;
left: 35px;
}
#diamonds-input {
width: 60%;
}
.btns-style__steps button {
padding: 6px 4px;
}
.card-info img {
width: 100%;
}
.circles__content {
display: none;
}
}
/* /Media */
/* Swiper */
.swiper {
user-select: none;
width: 100%;
height: 100%;
margin-top: 18px;
}
.swiper-slide {
text-align: center;
font-size: 18px;
display: flex;
align-items: center;
}
.swiper-slide img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
.swiper-button-prev:after, .swiper-button-next:after {
font-size: 30px;
color: rgb(210 31 31 / 62%);
}
/* /Swiper */

View File

@@ -69,7 +69,7 @@
/* GameMode */
.gamemode__content--text h2 {
margin: 2% 0 .5% 10%;
margin: 1.2% 0 .5% 8%;
text-transform: uppercase;
color: #FFF;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
@@ -79,14 +79,14 @@
}
.gamemode__content--text div {
width: 80%;
margin: 0 auto;
width: 82%;
margin-left: 8%;
border: 1px solid #fff;
}
.gamemode__content--card {
display: flex;
margin-top: 1.8%;
margin-top: 1.2%;
}
.bg-card {
@@ -127,11 +127,18 @@
display: flex;
justify-content: center;
align-items: center;
padding-top: 12%;
padding-top: 4.7%;
}
.line__content .line__btn--main .line__btn {
top: 2.5em;
left: -2em;
width: 100%;
}
.line__footer img {
width: 60%;
margin-bottom: 5%;
}
.gamemode__lines {
@@ -146,10 +153,13 @@
}
.line__img {
float: right;
display: flex;
margin: 1% 6.6% 1% 4.7%;
}
.display-firstline {
display: flex;
}
.line__btn {
border-radius: 21px;
@@ -190,7 +200,7 @@
.gamemode__twoline--first__element {
width: 100%;
margin: 3% 3.6% 0 5.5%;
margin: 2% 3.6% 0 5.5%;
min-height: 180px;
}
@@ -207,6 +217,7 @@
font-size: 87px;
font-weight: 700;
text-transform: uppercase;
padding: 4.5% 2.2%;
}
.gamemode__twoline--first__element .container {
@@ -218,10 +229,11 @@
.gamemode__twoline--first__element .container a {
margin-right: 10%;
padding: 12px 10px;
margin-bottom: 3%;
}
.gamemode__twoline--two__element {
margin-top: 3%;
margin-top: 2%;
width: 100%;
min-height: 180px;
}
@@ -235,4 +247,162 @@
margin-right: 10%;
}
/* /GameMode */
/* /GameMode */
/* Media */
@media screen and (min-device-width: 1400px) and (max-device-width: 1600px) {
.header__auth--discord {
width: 14%;
}
.header__balance {
width: auto;
}
.main {
width: 75% !important;
}
.main__content h1 {
font-size: 4.5em;
}
.gamemode__content--text div {
width: 75%;
}
.gamemode__main {
height: auto;
width: 25%;
}
.title-firstline {
font-size: 4.1em;
}
.line__footer {
flex-direction: column;
}
.line__footer img {
margin-top: -2em;
}
.line__content .line__btn--main .line__btn {
left: 0;
top: -.4em;
}
.line__img {
margin: 1% -8% 0 30%;
}
.gamemode__firstline img {
width: 60%;
}
.gamemode__firstline .title-firstline {
font-size: 3.2em;
}
.gamemode__twolines img {
display: none;
}
.gamemode__twolines .title-twoline {
font-size: 3.238em;
}
.line__btn {
font-size: 28px;
padding: 6px 11px;
}
.gamemode__twoline--first__element .container a {
padding: 6px 11px;
}
.write {
position: static;
margin: -45% 87% 6% 2%;
}
.write__content input {
padding: 0.625em 1% 14px 0.75em;
}
.write__content input::placeholder {
font-size: 11.5px;
}
.write__content button {
margin-left: -15%;
padding: 0.375em 0.375em;
}
}
@media screen and (min-device-width: 1200px) and (max-device-width: 1399px) {
.header__auth--discord {
width: 14%;
}
.header__balance {
width: auto;
}
.main__content h1 {
font-size: 4.5em;
}
.main {
width: 78% !important;
}
.gamemode__main {
height: auto;
width: 28.5%;
}
.gamemode__content--text div {
width: 78%;
}
.title-firstline {
font-size: 4.1em;
}
.line__footer {
flex-direction: column;
}
.line__footer img {
margin-top: -2em;
}
.line__content .line__btn--main .line__btn {
left: 0;
top: -.4em;
}
.line__img {
margin: 1% -8% 0 15%;
}
.gamemode__firstline img {
width: 60%;
}
.gamemode__firstline .title-firstline {
font-size: 3.2em;
}
.gamemode__twolines img {
display: none;
}
.gamemode__twolines .title-twoline {
font-size: 3.238em;
}
.line__btn {
font-size: 28px;
padding: 6px 11px;
}
.gamemode__twoline--first__element .container a {
padding: 6px 11px;
}
.write {
position: static;
margin: -45% 87% 6% 2%;
}
.write__content input {
padding: 0.625em 1% 14px 0.75em;
}
.write__content input::placeholder {
font-size: 11.5px;
}
.write__content button {
margin-left: -15%;
padding: 0.375em 0.375em;
}
}
@media screen and (max-width: 1100px) {
.main__content h1 {
font-size: 3.5em;
}
.title-firstline {
font-size: 3.4em;
}
.line__img {
margin: -1% -18% 0 2%;
}
}
/* /Media */

View File

@@ -0,0 +1,213 @@
#chat-profile {
height: 95.6%;
}
.profile__content {
width: 30%;
margin-left: 3%;
}
.profile__content .profile__user--img {
margin: 17.6% 8.4% 1% 0;
background: #969C8D;
padding-top: 10px;
border-radius: 20px;
}
.profile__card {
display: flex;
flex-direction: column;
}
.profile__card h1 {
color: #FFF;
font-weight: 700;
font-family: Montserrat;
font-size: 40px;
}
.profile__card h2 {
border-radius: 20px;
background: #22252F;
width: 60%;
height: 60px;
display: flex;
align-items: center;
color: #FFF;
font-weight: 700;
font-family: Montserrat Alternates;
font-size: 28px;
padding-left: 11px;
}
.profile__card h2 img {
margin-right: 4.4%;
}
.profile__btns--payments {
margin-top: 7.9%;
display: flex;
flex-direction: column;
}
.icon-diamond h2 img {
width: 33px;
height: 33px;
}
.deposit-icon {
margin: 3px 0 0 10px;
}
.withdraw-icon {
margin-left: 33px;
}
.btn-bg {
border-radius: 10px;
background: rgba(255, 255, 255, 0.12);
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
width: 36%;
}
.btn-margin {
padding: 3.8% 46% 3% 14%;
margin-bottom: 11px;
background: #62D4B2;
}
.btn-display {
display: flex;
}
.text-btn {
text-decoration: none;
color: #000;
font-weight: 700;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
font-family: Montserrat Alternates;
font-size: 18px;
margin-left: 4px;
}
.icon-margin-deposit-withdraw {
margin-right: 4px;
}
.withdraw {
padding: 3.8% 46% 3% 14%;
background: #EF4444;
}
.payments {
margin: 2% 0 0 -4.25%;
}
.types {
display: flex;
}
.types-margin h3 {
margin-right: 7.813em;
}
.types-text h3 {
color: #ABABB4;
font-weight: 600;
font-family: Montserrat;
font-size: 14px;
}
.types-line {
margin-top: 2.1%;
background: #38383E;
width: 86%;
height: 3px;
}
.payments__card {
margin-top: 4.9%;
display: flex;
}
.user-info {
display: flex;
}
.user-name {
display: flex;
flex-direction: column;
margin-left: 0.625em;
}
.user-name__text h3 {
color: #FFF;
font-weight: 700;
font-family: Montserrat;
font-size: 20px;
}
.user-name__text p {
color: #A9A9A9;
font-weight: 400;
font-family: Montserrat;
font-size: 20px;
}
.data-info {
margin-left: 10%;
}
.data-info__text h3 {
color: #A9A9A9;
font-weight: 400;
font-family: Montserrat;
font-size: 17px;
}
.transaction-info {
margin-left: 7%;
}
.transaction-info__text h3 {
font-weight: 500;
font-family: Montserrat;
font-size: 22px;
}
.deposit-color h3 {
color: #32C966;
}
.withdraw-color h3 {
color: #EA3D38;
}
/* Media */
@media screen and (min-device-width: 1400px) and (max-device-width: 1600px) {
.profile__card h2 {
width: 72%;
}
.btn-margin {
padding-right: 56%;
}
.withdraw {
padding-right: 56%;
}
}
@media screen and (min-device-width: 1200px) and (max-device-width: 1399px) {
.profile__card h2 {
width: 80%;
}
.btn-margin {
padding-right: 66%;
}
.withdraw {
padding-right: 66%;
}
}
/* /Media */

View File

@@ -24,7 +24,7 @@ body, html {
.content-grid {
display: grid;
grid-template-columns: .35fr repeat(5, 1fr) 1.2fr;
grid-template-columns: .35fr repeat(5, 1fr) 1fr;
grid-template-rows: auto 0fr repeat(4, 1fr);
grid-auto-columns: 1fr;
grid-auto-flow: row;
@@ -39,6 +39,40 @@ body, html {
grid-gap: 10px;
}
.content__grid-profile {
display: grid;
grid-template-columns: .35fr repeat(5, 1fr) 1fr;
grid-template-rows: auto 0fr repeat(4, 1fr);
grid-auto-columns: 1fr;
grid-auto-flow: row;
grid-template-areas:
"menu header header header header header header"
"menu profile profile profile profile profile chat"
"menu profile profile profile profile profile chat"
"menu profile profile profile profile profile chat"
"menu profile profile profile profile profile chat"
"menu profile profile profile profile profile chat"
"menu profile profile profile profile profile chat";
grid-gap: 10px;
height: 100%;
}
.content-grid--saper {
display: grid;
grid-auto-columns: 1fr;
grid-template-columns: .35fr repeat(5, 1fr) 1fr;
grid-template-rows: auto 0fr repeat(4, 1fr);
grid-template-areas:
"menu header header header header header header"
"menu saper saper saper saper saper chat"
"menu saper saper saper saper saper chat"
"menu saper saper saper saper saper chat"
"menu saper saper saper saper saper chat"
"menu saper saper saper saper saper chat"
"menu saper saper saper saper saper chat";
grid-gap: 10px;
}
/* /Content Grid */
@@ -84,9 +118,9 @@ body, html {
.main {
grid-area: main;
width: 80%;
width: 82%;
height: 90%;
margin: 2.7% auto 0;
margin: 2% auto 0 8%;
}
/* /Main */
@@ -99,4 +133,31 @@ body, html {
width: 100%;
}
/* /GameMode */
/* /GameMode */
/* Profile */
.profile {
display: flex;
grid-area: profile;
height: 95%;
border-radius: 50px;
background: #17181C;
box-shadow: 4px 4px 4px 0px rgba(0, 0, 0, 0.25);
margin: 10px 39px 18px 13px;
}
/* /Profile */
/* Saper */
.saper {
grid-area: saper;
/*height: 96.2%;*/
}
/* /Saper */
/* Media */
/* /Media */

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 517 B

View File

@@ -0,0 +1,3 @@
<svg width="45" height="45" viewBox="0 0 45 45" fill="none" xmlns="http://www.w3.org/2000/svg">
<path id="Vector" d="M40.5352 9.64286H7.03125C6.25781 9.64286 5.625 8.91964 5.625 8.03571C5.625 7.15179 6.25781 6.42857 7.03125 6.42857H40.7812C41.5547 6.42857 42.1875 5.70536 42.1875 4.82143C42.1875 2.1596 40.2979 0 37.9688 0H5.625C2.52246 0 0 2.88281 0 6.42857V38.5714C0 42.1272 2.52246 45 5.625 45H40.5352C42.9961 45 45 42.8404 45 40.1786V14.4643C45 11.8025 42.9961 9.64286 40.5352 9.64286ZM36.5625 30.5357C35.0068 30.5357 33.75 29.0993 33.75 27.3214C33.75 25.5435 35.0068 24.1071 36.5625 24.1071C38.1182 24.1071 39.375 25.5435 39.375 27.3214C39.375 29.0993 38.1182 30.5357 36.5625 30.5357Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 713 B

View File

@@ -0,0 +1,3 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path id="Vector" d="M36.0312 8.57143H6.25C5.5625 8.57143 5 7.92857 5 7.14286C5 6.35714 5.5625 5.71429 6.25 5.71429H36.25C36.9375 5.71429 37.5 5.07143 37.5 4.28571C37.5 1.91964 35.8203 0 33.75 0H5C2.24219 0 0 2.5625 0 5.71429V34.2857C0 37.4464 2.24219 40 5 40H36.0312C38.2188 40 40 38.0804 40 35.7143V12.8571C40 10.4911 38.2188 8.57143 36.0312 8.57143ZM32.5 27.1429C31.1172 27.1429 30 25.8661 30 24.2857C30 22.7054 31.1172 21.4286 32.5 21.4286C33.8828 21.4286 35 22.7054 35 24.2857C35 25.8661 33.8828 27.1429 32.5 27.1429Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 642 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 B

View File

@@ -0,0 +1,92 @@
<svg width="207" height="204" viewBox="0 0 207 204" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_dd_291_5)">
<g filter="url(#filter1_d_291_5)">
<rect x="45.7563" y="68.2073" width="88.9238" height="84.8552" rx="17" transform="rotate(-15 45.7563 68.2073)" stroke="url(#paint0_linear_291_5)" stroke-width="6" shape-rendering="crispEdges"/>
</g>
<g filter="url(#filter2_d_291_5)">
<rect x="1.07377" y="4.00737" width="53.2329" height="53.2329" rx="9" transform="matrix(0.876765 0.480919 -0.518841 0.85487 91.295 58.1855)" stroke="#954DBB" stroke-width="6" shape-rendering="crispEdges"/>
</g>
<g filter="url(#filter3_d_291_5)">
<rect x="-3.03331" y="3.03205" width="64.5948" height="67.324" rx="12" transform="matrix(-0.011161 0.999938 -0.999942 0.0107455 136.702 68.0248)" stroke="#5F277D" stroke-width="6" shape-rendering="crispEdges"/>
</g>
<g filter="url(#filter4_d_291_5)">
<rect x="-1.08514" y="4.05317" width="52.7983" height="55.0715" rx="9" transform="matrix(0.509634 0.860391 -0.871348 0.490665 114.308 60.4024)" stroke="#BE95D4" stroke-width="6" shape-rendering="crispEdges"/>
</g>
<g filter="url(#filter5_d_291_5)">
<rect width="14.6307" height="15.1963" rx="4" transform="matrix(0.509634 0.860391 -0.871348 0.490665 102.576 87.6599)" fill="#FF8D8D"/>
<rect x="0.904284" y="-3.37764" width="19.6307" height="20.1963" rx="6.5" transform="matrix(0.509634 0.860391 -0.871348 0.490665 100.076 85.1615)" stroke="#CE0624" stroke-width="5"/>
</g>
</g>
<defs>
<filter id="filter0_dd_291_5" x="0.572021" y="0.0078125" width="206.224" height="203.348" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dx="4" dy="4"/>
<feGaussianBlur stdDeviation="25"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.372549 0 0 0 0 0.152941 0 0 0 0 0.490196 0 0 0 0.85 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_291_5"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dx="4" dy="4"/>
<feGaussianBlur stdDeviation="22.5"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.584314 0 0 0 0 0.301961 0 0 0 0 0.733333 0 0 0 0.3 0"/>
<feBlend mode="normal" in2="effect1_dropShadow_291_5" result="effect2_dropShadow_291_5"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_291_5" result="shape"/>
</filter>
<filter id="filter1_d_291_5" x="42.572" y="46.0078" width="114.224" height="111.348" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_291_5"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_291_5" result="shape"/>
</filter>
<filter id="filter2_d_291_5" x="58.8711" y="62.3774" width="81.6257" height="78.6085" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_291_5"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_291_5" result="shape"/>
</filter>
<filter id="filter3_d_291_5" x="58.7964" y="62.1525" width="81.7747" height="79.0577" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_291_5"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_291_5" result="shape"/>
</filter>
<filter id="filter4_d_291_5" x="58.5505" y="61.7294" width="82.2671" height="79.9052" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_291_5"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_291_5" result="shape"/>
</filter>
<filter id="filter5_d_291_5" x="81.7722" y="84.1483" width="35.8225" height="35.0674" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_291_5"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_291_5" result="shape"/>
</filter>
<linearGradient id="paint0_linear_291_5" x1="89.5439" y1="66.0859" x2="68.5897" y2="154.588" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="#B8B8B8"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -0,0 +1,82 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="&#208;&#186;&#209;&#128;&#208;&#184;&#209;&#129;&#209;&#130;&#208;&#176;&#208;&#187;">
<g id="Rectangle 106" filter="url(#filter0_d_1028_3685)">
<rect y="1.41421" width="18.6091" height="17.9178" rx="3" transform="matrix(0.707107 -0.707107 -0.707107 -0.707107 18.2559 27.4142)" stroke="url(#paint0_linear_1028_3685)" stroke-width="2" shape-rendering="crispEdges"/>
</g>
<g id="Rectangle 107" filter="url(#filter1_d_1028_3685)">
<mask id="path-2-inside-1_1028_3685" fill="white">
<rect width="10.3706" height="10.3706" rx="1" transform="matrix(0.021246 -0.999774 -0.999774 0.021246 22.574 18.574)"/>
</mask>
<rect width="10.3706" height="10.3706" rx="1" transform="matrix(0.021246 -0.999774 -0.999774 0.021246 22.574 18.574)" stroke="#954DBB" stroke-width="4" shape-rendering="crispEdges" mask="url(#path-2-inside-1_1028_3685)"/>
</g>
<g id="Rectangle 109" filter="url(#filter2_d_1028_3685)">
<rect x="1.38039" y="-0.370165" width="12.8778" height="13.2856" rx="2" transform="matrix(-0.871387 -0.490597 -0.509008 0.860762 27.5064 11.937)" stroke="#5F277D" stroke-width="2" shape-rendering="crispEdges"/>
</g>
<g id="Rectangle 108" filter="url(#filter3_d_1028_3685)">
<mask id="path-4-inside-2_1028_3685" fill="white">
<rect width="7.47011" height="7.75018" rx="1" transform="matrix(-0.490597 -0.871387 -0.860762 0.509008 22.6675 14.7822)"/>
</mask>
<rect width="7.47011" height="7.75018" rx="1" transform="matrix(-0.490597 -0.871387 -0.860762 0.509008 22.6675 14.7822)" stroke="#BE95D4" stroke-width="4" shape-rendering="crispEdges" mask="url(#path-4-inside-2_1028_3685)"/>
</g>
<g id="Rectangle 110" filter="url(#filter4_d_1028_3685)">
<rect width="1.11041" height="1.15204" rx="0.3" transform="matrix(-0.490597 -0.871387 -0.860762 0.509008 18.2681 13.6904)" fill="#FF8D8D"/>
<rect x="0.675679" y="0.181189" width="2.11041" height="2.15204" rx="0.8" transform="matrix(-0.490597 -0.871387 -0.860762 0.509008 19.4312 14.3682)" stroke="#CE0624"/>
</g>
</g>
<defs>
<filter id="filter0_d_1028_3685" x="0.828613" y="0.828369" width="33.3433" height="33.3433" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1028_3685"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1028_3685" result="shape"/>
</filter>
<filter id="filter1_d_1028_3685" x="8.22681" y="8.22681" width="18.5464" height="18.5464" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1028_3685"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1028_3685" result="shape"/>
</filter>
<filter id="filter2_d_1028_3685" x="4.24084" y="4.35327" width="26.5182" height="26.2937" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1028_3685"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1028_3685" result="shape"/>
</filter>
<filter id="filter3_d_1028_3685" x="8.69214" y="8.64404" width="17.615" height="17.7119" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1028_3685"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1028_3685" result="shape"/>
</filter>
<filter id="filter4_d_1028_3685" x="11.8489" y="11.825" width="11.302" height="11.3499" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1028_3685"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1028_3685" result="shape"/>
</filter>
<linearGradient id="paint0_linear_1028_3685" x1="8.30453" y1="-2.28723e-07" x2="4.62908" y2="15.5034" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="#B8B8B8"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,66 @@
<svg width="208" height="198" viewBox="0 0 208 198" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_bddf_290_4)">
<path d="M51.9315 77.9679L71.7926 53.7515C73.4352 51.7486 75.791 50.4613 78.3638 50.1606L83.7001 49.5369C86.3034 49.2327 88.922 49.9626 90.9925 51.5697L115.385 70.5021C117.543 72.1778 118.923 74.6642 119.201 77.3829L121.923 103.962C122.185 106.52 121.452 109.081 119.875 111.112L100.84 135.636C99.1944 137.756 96.7662 139.126 94.1009 139.437L88.9216 140.043C86.3178 140.347 83.6986 139.617 81.628 138.009L56.6139 118.587C54.4948 116.942 53.1257 114.514 52.8143 111.849L49.7312 85.4702C49.4162 82.7745 50.2104 80.0665 51.9315 77.9679Z" fill="url(#paint0_linear_290_4)"/>
<path d="M51.9315 77.9679L71.7926 53.7515C73.4352 51.7486 75.791 50.4613 78.3638 50.1606L83.7001 49.5369C86.3034 49.2327 88.922 49.9626 90.9925 51.5697L115.385 70.5021C117.543 72.1778 118.923 74.6642 119.201 77.3829L121.923 103.962C122.185 106.52 121.452 109.081 119.875 111.112L100.84 135.636C99.1944 137.756 96.7662 139.126 94.1009 139.437L88.9216 140.043C86.3178 140.347 83.6986 139.617 81.628 138.009L56.6139 118.587C54.4948 116.942 53.1257 114.514 52.8143 111.849L49.7312 85.4702C49.4162 82.7745 50.2104 80.0665 51.9315 77.9679Z" stroke="url(#paint1_linear_290_4)" stroke-width="6"/>
</g>
<g filter="url(#filter1_bddf_290_4)">
<path d="M103.594 84.5815L120.124 72.3178C122.206 70.7734 124.806 70.0976 127.376 70.433L129.065 70.6533C131.665 70.9926 134.028 72.34 135.645 74.4052L148.12 90.3416C149.804 92.4923 150.535 95.238 150.143 97.9409L147.667 115.01C147.298 117.553 145.964 119.857 143.942 121.443L127.886 134.037C125.774 135.694 123.083 136.432 120.421 136.085L118.889 135.885C116.288 135.546 113.924 134.198 112.308 132.132L99.4654 115.721C97.8131 113.61 97.0778 110.923 97.4247 108.265L99.6358 91.3189C99.9868 88.6293 101.415 86.1976 103.594 84.5815Z" fill="url(#paint2_linear_290_4)"/>
<path d="M103.594 84.5815L120.124 72.3178C122.206 70.7734 124.806 70.0976 127.376 70.433L129.065 70.6533C131.665 70.9926 134.028 72.34 135.645 74.4052L148.12 90.3416C149.804 92.4923 150.535 95.238 150.143 97.9409L147.667 115.01C147.298 117.553 145.964 119.857 143.942 121.443L127.886 134.037C125.774 135.694 123.083 136.432 120.421 136.085L118.889 135.885C116.288 135.546 113.924 134.198 112.308 132.132L99.4654 115.721C97.8131 113.61 97.0778 110.923 97.4247 108.265L99.6358 91.3189C99.9868 88.6293 101.415 86.1976 103.594 84.5815Z" stroke="url(#paint3_linear_290_4)" stroke-width="6"/>
</g>
<defs>
<filter id="filter0_bddf_290_4" x="0.663574" y="0.469299" width="178.312" height="196.641" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImageFix" stdDeviation="2.5"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_290_4"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dx="4" dy="4"/>
<feGaussianBlur stdDeviation="25"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.360784 0 0 0 0 0.745098 0 0 0 0 0.458824 0 0 0 0.6 0"/>
<feBlend mode="normal" in2="effect1_backgroundBlur_290_4" result="effect2_dropShadow_290_4"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dx="4" dy="4"/>
<feGaussianBlur stdDeviation="25"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00392157 0 0 0 0 0.262745 0 0 0 0 0.00392157 0 0 0 0.2 0"/>
<feBlend mode="normal" in2="effect2_dropShadow_290_4" result="effect3_dropShadow_290_4"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect3_dropShadow_290_4" result="shape"/>
<feGaussianBlur stdDeviation="0.15" result="effect4_foregroundBlur_290_4"/>
</filter>
<filter id="filter1_bddf_290_4" x="48.3406" y="21.3489" width="158.906" height="171.82" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImageFix" stdDeviation="2.5"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_290_4"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dx="4" dy="4"/>
<feGaussianBlur stdDeviation="25"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.360784 0 0 0 0 0.745098 0 0 0 0 0.458824 0 0 0 0.6 0"/>
<feBlend mode="normal" in2="effect1_backgroundBlur_290_4" result="effect2_dropShadow_290_4"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dx="4" dy="4"/>
<feGaussianBlur stdDeviation="25"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00392157 0 0 0 0 0.262745 0 0 0 0 0.00392157 0 0 0 0.2 0"/>
<feBlend mode="normal" in2="effect2_dropShadow_290_4" result="effect3_dropShadow_290_4"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect3_dropShadow_290_4" result="shape"/>
<feGaussianBlur stdDeviation="0.15" result="effect4_foregroundBlur_290_4"/>
</filter>
<linearGradient id="paint0_linear_290_4" x1="58.8031" y1="64.025" x2="115.998" y2="139.899" gradientUnits="userSpaceOnUse">
<stop stop-color="#B6FFD0"/>
<stop offset="1" stop-color="#007B18"/>
</linearGradient>
<linearGradient id="paint1_linear_290_4" x1="80.8093" y1="49.8748" x2="91.3149" y2="139.763" gradientUnits="userSpaceOnUse">
<stop stop-color="#458845"/>
<stop offset="1" stop-color="#255125"/>
</linearGradient>
<linearGradient id="paint2_linear_290_4" x1="110.003" y1="76.6239" x2="136.997" y2="140.424" gradientUnits="userSpaceOnUse">
<stop stop-color="#B6FFD0"/>
<stop offset="1" stop-color="#007B18"/>
</linearGradient>
<linearGradient id="paint3_linear_290_4" x1="128.065" y1="70.5229" x2="119.526" y2="135.968" gradientUnits="userSpaceOnUse">
<stop stop-color="#458845"/>
<stop offset="1" stop-color="#255125"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 778 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 127.14 96.36"><path fill="#fff" d="M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z"/></svg>

After

Width:  |  Height:  |  Size: 761 B

View File

@@ -0,0 +1,17 @@
<svg width="30" height="29" viewBox="0 0 30 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="&#208;&#154;&#209;&#128;&#208;&#181;&#209;&#129;&#209;&#130;&#208;&#184;&#208;&#186;" filter="url(#filter0_d_1064_8)">
<path id="Union" fill-rule="evenodd" clip-rule="evenodd" d="M6.853 0.617653C6.51189 0.276538 5.95883 0.276538 5.61772 0.617653C5.2766 0.958768 5.2766 1.51182 5.61772 1.85294L13.7647 9.99994L4.61765 19.147C4.27654 19.4881 4.27654 20.0412 4.61765 20.3823C4.95877 20.7234 5.51182 20.7234 5.85294 20.3823L15 11.2352L24.147 20.3822C24.4881 20.7233 25.0412 20.7233 25.3823 20.3822C25.7234 20.0411 25.7234 19.4881 25.3823 19.1469L16.2353 9.99994L24.3822 1.85301C24.7233 1.51189 24.7233 0.958835 24.3822 0.61772C24.0411 0.276605 23.4881 0.276605 23.1469 0.61772L15 8.76466L6.853 0.617653Z" fill="#30364F"/>
</g>
<defs>
<filter id="filter0_d_1064_8" x="0.361816" y="0.361816" width="29.2764" height="28.2764" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1064_8"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1064_8" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path id="Vector" d="M18.0156 4.28571H3.125C2.78125 4.28571 2.5 3.96429 2.5 3.57143C2.5 3.17857 2.78125 2.85714 3.125 2.85714H18.125C18.4688 2.85714 18.75 2.53571 18.75 2.14286C18.75 0.959821 17.9102 0 16.875 0H2.5C1.12109 0 0 1.28125 0 2.85714V17.1429C0 18.7232 1.12109 20 2.5 20H18.0156C19.1094 20 20 19.0402 20 17.8571V6.42857C20 5.24554 19.1094 4.28571 18.0156 4.28571ZM16.25 13.5714C15.5586 13.5714 15 12.933 15 12.1429C15 11.3527 15.5586 10.7143 16.25 10.7143C16.9414 10.7143 17.5 11.3527 17.5 12.1429C17.5 12.933 16.9414 13.5714 16.25 13.5714Z" fill="#17181C"/>
</svg>

After

Width:  |  Height:  |  Size: 672 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 B

View File

@@ -0,0 +1,3 @@
<svg width="23" height="3" viewBox="0 0 23 3" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect y="3" width="3" height="22.2619" rx="1.5" transform="rotate(-90 0 3)" fill="#D9D9D9"/>
</svg>

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

View File

@@ -0,0 +1,12 @@
import { Post } from '../rest/RestMethods.js';
import { BackendApiUrl } from '@/properties/Сonfig.js';
export async function LogIn(authCode) {
try {
const response = await Post(BackendApiUrl + "/Authorize/LogIn", { code: authCode });
return response;
} catch (error) {
console.error('Error in LogIn:', error);
}
}

View File

@@ -0,0 +1,10 @@
export function
GetAuthCodeFromCurrentPath() {
const currentPath = window.location.pathname;
const parts = currentPath.split('/');
const code = parts[parts.length - 1];
return code
}

View File

@@ -0,0 +1,56 @@
import { BackendWebSocketUrl } from '@/properties/Сonfig.js';
import { eventBus } from "@/main";
import {
GetCookie
} from "@/assets/js/storage/CookieStorage.js";
let webSocket;
export function ConnectToChat() {
try {
webSocket = new WebSocket(BackendWebSocketUrl);
webSocket.onopen = function () {
console.log('Connection established');
};
webSocket.onmessage = function (event) {
eventBus.emit('dataChat', event.data)
console.log('Message from Server:', event.data);
};
webSocket.onclose = function () {
webSocket = new WebSocket(BackendWebSocketUrl);
console.log('Connection closed and reconnected');
};
webSocket.onerror = function (event) {
console.error('WebSocket Error:', event);
};
} catch (error) {
console.error('Error in ConnectToChat:', error);
}
}
export function SendMessageToChat(message) {
try {
if (!GetCookie("SpUserName") && !GetCookie("AUTHTOKEN") && !GetCookie("SearchToken")) {
return;
}
const data = {
SpUserName: GetCookie("SpUserName"),
Message: message
};
webSocket.send(JSON.stringify(data));
} catch (error) {
console.error('Error in ConnectToChat:', error);
}
}

View File

@@ -0,0 +1,118 @@
import { BackendApiUrl } from '@/properties/Сonfig.js';
export async function GetPercentageSteps(CrystalsCount) {
const data = {
minesCount: CrystalsCount
}
try {
const response = await fetch(`${BackendApiUrl}/GameMines/GetMultiplierPercentage`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data),
redirect: 'follow'
})
if (!response.ok) {
console.log('Fetch error:', response.status)
}
console.log(response)
return await response.json()
}
catch (error) {
console.log('Fetch Error!')
}
}
export async function GetUserData(AUTHTOKEN, SearchToken) {
const data = {
AUTHTOKEN: AUTHTOKEN,
SearchToken: SearchToken
};
try {
const response = await fetch(`${BackendApiUrl}/GameMines/GetCurrentData`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data),
redirect: 'follow'
})
if (!response.ok) {
console.log('Fetch error:', response.status)
}
return await response.json()
}
catch (error) {
console.log('Fetch error')
}
}
export async function ClickCirclePlay(InfoUser, ClickedCell) {
const data = {
PuttedMoney: InfoUser.PuttedMoney,
MinesCount: InfoUser.MinesCount,
UserCredentials: {
SearchToken: InfoUser.SearchToken,
AUTHTOKEN: InfoUser.AUTHTOKEN
},
ClickedCell: {
X: ClickedCell.X,
y: ClickedCell.Y
}
}
try {
const response = await fetch(`${BackendApiUrl}/GameMines/Play`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data),
redirect: 'follow'
})
if (!response.ok) {
console.log('Fetch error:', response.status)
}
return await response.json()
}
catch (error) {
console.error('Fetch error')
}
}
export async function GetWinningAmount(UserInfo) {
const data = {
SearchToken: UserInfo.SearchToken,
AuthToken: UserInfo.AuthToken
}
try {
const response = await fetch(`${BackendApiUrl}/GameMines/TransferMoneyFromGameToWallet`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data),
redirect: 'follow'
})
if (!response.ok) {
console.log('Fetch error:', response.status)
}
return await response.json()
}
catch (error) {
console.log('Fetch error', error)
}
}

View File

@@ -0,0 +1,60 @@
// import { Post } from '../rest/RestMethods.js';
import { BackendApiUrl } from '@/properties/Сonfig.js';
import {GetCookie} from "@/assets/js/storage/CookieStorage";
export async function GettingMoneyOperation(amount) {
const data = {
Amount: amount
};
try {
const response = await fetch(`${BackendApiUrl}/payment/donate`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(data),
redirect: "follow"
});
if (!response.ok) {
console.log("Fetch error:", response.status);
}
console.log(response)
return await response.json();
} catch (error) {
console.log("Fetch error:", error);
}
}
export async function WithdrawMoneyOperation(amount, card, captchaToken) {
const data = {
amount: amount,
card: card,
reCaptchaToken: captchaToken,
userCredentials: {
searchToken: GetCookie('SearchToken'),
authtoken: GetCookie('AUTHTOKEN')
}
}
try {
const response = await fetch(`${BackendApiUrl}/payment/TransferMoneyToSpWorlds`, {
method: 'POST',
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(data),
redirect: "follow"
})
if (!response.ok) {
console.log("fetch error withdrawmoney operation status:", response.status)
}
console.log(response)
return await response.json()
}
catch (error) {
console.log(`fetch error withdrawmoney operation - ${error}`)
}
}

View File

@@ -0,0 +1,54 @@
import { BackendApiUrl } from '@/properties/Сonfig.js';
export async function Post(url = "", data = {}) {
try {
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
},
body: JSON.stringify(data),
redirect: "follow"
});
if (!response.ok) {
console.log("Fetch error:", response.status);
}
return await response.json();
} catch (error) {
console.log("Fetch error:", error);
}
}
export async function GetCurrentMoney(authToken, searchToken) {
const data = {
AUTHTOKEN: authToken,
SearchToken: searchToken
};
try {
const response = await fetch(`${BackendApiUrl}/Payment/UserMoney`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(data),
redirect: "follow"
});
if (!response.ok) {
console.log("Fetch error:", response.status);
}
return await response.json();
} catch (error) {
console.log("Fetch error:", error);
}
}

View File

@@ -0,0 +1,34 @@
export function SetCookie(name, value, years = 10) {
var expires = "";
if (value) {
var date = new Date();
date.setTime(date.getTime() + (years * 365 * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
export function DeleteCookie(name) {
document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/;';
}
export function DeleteAllCookie() {
const cookies = document.cookie.split(';');
for (let cookie of cookies) {
const eqPos = cookie.indexOf('=');
const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/;';
}
}
export function GetCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}

View File

@@ -2,14 +2,14 @@
<aside class="menu">
<div class="menu__content">
<div class="menu__btn--home">
<a href="#"><img width="73" height="73" src="../assets/icons-menu/home-icon.svg"></a>
<a href="#" @click="$router.push({ name: 'home' })"><img width="73" height="73" src="../assets/icons-menu/home-icon.svg"></a>
</div>
<div class="menu__btns--gamemodes">
<div class="menu__content--gamemodes">
<a href="#"><img src="../assets/icons-menu/slots-icon.svg"></a>
<a href="#"><img src="../assets/icons-menu/crush-icon.svg"></a>
<a href="#"><img src="../assets/icons-menu/case-icon.png"></a>
<a href="#"><img src="../assets/icons-menu/bomb-icon.svg"></a>
<a href="#"><img class="menu__content--slots-icon" src="../assets/icons-menu/slots-icon.svg"></a>
<a href="#"><img class="menu__content--cruch-icon" src="../assets/icons-menu/crush-icon.svg"></a>
<a href="#"><img src="../assets/icons-menu/case-icon.png"></a>
<a href="#" @click="$router.push({ name: 'saper' })"><img class="menu__content--bomb-icon" src="../assets/icons-menu/bomb-icon.svg"></a>
</div>
</div>
<div class="menu__btn--settings">

View File

@@ -0,0 +1,45 @@
<template>
<vue-recaptcha class="captcha-withdraw" v-show="showcaptcha" sitekey="6LcuUDQpAAAAAPz8007pFD2FigaSh6InnUq_MEd8"
size="normal"
theme="dark"
hl="tr"
:loading-timeout="loadingTimeout"
@verify="recaptchaVerified"
@expire="eventCloseModal"
@fail="eventCloseModal"
@error="eventCloseModal"
ref="vueRecaptcha">
</vue-recaptcha>
</template>
<script>
import vueRecaptcha from 'vue3-recaptcha2';
export default {
name: 'app',
components: {
vueRecaptcha
},
props: {
showcaptcha: Boolean,
},
data() {
return {
loadingTimeout: 30000,
captchaToken: ''
}
},
methods: {
recaptchaVerified(vueRecaptcha) {
this.captchaToken = vueRecaptcha
return this.$emit('captchatokendata', this.captchaToken)
},
eventCloseModal() {
setTimeout(() => {
return this.$emit("captchadata");
}, 1000)
}
}
};
</script>

View File

@@ -33,10 +33,14 @@
<script>
import '@/assets/css/ComponentsStyles/chat.css'
import WritechatComponent from "@/components/WritechatComponent.vue";
import { SendMessageToChat } from "@/assets/js/chat/ChatLogic.js";
import {eventBus} from "@/main";
export default {
components: { WritechatComponent },
inject: [ 'eventBus' ],
data() {
return {
array: [],
@@ -45,19 +49,33 @@ export default {
},
methods: {
ClaimDatamsg(msg) {
SendMessageToChat(msg[0]);
// if(this.array.length > 7) {
// this.array.shift()
// }
}
},
mounted() {
eventBus.on('dataChat', (dataFromServer) => {
try {
// Attempt to parse the JSON string
const dataObject = JSON.parse(dataFromServer);
let imageUrl = "https://avatar.spworlds.ru/face/55/" + dataObject.SpUserName;
const MsgUser = {
id: this.id + 1,
msg: msg[0],
username: msg[1],
icon: msg[2]
}
msg: dataObject.Message,
username: dataObject.SpUserName,
icon: imageUrl
};
this.array.push(MsgUser)
if(this.array.length > 7) {
this.array.shift()
}
this.array.push(MsgUser);
} catch (error) {
console.error('Error parsing JSON data:', error);
}
})
}
}
</script>

View File

@@ -1,58 +1,174 @@
<script>
import '@/assets/css/ComponentsStyles/header.css'
// import { myFunction } from '@/assets/js/AuthService.js';
import "@/assets/css/ComponentsStyles/header.css";
import { LogIn } from "@/assets/js/authentication/AuthService.js";
import { GetCurrentMoney } from "@/assets/js/rest/RestMethods.js";
import {eventBus} from "@/main";
import {
SetCookie,
GetCookie,
DeleteAllCookie,
} from "@/assets/js/storage/CookieStorage.js";
export default {
name: 'Header-Element-page',
name: "Header-Element-page",
methods: {
logout() {
this.auth = false;
this.balance = 0;
DeleteAllCookie();
},
updateBalanceMethod() {
GetCurrentMoney(GetCookie("AUTHTOKEN"), GetCookie("SearchToken"))
.then(response => {
this.balance = response.currentMoney
})
}
},
data() {
return {
balance: 25000,
auth: false
balance: 0,
auth: false,
imageUrl: "https://avatar.spworlds.ru/face/55/",
userName: "",
};
},
mounted() {
eventBus.on('Updatebalance', () => {
this.updateBalanceMethod()
})
},
created() {
try {
let authCode = this.$route.query.code;
if (authCode) {
LogIn(authCode)
.then((response) => {
console.log("Auth Data:", response);
SetCookie("UserId", response.userId);
SetCookie("SpUserName", response.spUserName);
SetCookie("AUTHTOKEN", response.authtoken);
SetCookie("SearchToken", response.searchToken);
this.imageUrl = this.imageUrl + `${response.spUserName}.png`;
this.userName = response.spUserName;
this.auth = true;
GetCurrentMoney(GetCookie("AUTHTOKEN"), GetCookie("SearchToken"))
.then((response) => {
this.balance = response.currentMoney;
console.log(response);
})
.catch((error) => {
console.error(error);
});
})
.catch(() => {
let currentUserName = GetCookie("SpUserName");
GetCurrentMoney(GetCookie("AUTHTOKEN"), GetCookie("SearchToken"))
.then((response) => {
this.balance = response.currentMoney;
console.log(response);
})
.catch((error) => {
console.error(error);
});
if (currentUserName) {
this.imageUrl = this.imageUrl + `${currentUserName}.png`;
this.userName = GetCookie("SpUserName");
this.auth = true;
} else {
this.auth = false;
this.balance = 0;
}
});
} else {
let currentUserName = GetCookie("SpUserName");
GetCurrentMoney(GetCookie("AUTHTOKEN"), GetCookie("SearchToken"))
.then((response) => {
this.balance = response.currentMoney;
console.log(response);
})
.catch((error) => {
// Обработка ошибки
console.error(error);
});
if (currentUserName) {
this.imageUrl = this.imageUrl + `${currentUserName}.png`;
this.userName = GetCookie("SpUserName");
this.auth = true;
} else {
this.auth = false;
this.balance = 0;
}
}
} catch (error) {
console.error("Auth Code error:", error);
}
}
}
},
};
</script>
<template>
<header class="header">
<div class="header__content">
<div class="header__logo">
<img src="../assets/logo.svg" alt="">
<img @click="$router.push({ name: 'home' })" src="../assets/logo.svg" alt="" />
</div>
<div class="header__nav">
<nav>
<a href="#" class="header__nav--now">Главная</a>
<a href="#">Профиль</a>
<a href="#" @click="$router.push({ name: 'home' })" :class="{ 'header__nav--now' : $route.name === 'home' }">Главная</a>
<a href="#" @click="$router.push({ name: 'profile' })" :class="{ 'header__nav--now' : $route.name === 'profile' }">Профиль</a>
<a href="#">Помощь</a>
</nav>
</div>
<div class="header__balance">
<div class="header__content--balance">
<div class="header__card--balance">
<h2><img src="../assets/icons-header/diamond-ore-icon.png">{{ balance }}</h2>
<h2>
<img src="../assets/icons-header/diamond-ore-icon.png" />{{
balance
}}
</h2>
</div>
<div class="header__btn--wallet">
<a href="">кошелёк</a>
<a href="#" @click="$router.push({ name: 'profile' })">кошелёк</a>
</div>
</div>
</div>
<div class="header__auth--discord">
<div v-if="auth" class="header__card--discord">
<div class="discord__card--name">
<h2>Artemka</h2>
<a href="#" @click="auth = false">Выход<span><img src="../assets/icons-header/exit-icon.png"></span></a>
<h2>{{ userName }}</h2>
<a href="#" @click="logout"
>Выход<span
><img src="../assets/icons-header/exit-icon.png" /></span
></a>
</div>
<img src="../assets/icons-test/person-icon.svg" alt="test-ico">
<img :src="imageUrl" alt="test-ico" />
<!-- <img src="../assets/icons-test/person-icon.svg" alt="test-ico"> -->
</div>
<div v-else class="header__card--auth">
<!-- <div class="header__card--auth"> -->
<div class="auth__card--content">
<a href="#" @click="auth = true"><span><img width="30" height="30" src="../assets/icons-header/discord-icon.png"></span>Вход</a>
<a
href="https://discord.com/api/oauth2/authorize?client_id=1148644854797176932&redirect_uri=https%3A%2F%2Flucky-diamond.vercel.app&response_type=code&scope=identify"
@click="auth = true"
><span
><img
width="30"
height="30"
src="../assets/icons-header/discord-icon.svg" /></span
>Вход</a
>
</div>
</div>
</div>
</div>
</header>
</template>
<style scoped>
</style>

View File

@@ -1,11 +1,9 @@
<template>
<transition name="fade">
<div class="notification" v-if="isAnimationOn">
<div class="notification__content">
<h3>Анимации выключены</h3>
</div>
<div class="notification" v-if="notification">
<div class="notification__content">
<h3>Успешный вывод!</h3>
</div>
</transition>
</div>
</template>
<script>
@@ -13,18 +11,18 @@ import '@/assets/css/ComponentsStyles/notification.css'
export default {
props: {
isAnimationOn: Boolean
notification: Boolean
},
emits: ['animationchange'],
emits: ['notificationremove'],
methods: {
NotificationsTimer() {
setTimeout(() => {
this.$emit('animationchange', false)
this.$emit('notificationremove')
}, 4000)
}
},
watch: {
isAnimationOn(newVal, oldVal) {
notification(newVal, oldVal) {
if (newVal !== oldVal) {
this.NotificationsTimer()
}

View File

@@ -0,0 +1,241 @@
<template>
<div class="payment-modal withdraw-modal">
<div class="payments-modal__content close-modal__icon text-styles__margin">
<h1>{{ payments ? "Пополнить" : "Вывод" }}</h1>
<img
@click="closeModal"
src="@/assets/icons-other/icon-payments-modal-close.svg"
/>
</div>
<div v-if="payments" class="payments-modal__deposit">
<div
class="deposit-input deposit-text deposit-icon-diamond deposit-icon__input"
>
<h3>Сумма пополнения</h3>
<img src="@/assets/icons-games/saper-game/icon-diamond-ore-saper.png" />
<input class="deposit-amount__input" v-model="amount" type="number" />
<div class="deposit-btns">
<ul class="display-btns btns-style-diamonds">
<li v-for="number in PaymentsModalNumbers" :key="number">
<button
@click="clickedBtnChoice(number, number.diamonds)"
:class="{
'btn-click': clickedBtn === number,
[number]: clickedBtn === number,
}"
>
{{ number.diamonds }}
</button>
</li>
</ul>
</div>
<div v-if="showPromocodeStatus" class="error-promocode">
<h2 v-if="errorPromocode" class="error-text__promocode">Промокод не найден</h2>
<h2 v-else class="correct-text__promocode">Промокод успешно применён</h2>
</div>
<div class="deposit-promocode deposit-promocode__padding--input">
<h3>Промокод</h3>
<input @focusout="checkValidationPromocode" v-model="promocode" class="promo-input" type="text" />
</div>
<div class="deposit-checkbox checkbox-styles">
<input @click="agreeUser = !agreeUser" type="checkbox" />
<h3>Я согласен с пользовательским соглашением.</h3>
</div>
<div
class="btn-deposit btn-text-style btn-display-deposit btn-style-payments"
>
<p>
Вы подтверждаете правильность введенных данных при создании вывода.
</p>
<button
type="submit"
:disabled="checkOffBtn"
@click="RedirectedMethodDep"
>
Пополнить
</button>
<p>
Перед пополнение прочитайте политику конфиденциальности и
пользовательское соглашение.
</p>
</div>
</div>
</div>
<div v-else class="payments-modal__withdraw deposit-text withdraw-input">
<div class="count-withdraw deposit-icon-diamond">
<h3>Сумма вывода</h3>
<img src="@/assets/icons-games/saper-game/icon-diamond-ore-saper.png" />
<input class="with-input" v-model="amountWithdraw" type="number" />
</div>
<div class="number-card deposit-promocode__padding--input">
<h3>Введите номер карты</h3>
<input class="with-input" v-model="card" type="text" />
</div>
<div v-if="offAgree" class="error-checkbox">
<h2 v-show="errorAgree">Введите сначало карту</h2>
</div>
<div class="withdraw-checkbox checkbox-styles">
<input :disabled="offAgree" @mouseover="errorAgree = true" @mouseleave="errorAgree = false" @click="agreeUser = !agreeUser" type="checkbox"/>
<h3>Я согласен с пользовательским соглашением.</h3>
</div>
<captcha-component @captchatokendata="claimCaptchaToken" :showcaptcha="agreeUser" @captchadata="closeModal"></captcha-component>
<div
class="btn-withdraw btn-text-style btn-display-deposit btn-style-payments"
>
<p>
Вы подтверждаете правильность введенных данных при создании вывода.
</p>
<button type="submit" :disabled="checkOffBtn" @click="RedirectedMethodTransferMoneyToSp">
Вывод
</button>
<p>
Перед выводом прочитайте политику конфиденциальности и
пользовательское соглашение.
</p>
</div>
</div>
</div>
</template>
<script>
import "@/assets/css/ComponentsStyles/payments-modal.css";
import PaymentsModalNumbers from "@/mocks/PaymentsModalNumbers";
import { GettingMoneyOperation, WithdrawMoneyOperation } from "@/assets/js/moneyoperation/Claimmoney";
import CaptchaComponent from "@/components/CaptchaComponent.vue";
export default {
components: { CaptchaComponent },
props: ["payments"],
data() {
return {
amount: 0,
amountWithdraw: 1,
amountSave: 1,
card: '',
promocode: '',
promocodeBase: ['ANTI-GRIF'],
errorPromocode: false,
showPromocodeStatus: false,
errorAgree: false,
captchaToken: null,
clickedBtn: "",
url: "",
offBtn: true,
offAgree: true,
completeValidtaion: {
amountsaving: true,
cardsaving: false,
agreesaving: false,
captchatokensaving: false
},
agreeUser: false,
PaymentsModalNumbers,
};
},
watch: {
amount(newAmount) {
this.offBtn = true;
if (this.amount > 0 && this.amount !== "") {
setTimeout(() => {
try {
GettingMoneyOperation(newAmount).then((response) => {
console.log("Payments Modal Working!: ", response);
this.url = response;
this.offBtn = false;
});
} catch (e) {
console.error("Error in PaymentModal!", e);
}
}, 2000);
}
},
amountWithdraw(newAmount) {
this.completeValidtaion.amountsaving = false
if (newAmount > 0) {
this.amountSave = newAmount
this.completeValidtaion.amountsaving = true
console.log(this.completeValidtaion)
}
},
card(newAmount) {
this.completeValidtaion.cardsaving = false
const cardPattern = /^\d{5}$/;
if(cardPattern.test(newAmount)) {
this.offAgree = false
this.completeValidtaion.cardsaving = true
}
},
agreeUser(newAgree) {
this.completeValidtaion.agreesaving = false
if (newAgree !== false) {
this.completeValidtaion.agreesaving = true
}
},
completeValidtaion: {
handler() {
this.completeValidationCheck()
},
deep: true
}
},
computed: {
checkOffBtn() {
return this.checkBtn();
},
},
methods: {
closeModal() {
return this.$emit("closemodal");
},
checkValidationPromocode() {
this.errorPromocode = !this.promocodeBase.includes(this.promocode);
this.showPromocodeStatus = true
},
completeValidationCheck() {
this.offBtn = true
if (
this.completeValidtaion.amountsaving &&
this.completeValidtaion.cardsaving &&
this.completeValidtaion.agreesaving &&
this.completeValidtaion.captchatokensaving
) {
this.offBtn = false
}
},
claimCaptchaToken(Token) {
this.captchaToken = Token
this.completeValidtaion.captchatokensaving = true
},
RedirectedMethodDep() {
console.log(`From /profile to - ${this.url} url`)
window.location.href = this.url
},
async RedirectedMethodTransferMoneyToSp() {
setTimeout(async () => {
try {
WithdrawMoneyOperation(this.amountSave, this.card.toString(), this.captchaToken).then((response) => {
console.log(`work withdraw - ${response}`)
})
}
catch (e) {
console.error(`Error in wihdrawmoney operation - ${e}`)
}
await this.$emit('notifacetionmoney')
}, 4000)
},
checkBtn() {
if (this.offBtn === false) {
if (this.agreeUser !== false) {
return false;
}
}
return true;
},
clickedBtnChoice(index, content) {
this.clickedBtn = index;
this.amount = content;
},
},
};
</script>

View File

@@ -1,40 +1,62 @@
<template>
<div class="write">
<div class="write__content">
<input type="text" v-model.trim="msg" placeholder="Напишите сообщение..." maxlength="22">
<button
:disabled="CheckerforBtn()"
type="submit"
@click="SendmsgData"
>
<img src="@/assets/icons-chat/sendmsg-icon.png">
<!-- <input
type="text"
@keyup.enter="sendmsgDataEnter"
v-model.trim="msg"
placeholder="Напишите сообщение..."
maxlength="200"
/> -->
<textarea
@keyup.enter="sendmsgDataEnter"
v-model.trim="msg"
placeholder="Напишите сообщение..."
maxlength="200"
rows="3"
></textarea>
<button :disabled="CheckerforBtn()" type="submit" @click="SendmsgData">
<img src="@/assets/icons-chat/sendmsg-icon.png" />
</button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
msg: '',
username: 'TEST USER',
icon: require('../assets/icons-test/person-icon-chat.png'),
}
msg: "",
username: "TEST USER",
icon: require("../assets/icons-test/person-icon-chat.png"),
};
},
methods: {
CheckerforBtn() {
return this.msg === ''
return this.msg === "";
},
sendmsgDataEnter() {
if (this.msg !== "") {
this.SendmsgData();
}
},
SendmsgData() {
this.$emit('send', [this.msg, this.username, this.icon])
this.msg = ''
}
}
}
const formattedWord = this.InsertSpaceEvery24Chars(this.msg);
this.$emit("send", [formattedWord, this.username, this.icon]);
this.msg = "";
},
InsertSpaceEvery24Chars(word) {
let result = "";
for (let i = 0; i < word.length; i += 22) {
result += word.substring(i, i + 22) + " ";
}
return result.trim();
},
},
};
</script>
<style>
</style>

View File

@@ -0,0 +1,35 @@
<template>
<header class="header-mobile">
<div class="header-mobile__content">
<div class="header-mobile__logo">
<img src="@/assets/icons-adaptive/home-adaptive/logo.svg" alt="LuckyDiamond Play Now">
</div>
<div class="header-mobile__end">
<div class="header-mobile__balance">
<div class="header-mobile__balance--content">
<div class="header-mobile__card card-display card-text card-img">
<h2><img src="@/assets/icons-adaptive/home-adaptive/icon-diamond-ore.png">999</h2>
</div>
<div class="header-mobile__btn--balance btn-card btn-card__margin">
<a href="#" @click="$router.push({ name: 'profile' })"><img src="@/assets/icons-adaptive/home-adaptive/icon-wallet.svg"></a>
</div>
</div>
</div>
<div class="header-mobile__user-icon user-icon">
<img src="@/assets/icons-test/person-icon-profile-userinfo.png">
</div>
</div>
</div>
</header>
</template>
<script>
import '@/assets/css/ComponentsStyles/AdaptiveStyles/headermobile.css'
export default {
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,24 @@
<template>
<footer class="footer-mobile">
<div class="footer-mobile__content">
<div class="footer-mobile__icons icons-size">
<a href="#"><img class="icon-start" src="@/assets/icons-adaptive/home-adaptive/icon-home-menu.png"></a>
<a href="#" @click="$router.push({ name: 'profile' })"><img class="icon-center" src="@/assets/icons-adaptive/home-adaptive/icon-wallet-menu.svg"></a>
<a href="#"><img class="icon-center" src="@/assets/icons-adaptive/home-adaptive/icon-chat-menu.png"></a>
<a href="#"><img class="icon-center" src="@/assets/icons-adaptive/home-adaptive/icon-info-menu.png"></a>
<a href="#"><img class="icon-end" src="@/assets/icons-adaptive/home-adaptive/icon-menu.png"></a>
</div>
</div>
</footer>
</template>
<script>
import '@/assets/css/ComponentsStyles/AdaptiveStyles/menumobile.css'
export default {
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,67 @@
<template>
<div class="root-mobile">
<div class="payments-modal-mobile text-style-mobile padding-elements__mobile">
<h1>{{ payments.paymentsView ? 'Пополнить' : 'Вывод' }}</h1>
<img
src="@/assets/icons-other/icon-payments-modal-close.svg"
class="icon-close__mobile"
@click="closeModal()"
>
</div>
<div class="payments-modal-mobile__content margin-mobile___payments">
<h2>Сумма {{ payments.paymentsView ? 'пополнения' : 'вывода' }}</h2>
<div class="payments-modal__input input-style__mobile img-style">
<img src="@/assets/icons-games/saper-game/icon-diamond-ore-saper.png">
<input type="number" v-model="number" class="input-mobile__number">
<div class="payments-modal__btns-mobile">
<ul class="button-style__mobile">
<li v-for="number in PaymentsModalNumbers" :key="number">
<button>{{ number.diamonds }}</button>
</li>
</ul>
</div>
</div>
<div class="payments-modal__promocode input-style__mobile" v-if="payments.paymentsView === true">
<input type="text" placeholder="Введите промокод">
</div>
<div class="payments-modal__agree checkbox-styles">
<input v-if="!payments.paymentsView" type="checkbox" v-model="agreeUser">
<input v-else type="checkbox">
<h3>Я согласен с пользовательским соглашением.</h3>
</div>
<captcha-component class="captcha-mobile" :showcaptcha="agreeUser"></captcha-component>
<div class="payments-modal__submit">
<p>Вы подтверждаете правильность введенных данных при создании вывода.</p>
<button @click="closeModal()">{{ payments.paymentsView ? 'Пополнить' : 'Вывод' }}</button>
</div>
</div>
</div>
</template>
<script>
import PaymentsModalNumbers from "@/mocks/PaymentsModalNumbers";
import CaptchaComponent from "@/components/CaptchaComponent.vue";
import '@/assets/css/ComponentsStyles/AdaptiveStyles/payments-modalmobile.css'
export default {
components: { CaptchaComponent },
props: [ 'payments' ],
data() {
return {
PaymentsModalNumbers,
agreeUser: false,
number: 0
}
},
methods: {
closeModal() {
return this.$emit('closemodal')
}
}
}
</script>
<style>
</style>

View File

@@ -2,10 +2,21 @@ import { createApp } from 'vue'
import App from './App.vue'
import router from "@/router/router";
import mitt from 'mitt'
import { Mixins } from "@/mixins/mixin";
import {
ConnectToChat
} from "@/assets/js/chat/ChatLogic.js";
import '@/assets/css/global.css'
export const eventBus = mitt()
const app = createApp(App)
app.use(router)
app.mixin(Mixins)
app.mount('#app')
app.provide(eventBus)
ConnectToChat();

View File

@@ -0,0 +1,13 @@
export const Mixins = {
methods: {
checkWindowSize() {
this.mobile = window.innerWidth <= 600
},
AddWindowListener() {
window.addEventListener('resize', this.checkWindowSize)
},
RemoveWindowListener() {
window.removeEventListener('resize', this.checkWindowSize)
}
}
}

View File

@@ -0,0 +1,20 @@
export default [
{
diamonds: 1,
},
{
diamonds: 5,
},
{
diamonds: 10,
},
{
diamonds: 50,
},
{
diamonds: 100,
},
{
diamonds: 1000,
},
]

View File

@@ -0,0 +1,30 @@
export default [
{
crystals: 1,
diamonds: 1,
steps: 'x1.2'
},
{
crystals: 5,
diamonds: 5,
steps: 'x1.5'
},
{
crystals: 10,
diamonds: 10,
steps: 'x1.8'
},
{
crystals: 24,
diamonds: 50,
steps: 'x2'
},
{
diamonds: 100,
steps: 'x2.2'
},
{
diamonds: 'max',
steps: 'x2.5'
}
]

View File

@@ -1,11 +1,11 @@
<link rel="stylesheet" href="../assets/css/PagesStyles/home.css">
<template>
<div class="content-grid">
<aside-bar-element @animationchange="claimSettings"></aside-bar-element>
<homemobile-page v-if="mobile"></homemobile-page>
<div class="content-grid" v-else>
<aside-bar-component></aside-bar-component>
<chat-element></chat-element>
<chat-component></chat-component>
<header-element-page></header-element-page>
<header-component></header-component>
<main class="main">
<div class="main__content">
@@ -32,7 +32,7 @@
<div class="line__footer">
<img src="../assets/icons-gamemodes/bomb-icon.svg">
<div class="line__btn--main">
<a href="#" class="line__btn">play <span class="line__btn--elm">></span></a>
<a href="#" @click="$router.push({ name: 'saper' })" class="line__btn">play <span class="line__btn--elm">></span></a>
</div>
</div>
</div>
@@ -45,16 +45,17 @@
<li
v-for="mode in firstlineGameMode"
:key="mode.id"
class="display-firstline"
>
<div class="line__img">
<img src="@/assets/icons-gamemodes/case-icon.png">
</div>
<div :class="'linecontent-' + mode.id">
<div class="container">
<h1 class="title-firstline">{{ mode.title }}</h1>
<a href="#" class="line__btn">play <span class="line__btn--elm">></span></a>
</div>
</div>
<div class="line__img">
<img src="@/assets/icons-gamemodes/case-icon.png">
</div>
</li>
</ul>
</div>
@@ -99,25 +100,40 @@
</template>
<script>
import HeaderElementPage from "@/components/HeaderComponent.vue";
import AsideBarElement from "@/components/AsidebarComponent.vue";
import ChatElement from "@/components/ChatComponent.vue";
import HeaderComponent from "@/components/HeaderComponent.vue";
import AsideBarComponent from "@/components/AsidebarComponent.vue";
import ChatComponent from "@/components/ChatComponent.vue";
import HomemobilePage from "@/pages/adaptive-pages/HomemobilePage.vue";
import GameModes from "@/mocks/GameModes";
import '@/assets/css/PagesStyles/home.css'
export default {
name: 'HomePage',
components: {AsideBarElement, HeaderElementPage, ChatElement },
components: { AsideBarComponent, HeaderComponent, ChatComponent, HomemobilePage },
data() {
return {
GameModes,
AnimationOff: false
AnimationOff: false,
mobile: false,
}
},
methods: {
claimSettings(value) {
this.AnimationOff = value
}
// claimSettings(value) {
// this.AnimationOff = value
// },
// checkWindowSize() {
// this.mobile = window.innerWidth <= 600
//
// this.currentPage = this.mobile ? 'Mobile' : 'Desktop'
// }
},
mounted() {
this.checkWindowSize()
this.AddWindowListener()
},
beforeUnmount() {
this.RemoveWindowListener()
},
computed: {
mainGameMode() {

View File

@@ -0,0 +1,151 @@
<template>
<profilemobile-page v-if="mobile"></profilemobile-page>
<div class="content__grid-profile" v-else>
<aside-bar-component></aside-bar-component>
<chat-component id="chat-profile"></chat-component>
<header-component></header-component>
<section class="profile">
<div class="profile__content">
<img class="profile__user--img" :src="imageUrl">
<div class="profile__card icon-diamond">
<h1>{{ username }}</h1>
<h2><img src="@/assets/icons-profile/icon-diamond-ore.png">{{ balance }}</h2>
</div>
<div class="profile__btns--payments">
<a href="#" class="text-btn btn-bg btn-margin btn-display" @click="depositClick"><img class="icon-margin-deposit-withdraw" src="@/assets/icons-profile/icon-deposit.svg"> Пополнить</a>
<a href="#" class="withdraw text-btn btn-bg btn-display" @click="withdrawClick"><img class="icon-margin-deposit-withdraw" src="@/assets/icons-profile/icon-withdraw.png"> Вывести</a>
</div>
</div>
<div class="payments">
<div class="payments__content">
<div class="payments__types">
<div class="types types-margin types-text">
<h3>Игрок и вид транзакции</h3>
<h3>Дата</h3>
<h3>Сумма</h3>
</div>
<div class="types-line"></div>
</div>
<div class="payments__history">
<div class="payments__card" v-for="payment in arrayHistory" :key="payment.id">
<div class="user-info">
<img src="@/assets/icons-test/person-icon-profile-userinfo.png">
<div class="user-name user-name__text">
<h3>{{ payment.name }}</h3>
<p>{{ payment.comment }}</p>
</div>
</div>
<div class="data-info data-info__text">
<h3>{{ payment.data }}</h3>
</div>
<div class="transaction-info transaction-info__text" :class="{ 'withdraw-color': payment.amount < 0, 'deposit-color': payment.amount > 0 }">
<h3>{{ payment.amount }} АР</h3>
</div>
</div>
</div>
</div>
</div>
</section>
<payments-modal v-if="openModal" @notifacetionmoney="NotificationEventListener" @closemodal="openModal = false" :payments="payments"></payments-modal>
<notiicationwindow-component @notificationremove="NotificationMethod" :notification="notification"></notiicationwindow-component>
</div>
</template>
<script>
import AsideBarComponent from "@/components/AsidebarComponent.vue";
import ChatComponent from "@/components/ChatComponent.vue";
import HeaderComponent from "@/components/HeaderComponent.vue";
import PaymentsModal from "@/components/PaymentsModal.vue";
import ProfilemobilePage from "@/pages/adaptive-pages/ProfilemobilePage.vue";
import NotiicationwindowComponent from "@/components/NotiicationwindowComponent.vue";
import { GetCookie } from "@/assets/js/storage/CookieStorage";
import '@/assets/css/PagesStyles/profile.css'
import {GetCurrentMoney} from "@/assets/js/rest/RestMethods";
export default {
components: {ProfilemobilePage, HeaderComponent, AsideBarComponent, ChatComponent, PaymentsModal, NotiicationwindowComponent },
data() {
return {
username: 'Artemka',
imageUrl: '',
notification: false,
balance: 0,
mobile: false,
openModal: false,
payments: true,
arrayHistory: [],
}
},
emits: ['notificationremove'],
mounted() {
this.checkWindowSize()
this.AddWindowListener()
},
beforeUnmount() {
this.RemoveWindowListener()
},
created() {
this.username = GetCookie('SpUserName')
GetCurrentMoney(GetCookie('AUTHTOKEN'), GetCookie('SearchToken'))
.then((response) => {
this.balance = response.currentMoney
console.log('balance in profile', this.balance)
})
.catch((error) => {
console.error('error in profile, get money', error)
})
this.imageUrl = `https://avatar.spworlds.ru/front/256/${this.username}`
},
methods: {
depositClick() {
this.openModal = true
this.payments = true
},
withdrawClick() {
this.openModal = true
this.payments = false
},
NotificationEventListener() {
this.notification = true
this.openModal = false
},
NotificationMethod() {
this.notification = false
}
// formatNumber(number) {
// return number < 10 ? `0${number}` : number;
// },
// getCurrentFormattedDate() {
// const currentDate = new Date();
// return `${this.formatNumber(currentDate.getDate())}.${this.formatNumber(currentDate.getMonth() + 1)}.${currentDate.getFullYear()}, ${this.formatNumber(currentDate.getHours())}:${this.formatNumber(currentDate.getMinutes())}`;
// },
// claimDataDeposit(amount) {
// const historyPayments = {
// name: 'TEST USER',
// comment: 'test',
// data: this.getCurrentFormattedDate(),
// amount: amount
// }
//
// this.arrayHistory.unshift(historyPayments)
// },
// claimDataWithdraw(amount) {
// const historyPayments = {
// name: 'TEST USER',
// comment: 'test',
// data: this.getCurrentFormattedDate(),
// amount: -amount
// }
//
// this.arrayHistory.unshift(historyPayments)
// }
}
}
</script>

View File

@@ -0,0 +1,57 @@
<link rel="stylesheet" href="../../assets/css/PagesStyles/adaptive-pages/homemobile.css">
<template>
<div class="content-grid__mobile-home">
<header-mobile-component></header-mobile-component>
<main class="main-mobile">
<div class="main-mobile__content">
<div class="main-mobile__first-line">
<div class="card-mobile__content bg-mobile card-first card-game__text" v-for="mode in firstlineGameMode" :key="mode">
<h2>{{ mode.title }}</h2>
<div class="card-mobile__btn">
<a href="#">Play <span>></span></a>
</div>
</div>
</div>
<div class="main-mobile__two-line">
<div class="card-mobile__content bg-mobile card-two card-game__text" v-for="mode in twolineGameMode" :key="mode">
<h2>{{ mode.title }}</h2>
<div class="card-mobile__btn">
<a href="#">Play <span>></span></a>
</div>
</div>
</div>
</div>
</main>
<menu-mobile-component></menu-mobile-component>
</div>
</template>
<script>
import '@/assets/css/PagesStyles/adaptive-pages/homemobile.css'
import '@/mocks/GameModes'
import GameModes from "@/mocks/GameModes";
import HeaderMobileComponent from "@/components/adaptive-components/HeaderMobileComponent.vue";
import MenuMobileComponent from "@/components/adaptive-components/MenuMobileComponent.vue";
export default {
components: { HeaderMobileComponent, MenuMobileComponent },
data() {
return {
GameModes
}
},
computed: {
firstlineGameMode() {
return this.GameModes.filter(mode => [1, 2].includes(mode.id))
},
twolineGameMode() {
return this.GameModes.filter(mode => [3, 4].includes(mode.id))
}
}
}
</script>
<style>
</style>

View File

@@ -0,0 +1,57 @@
<template>
<div class="content-mobile__profile">
<header-mobile-component></header-mobile-component>
<main class="profile-mobile" :class="{ 'header-off' : payments.paymentsWindow }">
<div class="profile-mobile__content">
<div class="macroinfo-profile text-default-mobile img-margin">
<h2>Профиль</h2>
<img src="@/assets/icons-test/person-icon-profile-userinfo.png">
</div>
<div class="info-profile">
<h3 class="text-nickname-user">Artmeka</h3>
<h3 class="balance-border balance-display balance-text"><img src="@/assets/icons-profile/icon-diamond-ore.png">999</h3>
<div class="profile-mobile__btns-payments">
<a href="#" @click="paymetsCall('dep')" class="deposit-button"><img class="icon-margin-deposit-withdraw" src="@/assets/icons-profile/icon-deposit.svg"> Пополнить</a>
<a href="#" @click="paymetsCall('with')" class="withdraw-button"><img class="icon-margin-deposit-withdraw" src="@/assets/icons-profile/icon-withdraw.png"> Вывести</a>
</div>
</div>
</div>
</main>
<menu-mobile-component></menu-mobile-component>
<payments-mobile @closemodal="paymentsClose" :payments="payments" v-if="payments.paymentsWindow"></payments-mobile>
</div>
</template>
<script>
import HeaderMobileComponent from "@/components/adaptive-components/HeaderMobileComponent.vue";
import MenuMobileComponent from "@/components/adaptive-components/MenuMobileComponent.vue";
import PaymentsMobile from "@/components/adaptive-components/PaymentsMobile.vue";
import '@/assets/css/PagesStyles/adaptive-pages/profilemobile.css'
export default {
components: { HeaderMobileComponent, MenuMobileComponent, PaymentsMobile },
data () {
return {
payments: {
paymentsWindow: false,
paymentsView: false
},
}
},
methods: {
paymetsCall(view) {
this.payments.paymentsWindow = true
this.payments.paymentsView = view === 'dep'
},
paymentsClose() {
this.payments.paymentsWindow = false
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,492 @@
<template>
<div class="content-grid--saper">
<aside-bar-element></aside-bar-element>
<header-element-page></header-element-page>
<chat-component id="chat"></chat-component>
<section class="saper" :class="{ 'game-end' : ValidationPlay.endGame }">
<div class="bg"></div>
<div class="bg-two"></div>
<div class="saper-start" :class="{ 'game-start__menu-off' : gameStart }">
<div class="saper-start__content title-saper padding-elements">
<h2>Сапёр</h2>
<p>Находи изумруды на поле и избегай кристалы</p>
<div class="saper-start__choises crystals">
<h3>Количество кристалов</h3>
<div class="crystals__choises crystals-input__margin crystals-btns__choices">
<img class="crystal-icon" width="25" height="25" src="@/assets/icons-games/saper-game/icon-crystall-saper.svg">
<input v-model="amountCrystals" type="number">
<ul class="crystals-btns__display">
<li v-for="(item, index) in SaperNumbers" :key="index">
<button @click="clickedBtnCrystals(index, item.crystals)" :class="{ 'btn-click': clickedBtnCrystal === index, [index]: clickedBtnCrystal === index }" :id="item.crystals === 'max' ? 'max-button' : null" v-if="item.crystals !== undefined">{{ item.crystals }}</button>
</li>
</ul>
</div>
</div>
<div class="saper-start__choises diamonds diamonds-input__margin">
<h3>Сумма депозита</h3>
<div class="diamonds__choises">
<img class="diamond-icon" src="@/assets/icons-games/saper-game/icon-diamond-ore-saper.png">
<input v-model="amountDeposit" type="number" id="diamonds-input">
<div class="diamonds__btns btn-style__diamonds">
<ul class="diamonds-btns__display">
<li v-for="(item, index) in SaperNumbers" :key="index">
<button @click="clickedBtnChoice(index, item.diamonds)" :class="{ 'btn-click': clickedBtn === index, [index]: clickedBtn === index }" :id="item.diamonds === 'max' ? 'max-button' : null" v-if="item.diamonds !== undefined">{{ item.diamonds }}</button>
</li>
</ul>
</div>
</div>
</div>
<div class="saper-start__btns">
<div class="error-block" v-if="ErrorClick">
<h2>Ошибка при заполнении</h2>
</div>
<button class="btn-start" :class="{ 'animate-start-btn' : ErrorClick }" @click="clickPlayButton">Начать игру</button>
<button class="btn-claim" v-if="winningAmount === 0">Забрать {{ winningAmount }} АР</button>
<button class="btn-claim" @click="claimWinningAmount()" v-else>Забрать {{ winningAmount.toFixed(2) }} АР</button>
</div>
<div class="saper-start__steps btns-style__steps">
<swiper v-if="PercentageGameSteps.length" :key="PercentageGameSteps[0]" :spaceBetween="30" :slides-per-view="4" :centeredSlides="false" :navigation="true" :modules="modules">
<template v-for="(item, index) in PercentageGameSteps" :key="index">
<swiper-slide>
<div class="steps-btns__display">
<button>x{{ item.toFixed(2) }} <span>{{ index + 1 }} {{ stepsEndOfWord(index + 1) }}</span></button>
</div>
</swiper-slide>
</template>
</swiper>
</div>
</div>
</div>
<div class="saper-game">
<div class="saper-game__content">
<div class="game" :class="{ 'game-start' : offEventPointers }">
<div class="circles__content">
<img src="@/assets/icons-games/saper-game/circles.png" class="circles circles-1">
<img src="@/assets/icons-games/saper-game/circles.png" class="circles circles-2">
<img src="@/assets/icons-games/saper-game/circles.png" class="circles circles-3">
<img src="@/assets/icons-games/saper-game/circles.png" class="circles circles-4">
</div>
<div class="game-firstline">
<ul class="display-lines margin-lines">
<li class="firstline" v-for="index in 5" :key="index">
<div @click="flipCard(index)" :class="[ 'square', `square-${index}`, { 'square-fliper' : flippedCards.includes(index) } ]">
<h2 class="square-text" :class="{ 'hidden' : flippedCards.includes(index) }">ld</h2>
<img class="img-style-click" v-if="CorrectsClick.includes(index)" src="@/assets/icons-games/saper-game/icon-emeralds-saper.svg" alt>
<img class="img-style-click crystal-img" v-if="unCorrectClick.includes(index)" src="@/assets/icons-games/saper-game/icon-crystall-info-saper.svg" alt>
</div>
</li>
</ul>
</div>
<div class="game-default-line">
<ul class="display-lines margin-lines">
<li v-for="index in 5" :key="index">
<div @click="flipCard(index + 5)" :class="[ 'square', `square-${index + 5}`, { 'square-fliper' : flippedCards.includes(index + 5) } ]">
<h2 class="square-text" :class="{ 'hidden' : flippedCards.includes(index + 5) }">ld</h2>
<img class="img-style-click" v-if="CorrectsClick.includes(index + 5)" src="@/assets/icons-games/saper-game/icon-emeralds-saper.svg" alt>
<img class="img-style-click crystal-img" v-if="unCorrectClick.includes(index + 5)" src="@/assets/icons-games/saper-game/icon-crystall-info-saper.svg" alt>
</div>
</li>
</ul>
</div>
<div class="game-default-line">
<ul class="display-lines margin-lines">
<li v-for="index in 5" :key="index">
<div @click="flipCard(index + 10)" :class="[ 'square', `square-${index + 10}`, { 'square-fliper' : flippedCards.includes(index + 10) } ]">
<h2 class="square-text" :class="{ 'hidden' : flippedCards.includes(index + 10) }">ld</h2>
<img class="img-style-click" v-if="CorrectsClick.includes(index + 10)" src="@/assets/icons-games/saper-game/icon-emeralds-saper.svg" alt>
<img class="img-style-click crystal-img" v-if="unCorrectClick.includes(index + 10)" src="@/assets/icons-games/saper-game/icon-crystall-info-saper.svg" alt>
</div>
</li>
</ul>
</div>
<div class="game-default-line">
<ul class="display-lines margin-lines">
<li v-for="index in 5" :key="index">
<div @click="flipCard(index + 15)" :class="[ 'square', `square-${index + 15}`, { 'square-fliper' : flippedCards.includes(index + 15) } ]">
<h2 class="square-text" :class="{ 'hidden' : flippedCards.includes(index + 15) }">ld</h2>
<img class="img-style-click" v-if="CorrectsClick.includes(index + 15)" src="@/assets/icons-games/saper-game/icon-emeralds-saper.svg" alt>
<img class="img-style-click crystal-img" v-if="unCorrectClick.includes(index + 15)" src="@/assets/icons-games/saper-game/icon-crystall-info-saper.svg" alt>
</div>
</li>
</ul>
</div>
<div class="game-default-line">
<ul class="display-lines margin-lines">
<li v-for="index in 5" :key="index">
<div @click="flipCard(index + 20)" :class="[ 'square', `square-${index + 20}`, { 'square-fliper' : flippedCards.includes(index + 20) } ]">
<h2 class="square-text" :class="{ 'hidden' : flippedCards.includes(index + 20) }">ld</h2>
<img class="img-style-click" v-if="CorrectsClick.includes(index + 20)" src="@/assets/icons-games/saper-game/icon-emeralds-saper.svg" alt>
<img class="img-style-click crystal-img" v-if="unCorrectClick.includes(index + 20)" src="@/assets/icons-games/saper-game/icon-crystall-info-saper.svg" alt>
</div>
</li>
</ul>
</div>
</div>
<div class="game-info">
<div class="game-info__content text-style__subtitle text-style__comment">
<div class="info-emeralds">
<div class="info-emeralds__content card-info">
<h2>Изумруды</h2>
<p>Открывай ячейки с изумрудами</p>
<img src="@/assets/icons-games/saper-game/icon-emeralds-saper.svg" width="170" height="170">
</div>
</div>
<div class="info-crystals">
<div class="info-crystals__content card-info">
<h2>кристаллы</h2>
<p>Остерегайся кристаллов, чтобы не проиграть</p>
<img src="@/assets/icons-games/saper-game/icon-crystall-info-saper.svg" width="170" height="170">
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<div class="start-game" v-if="ValidationPlay.startGame === true">
<h2>Игра началась!</h2>
</div>
<div class="start-game" v-if="ValidationPlay.endGame === true">
<h2>Вы подорвались! Игра закончена</h2>
</div>
<div class="start-game" v-if="ValidationPlay.winGame === true">
<h2>Игра успешно закончена! Приз забран.</h2>
</div>
</template>
<script>
import ChatComponent from "@/components/ChatComponent.vue";
import AsideBarElement from "@/components/AsidebarComponent.vue";
import HeaderElementPage from "@/components/HeaderComponent.vue";
import { GetPercentageSteps, GetUserData, ClickCirclePlay, GetWinningAmount } from "@/assets/js/games/saper/SaperAPI";
import { GetCurrentMoney } from "@/assets/js/rest/RestMethods";
import { GetCookie } from "@/assets/js/storage/CookieStorage";
import { Howl } from 'howler';
import {eventBus} from "@/main";
import { Swiper, SwiperSlide } from 'swiper/vue';
import 'swiper/css';
import "swiper/css/navigation";
import SwiperCore from 'swiper/core';
import {Navigation } from "swiper/modules";
import { useVuelidate } from '@vuelidate/core'
import { maxValue, minValue, required, numeric, integer } from "@vuelidate/validators";
SwiperCore.use([Navigation]);
import '@/assets/css/PagesStyles/games-pages/saper.css'
import SaperNumbers from "@/mocks/SaperNumbers";
export default {
components: {ChatComponent, HeaderElementPage, AsideBarElement, Swiper, SwiperSlide },
data() {
return {
SaperNumbers,
clickedBtn: '',
clickedBtnCrystal : '',
amountCrystals: 0,
balance: 0,
winningAmount: 0,
gamesCircle: 0,
ErrorClick: '',
gameStart: false,
offEventPointers: false,
amountDeposit: 0,
flippedCards: [],
PercentageGameSteps: [],
CorrectsClick: [],
unCorrectClick: [],
ValidationPlay: {
startGame: false,
endGame: false,
winGame: false,
},
modules: [ Navigation ]
}
},
setup () {
return{ v$: useVuelidate() }
},
validations() {
return {
amountCrystals: { required, numeric, minValue: minValue(1), maxValue: maxValue(24), integer },
amountDeposit: { required, numeric, minValue: minValue(1), maxValue: maxValue(this.balance), integer }
}
},
watch: {
async amountCrystals(CrystalsCount) {
this.PercentageGameSteps = []
if (CrystalsCount >= 1 && CrystalsCount <= 24) {
try {
await GetPercentageSteps(this.amountCrystals)
.then((response) => {
response.forEach((item) => {
if (item !== 'Infinity' && item !== '-Infinity') {
this.PercentageGameSteps.push(Number(item))
}
})
})
}
catch (e) {
console.error('Error in Percantage', e)
}
}
},
flippedCards: {
async handler(value) {
if (value.length < 1 || this.ValidationPlay.endGame === true) return
const maxCircles = 25 - this.amountCrystals
console.log(`MAXCIRLES - ${maxCircles} VALUE: ${value} GAMECIRCLE - ${this.gamesCircle}`)
if (this.gameStart !== false) {
this.offEventPointers = false
let AnswerServer
let LimitClicked = this.amountCrystals
let DepositDiamonds = this.amountDeposit
const X_Cordinates = value[this.gamesCircle]
let findIndex, findX, findY
if (X_Cordinates > 5) {
findIndex = Math.ceil(X_Cordinates / 5) * 5
findY = Math.ceil(findIndex / 5) - 1
findX = X_Cordinates - findIndex + 4
}
else if (X_Cordinates <= 5) {
findX = X_Cordinates - 1
findY = 0
}
const UserObject = {
PuttedMoney: DepositDiamonds,
MinesCount: this.amountCrystals,
SearchToken: GetCookie('SearchToken'),
AUTHTOKEN: GetCookie('AUTHTOKEN')
}
const ClickedSquare = {
X: findX,
Y: findY
}
try {
await ClickCirclePlay(UserObject, ClickedSquare)
.then(response => {
AnswerServer = response
this.winningAmount = response.Item1.WinningMoney
})
}
catch (e) {
console.error(e)
}
console.log('---------ANSWER SERVER-----------', AnswerServer)
console.log(LimitClicked, DepositDiamonds, X_Cordinates)
this.gamesCircle = this.gamesCircle + 1
this.offEventPointers = true
if (AnswerServer === 'You dead') {
this.unCorrectClick.push(X_Cordinates)
this.offEventPointers = false
this.gameStart = false
this.gamesCircle = 0
this.winningAmount = 0
const SoundCorrect = new Howl({
src: ['/sounds/incorrect-sound.mp3'],
volume: 0.5
})
SoundCorrect.play()
this.ValidationPlay.endGame = true
setTimeout(() => {
this.ValidationPlay.endGame = false
}, 1200)
return eventBus.emit('Updatebalance')
}
const SoundUncorrect = new Howl({
src: ['/sounds/correct-click.mp3'],
volume: 0.5
})
this.CorrectsClick.push(X_Cordinates)
SoundUncorrect.play()
}
if (this.gamesCircle === maxCircles) {
this.offEventPointers = false
this.gameStart = false
this.gamesCircle = 0
this.flippedCards = []
this.claimWinningAmount()
this.ValidationPlay.winGame = true
setTimeout(() => {
this.ValidationPlay.winGame = false
}, 1500)
}
},
deep: true
}
},
created() {
const AUTHTOKEN = GetCookie('AUTHTOKEN')
const SEARCHTOKEN = GetCookie('SearchToken')
if (AUTHTOKEN !== null && SEARCHTOKEN !== null) {
try {
GetUserData(AUTHTOKEN, SEARCHTOKEN)
.then(response => {
console.log(response)
if (response) {
this.gameStart = true
this.offEventPointers = true
this.ValidationPlay.startGame = true
this.amountCrystals = response.MinesCount
this.amountDeposit = response.PuttedMoney
this.winningAmount = response.WinningMoney
const soundStartGame = new Howl({
src: ['/sounds/start-game.mp3'],
volume: 5.0
})
soundStartGame.play()
console.log(this.flippedCards.length)
setTimeout(() => {
this.ValidationPlay.startGame = false
}, 2000)
}
})
this.getBalanceUser()
}
catch (e) {
console.error('Error in GetData', e)
}
}
},
methods: {
clickPlayButton() {
this.v$.$touch()
if (this.v$.amountDeposit.$error) {
this.errorPlayButton()
}
else if (this.v$.amountCrystals.$error) {
this.errorPlayButton()
}
else {
this.flippedCards = []
this.unCorrectClick = []
this.CorrectsClick = []
this.playNotification()
this.gameStart = true
this.offEventPointers = true
const soundStartGame = new Howl({
src: ['/sounds/start-game.mp3'],
volume: 5.0
})
soundStartGame.play()
}
},
getBalanceUser() {
try {
GetCurrentMoney(GetCookie('AUTHTOKEN'), GetCookie('SearchToken'))
.then(response => {
this.balance = response.currentMoney
})
}
catch (e) {
console.error(e)
}
},
async claimWinningAmount() {
if (this.winningAmount >= 1) {
try {
this.offEventPointers = false
this.gameStart = false
this.flippedCards = []
this.unCorrectClick = []
this.CorrectsClick = []
this.gamesCircle = 0
await GetWinningAmount({ SearchToken: GetCookie('SearchToken'), AuthToken: GetCookie('AUTHTOKEN') })
this.winningAmount = 0
return eventBus.emit('Updatebalance')
}
catch (e) {
console.error(e)
}
}
},
playNotification() {
this.ValidationPlay.startGame = true
setTimeout(() => {
this.ValidationPlay.startGame = false
}, 1500)
},
errorPlayButton() {
this.ErrorClick = true
setTimeout(() => {
this.ErrorClick = false
}, 2000)
},
flipCard(index) {
if (this.flippedCards.includes(index)) {
return eventBus.emit('Updatebalance')
} else {
this.flippedCards.push(index);
}
},
stepsEndOfWord(index) {
const indexString = String(index)
let lastNumber = indexString
if (indexString >= 10) {
lastNumber = indexString.slice(1)
}
return this.checkLastNumber(lastNumber)
},
checkLastNumber(number) {
let word = ''
if (number === '1') {
word = 'шаг'
}
else if (['2', '3', '4'].includes(number)) {
word = 'шага'
}
else {
word = 'шагов'
}
return word
},
async clickedBtnChoice(index, content) {
this.clickedBtn = index
if (content === 'max') {
await GetCurrentMoney(GetCookie('AUTHTOKEN'), GetCookie('SearchToken'))
.then((response) => {
this.amountDeposit = parseInt(response.currentMoney)
})
}
else {
this.amountDeposit = content
}
},
clickedBtnCrystals(index, content) {
this.clickedBtnCrystal = index
this.amountCrystals = content
},
},
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,5 @@
export const BackendApiUrl = 'https://spsystemcore20231122004605.azurewebsites.net/api';
export const BackendWebSocketUrl = 'wss://spsystemcore20231122004605.azurewebsites.net';
// export const BackendApiUrl = 'https://localhost:7062/api';

View File

@@ -1,9 +1,14 @@
import { createRouter, createWebHistory } from "vue-router";
import HomePage from "../pages/HomePage.vue";
import ProfilePage from "@/pages/ProfilePage.vue";
import SapergamePage from "@/pages/games-pages/SapergamePage.vue";
export default createRouter({
history: createWebHistory(),
routes: [
{ path: '/', component: HomePage, name: 'home' }
{ path: '/', component: HomePage, name: 'home' },
{ path: '/profile', component: ProfilePage, name: 'profile' },
{ path: '/game/saper', component: SapergamePage, name: 'saper' }
]
})

View File

@@ -1,7 +1,27 @@
// vue.config.js file to be placed in the root of your repository
// module.exports = {
// publicPath: process.env.NODE_ENV === 'production'
// ? '/luckydiamond/'
// : '/'
// }
// module.exports = {
// publicPath: '/'
// }
const path = require('path');
module.exports = {
publicPath: process.env.NODE_ENV === 'production'
? '/LuckyDiamond/'
: '/'
}
// Установка базового URL-адреса для проекта
publicPath: '/',
// Настройка Webpack
configureWebpack: {
resolve: {
alias: {
'@': path.resolve(__dirname, 'src/'), // Настройка алиаса '@' для каталога 'src/'
}
}
}
};