├── .github └── ISSUE_TEMPLATE │ └── bug_report.yaml ├── .gitignore ├── LICENSE ├── README.md ├── about.html ├── assets ├── about.svg ├── about │ ├── assign_wallet_dark_desktop.jpg │ ├── assign_wallet_dark_mobile.jpg │ ├── assign_wallet_light_desktop.jpg │ ├── assign_wallet_light_mobile.jpg │ ├── confirm_wallet_dark_desktop.jpg │ ├── confirm_wallet_dark_mobile.jpg │ ├── confirm_wallet_light_desktop.jpg │ ├── confirm_wallet_light_mobile.jpg │ ├── duck.png │ ├── interface_dark.jpg │ ├── interface_light.jpg │ ├── ton_dns_dark.jpg │ ├── ton_dns_light.jpg │ ├── tonkeeper_desktop.jpg │ ├── tonkeeper_mobile.jpg │ ├── video_example1.mp4 │ └── video_example2.mp4 ├── alert.svg ├── arrow_right_dark-blue.svg ├── arrow_right_dark-grey.svg ├── arrow_right_light-blue.svg ├── arrow_right_light-grey.svg ├── close.svg ├── copy.svg ├── copy_btn.svg ├── copy_btn_dark.svg ├── copy_btn_done.svg ├── copy_btn_done_dark.svg ├── copy_link_icon.svg ├── copy_link_icon_dark.svg ├── copy_link_success.svg ├── discuss.svg ├── dns_logo.svg ├── dns_logo_dark.svg ├── edit_bid.svg ├── gg_logo_blue.svg ├── gg_logo_blue_dark.svg ├── gg_logo_dark_gray.svg ├── gg_logo_white.svg ├── hammer.svg ├── history.svg ├── img.svg ├── inversed_ton_icon.svg ├── learn.svg ├── logo.svg ├── lottie │ ├── about_paper_dark.json │ ├── about_paper_light.json │ ├── failure.json │ ├── loader.json │ ├── moon_sun_dark.json │ ├── moon_sun_light.json │ ├── my_domains_dark.json │ ├── my_domains_light.json │ ├── success.json │ └── sun_moon.json ├── menu.svg ├── meta │ ├── apple_touch_icon.png │ ├── favicon.ico │ ├── favicon_16x16.png │ ├── favicon_32x32.png │ ├── og_snippet.jpeg │ └── safari_pinned_tab.svg ├── moon.svg ├── no_domains_dark.svg ├── no_domains_light.svg ├── ok.svg ├── ok_white.svg ├── qr_logo.svg ├── search.svg ├── ton-connect │ ├── dapp_icon.png │ └── wallet_icons │ │ ├── mytonwallet.svg │ │ ├── openmask.svg │ │ ├── tonhub.svg │ │ ├── tonkeeper.svg │ │ └── tonsafe.svg ├── ton_logo_dark.svg ├── ton_logo_light.svg ├── tonkeeper_icon.svg ├── tonkeeper_white.svg └── web_wallet.svg ├── collection.json ├── css ├── about.css ├── constants.css ├── dns.css ├── flip-clock.css ├── loader.css └── my-domains.css ├── icon.png ├── index.html ├── src ├── analytics.js ├── config │ └── wallets.js ├── constants.js ├── controllers │ ├── flipTimerController.js │ ├── localeController.js │ ├── myDomainsController.js │ ├── testnetController.js │ ├── themeController.js │ └── walletController.js ├── dnsAlert.js ├── index.js ├── libs │ ├── bignumbers.js │ ├── flip-clock.js │ ├── jquery.min-3.4.1.js │ ├── lottie-player-1.6.2.js │ ├── mask.js │ ├── preloadImages.js │ ├── qr-code-styling-1.5.0.js │ ├── tgs-player-0.4.0.js │ └── tonweb-0.0.59.js ├── lottie.js ├── mobile-menu.js ├── state.js ├── utils.js └── views │ └── myDomainsView.js └── tonconnect-manifest.json /.github/ISSUE_TEMPLATE/bug_report.yaml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: Report of critical bug such as UX inconsistencies, logical contradictions and functional shortcomings. 3 | labels: 'Bug Report' 4 | body: 5 | - type: dropdown 6 | id: bug_type 7 | attributes: 8 | label: Bug Type 9 | description: Select the bug type 10 | options: 11 | - Functional 12 | - UX 13 | - UI 14 | - Performance 15 | - Security 16 | - Localization 17 | - Other 18 | validations: 19 | required: true 20 | - type: textarea 21 | id: reproduction-steps 22 | attributes: 23 | label: Reproduction steps 24 | description: Steps to reproduce a bug (you are welcome to attach screenshots here) 25 | placeholder: 1. Click diamond 2. HODL 26 | validations: 27 | required: true 28 | - type: textarea 29 | id: actual-result 30 | attributes: 31 | label: Actual result 32 | description: What was seen 33 | placeholder: When action is done, something happens 34 | validations: 35 | required: true 36 | - type: textarea 37 | id: expected-result 38 | attributes: 39 | label: Expected result 40 | description: What was expected 41 | placeholder: When action is done, nothing happens 42 | validations: 43 | required: true 44 | - type: dropdown 45 | id: suggested-severity 46 | attributes: 47 | label: Suggested Severity 48 | description: Severity of the bug 49 | options: 50 | - Vulnerability 51 | - Critical 52 | - High 53 | - Medium 54 | - Low 55 | validations: 56 | required: true 57 | # - type: dropdown 58 | # id: browsers 59 | # attributes: 60 | # label: "Browsers" 61 | # description: What browsers are you seeing the problem on ? 62 | # multiple: true 63 | # options: 64 | # - Chrome 65 | # - Safari 66 | # - Firefox 67 | # - Microsoft Edge 68 | # - Brave 69 | # validations: 70 | # required: false 71 | # - type: dropdown 72 | # id: os 73 | # attributes: 74 | # label: "OS" 75 | # description: What is the impacted environment ? 76 | # multiple: true 77 | # options: 78 | # - Windows 79 | # - Linux 80 | # - Mac 81 | # validations: 82 | # required: false 83 | - type: textarea 84 | id: device 85 | attributes: 86 | label: Device 87 | description: Information about device 88 | value: | 89 | Desktop (please complete the following information): 90 | - OS: [e.g. iOS] 91 | - Browser [e.g. chrome, safari] 92 | - Version [e.g. 22] 93 | 94 | Smartphone (please complete the following information): 95 | - Device: [e.g. iPhone6] 96 | - OS: [e.g. iOS8.1] 97 | - Browser [e.g. stock browser, safari] 98 | - Version [e.g. 22] 99 | validations: 100 | required: true 101 | - type: textarea 102 | id: additional-context 103 | attributes: 104 | label: Additional Context 105 | description: Add any other context about the problem here. You can also attach any extra screenshots or screencasts here. 106 | placeholder: e.g. device was rooted 107 | validations: 108 | required: false -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | **/.DS_Store 3 | .vscode/* 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [dns.ton.org](http://dns.ton.org/) 2 | 3 | Simple app to buy and manage DNS items associated with [Toncoin](https://ton.org/toncoin). 4 | 5 | ## Local Development 6 | 7 | First, install `ngrok`: 8 | ```bash 9 | npm install ngrok -g 10 | ``` 11 | Or see [other installation options](https://ngrok.com/download). 12 | 13 | Launch a static HTTP-server: 14 | ```bash 15 | npx http-server -p 5500 16 | ``` 17 | Or use any other HTTP-server providers, e.g., [live-server](https://www.npmjs.com/package/live-server). There is also a [VSCode Live Server extenstion](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer). 18 | 19 | Start the `ngrok` tunnel at the same port as in the previous step: 20 | ```bash 21 | ngrok http 5500 22 | ``` 23 | 24 | If the wallet metadata is needed when debugging, update the `url` field in the `tonconnect-manifest.json` with the url provided by `ngrok`. 25 | -------------------------------------------------------------------------------- /assets/about.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/about/assign_wallet_dark_desktop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/assign_wallet_dark_desktop.jpg -------------------------------------------------------------------------------- /assets/about/assign_wallet_dark_mobile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/assign_wallet_dark_mobile.jpg -------------------------------------------------------------------------------- /assets/about/assign_wallet_light_desktop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/assign_wallet_light_desktop.jpg -------------------------------------------------------------------------------- /assets/about/assign_wallet_light_mobile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/assign_wallet_light_mobile.jpg -------------------------------------------------------------------------------- /assets/about/confirm_wallet_dark_desktop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/confirm_wallet_dark_desktop.jpg -------------------------------------------------------------------------------- /assets/about/confirm_wallet_dark_mobile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/confirm_wallet_dark_mobile.jpg -------------------------------------------------------------------------------- /assets/about/confirm_wallet_light_desktop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/confirm_wallet_light_desktop.jpg -------------------------------------------------------------------------------- /assets/about/confirm_wallet_light_mobile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/confirm_wallet_light_mobile.jpg -------------------------------------------------------------------------------- /assets/about/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/duck.png -------------------------------------------------------------------------------- /assets/about/interface_dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/interface_dark.jpg -------------------------------------------------------------------------------- /assets/about/interface_light.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/interface_light.jpg -------------------------------------------------------------------------------- /assets/about/ton_dns_dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/ton_dns_dark.jpg -------------------------------------------------------------------------------- /assets/about/ton_dns_light.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/ton_dns_light.jpg -------------------------------------------------------------------------------- /assets/about/tonkeeper_desktop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/tonkeeper_desktop.jpg -------------------------------------------------------------------------------- /assets/about/tonkeeper_mobile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/tonkeeper_mobile.jpg -------------------------------------------------------------------------------- /assets/about/video_example1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/video_example1.mp4 -------------------------------------------------------------------------------- /assets/about/video_example2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/about/video_example2.mp4 -------------------------------------------------------------------------------- /assets/alert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/arrow_right_dark-blue.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/arrow_right_dark-grey.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/arrow_right_light-blue.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/arrow_right_light-grey.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /assets/copy_btn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/copy_btn_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/copy_btn_done.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/copy_btn_done_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/copy_link_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/copy_link_icon_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/copy_link_success.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/discuss.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/dns_logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/dns_logo_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/edit_bid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/gg_logo_blue.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/gg_logo_blue_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/gg_logo_dark_gray.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/gg_logo_white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/hammer.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/history.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/inversed_ton_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/learn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/lottie/about_paper_dark.json: -------------------------------------------------------------------------------- 1 | {"nm":"Comp 1","mn":"","layers":[{"ty":4,"nm":"Name=News копия Outlines 2","mn":"","sr":1,"st":0,"op":3781,"ip":28,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[12,12,0],"ix":1},"s":{"a":0,"k":[476.19,476.19,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7,12],[12,12]]},"ix":2}},{"ty":"tm","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[40],"t":28},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":44.096},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[40],"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":0,"k":0,"ix":1},"m":1},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"d":[],"c":{"a":0,"k":[0.898,0.898,0.9176],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0,0],"t":28},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0,2],"t":44.096},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0,0],"t":59}],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7,9],[12,9]]},"ix":2}},{"ty":"tm","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":28},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[40],"t":44.096},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":0,"k":0,"ix":1},"m":1},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"d":[],"c":{"a":0,"k":[0.898,0.898,0.9176],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0,0],"t":28},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0,2],"t":44.096},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0,0],"t":59}],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":false,"i":[[0,0],[0,0],[0,1.105],[0,0],[0,0]],"o":[[0,0],[1.105,0],[0,0],[0,0],[0,0]],"v":[[6,8],[6,8],[8,6],[8,0],[3.172,0]]}],"t":28},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":false,"i":[[0,0],[0,0],[0,1.105],[0,0],[0,0]],"o":[[0,0],[1.105,0],[0,0],[0,0],[0,0]],"v":[[6,8],[6,8],[8,6],[8,-2.75],[3.172,-2.75]]}],"t":44.096},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":false,"i":[[0,0],[0,0],[0,1.105],[0,0],[0,0]],"o":[[0,0],[1.105,0],[0,0],[0,0],[0,0]],"v":[[6,8],[6,8],[8,6],[8,0],[3.172,0]]}],"t":59}],"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":2,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0],[0,1.562],[0,0],[0,0]],"o":[[0,0],[-1.562,0],[0,0],[0,0],[0,0]],"v":[[6,8],[6,8],[3.172,5.172],[3.172,3],[3.172,0]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 3","ix":3,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":false,"i":[[0,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0]],"o":[[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0],[0,0],[0,0]],"v":[[6,8],[-5,8],[-8,5],[-8,-5],[-5,-8],[0.172,-8],[3.172,-5],[3.172,0]]}],"t":28},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":false,"i":[[0,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0]],"o":[[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0],[0,0],[0,0]],"v":[[6,8],[-5,8],[-8,5],[-8.016,-2.812],[-5.016,-5.812],[0.156,-5.812],[3.156,-2.812],[3.172,0]]}],"t":44.096},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":false,"i":[[0,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0]],"o":[[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0],[0,0],[0,0]],"v":[[6,8],[-5,8],[-8,5],[-8,-5],[-5,-8],[0.172,-8],[3.172,-5],[3.172,0]]}],"t":59}],"ix":2}},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"d":[],"c":{"a":0,"k":[0.898,0.898,0.9176],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[12,12],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":0,"parent":1},{"ty":3,"nm":"Null 2","mn":"","sr":1,"st":0,"op":3781,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.794,"y":-0.025},"i":{"x":0.667,"y":1},"s":[21,21,100],"t":28},{"o":{"x":0.333,"y":0.011},"i":{"x":0,"y":0.967},"s":[23,23,100],"t":43},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[21,21,100],"t":59}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[12,12,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"ind":1}],"ddd":0,"h":24,"w":24,"meta":{"a":"","k":"","d":"","g":"LottieFiles AE 3.0.2","tc":"#ffffff"},"v":"4.8.0","fr":60,"op":100,"ip":28,"assets":[]} -------------------------------------------------------------------------------- /assets/lottie/about_paper_light.json: -------------------------------------------------------------------------------- 1 | {"nm":"Comp 1","mn":"","layers":[{"ty":4,"nm":"Name=News копия Outlines 2","mn":"","sr":1,"st":0,"op":3781,"ip":28,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[12,12,0],"ix":1},"s":{"a":0,"k":[476.19,476.19,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7,12],[12,12]]},"ix":2}},{"ty":"tm","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[40],"t":28},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":44.096},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[40],"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":0,"k":0,"ix":1},"m":1},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"d":[],"c":{"a":0,"k":[0.1373,0.1373,0.1569],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0,0],"t":28},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0,2],"t":44.096},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0,0],"t":59}],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7,9],[12,9]]},"ix":2}},{"ty":"tm","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":28},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[40],"t":44.096},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":0,"k":0,"ix":1},"m":1},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"d":[],"c":{"a":0,"k":[0.1373,0.1373,0.1569],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0,0],"t":28},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0,2],"t":44.096},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0,0],"t":59}],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":false,"i":[[0,0],[0,0],[0,1.105],[0,0],[0,0]],"o":[[0,0],[1.105,0],[0,0],[0,0],[0,0]],"v":[[6,8],[6,8],[8,6],[8,0],[3.172,0]]}],"t":28},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":false,"i":[[0,0],[0,0],[0,1.105],[0,0],[0,0]],"o":[[0,0],[1.105,0],[0,0],[0,0],[0,0]],"v":[[6,8],[6,8],[8,6],[8,-2.75],[3.172,-2.75]]}],"t":44.096},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":false,"i":[[0,0],[0,0],[0,1.105],[0,0],[0,0]],"o":[[0,0],[1.105,0],[0,0],[0,0],[0,0]],"v":[[6,8],[6,8],[8,6],[8,0],[3.172,0]]}],"t":59}],"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":2,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0],[0,1.562],[0,0],[0,0]],"o":[[0,0],[-1.562,0],[0,0],[0,0],[0,0]],"v":[[6,8],[6,8],[3.172,5.172],[3.172,3],[3.172,0]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 3","ix":3,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":false,"i":[[0,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0]],"o":[[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0],[0,0],[0,0]],"v":[[6,8],[-5,8],[-8,5],[-8,-5],[-5,-8],[0.172,-8],[3.172,-5],[3.172,0]]}],"t":28},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":false,"i":[[0,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0]],"o":[[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0],[0,0],[0,0]],"v":[[6,8],[-5,8],[-8,5],[-8.016,-2.812],[-5.016,-5.812],[0.156,-5.812],[3.156,-2.812],[3.172,0]]}],"t":44.096},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":false,"i":[[0,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0]],"o":[[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0],[0,0],[0,0]],"v":[[6,8],[-5,8],[-8,5],[-8,-5],[-5,-8],[0.172,-8],[3.172,-5],[3.172,0]]}],"t":59}],"ix":2}},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"d":[],"c":{"a":0,"k":[0.1373,0.1373,0.1569],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[12,12],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":0,"parent":1},{"ty":3,"nm":"Null 2","mn":"","sr":1,"st":0,"op":3781,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.794,"y":-0.025},"i":{"x":0.667,"y":1},"s":[21,21,100],"t":28},{"o":{"x":0.333,"y":0.011},"i":{"x":0,"y":0.967},"s":[23,23,100],"t":43},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[21,21,100],"t":59}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[12,12,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"ind":1}],"ddd":0,"h":24,"w":24,"meta":{"a":"","k":"","d":"","g":"LottieFiles AE 3.0.2","tc":"#ffffff"},"v":"4.8.0","fr":60,"op":100,"ip":28,"assets":[]} -------------------------------------------------------------------------------- /assets/lottie/failure.json: -------------------------------------------------------------------------------- 1 | {"v":"4.8.0","meta":{"g":"LottieFiles AE 3.1.1","a":"","k":"","d":"","tc":""},"fr":60,"ip":67,"op":103,"w":56,"h":56,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 8","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-135,"ix":10},"p":{"a":0,"k":[28.177,28.177,0],"ix":2},"a":{"a":0,"k":[0,-0.25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.25],[0,0]],"o":[[0,1.25],[0,0]],"v":[[0,-10],[0,9.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":83,"s":[0]},{"t":100,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.67,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":361,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 7","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[28.177,28.177,0],"ix":2},"a":{"a":0,"k":[0,-0.25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.25],[0,0]],"o":[[0,1.25],[0,0]],"v":[[0,-10],[0,9.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":83,"s":[0]},{"t":100,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.67,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":361,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Icon content 24px Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":67,"s":[0]},{"t":77,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[28,28,0],"ix":2},"a":{"a":0,"k":[28,28,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.667],"y":[0.817,0.817,-28.491]},"o":{"x":[0.873,0.873,0.333],"y":[0,0,0]},"t":67,"s":[0,0,100]},{"i":{"x":[0.34,0.34,0.667],"y":[1,1,1]},"o":{"x":[0.205,0.205,0.333],"y":[-2.94,-2.94,35.021]},"t":83,"s":[110,110,100]},{"t":102,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,12.703],[-12.703,0],[0,-12.703],[12.703,0]],"o":[[0,-12.703],[12.703,0],[0,12.703],[-12.703,0]],"v":[[-23,0],[0,-23],[23,0],[0,23]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929411824544,0.403921598547,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28,28],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-2,"op":359,"st":-2,"bm":0}],"markers":[{"tm":35,"cm":"1","dr":0}]} -------------------------------------------------------------------------------- /assets/lottie/loader.json: -------------------------------------------------------------------------------- 1 | {"v":"4.8.0","meta":{"g":"LottieFiles AE 3.1.1","a":"","k":"","d":"","tc":""},"fr":60,"ip":20,"op":80,"w":56,"h":56,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":25,"s":[10.667]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":75,"s":[0]},{"t":85,"s":[10.667]}],"ix":10},"p":{"a":0,"k":[28,28,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.518,0],[0,-11.518],[-11.518,0],[0,11.518]],"o":[[-11.518,0],[0,11.518],[11.518,0],[0,-11.518]],"v":[[0,-20.855],[-20.855,0],[0,20.855],[20.855,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[35]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[35]},{"i":{"x":[0.226],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[49]},{"t":80,"s":[35]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[26]},{"t":80,"s":[30]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.742],"y":[0.371]},"o":{"x":[0.418],"y":[0]},"t":20,"s":[258]},{"i":{"x":[0.781],"y":[0.636]},"o":{"x":[0.53],"y":[0.19]},"t":35,"s":[235.123]},{"i":{"x":[0.322],"y":[1]},"o":{"x":[0.184],"y":[0.524]},"t":50,"s":[79.49]},{"t":80,"s":[-102]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0,0.533333333333,0.800000059838,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.67,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.125,-0.125],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-14,"op":381,"st":20,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[28,28,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.518,0],[0,-11.518],[-11.518,0],[0,11.518]],"o":[[-11.518,0],[0,11.518],[11.518,0],[0,-11.518]],"v":[[0,-20.855],[-20.855,0],[0,20.855],[20.855,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.87450986376,0.898039275525,0.909803981407,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.67,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.125,-0.125],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":361,"st":0,"bm":0}],"markers":[]} -------------------------------------------------------------------------------- /assets/lottie/moon_sun_dark.json: -------------------------------------------------------------------------------- 1 | {"v":"4.8.0","meta":{"g":"LottieFiles AE 3.1.1","a":"","k":"","d":"","tc":""},"fr":60,"ip":28,"op":59,"w":24,"h":24,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"sun Outlines 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[0]},{"t":59,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[-90]},{"t":59,"s":[0]}],"ix":10},"p":{"a":0,"k":[12,12,0],"ix":2},"a":{"a":0,"k":[12,12,0],"ix":1},"s":{"a":0,"k":[112.5,112.5,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.284,-0.284],[0.284,0.284]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[100]},{"t":59,"s":[0]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[5.63,5.628],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.284,-0.284],[0.284,0.284]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[100]},{"t":59,"s":[0]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[18.373,18.372],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3,12],[4.6,12]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[0]},{"t":59,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[19.401,12],[21.001,12]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[0]},{"t":59,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.284,0.284],[0.284,-0.284]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[100]},{"t":59,"s":[0]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[5.63,18.372],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.284,0.284],[0.284,-0.284]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[100]},{"t":59,"s":[0]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[18.373,5.628],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.002,21],[12.002,19.4]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[0]},{"t":59,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 2","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.002,4.6],[12.002,3]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[0]},{"t":59,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"sun Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":28,"s":[0]},{"t":59,"s":[90]}],"ix":10},"p":{"a":0,"k":[12,12,0],"ix":2},"a":{"a":0,"k":[12,12,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":28,"s":[180,180,100]},{"t":59,"s":[112.5,112.5,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":28,"s":[{"i":[[-2.422,-2.324],[0.083,-1.054],[0.11,-0.237],[0.609,-0.609],[1.953,1.953],[-1.953,1.953],[-0.723,0.236],[-0.295,-0.044]],"o":[[2.384,2.288],[-0.02,0.26],[-0.296,0.634],[-1.953,1.953],[-1.953,-1.953],[0.575,-0.575],[0.286,-0.093],[0.802,0.032]],"v":[[-0.039,0.019],[4.859,1.054],[4.695,1.821],[3.53,3.59],[-3.536,3.536],[-3.536,-3.536],[-1.558,-4.752],[-0.802,-4.875]],"c":true}]},{"t":59,"s":[{"i":[[-1.147,-1.147],[0.193,-1.486],[0.072,-0.247],[0.616,-0.616],[1.953,1.953],[-1.953,1.953],[-0.734,0.235],[-0.29,0.039]],"o":[[1.142,1.142],[-0.033,0.254],[-0.227,0.781],[-1.953,1.953],[-1.953,-1.953],[0.583,-0.583],[0.281,-0.09],[1.492,-0.201]],"v":[[3.536,-3.536],[4.958,0.649],[4.801,1.402],[3.536,3.536],[-3.536,3.536],[-3.536,-3.536],[-1.528,-4.762],[-0.669,-4.955]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[1.2]},{"t":59,"s":[1.8]}],"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[12,12],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 2","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[12,12,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.794,0.794,0.333],"y":[-0.025,-0.025,0]},"t":28,"s":[16,16,100]},{"i":{"x":[0,0,0.667],"y":[0.967,0.967,1]},"o":{"x":[0.333,0.333,0.333],"y":[0.011,0.011,0]},"t":43,"s":[18,18,100]},{"t":59,"s":[16,16,100]}],"ix":6}},"ao":0,"ip":0,"op":3781,"st":0,"bm":0}],"markers":[]} -------------------------------------------------------------------------------- /assets/lottie/moon_sun_light.json: -------------------------------------------------------------------------------- 1 | {"nm":"Comp 1","mn":"","layers":[{"ty":4,"nm":"sun Outlines 2","mn":"","sr":1,"st":0,"op":60,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[12,12,0],"ix":1},"s":{"a":0,"k":[112.5,112.5,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[12,12,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":59}],"ix":11},"r":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[-90],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":59}],"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.284,-0.284],[0.284,0.284]]},"ix":2}},{"ty":"tm","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":59}],"ix":1},"m":1},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"d":[],"c":{"a":0,"k":[0.898,0.898,0.9176],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.63,5.628],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.284,-0.284],[0.284,0.284]]},"ix":2}},{"ty":"tm","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":59}],"ix":1},"m":1},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"d":[],"c":{"a":0,"k":[0.898,0.898,0.9176],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[18.373,18.372],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3,12],[4.6,12]]},"ix":2}},{"ty":"tm","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":0,"k":0,"ix":1},"m":1},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"d":[],"c":{"a":0,"k":[0.898,0.898,0.9176],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":4,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[19.401,12],[21.001,12]]},"ix":2}},{"ty":"tm","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":0,"k":0,"ix":1},"m":1},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"d":[],"c":{"a":0,"k":[0.898,0.898,0.9176],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 5","ix":5,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.284,0.284],[0.284,-0.284]]},"ix":2}},{"ty":"tm","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":59}],"ix":1},"m":1},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"d":[],"c":{"a":0,"k":[0.898,0.898,0.9176],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.63,18.372],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 6","ix":6,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.284,0.284],[0.284,-0.284]]},"ix":2}},{"ty":"tm","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":59}],"ix":1},"m":1},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"d":[],"c":{"a":0,"k":[0.898,0.898,0.9176],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[18.373,5.628],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 7","ix":7,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.002,21],[12.002,19.4]]},"ix":2}},{"ty":"tm","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 2","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":0,"k":0,"ix":1},"m":1},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"d":[],"c":{"a":0,"k":[0.898,0.898,0.9176],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 8","ix":8,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.002,4.6],[12.002,3]]},"ix":2}},{"ty":"tm","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":0,"k":0,"ix":1},"m":1},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"d":[],"c":{"a":0,"k":[0.898,0.898,0.9176],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":0},{"ty":4,"nm":"sun Outlines","mn":"","sr":1,"st":0,"op":60,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[12,12,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[180,180,100],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[112.5,112.5,100],"t":59}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[12,12,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"o":{"x":1,"y":0},"i":{"x":0.667,"y":1},"s":[0],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[90],"t":59}],"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 9","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":true,"i":[[-2.422,-2.324],[0.083,-1.054],[0.11,-0.237],[0.609,-0.609],[1.953,1.953],[-1.953,1.953],[-0.723,0.236],[-0.295,-0.044]],"o":[[2.384,2.288],[-0.02,0.26],[-0.296,0.634],[-1.953,1.953],[-1.953,-1.953],[0.575,-0.575],[0.286,-0.093],[0.802,0.032]],"v":[[-0.039,0.019],[4.859,1.054],[4.695,1.821],[3.53,3.59],[-3.536,3.536],[-3.536,-3.536],[-1.558,-4.752],[-0.802,-4.875]]}],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[-1.147,-1.147],[0.193,-1.486],[0.072,-0.247],[0.616,-0.616],[1.953,1.953],[-1.953,1.953],[-0.734,0.235],[-0.29,0.039]],"o":[[1.142,1.142],[-0.033,0.254],[-0.227,0.781],[-1.953,1.953],[-1.953,-1.953],[0.583,-0.583],[0.281,-0.09],[1.492,-0.201]],"v":[[3.536,-3.536],[4.958,0.649],[4.801,1.402],[3.536,3.536],[-3.536,3.536],[-3.536,-3.536],[-1.528,-4.762],[-0.669,-4.955]]}],"t":59}],"ix":2}},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[1.2],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[1.8],"t":59}],"ix":5},"d":[],"c":{"a":0,"k":[0.898,0.898,0.9176],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[12,12],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":3,"nm":"Null 2","mn":"","sr":1,"st":0,"op":3781,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.794,"y":-0.025},"i":{"x":0.667,"y":1},"s":[16,16,100],"t":28},{"o":{"x":0.333,"y":0.011},"i":{"x":0,"y":0.967},"s":[18,18,100],"t":43},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[16,16,100],"t":59}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[12,12,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"ind":2}],"ddd":0,"h":24,"w":24,"meta":{"a":"","k":"","d":"","g":"LottieFiles AE 3.1.1","tc":"#ffffff"},"v":"4.8.0","fr":60,"op":59,"ip":28,"assets":[]} -------------------------------------------------------------------------------- /assets/lottie/my_domains_dark.json: -------------------------------------------------------------------------------- 1 | {"v":"5.6.6","ip":0,"op":80,"fr":60,"w":24,"h":24,"layers":[{"ind":1827,"nm":"surface9366","ao":0,"ip":0,"op":80,"st":0,"ty":4,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.83],"y":[1]},"o":{"x":[0.17],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.53],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":11,"s":[-10]},{"i":{"x":[0.83],"y":[1]},"o":{"x":[0.17],"y":[0]},"t":65,"s":[365]},{"i":{"x":[0.83],"y":[1]},"o":{"x":[0.17],"y":[0]},"t":77,"s":[358]},{"t":85,"s":[360]}],"ix":10},"p":{"a":0,"k":[12,12],"ix":2},"a":{"a":0,"k":[7.5,7.5],"ix":1},"s":{"a":0,"k":[133.33,133.33],"ix":6}},"shapes":[{"ty":"gr","hd":false,"nm":"surface9366","it":[{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,1.1],[1.1,0],[0,-1.1],[-1.1,0]],"o":[[1.1,0],[0,-1.1],[-1.1,0],[0,1.1],[0,0]],"v":[[6,8],[8,6],[6,4],[4,6],[6,8]],"c":true}}},{"ty":"st","lc":2,"lj":2,"ml":4,"o":{"k":100},"w":{"k":1.7},"c":{"k":[0.14,0.14,0.16,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,1.1],[1.1,0],[0,-1.1],[-1.1,0]],"o":[[1.1,0],[0,-1.1],[-1.1,0],[0,1.1],[0,0]],"v":[[6,20],[8,18],[6,16],[4,18],[6,20]],"c":true}}},{"ty":"st","lc":2,"lj":2,"ml":4,"o":{"k":100},"w":{"k":1.7},"c":{"k":[0.14,0.14,0.16,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[13.5,11],[7.5,7]],"c":false}}},{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.5,16.5],[13.5,13]],"c":false}}},{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[16,13.5],[18.5,18]],"c":false}}},{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[18.5,6],[16,10.5]],"c":false}}},{"ty":"st","lc":1,"lj":1,"ml":4,"o":{"k":100},"w":{"k":1.7},"c":{"k":[0.14,0.14,0.16,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0.55],[0.55,0],[0,-0.55],[-0.55,0]],"o":[[0.55,0],[0,-0.55],[-0.55,0],[0,0.55],[0,0]],"v":[[19,6],[20,5],[19,4],[18,5],[19,6]],"c":true}}},{"ty":"st","lc":2,"lj":2,"ml":4,"o":{"k":100},"w":{"k":1.7},"c":{"k":[0.14,0.14,0.16,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0.55],[0.55,0],[0,-0.55],[-0.55,0]],"o":[[0.55,0],[0,-0.55],[-0.55,0],[0,0.55],[0,0]],"v":[[19,20],[20,19],[19,18],[18,19],[19,20]],"c":true}}},{"ty":"st","lc":2,"lj":2,"ml":4,"o":{"k":100},"w":{"k":1.7},"c":{"k":[0.14,0.14,0.16,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,1.1],[1.1,0],[0,-1.1],[-1.1,0]],"o":[[1.1,0],[0,-1.1],[-1.1,0],[0,1.1],[0,0]],"v":[[15,14],[17,12],[15,10],[13,12],[15,14]],"c":true}}},{"ty":"st","lc":2,"lj":2,"ml":4,"o":{"k":100},"w":{"k":1.7},"c":{"k":[0.14,0.14,0.16,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"sk":{"k":0},"sa":{"k":0},"hd":false}]}]}],"meta":{"g":"LF SVG to Lottie"}} -------------------------------------------------------------------------------- /assets/lottie/my_domains_light.json: -------------------------------------------------------------------------------- 1 | {"v":"5.6.6","ip":0,"op":80,"fr":60,"w":24,"h":24,"layers":[{"ind":1877,"nm":"surface9496","ao":0,"ip":0,"op":80,"st":0,"ty":4,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.83],"y":[1]},"o":{"x":[0.17],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.53],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":11,"s":[-10]},{"i":{"x":[0.83],"y":[1]},"o":{"x":[0.17],"y":[0]},"t":65,"s":[365]},{"i":{"x":[0.83],"y":[1]},"o":{"x":[0.17],"y":[0]},"t":77,"s":[358]},{"t":85,"s":[360]}],"ix":10},"p":{"a":0,"k":[12,12],"ix":2},"a":{"a":0,"k":[7.5,7.5],"ix":1},"s":{"a":0,"k":[133.33,133.33],"ix":6}},"shapes":[{"ty":"gr","hd":false,"nm":"surface9496","it":[{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,1.1],[1.1,0],[0,-1.1],[-1.1,0]],"o":[[1.1,0],[0,-1.1],[-1.1,0],[0,1.1],[0,0]],"v":[[6,8],[8,6],[6,4],[4,6],[6,8]],"c":true}}},{"ty":"st","lc":2,"lj":2,"ml":4,"o":{"k":100},"w":{"k":1.7},"c":{"k":[1,1,1,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,1.1],[1.1,0],[0,-1.1],[-1.1,0]],"o":[[1.1,0],[0,-1.1],[-1.1,0],[0,1.1],[0,0]],"v":[[6,20],[8,18],[6,16],[4,18],[6,20]],"c":true}}},{"ty":"st","lc":2,"lj":2,"ml":4,"o":{"k":100},"w":{"k":1.7},"c":{"k":[1,1,1,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[13.5,11],[7.5,7]],"c":false}}},{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.5,16.5],[13.5,13]],"c":false}}},{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[16,13.5],[18.5,18]],"c":false}}},{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[18.5,6],[16,10.5]],"c":false}}},{"ty":"st","lc":1,"lj":1,"ml":4,"o":{"k":100},"w":{"k":1.7},"c":{"k":[1,1,1,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0.55],[0.55,0],[0,-0.55],[-0.55,0]],"o":[[0.55,0],[0,-0.55],[-0.55,0],[0,0.55],[0,0]],"v":[[19,6],[20,5],[19,4],[18,5],[19,6]],"c":true}}},{"ty":"st","lc":2,"lj":2,"ml":4,"o":{"k":100},"w":{"k":1.7},"c":{"k":[1,1,1,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0.55],[0.55,0],[0,-0.55],[-0.55,0]],"o":[[0.55,0],[0,-0.55],[-0.55,0],[0,0.55],[0,0]],"v":[[19,20],[20,19],[19,18],[18,19],[19,20]],"c":true}}},{"ty":"st","lc":2,"lj":2,"ml":4,"o":{"k":100},"w":{"k":1.7},"c":{"k":[1,1,1,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,1.1],[1.1,0],[0,-1.1],[-1.1,0]],"o":[[1.1,0],[0,-1.1],[-1.1,0],[0,1.1],[0,0]],"v":[[15,14],[17,12],[15,10],[13,12],[15,14]],"c":true}}},{"ty":"st","lc":2,"lj":2,"ml":4,"o":{"k":100},"w":{"k":1.7},"c":{"k":[1,1,1,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"sk":{"k":0},"sa":{"k":0},"hd":false}]}]}],"meta":{"g":"LF SVG to Lottie"}} -------------------------------------------------------------------------------- /assets/lottie/success.json: -------------------------------------------------------------------------------- 1 | {"v":"4.8.0","meta":{"g":"LottieFiles AE 3.1.1","a":"","k":"","d":"","tc":""},"fr":60,"ip":20,"op":130,"w":56,"h":56,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-15.667,"ix":10},"p":{"a":0,"k":[28,28,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.518,0],[0,-11.518],[-11.518,0],[0,11.518]],"o":[[-11.518,0],[0,11.518],[11.518,0],[0,-11.518]],"v":[[0,-20.855],[-20.855,0],[0,20.855],[20.855,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.177],"y":[0.877]},"o":{"x":[0.001],"y":[0]},"t":50,"s":[95]},{"t":71,"s":[0]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":-126,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":48,"s":[0,0.533333333333,0.800000059838,1]},{"t":71,"s":[0.278431385756,0.77254909277,0.541176497936,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.67,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.125,-0.125],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":48,"op":411,"st":50,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":25,"s":[10.667]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":70,"s":[0]},{"t":80,"s":[10.667]}],"ix":10},"p":{"a":0,"k":[28,28,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.518,0],[0,-11.518],[-11.518,0],[0,11.518]],"o":[[-11.518,0],[0,11.518],[11.518,0],[0,-11.518]],"v":[[0,-20.855],[-20.855,0],[0,20.855],[20.855,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[35]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[35]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[49]},{"t":75,"s":[35]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[26]},{"t":75,"s":[30]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.742],"y":[0.371]},"o":{"x":[0.418],"y":[0]},"t":20,"s":[258]},{"i":{"x":[0.781],"y":[0.636]},"o":{"x":[0.53],"y":[0.19]},"t":35,"s":[235.123]},{"i":{"x":[0.322],"y":[1]},"o":{"x":[0.184],"y":[0.437]},"t":50,"s":[79.49]},{"t":75,"s":[-102]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":48,"s":[0,0.533333333333,0.800000059838,1]},{"t":71,"s":[0.278431385756,0.77254909277,0.541176497936,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.67,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.125,-0.125],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-14,"op":381,"st":20,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 5","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":44,"ix":10},"p":{"a":0,"k":[27.671,25.835,0],"ix":2},"a":{"a":0,"k":[-8.312,-1.312,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-13.5,8.25],[-3.125,8.25],[-3.125,-10.875]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.609],"y":[0]},"t":83,"s":[0]},{"t":100,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.67,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":368,"st":17,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Icon content 24px Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":67,"s":[0]},{"t":77,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[28,28,0],"ix":2},"a":{"a":0,"k":[28,28,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.667],"y":[0.817,0.817,-28.491]},"o":{"x":[0.873,0.873,0.333],"y":[0,0,0]},"t":67,"s":[0,0,100]},{"i":{"x":[0.34,0.34,0.667],"y":[1,1,1]},"o":{"x":[0.205,0.205,0.333],"y":[-2.94,-2.94,35.021]},"t":83,"s":[110,110,100]},{"t":102,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,12.703],[-12.703,0],[0,-12.703],[12.703,0]],"o":[[0,-12.703],[12.703,0],[0,12.703],[-12.703,0]],"v":[[-23,0],[0,-23],[23,0],[0,23]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278431372549,0.772549079446,0.541176470588,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28,28],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-2,"op":359,"st":-2,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[28,28,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.518,0],[0,-11.518],[-11.518,0],[0,11.518]],"o":[[-11.518,0],[0,11.518],[11.518,0],[0,-11.518]],"v":[[0,-20.855],[-20.855,0],[0,20.855],[20.855,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.87450986376,0.898039275525,0.909803981407,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.67,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.125,-0.125],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":361,"st":0,"bm":0}],"markers":[{"tm":35,"cm":"1","dr":0}]} -------------------------------------------------------------------------------- /assets/lottie/sun_moon.json: -------------------------------------------------------------------------------- 1 | {"v":"4.8.0","meta":{"g":"LottieFiles AE 3.1.1","a":"","k":"","d":"","tc":""},"fr":60,"ip":28,"op":59,"w":24,"h":24,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"sun Outlines 3","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[12,12,0],"ix":2},"a":{"a":0,"k":[12,12,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":28,"s":[112.5,112.5,100]},{"t":59,"s":[180,180,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":28,"s":[{"i":[[-1.147,-1.147],[0.193,-1.486],[0.072,-0.247],[0.616,-0.616],[1.953,1.953],[-1.953,1.953],[-0.734,0.235],[-0.29,0.039]],"o":[[1.142,1.142],[-0.033,0.254],[-0.227,0.781],[-1.953,1.953],[-1.953,-1.953],[0.583,-0.583],[0.281,-0.09],[1.492,-0.201]],"v":[[3.536,-3.536],[4.958,0.649],[4.801,1.402],[3.536,3.536],[-3.536,3.536],[-3.536,-3.536],[-1.528,-4.762],[-0.669,-4.955]],"c":true}]},{"t":59,"s":[{"i":[[-2.278,-1.989],[0.083,-1.054],[0.075,-0.252],[0.609,-0.609],[1.953,1.953],[-1.953,1.953],[-0.723,0.236],[-0.295,-0.044]],"o":[[2.304,2.012],[-0.02,0.26],[-0.229,0.771],[-1.953,1.953],[-1.953,-1.953],[0.575,-0.575],[0.286,-0.093],[0.802,0.032]],"v":[[-0.039,0.019],[4.956,0.663],[4.792,1.43],[3.536,3.536],[-3.536,3.536],[-3.536,-3.536],[-1.558,-4.752],[-0.685,-4.953]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12,12],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"sun Outlines 2","tt":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[100]},{"t":59,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[0]},{"t":59,"s":[-90]}],"ix":10},"p":{"a":0,"k":[12,12,0],"ix":2},"a":{"a":0,"k":[12,12,0],"ix":1},"s":{"a":0,"k":[112.5,112.5,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.284,-0.284],[0.284,0.284]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[0]},{"t":59,"s":[100]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[5.63,5.628],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.284,-0.284],[0.284,0.284]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[0]},{"t":59,"s":[100]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[18.373,18.372],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3,12],[4.6,12]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[100]},{"t":59,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[19.401,12],[21.001,12]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[100]},{"t":59,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.284,0.284],[0.284,-0.284]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[0]},{"t":59,"s":[100]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[5.63,18.372],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.284,0.284],[0.284,-0.284]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[0]},{"t":59,"s":[100]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[18.373,5.628],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.002,21],[12.002,19.4]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[100]},{"t":59,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 2","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.002,4.6],[12.002,3]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[100]},{"t":59,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"sun Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[90]},{"t":59,"s":[0]}],"ix":10},"p":{"a":0,"k":[12,12,0],"ix":2},"a":{"a":0,"k":[12,12,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":28,"s":[112.5,112.5,100]},{"t":59,"s":[180,180,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":28,"s":[{"i":[[-1.147,-1.147],[0.193,-1.486],[0.072,-0.247],[0.616,-0.616],[1.953,1.953],[-1.953,1.953],[-0.734,0.235],[-0.29,0.039]],"o":[[1.142,1.142],[-0.033,0.254],[-0.227,0.781],[-1.953,1.953],[-1.953,-1.953],[0.583,-0.583],[0.281,-0.09],[1.492,-0.201]],"v":[[3.536,-3.536],[4.958,0.649],[4.801,1.402],[3.536,3.536],[-3.536,3.536],[-3.536,-3.536],[-1.528,-4.762],[-0.669,-4.955]],"c":true}]},{"t":59,"s":[{"i":[[-2.422,-2.324],[0.083,-1.054],[0.11,-0.237],[0.609,-0.609],[1.953,1.953],[-1.953,1.953],[-0.723,0.236],[-0.295,-0.044]],"o":[[2.384,2.288],[-0.02,0.26],[-0.296,0.634],[-1.953,1.953],[-1.953,-1.953],[0.575,-0.575],[0.286,-0.093],[0.802,0.032]],"v":[[-0.039,0.019],[4.859,1.054],[4.695,1.821],[3.53,3.59],[-3.536,3.536],[-3.536,-3.536],[-1.558,-4.752],[-0.802,-4.875]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.137254908681,0.137254908681,0.156862750649,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[1.8]},{"t":59,"s":[1.2]}],"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[12,12],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":3,"nm":"Null 2","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[12,12,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.794,0.794,0.333],"y":[-0.025,-0.025,0]},"t":28,"s":[16,16,100]},{"i":{"x":[0,0,0.667],"y":[0.967,0.967,1]},"o":{"x":[0.333,0.333,0.333],"y":[0.011,0.011,0]},"t":43,"s":[18,18,100]},{"t":59,"s":[16,16,100]}],"ix":6}},"ao":0,"ip":0,"op":3781,"st":0,"bm":0}],"markers":[]} -------------------------------------------------------------------------------- /assets/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/meta/apple_touch_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/meta/apple_touch_icon.png -------------------------------------------------------------------------------- /assets/meta/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/meta/favicon.ico -------------------------------------------------------------------------------- /assets/meta/favicon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/meta/favicon_16x16.png -------------------------------------------------------------------------------- /assets/meta/favicon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/meta/favicon_32x32.png -------------------------------------------------------------------------------- /assets/meta/og_snippet.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/meta/og_snippet.jpeg -------------------------------------------------------------------------------- /assets/meta/safari_pinned_tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/moon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/ok.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /assets/ok_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /assets/qr_logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/ton-connect/dapp_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/assets/ton-connect/dapp_icon.png -------------------------------------------------------------------------------- /assets/ton-connect/wallet_icons/mytonwallet.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /assets/ton-connect/wallet_icons/openmask.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /assets/ton-connect/wallet_icons/tonhub.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 33 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /assets/ton-connect/wallet_icons/tonkeeper.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /assets/ton-connect/wallet_icons/tonsafe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /assets/ton_logo_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/ton_logo_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/tonkeeper_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /assets/tonkeeper_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /assets/web_wallet.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TON DNS Domains", 3 | "description": "*.ton domains", 4 | "image": "https://dns.ton.org/icon.png" 5 | } -------------------------------------------------------------------------------- /css/about.css: -------------------------------------------------------------------------------- 1 | .about { 2 | display: flex; 3 | flex-direction: column; 4 | gap: 120px; 5 | 6 | font-size: 18px; 7 | font-weight: 400; 8 | line-height: 28px; 9 | 10 | width: 100%; 11 | box-sizing: border-box; 12 | max-width: 736px; 13 | padding: 0 16px; 14 | margin: 0 auto; 15 | margin-top: 136px; 16 | margin-bottom: 120px; 17 | } 18 | 19 | .block:first-child { 20 | margin: 0; 21 | } 22 | 23 | .about h1, .about h2 { 24 | font-size: 40px; 25 | font-weight: 700; 26 | line-height: 48px; 27 | 28 | margin-top: 0; 29 | margin-bottom: 16px; 30 | 31 | padding-top: 80px; 32 | margin-top: -80px; 33 | 34 | color: var(--text-primary); 35 | } 36 | 37 | .about h4 { 38 | font-weight: 600; 39 | font-size: 24px; 40 | line-height: 32px; 41 | margin-bottom: 16px; 42 | 43 | color: var(--text-primary); 44 | } 45 | 46 | .about p { 47 | color: var(--text-secondary); 48 | margin: 16px 0; 49 | } 50 | 51 | .about p:last-child { 52 | margin-bottom: 0; 53 | } 54 | 55 | a.unbreak { 56 | word-break: inherit; 57 | display: inline-block; 58 | } 59 | 60 | a { 61 | text-decoration: none; 62 | color: var(--accent-default); 63 | } 64 | 65 | a:hover:not(.badge__dns) { 66 | color: var(--accent-hover); 67 | } 68 | 69 | 70 | .note { 71 | padding-left: 27px; 72 | position: relative; 73 | color: var(--text-primary); 74 | } 75 | 76 | .note::before { 77 | position: absolute; 78 | top: 0; 79 | left: 0; 80 | display: block; 81 | width: 3px; 82 | height: 100%; 83 | content: ""; 84 | border-radius: 10px; 85 | background-color: var(--accent-default); 86 | } 87 | 88 | .about ul { 89 | list-style: none; 90 | padding-left: 1em; 91 | color: var(--text-secondary) 92 | } 93 | 94 | .about li { 95 | margin-top: 16px; 96 | } 97 | 98 | .about li:first-child { 99 | margin-top: 0; 100 | } 101 | 102 | .about ul li::before { 103 | content: "•"; 104 | color: var(--accent-default); 105 | font-weight: 700; 106 | display: inline-block; 107 | width: 1em; 108 | margin-left: -1em; 109 | font-size: 20px; 110 | } 111 | 112 | .image { 113 | width: 100%; 114 | height: 0; 115 | position: relative; 116 | padding-top: 44%; 117 | border-radius: 24px; 118 | overflow: hidden; 119 | } 120 | 121 | html[data-theme='dark'] .image.light { 122 | display: none; 123 | } 124 | 125 | html[data-theme='light'] .image.dark { 126 | display: none; 127 | } 128 | 129 | .image img { 130 | position: absolute; 131 | top: 0; 132 | width: 100%; 133 | height: 100%; 134 | object-fit: cover; 135 | 136 | } 137 | 138 | .image.mobile { 139 | display: none; 140 | } 141 | 142 | .image .mobile { 143 | display: none; 144 | } 145 | 146 | .image-container { 147 | display: flex; 148 | flex-direction: column; 149 | margin-top: 40px; 150 | } 151 | 152 | .image-container.guide { 153 | margin-bottom: 40px; 154 | } 155 | 156 | .description { 157 | color: var(--text-tetriary); 158 | font-size: 14px; 159 | font-weight: 400; 160 | line-height: 20px; 161 | 162 | padding-left: 23px; 163 | padding-top: 12px; 164 | } 165 | 166 | .video-section { 167 | display: flex; 168 | flex-direction: column; 169 | gap: 32px; 170 | 171 | padding: 16px 0; 172 | 173 | } 174 | 175 | .card-container { 176 | width: 100%; 177 | display: flex; 178 | flex-direction: column; 179 | } 180 | 181 | .video-container { 182 | position: relative; 183 | background-color: #F7F9FB; 184 | height: 0px; 185 | padding-top: 95%; 186 | border-radius: 24px; 187 | 188 | overflow: hidden; 189 | } 190 | 191 | .video { 192 | position: absolute; 193 | width: 100%; 194 | height: 100%; 195 | top: 0; 196 | border-radius: 24px; 197 | 198 | object-fit: cover; 199 | } 200 | 201 | .button { 202 | font-weight: 700; 203 | display: flex; 204 | flex-wrap: wrap; 205 | align-items: center; 206 | gap: 8px; 207 | } 208 | 209 | .button span .arrow { 210 | margin-left: 6px; 211 | margin-top: 4px; 212 | } 213 | 214 | .arrow { 215 | margin-top: 3px; 216 | display: inline-block; 217 | } 218 | 219 | @media screen and (max-width: 568px) { 220 | .about { 221 | margin-top: 108px; 222 | } 223 | } 224 | 225 | @media screen and (max-width: 568px) { 226 | .about { 227 | gap: 72px; 228 | font-size: 16px; 229 | line-height: 24px; 230 | } 231 | 232 | .about h1, .about h2 { 233 | font-size: 26px; 234 | line-height: 32px; 235 | 236 | margin-bottom: 12px; 237 | 238 | } 239 | 240 | .about h3 { 241 | font-size: 20px; 242 | line-height: 28px; 243 | margin-top: 24px; 244 | margin-bottom: 12px; 245 | } 246 | 247 | .about p { 248 | margin: 12px 0; 249 | } 250 | 251 | .note { 252 | padding-left: 16px; 253 | } 254 | 255 | .video-section { 256 | display: flex; 257 | flex-direction: column; 258 | gap: 24px; 259 | 260 | padding: 12px 0; 261 | 262 | } 263 | 264 | .card-container { 265 | width: 100%; 266 | } 267 | 268 | .description { 269 | font-size: 12px; 270 | 271 | padding-left: 16px; 272 | padding-right: 16px; 273 | padding-top: 8px; 274 | } 275 | 276 | .about li { 277 | margin-top: 12px; 278 | } 279 | 280 | .image-container { 281 | margin-top: 24px; 282 | } 283 | 284 | .image-container.guide { 285 | margin-bottom: 24px; 286 | } 287 | 288 | .image { 289 | padding-top: 54%; 290 | } 291 | 292 | .image.mobile { 293 | display: block; 294 | } 295 | 296 | .image.desktop { 297 | display: none; 298 | } 299 | 300 | .image .mobile { 301 | display: block; 302 | } 303 | 304 | .image .desktop { 305 | display: none; 306 | } 307 | } 308 | -------------------------------------------------------------------------------- /css/constants.css: -------------------------------------------------------------------------------- 1 | html { 2 | --block--transition: 0.2s cubic-bezier(0, 1.5, 1, 1.5); 3 | --loader--transition: 0.2s ease-in-out; 4 | --gradient--animation--transition: 3s linear infinite alternate shine-lines; 5 | --gradient--animation--transition--slower: 6s linear infinite alternate shine-lines; 6 | --opacity--animation--transition: opacity 0.3s ease-in-out; 7 | --defatul--transition: 0.3s ease-in-out; 8 | --form--switch-transition: 0.3s linear; 9 | --bizier--transition--fast: cubic-bezier(.92, .04, 0, 1.03); 10 | --bizier--transition--slow: cubic-bezier(.74, .67, .44, 1.1); 11 | --app-height: 100%; 12 | --menu-timing-function: cubic-bezier(.6, .16, .37, .95); 13 | --menu-animation-duration: 0.3s; 14 | --bounce--animate-duration: 1s; 15 | } 16 | 17 | html, 18 | html[data-theme='light'] { 19 | --text-primary: #04060B; 20 | --text-secondary: #191F2F; 21 | --text-tetriary: #728A96; 22 | --text-slash: #728A96; 23 | 24 | --background-page: #FFFFFF; 25 | --background-content: #F5F7FA; 26 | --background-content-upper: #F5F7FA; 27 | --disabled--button--background-content: #F7F9FB; 28 | 29 | --background-content-hover: rgba(118, 152, 187, 0.06); 30 | --background-suggestions: #FFFFFF; 31 | --background-segment: rgba(192, 209, 217, 0.48); 32 | --background-fixed-header: rgba(255, 255, 255, 0.56); 33 | 34 | --card-border-default: #DDE3E6; 35 | --card-border-checkbox: #DDE3E6; 36 | --card-shadow: rgba(114, 138, 150, 0.12); 37 | 38 | --button-secondary-stroke: #E9EEF1; 39 | --wallet-button-secondary-stroke: #F7F9FB; 40 | 41 | 42 | --accent-default: #0098EA; 43 | --accent-default--border-pressed: rgba(0, 152, 234, 0.8); 44 | --accent-hover: #00A6FF; 45 | --button--background: #0098EA; 46 | 47 | --icon-primary: #232328; 48 | --icon-secondary: #98B2BF; 49 | 50 | --separator-alpha: #C0D1D9; 51 | --separator-alpha--footer: rgba(223, 229, 232, 0.5); 52 | 53 | --flip-bg-color: #F5F7FA; 54 | --flip-text-color: rgba(4, 6, 11, 1); 55 | --flip-dots-color: rgba(192, 209, 217, 1); 56 | --flip-border-color: rgba(221, 227, 230, 0.9); 57 | --flip-shadow-color: #D6DFE9; 58 | 59 | --loader--background--gradient: linear-gradient(89.96deg, #F5F7FA 0.04%, #FAFDFF 50.98%, #F5F7FA 99.96%); 60 | 61 | --text-error: #ED6767; 62 | --error--bg: rgb(237, 103, 103, 0.1); 63 | 64 | --input--box--shadow--hover: 0px 0px 1px 6px rgb(5 139 207 / 10%); 65 | --default--input--box--shadow--hover: 0px 0px 0px 6px rgba(5, 139, 207, 0.1); 66 | --default--input--box--shadow--clicked: 0px 0px 1px 5px rgba(5, 139, 207, 0.125); 67 | --accent-light-hover: #00A6FF; 68 | --dns-logo-path: url("/assets/dns_logo.svg"); 69 | --ton-logo-path: url("/assets/ton_logo_light.svg"); 70 | 71 | --free-domain-status-color: #47C58A; 72 | --free-domain-loader-bg: rgba(50, 213, 131, 0.2); 73 | --free-domain-status-backgroud: rgba(71, 197, 138, 0.08); 74 | 75 | --busy-domain-status-color: #ED6767; 76 | --busy-domain-loader-bg: rgba(237, 103, 103, 0.2); 77 | --busy-domain-status-backgroud: rgba(230, 70, 70, 0.08); 78 | --copy--icon: url("/assets/copy_btn.svg"); 79 | --copy--icon--completed: url("/assets/copy_btn_done.svg"); 80 | 81 | --arrow--right: url("/assets/arrow_right_light-blue.svg"); 82 | --arrow--right--inversed: url("/assets/arrow_right_light-grey.svg"); 83 | 84 | --socials--color: #98B2BF; 85 | 86 | --tonkeeper__icon: url("/assets/tonkeeper_white.svg"); 87 | --tonkeeper__icon--mono: url("/assets/tonkeeper_icon.svg"); 88 | --web__wallet__icon: url("/assets/web_wallet.svg"); 89 | 90 | --copy__link__icon: url("/assets/copy_link_icon.svg"); 91 | --copy__link__icon--success: url("/assets/copy_link_success.svg"); 92 | 93 | --table-border: 0.5px solid #DDE3E6; 94 | --table-row-hover-shadow: 0px 2px 24px rgba(114, 138, 150, 0.12); 95 | } 96 | 97 | html[data-theme='dark'] { 98 | --text-primary: #F3F3F7; 99 | --text-secondary: #D5D5D8; 100 | --text-tetriary: #ACACAF; 101 | --text-slash: #728A96; 102 | 103 | --background-page: #232328; 104 | --background-content: #2D2D32; 105 | --background-content-upper: #2D2D32; 106 | --disabled--button--background-content: #2D2D32; 107 | 108 | --background-content-hover: rgba(255, 255, 255, 0.06); 109 | --background-suggestions: #2D2D32; 110 | --background-segment: #F2F5F8; 111 | --background-fixed-header: rgba(0, 0, 0, 0.24); 112 | 113 | --card-border-default: #2D2D32; 114 | --card-border-checkbox: #44444A; 115 | --card-shadow: rgba(0, 0, 0, 0.16); 116 | 117 | --button-secondary-stroke: #303035; 118 | --wallet-button-secondary-stroke: #2D2D32; 119 | 120 | 121 | --accent-default: #07ACFF; 122 | --accent-default--border-pressed: rgba(7, 172, 255, 0.8); 123 | --accent-hover: #34BCFF; 124 | --button--background: #0098EA; 125 | 126 | --icon-primary: #E5E5EA; 127 | --icon-secondary: #606069; 128 | 129 | --separator-alpha: #4F4F53; 130 | --separator-alpha--footer: rgba(79, 79, 83, 0.5); 131 | 132 | --flip-bg-color: rgba(45, 45, 50, 1); 133 | --flip-text-color: rgba(243, 243, 246, 1); 134 | --flip-dots-color: rgba(69, 69, 75, 1); 135 | --flip-border-color: rgba(35, 35, 40, 0.9); 136 | --flip-shadow-color: rgba(30, 30, 33, 0.5); 137 | 138 | --loader--background--gradient: linear-gradient(90deg, rgba(45, 45, 50, 0.8) 0%, #3F3F47 48.16%, #2D2D32 98.44%); 139 | 140 | --text-error: #FF5C5C; 141 | --error--bg: rgb(255, 92, 92, 0.1); 142 | 143 | --accent-light-hover: #00A6FF; 144 | --default--input--box--shadow--hover: 0px 0px 0px 6px rgba(1, 164, 245, 0.1); 145 | --default--input--box--shadow--clicked: 0px 0px 1px 5px rgba(1, 164, 245, 0.125); 146 | 147 | --dns-logo-path: url("/assets/dns_logo_dark.svg"); 148 | --ton-logo-path: url("/assets/ton_logo_dark.svg"); 149 | 150 | --free-domain-status-color: #32D583; 151 | --free-domain-loader-bg: rgba(50, 213, 131, 0.2); 152 | --free-domain-status-backgroud: rgba(50, 213, 131, 0.08); 153 | 154 | --busy-domain-status-color: #FF5C5C; 155 | --busy-domain-loader-bg: rgba(237, 103, 103, 0.2); 156 | --busy-domain-status-backgroud: rgba(255, 92, 92, 0.08); 157 | 158 | --copy--icon: url("/assets/copy_btn_dark.svg"); 159 | --copy--icon--completed: url("/assets/copy_btn_done_dark.svg"); 160 | 161 | --arrow--right: url("/assets/arrow_right_dark-blue.svg"); 162 | --arrow--right--inversed: url("/assets/arrow_right_dark-grey.svg"); 163 | 164 | --socials--color: #606069; 165 | --tonkeeper__icon: url("/assets/tonkeeper_icon.svg"); 166 | --tonkeeper__icon--mono: url("/assets/tonkeeper_icon.svg"); 167 | --web__wallet__icon: url("/assets/web_wallet.svg"); 168 | --copy__link__icon: url("/assets/copy_link_icon_dark.svg"); 169 | --copy__link__icon--success: url("/assets/copy_link_success.svg"); 170 | 171 | 172 | --table-border: 0.5px solid #2D2D32; 173 | --table-row-hover-shadow: 0px 2px 24px rgba(0, 0, 0, 0.16); 174 | } 175 | 176 | @keyframes shine-lines { 177 | 0% { 178 | background-position: -400px 179 | } 180 | 181 | 100% { 182 | background-position: 440px 183 | } 184 | } 185 | -------------------------------------------------------------------------------- /css/flip-clock.css: -------------------------------------------------------------------------------- 1 | .flip-clock-container { 2 | visibility: visible; 3 | width: 448px; 4 | height: 48px; 5 | direction: ltr; 6 | font-family: 'Inter'; 7 | padding: 0; 8 | margin: 0; 9 | list-style: none; 10 | -webkit-box-sizing: border-box; 11 | box-sizing: border-box; 12 | display: -webkit-box; 13 | display: -ms-flexbox; 14 | display: flex; 15 | -webkit-box-pack: center; 16 | -ms-flex-pack: center; 17 | justify-content: center; 18 | -webkit-box-orient: horizontal; 19 | -webkit-box-direction: reverse; 20 | -ms-flex-direction: row-reverse; 21 | flex-direction: row-reverse; 22 | gap: 33px; 23 | } 24 | 25 | .flip-clock-container * { 26 | padding: 0; 27 | margin: 0; 28 | list-style: none; 29 | -webkit-box-sizing: border-box; 30 | box-sizing: border-box; 31 | } 32 | 33 | .flip-clock-container *::before, .flip-clock-container *::after { 34 | -webkit-box-sizing: border-box; 35 | box-sizing: border-box; 36 | } 37 | 38 | .flip-clock-container [class|="flip-item"] { 39 | position: relative; 40 | display: -webkit-box; 41 | display: -ms-flexbox; 42 | display: flex; 43 | -webkit-box-orient: horizontal; 44 | -webkit-box-direction: reverse; 45 | -ms-flex-direction: row-reverse; 46 | flex-direction: row-reverse; 47 | gap: 4px; 48 | } 49 | 50 | .flip-clock-container .flip-item-days .flip-digit { 51 | width: 114px !important; 52 | } 53 | 54 | .flip-clock-container [class|="flip-item"]::before { 55 | content: ":"; 56 | font-family: Consolas; 57 | font-size: 40px; 58 | color: var(--flip-dots-color); 59 | margin: 0 -23px; 60 | position: absolute; 61 | top: -3px; 62 | } 63 | 64 | .flip-clock-container [class|="flip-item"]:first-child::before { 65 | content: none; 66 | } 67 | 68 | .flip-clock-container [class|="flip-item"] .flip-digit { 69 | width: 37px; 70 | height: 48px; 71 | position: relative; 72 | border-radius: 12px; 73 | box-sizing: border-box; 74 | } 75 | 76 | .flip-clock-container [class|="flip-item"] .flip-digit > span { 77 | position: absolute; 78 | top: 0; 79 | left: 0; 80 | width: 100%; 81 | height: 100%; 82 | display: block; 83 | -webkit-perspective: 300px; 84 | perspective: 300px; 85 | white-space: nowrap; 86 | } 87 | 88 | .flip-clock-container [class|="flip-item"] .flip-digit > span::after, .flip-clock-container [class|="flip-item"] .flip-digit > span::before { 89 | content: attr(data-digit); 90 | position: absolute; 91 | left: 0; 92 | width: 100%; 93 | height: 50%; 94 | font-size: 20px; 95 | font-weight: bolder; 96 | text-align: center; 97 | color: var(--flip-text-color); 98 | background-color: var(--flip-bg-color); 99 | overflow: hidden; 100 | -webkit-transform-style: preserve-3d; 101 | transform-style: preserve-3d; 102 | } 103 | 104 | .flip-clock-container [class|="flip-item"] .flip-digit > span::before { 105 | top: 0; 106 | line-height: 48px; 107 | font-weight: 500; 108 | border-radius: 11px 11px 0 0; 109 | -webkit-transform-origin: bottom; 110 | transform-origin: bottom; 111 | } 112 | 113 | .flip-clock-container [class|="flip-item"] .flip-digit > span::after { 114 | bottom: 0; 115 | line-height: 0px; 116 | font-weight: 500; 117 | border-radius: 0 0 11px 11px; 118 | -webkit-transform-origin: top; 119 | transform-origin: top; 120 | } 121 | 122 | .flip-clock-container [class|="flip-item"] .flip-digit.flipping .flip-digit-next { 123 | z-index: 0; 124 | -webkit-animation: afterZIndexAnim 0.9s linear forwards; 125 | animation: afterZIndexAnim 0.9s linear forwards; 126 | } 127 | 128 | .flip-clock-container [class|="flip-item"] .flip-digit.flipping .flip-digit-next::before { 129 | -webkit-animation: afterUpShadowAnim 0.9s linear forwards; 130 | animation: afterUpShadowAnim 0.9s linear forwards; 131 | } 132 | 133 | .flip-clock-container [class|="flip-item"] .flip-digit.flipping .flip-digit-next::after { 134 | -webkit-animation: afterFlipAnim 0.9s linear forwards, afterDownShadowAnim 0.9s linear forwards; 135 | animation: afterFlipAnim 0.9s linear forwards, afterDownShadowAnim 0.9s linear forwards; 136 | } 137 | 138 | .flip-clock-container [class|="flip-item"] .flip-digit.flipping .flip-digit-current { 139 | z-index: 1; 140 | -webkit-animation: currentZIndexAnim 0.9s linear forwards; 141 | animation: currentZIndexAnim 0.9s linear forwards; 142 | } 143 | 144 | .flip-clock-container [class|="flip-item"] .flip-digit.flipping .flip-digit-current::before { 145 | -webkit-animation: currentFlipAnim 0.9s linear forwards, currentUpShadowAnim 0.9s linear forwards; 146 | animation: currentFlipAnim 0.9s linear forwards, currentUpShadowAnim 0.9s linear forwards; 147 | } 148 | 149 | .flip-clock-container [class|="flip-item"] .flip-digit.flipping .flip-digit-current::after { 150 | -webkit-animation: currentDownShadowAnim 0.9s linear forwards; 151 | animation: currentDownShadowAnim 0.9s linear forwards; 152 | } 153 | 154 | @media screen and (max-width: 568px) { 155 | .flip-clock-container { 156 | width: 343px; 157 | height: 40px; 158 | gap: 28px; 159 | } 160 | 161 | .flip-clock-container .flip-item-days .flip-digit { 162 | width: 86px !important; 163 | } 164 | 165 | .flip-clock-container [class|="flip-item"]::before { 166 | font-size: 30px; 167 | margin: 0 -19px; 168 | top: 0px; 169 | } 170 | 171 | .flip-clock-container [class|="flip-item"] .flip-digit { 172 | width: 29px; 173 | height: 40px; 174 | border-radius: 8px; 175 | } 176 | 177 | .flip-clock-container [class|="flip-item"] .flip-digit > span::after, .flip-clock-container [class|="flip-item"] .flip-digit > span::before { 178 | font-size: 16px; 179 | } 180 | 181 | .flip-clock-container [class|="flip-item"] .flip-digit > span::before { 182 | line-height: 40px; 183 | border-radius: 7px 7px 0 0; 184 | border-width: 0.5px; 185 | } 186 | 187 | .flip-clock-container [class|="flip-item"] .flip-digit > span::after { 188 | border-radius: 0 0 7px 7px; 189 | border-width: 0.5px; 190 | } 191 | 192 | } 193 | 194 | 195 | @-webkit-keyframes afterZIndexAnim { 196 | 0% { 197 | z-index: 0; 198 | } 199 | 100% { 200 | z-index: 1; 201 | } 202 | } 203 | 204 | @keyframes afterZIndexAnim { 205 | 0% { 206 | z-index: 0; 207 | } 208 | 100% { 209 | z-index: 1; 210 | } 211 | } 212 | 213 | @-webkit-keyframes currentZIndexAnim { 214 | 0% { 215 | z-index: 1; 216 | } 217 | 100% { 218 | z-index: 0; 219 | } 220 | } 221 | 222 | @keyframes currentZIndexAnim { 223 | 0% { 224 | z-index: 1; 225 | } 226 | 100% { 227 | z-index: 0; 228 | } 229 | } 230 | 231 | @-webkit-keyframes afterFlipAnim { 232 | 0% { 233 | -webkit-transform: rotateX(180deg); 234 | transform: rotateX(180deg); 235 | } 236 | 100% { 237 | -webkit-transform: rotateX(0); 238 | transform: rotateX(0); 239 | } 240 | } 241 | 242 | @keyframes afterFlipAnim { 243 | 0% { 244 | -webkit-transform: rotateX(180deg); 245 | transform: rotateX(180deg); 246 | } 247 | 100% { 248 | -webkit-transform: rotateX(0); 249 | transform: rotateX(0); 250 | } 251 | } 252 | 253 | @-webkit-keyframes afterUpShadowAnim { 254 | 0% { 255 | -webkit-box-shadow: inset 0 -100px 20px -10px var(--flip-shadow-color); 256 | box-shadow: inset 0 -100px 20px -10px var(--flip-shadow-color); 257 | } 258 | 100% { 259 | -webkit-box-shadow: inset 0 0 20px -10px rgba(0, 0, 0, 0); 260 | box-shadow: inset 0 0 20px -10px rgba(0, 0, 0, 0); 261 | } 262 | } 263 | 264 | @keyframes afterUpShadowAnim { 265 | 0% { 266 | -webkit-box-shadow: inset 0 -100px 20px -10px var(--flip-shadow-color); 267 | box-shadow: inset 0 -100px 20px -10px var(--flip-shadow-color); 268 | } 269 | 100% { 270 | -webkit-box-shadow: inset 0 0 20px -10px rgba(0, 0, 0, 0); 271 | box-shadow: inset 0 0 20px -10px rgba(0, 0, 0, 0); 272 | } 273 | } 274 | 275 | @-webkit-keyframes afterDownShadowAnim { 276 | 0% { 277 | -webkit-box-shadow: inset 0 100px 20px -10px var(--flip-shadow-color); 278 | box-shadow: inset 0 100px 20px -10px var(--flip-shadow-color); 279 | } 280 | 100% { 281 | -webkit-box-shadow: inset 0 0 20px -10px rgba(0, 0, 0, 0); 282 | box-shadow: inset 0 0 20px -10px rgba(0, 0, 0, 0); 283 | } 284 | } 285 | 286 | @keyframes afterDownShadowAnim { 287 | 0% { 288 | -webkit-box-shadow: inset 0 100px 20px -10px var(--flip-shadow-color); 289 | box-shadow: inset 0 100px 20px -10px var(--flip-shadow-color); 290 | } 291 | 100% { 292 | -webkit-box-shadow: inset 0 0 20px -10px rgba(0, 0, 0, 0); 293 | box-shadow: inset 0 0 20px -10px rgba(0, 0, 0, 0); 294 | } 295 | } 296 | 297 | @-webkit-keyframes currentFlipAnim { 298 | 0% { 299 | -webkit-transform: rotateX(0deg); 300 | transform: rotateX(0deg); 301 | } 302 | 100% { 303 | -webkit-transform: rotateX(-180deg); 304 | transform: rotateX(-180deg); 305 | } 306 | } 307 | 308 | @keyframes currentFlipAnim { 309 | 0% { 310 | -webkit-transform: rotateX(0deg); 311 | transform: rotateX(0deg); 312 | } 313 | 100% { 314 | -webkit-transform: rotateX(-180deg); 315 | transform: rotateX(-180deg); 316 | } 317 | } 318 | 319 | @-webkit-keyframes currentUpShadowAnim { 320 | 0% { 321 | -webkit-box-shadow: inset 0 0 15px -10px rgba(0, 0, 0, 0); 322 | box-shadow: inset 0 0 15px -10px rgba(0, 0, 0, 0); 323 | } 324 | 50% { 325 | -webkit-box-shadow: inset 0 -50px 25px -10px var(--flip-shadow-color); 326 | box-shadow: inset 0 -50px 25px -10px var(--flip-shadow-color); 327 | } 328 | 100% { 329 | -webkit-box-shadow: inset 0 -100px 25px -10px var(--flip-shadow-color); 330 | box-shadow: inset 0 -100px 25px -10px var(--flip-shadow-color); 331 | } 332 | } 333 | 334 | @keyframes currentUpShadowAnim { 335 | 0% { 336 | -webkit-box-shadow: inset 0 0 15px -10px rgba(0, 0, 0, 0); 337 | box-shadow: inset 0 0 15px -10px rgba(0, 0, 0, 0); 338 | } 339 | 50% { 340 | -webkit-box-shadow: inset 0 -50px 25px -10px var(--flip-shadow-color); 341 | box-shadow: inset 0 -50px 25px -10px var(--flip-shadow-color); 342 | } 343 | 100% { 344 | -webkit-box-shadow: inset 0 -100px 25px -10px var(--flip-shadow-color); 345 | box-shadow: inset 0 -100px 25px -10px var(--flip-shadow-color); 346 | } 347 | } 348 | 349 | @-webkit-keyframes currentDownShadowAnim { 350 | 0% { 351 | -webkit-box-shadow: inset 0 0 15px -10px rgba(0, 0, 0, 0); 352 | box-shadow: inset 0 0 15px -10px rgba(0, 0, 0, 0); 353 | } 354 | 50% { 355 | -webkit-box-shadow: inset 0 50px 25px -10px var(--flip-shadow-color); 356 | box-shadow: inset 0 50px 25px -10px var(--flip-shadow-color); 357 | } 358 | 100% { 359 | -webkit-box-shadow: inset 0 100px 25px -10px var(--flip-shadow-color); 360 | box-shadow: inset 0 100px 25px -10px var(--flip-shadow-color); 361 | } 362 | } 363 | 364 | @keyframes currentDownShadowAnim { 365 | 0% { 366 | -webkit-box-shadow: inset 0 0 15px -10px rgba(0, 0, 0, 0); 367 | box-shadow: inset 0 0 15px -10px rgba(0, 0, 0, 0); 368 | } 369 | 50% { 370 | -webkit-box-shadow: inset 0 50px 25px -10px var(--flip-shadow-color); 371 | box-shadow: inset 0 50px 25px -10px var(--flip-shadow-color); 372 | } 373 | 100% { 374 | -webkit-box-shadow: inset 0 100px 25px -10px var(--flip-shadow-color); 375 | box-shadow: inset 0 100px 25px -10px var(--flip-shadow-color); 376 | } 377 | } 378 | -------------------------------------------------------------------------------- /css/loader.css: -------------------------------------------------------------------------------- 1 | .loader, 2 | .loader:after { 3 | border-radius: 50%; 4 | width: 8em; 5 | height: 8em; 6 | opacity: 0; 7 | margin-right: -14px; 8 | } 9 | 10 | .loader { 11 | font-size: 1.5px; 12 | position: relative; 13 | text-indent: -9999em; 14 | border-top: 1.6em solid rgba(255, 255, 255, 0.2); 15 | border-right: 1.6em solid rgba(255, 255, 255, 0.2); 16 | border-bottom: 1.6em solid rgba(255, 255, 255, 0.2); 17 | border-left: 1.6em solid; 18 | transform: translateZ(0); 19 | animation: load8 1.1s infinite linear; 20 | } 21 | 22 | @-webkit-keyframes load8 { 23 | 0% { 24 | transform: rotate(0deg); 25 | } 26 | 100% { 27 | transform: rotate(360deg); 28 | } 29 | } 30 | 31 | @keyframes load8 { 32 | 0% { 33 | transform: rotate(0deg); 34 | } 35 | 100% { 36 | transform: rotate(360deg); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /css/my-domains.css: -------------------------------------------------------------------------------- 1 | #myDomainsView { 2 | flex: 1; 3 | } 4 | 5 | #myDomainsButton { 6 | display: flex; 7 | justify-content: center; 8 | width: 118px; 9 | height: 36px; 10 | } 11 | 12 | .my-domains-loading-button { 13 | background: var(--loader--background--gradient); 14 | animation: var(--gradient--animation--transition); 15 | } 16 | 17 | #myDomainsLoadMoreButton, #noDomainsStartNowButton { 18 | width: fit-content; 19 | } 20 | 21 | #myDomainsContainer { 22 | display: none; 23 | flex-direction: column; 24 | align-items: center; 25 | max-width: 928px; 26 | width: 100%; 27 | gap: 12px; 28 | } 29 | 30 | #noDomainsContainer { 31 | display: none; 32 | flex-direction: column; 33 | justify-content: center; 34 | align-items: center; 35 | max-width: 928px; 36 | width: 100%; 37 | } 38 | 39 | 40 | html[data-theme='light'] .mobile-menu #myDomainsLottieLight { 41 | display: none; 42 | } 43 | 44 | html[data-theme='dark'] .mobile-menu #myDomainsLottieDark { 45 | display: none; 46 | } 47 | 48 | html[data-theme='light'] #noDomainsBannerDark { 49 | display: none; 50 | } 51 | 52 | html[data-theme='dark'] #noDomainsBannerLight { 53 | display: none; 54 | } 55 | 56 | .my-domains-title-container { 57 | width: 100%; 58 | margin: 48px 0px 12px 48px; 59 | } 60 | 61 | .my-domains-title { 62 | font-size: 28px; 63 | line-height: 36px; 64 | font-weight: 600; 65 | text-align: left; 66 | width: fit-content; 67 | } 68 | 69 | .my-domains-title-loading { 70 | border-radius: 8px; 71 | color: transparent; 72 | background: var(--loader--background--gradient); 73 | animation: var(--gradient--animation--transition); 74 | } 75 | 76 | .my-domains-table-loading { 77 | border-radius: 16px; 78 | width: 100%; 79 | color: transparent; 80 | height: 50vh; 81 | box-sizing: border-box; 82 | background: var(--loader--background--gradient); 83 | animation: var(--gradient--animation--transition); 84 | } 85 | 86 | .my-domains-table { 87 | width: 100%; 88 | border-collapse: separate; 89 | border-spacing: 0; 90 | table-layout: fixed; 91 | } 92 | 93 | .my-domains-table th { 94 | text-align: left; 95 | border-top: var(--table-border); 96 | color: var(--text-tetriary); 97 | font-size: 16px; 98 | line-height: 24px; 99 | font-weight: 400; 100 | padding: 12px 0 12px 24px; 101 | cursor: default; 102 | } 103 | 104 | 105 | .my-domains-table-headers th:not(.my-domains-table-last-column) { 106 | width: 31%; /* first three table columns */ 107 | } 108 | 109 | 110 | .my-domains-table-last-column { 111 | width: 7%; /* last table column = 100% - 3 * ( 31% ) */ 112 | } 113 | 114 | .my-domains-right-arrow-icon { 115 | display: block; 116 | width: 16px; 117 | height: 16px; 118 | background: var(--arrow--right--inversed); 119 | background-size: contain; 120 | } 121 | 122 | .my-domains-table-cell, .my-domains-table-cell-first, .my-domains-table-cell-last { 123 | text-align: left; 124 | font-size: 16px; 125 | line-height: 24px; 126 | font-weight: 600; 127 | padding: 12px 0 12px 24px; 128 | border-top: var(--table-border); 129 | height: 50px; 130 | } 131 | 132 | .my-domains-table-row:hover { 133 | cursor: pointer; 134 | border-radius: 16px; 135 | box-shadow: var(--table-row-hover-shadow); 136 | -webkit-box-shadow: var(--table-row-hover-shadow); 137 | 138 | .my-domains-table-cell { 139 | border-bottom: var(--table-border); 140 | } 141 | 142 | .my-domains-table-cell-first { 143 | border-bottom: var(--table-border); 144 | border-left: var(--table-border); 145 | border-top-left-radius: 16px; 146 | border-bottom-left-radius: 16px; 147 | } 148 | 149 | .my-domains-table-cell-last { 150 | border-bottom: var(--table-border); 151 | border-right: var(--table-border); 152 | border-top-right-radius: 16px; 153 | border-bottom-right-radius: 16px; 154 | } 155 | 156 | .my-domains-right-arrow-icon { 157 | background: var(--arrow--right); 158 | } 159 | } 160 | 161 | .my-domains-table-row:hover + .my-domains-table-row { 162 | & .my-domains-table-cell, .my-domains-table-cell-first, .my-domains-table-cell-last { 163 | border-top: none; 164 | } 165 | } 166 | 167 | .my-domains-cell-container { 168 | float: left; 169 | display: flex; 170 | flex-direction: column; 171 | } 172 | 173 | .my-domains-table-domain-cell { 174 | width: calc(100%); 175 | text-overflow: ellipsis; 176 | overflow: hidden; 177 | } 178 | 179 | .my-domains-cell-price-container { 180 | display: flex; 181 | flex-direction: row; 182 | } 183 | 184 | .my-domains-cell-price-loading { 185 | margin-left: 4px; 186 | border-radius: 6px; 187 | color: transparent; 188 | background: var(--loader--background--gradient); 189 | animation: var(--gradient--animation--transition--slower); 190 | margin-bottom: 2px; 191 | line-height: 26px; 192 | } 193 | 194 | .my-domains-cell-price { 195 | font-size: 16px; 196 | line-height: 28px; 197 | font-weight: 600; 198 | text-overflow: ellipsis; 199 | overflow: hidden; 200 | } 201 | 202 | .my-domains-cell-price-ton-logo { 203 | width: 20px; 204 | height: 20px; 205 | transform: translateY(20%); 206 | background: var(--ton-logo-path) center no-repeat; 207 | } 208 | 209 | .my-domains-cell-expiried-date { 210 | font-size: 16px; 211 | line-height: 24px; 212 | font-weight: 500; 213 | color: #FF5C5C; 214 | } 215 | 216 | .my-domains-cell-expiry-title-desktop { 217 | font-size: 16px; 218 | line-height: 24px; 219 | font-weight: 600; 220 | } 221 | 222 | .my-domains-cell-expiry-title-mobile { 223 | font-size: 14px; 224 | line-height: 20px; 225 | font-weight: 600; 226 | display: none; 227 | } 228 | 229 | .my-domains-cell-expiry-caption-desktop { 230 | color: var(--text-tetriary); 231 | font-size: 14px; 232 | line-height: 18px; 233 | font-weight: 400; 234 | } 235 | 236 | .my-domains-cell-expiry-caption-mobile { 237 | color: var(--text-tetriary); 238 | font-size: 12px; 239 | line-height: 16px; 240 | font-weight: 400; 241 | display: none; 242 | } 243 | 244 | .no-domains-title { 245 | padding-top: 40px; 246 | font-size: 20px; 247 | line-height: 30px; 248 | font-weight: bolder; 249 | } 250 | 251 | .no-domains-caption { 252 | color: var(--text-tetriary); 253 | font-size: 16px; 254 | line-height: 24px; 255 | font-weight: 400; 256 | padding-bottom: 16px; 257 | } 258 | 259 | @media screen and (max-width: 568px) { 260 | #myDomainsView { 261 | margin-top: 10px; 262 | } 263 | 264 | #myDomainsLoadMoreButton, #noDomainsStartNowButton { 265 | padding: 6px 16px; 266 | } 267 | 268 | #myDomainsContainer { 269 | gap: 0; 270 | } 271 | 272 | .my-domains-table { 273 | margin-bottom: 16px; 274 | } 275 | 276 | .my-domains-table-loading { 277 | height: 60vh; 278 | margin-top: 6px; 279 | } 280 | 281 | .my-domains-table th { 282 | border-top: 0; 283 | font-size: 14px; 284 | line-height: 20px; 285 | padding: 16px 16px 8px 0px; 286 | } 287 | 288 | .my-domains-table-cell, .my-domains-table-cell-first, .my-domains-table-cell-last { 289 | font-size: 14px; 290 | line-height: 20px; 291 | padding: 8px 8px 8px 0px; 292 | } 293 | 294 | .my-domains-title-container { 295 | margin: 0px 0px 2px 0px; 296 | } 297 | 298 | .my-domains-title { 299 | font-size: 20px; 300 | line-height: 28px; 301 | } 302 | 303 | .my-domains-cell-price { 304 | font-size: 14px; 305 | line-height: 20px; 306 | } 307 | 308 | .my-domains-cell-price-loading { 309 | margin-bottom: 1px; 310 | line-height: 18px; 311 | } 312 | 313 | .my-domains-cell-price-ton-logo { 314 | width: 16px; 315 | height: 16px; 316 | transform: translateY(12%); 317 | } 318 | 319 | .my-domains-cell-expiried-date { 320 | font-size: 14px; 321 | line-height: 20px; 322 | } 323 | 324 | .my-domains-cell-expiry-title-desktop { 325 | display: none; 326 | } 327 | 328 | .my-domains-cell-expiry-title-mobile { 329 | display: block; 330 | } 331 | 332 | .my-domains-cell-expiry-caption-desktop { 333 | display: none; 334 | } 335 | 336 | .my-domains-cell-expiry-caption-mobile { 337 | display: block; 338 | } 339 | 340 | .my-domains-cell-price:before { 341 | width: 16px; 342 | height: 16px; 343 | transform: translateY(10%); 344 | } 345 | 346 | .no-domains-title { 347 | padding-top: 16px; 348 | font-size: 18px; 349 | line-height: 22px; 350 | } 351 | 352 | .no-domains-caption { 353 | font-size: 14px; 354 | line-height: 20px; 355 | } 356 | 357 | .no-domains-image { 358 | width: 148px; 359 | heigth: 166px; 360 | } 361 | 362 | .my-domains-table-headers th:not(.my-domains-table-last-column) { 363 | width: 32%; /* first three table columns */ 364 | } 365 | 366 | 367 | .my-domains-table-last-column { 368 | width: 4%; /* last table column = 100% - 3 * ( 32% ) */ 369 | } 370 | } 371 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-blockchain/dns/37c689c62743fc029cfbfd149a5831e3bed9cffb/icon.png -------------------------------------------------------------------------------- /src/analytics.js: -------------------------------------------------------------------------------- 1 | class AnalyticService { 2 | constructor(provider) { 3 | this.provider = provider; 4 | } 5 | 6 | init(){ 7 | this.provider.init() 8 | } 9 | sendEvent(event) { 10 | try { 11 | this.provider.sendEvent(event); 12 | } catch (e) { 13 | console.error(e); 14 | } 15 | } 16 | } 17 | 18 | const plausibleProvider = { 19 | init(){ 20 | window.plausible = window.plausible || function() { 21 | (window.plausible.q = window.plausible.q || []).push(arguments) 22 | }; 23 | }, 24 | sendEvent({type, ...data}) { 25 | plausible(type, data) 26 | }, 27 | }; 28 | 29 | const analyticService = new AnalyticService(plausibleProvider); 30 | analyticService.init(); 31 | -------------------------------------------------------------------------------- /src/config/wallets.js: -------------------------------------------------------------------------------- 1 | const THEME = TON_CONNECT_UI.THEME; 2 | 3 | const COLORS_SET = { 4 | [THEME.LIGHT]: { 5 | connectButton: { 6 | background: '#0098EA', 7 | foreground: '#FFFFFF', 8 | }, 9 | accent: '#0098EA', 10 | icon: { 11 | primary: '#232328', 12 | secondary: '#98B2BF', 13 | tertiary: '#C0D1D9', 14 | success: '#47C58A', 15 | error: '#ED6767', 16 | }, 17 | background: { 18 | primary: '#FFFFFF', 19 | secondary: '#F5F7FA', 20 | segment: '#FFFFFF', 21 | }, 22 | text: { 23 | primary: '#04060B', 24 | secondary: '#728A96', 25 | }, 26 | }, 27 | [THEME.DARK]: { 28 | connectButton: { 29 | background: '#0098EA', 30 | foreground: '#FFFFFF', 31 | }, 32 | accent: '#F3F3F6', 33 | icon: { 34 | primary: '#E5E5EA', 35 | secondary: '#606069', 36 | tertiary: '#45454B', 37 | success: '#32D583', 38 | error: '#FF5C5C', 39 | }, 40 | background: { 41 | primary: '#232328', 42 | secondary: '#2D2D32', 43 | segment: '#232328', 44 | }, 45 | text: { 46 | primary: '#F3F3F6', 47 | secondary: '#ACACAF', 48 | }, 49 | }, 50 | } 51 | 52 | const CHAIN = { 53 | MAINNET: "-239", 54 | TESTNET: "-3" 55 | } -------------------------------------------------------------------------------- /src/constants.js: -------------------------------------------------------------------------------- 1 | TONCENTER_ENDPOINT_TESTNET = 'https://testnet.toncenter.com/api/v2/jsonRPC' 2 | TONCENTER_ENDPOINT = 'https://toncenter.com/api/v2/jsonRPC' 3 | 4 | TONCENTER_API_KEY_TESTNET = '9b547f1ef1a93b269d09f293aeb1c57d77d2adce3d872125d9ed780b04d35c6c' 5 | TONCENTER_API_KEY = 'cf29c6480217595ee17158db12a72e3f70b36377f2f79b72487621576a0df10b' 6 | 7 | TON_ROOT_ADDRESS_TESTNET = 'EQDjPtM6QusgMgWfl9kMcG-EALslbTITnKcH8VZK1pnH3UZA' 8 | TON_ROOT_ADDRESS = 'EQC3dNlesgVD8YbAazcauIrXBPfiVhMMr5YYk2in0Mtsz0Bz' 9 | 10 | TONSCAN_ENDPOINT_TESTNET = 'https://testnet.tonscan.org' 11 | TONSCAN_ENDPOINT = 'https://tonscan.org' 12 | 13 | TONAPI_WRAPPER_API = 'https://dp2xyxeojwjddkgygogm5jbjbe0crwaj.lambda-url.eu-central-1.on.aws' 14 | 15 | // GG INTEGRATION 16 | GG_ENDPOINT = 'https://api.getgems.io/ton-dns' 17 | // GG INTEGRATION 18 | 19 | MS_IN_ONE_LEAP_YEAR = 31622400000 20 | SEC_IN_ONE_MONTH = 2592000 21 | -------------------------------------------------------------------------------- /src/controllers/flipTimerController.js: -------------------------------------------------------------------------------- 1 | const TIMER_CONFIG = [ 2 | { type: 'seconds', accessor: 'secondsLeft' }, 3 | { type: 'minutes', accessor: 'minutesLeft' }, 4 | { type: 'hours', accessor: 'hoursLeft' }, 5 | { type: 'days', accessor: 'daysLeft' }, 6 | ]; 7 | 8 | class FlipTimer { 9 | static activeTimers = [] 10 | 11 | constructor({ selector, start, store }) { 12 | this.selector = selector 13 | this.start = start 14 | this.store = store 15 | 16 | this.init(selector, start) 17 | } 18 | 19 | init(selector, start) { 20 | const container = $(selector) 21 | const endDate = this.getEndDate(container) 22 | 23 | if (!endDate) { 24 | return; 25 | } 26 | 27 | const expiresTime = this.calculateExpiresTime(endDate) 28 | 29 | container.innerHTML = TIMER_CONFIG.map(function ({ type, accessor }) { 30 | const currentExpires = expiresTime[accessor] 31 | return `
  • ${currentExpires}
  • ` 32 | }).join('') 33 | 34 | FlipTimer.activeTimers = [...FlipTimer.activeTimers, container]; 35 | renderTimer(jQuery, start, store) 36 | } 37 | 38 | getEndDate(container) { 39 | if (!container) { 40 | return; 41 | } 42 | 43 | const endDate = container.dataset.endDate 44 | const formattedDate = new Date(endDate) 45 | 46 | if (!endDate || !formattedDate) { 47 | return new Date() 48 | } 49 | 50 | return formattedDate 51 | } 52 | 53 | calculateExpiresTime(endDate) { 54 | const todayDate = new Date() 55 | if (endDate.getTime() <= todayDate.getTime()) { 56 | return { 57 | daysLeft: 0, 58 | hoursLeft: 0, 59 | minutesLeft: 0, 60 | secondsLeft: 0, 61 | }; 62 | } 63 | 64 | const ONE_SECOND = 1000 65 | const ONE_MINUTE = ONE_SECOND * 60 66 | const ONE_HOUR = ONE_MINUTE * 60 67 | const ONE_DAY = 24 * 60 * 60 * 1000 68 | 69 | const dateDifference = Math.abs(todayDate - endDate) 70 | 71 | const daysLeft = Math.max(0, Math.floor(dateDifference / ONE_DAY)) 72 | const hoursLeft = Math.max(0, Math.floor((dateDifference / ONE_HOUR) % 24)) 73 | const minutesLeft = Math.max( 74 | 0, 75 | Math.floor((dateDifference / ONE_MINUTE) % 60) 76 | ) 77 | const secondsLeft = Math.max( 78 | 0, 79 | Math.floor((dateDifference / ONE_SECOND) % 60) 80 | ) 81 | 82 | return { 83 | daysLeft, 84 | hoursLeft, 85 | minutesLeft, 86 | secondsLeft, 87 | } 88 | } 89 | 90 | showIsHidden() { 91 | setTimeout(() => { this.showIsHidden() }, 200); 92 | } 93 | } 94 | 95 | FlipTimer.unmountTimers = function () { 96 | FlipTimer.activeTimers.forEach((container) => { 97 | container.innerHTML = '' 98 | 99 | }) 100 | FlipTimer.activeTimers = [] 101 | } 102 | 103 | FlipTimer.addTimer = function (selector, start) { 104 | return new FlipTimer({ selector, start, store }) 105 | } 106 | -------------------------------------------------------------------------------- /src/controllers/myDomainsController.js: -------------------------------------------------------------------------------- 1 | class MyDomainsController { 2 | myDomainsView = new MyDomainsView(); 3 | 4 | expiringPeriod = 366; 5 | limit = isMobile() ? 10 : 5; 6 | offset = 0; 7 | 8 | domains = []; // Array<{ name: string, expiring_at: Date, address: string }> 9 | accountAddress = ''; 10 | isInitialized = false; 11 | isDataLoading = false; 12 | 13 | constructor() { } 14 | 15 | async initialize(accountAddress) { 16 | this.isInitialized = true; 17 | 18 | this.showMyDomainsButton(); 19 | this.startLoadingMyDomainsButton(); 20 | 21 | this.setAccountAddress(accountAddress); 22 | this.stopLoadingMyDomainsButton(); 23 | 24 | await this.fetchDomains(); 25 | } 26 | 27 | destructor() { 28 | this.isInitialized = false; 29 | 30 | this.hideMyDomainsButton(); 31 | this.setAccountAddress(''); 32 | this.setDomains([]); 33 | 34 | setScreen('startScreen'); 35 | } 36 | 37 | async fetchDomains() { 38 | try { 39 | this.startDataLoading(); 40 | 41 | const response = await fetch(`${TONAPI_WRAPPER_API}/expiring-domains?accountAddress=${this.accountAddress}&period=${this.expiringPeriod}`); 42 | 43 | 44 | const { items, error } = await response.json(); 45 | if (error) { 46 | throw new Error(error) 47 | } 48 | if (!items) { 49 | throw new Error('No items property in the response') 50 | } 51 | if (!items.length) { 52 | return; 53 | } 54 | 55 | const domainsSortedByAscendingExpiryDate = items.reverse(); 56 | this.setDomains(domainsSortedByAscendingExpiryDate); 57 | } catch (e) { 58 | console.error(e.message); 59 | } finally { 60 | this.stopDataLoading(); 61 | } 62 | } 63 | 64 | resetPagination() { 65 | this.limit = isMobile() ? 10 : 5; 66 | this.offset = 0; 67 | } 68 | 69 | showMyDomainsButton() { 70 | $('#myDomainsButton').style.display = "flex"; 71 | $('#myDomainsMobileButton').style.display = "flex"; 72 | } 73 | 74 | hideMyDomainsButton() { 75 | $('#myDomainsButton').style.display = "none"; 76 | $('#myDomainsMobileButton').style.display = "none"; 77 | } 78 | 79 | startLoadingMyDomainsButton() { 80 | $('#myDomainsButton').disabled = true; 81 | $('#myDomainsMobileButton').disabled = true; 82 | 83 | $('#myDomainsButton').classList.add('my-domains-loading-button'); 84 | $('#myDomainsMobileButton').classList.add('my-domains-loading-button'); 85 | } 86 | 87 | stopLoadingMyDomainsButton() { 88 | $('#myDomainsButton').disabled = false; 89 | $('#myDomainsMobileButton').disabled = false; 90 | 91 | $('#myDomainsButton').classList.remove('my-domains-loading-button'); 92 | $('#myDomainsMobileButton').classList.remove('my-domains-loading-button'); 93 | 94 | $('#myDomainsButton span').innerText = store.localeDict.my_domains; 95 | $('#myDomainsMobileButtonTitle').innerText = store.localeDict.my_domains; 96 | } 97 | 98 | startDataLoading() { 99 | this.isDataLoading = true; 100 | this.resetPagination(); 101 | this.myDomainsView.resetTable(); 102 | this.myDomainsView.renderLoadingView(); 103 | } 104 | 105 | stopDataLoading() { 106 | const { moreDomainsToDisplay, isLoadMore } = this.getNextDomainsToDisplay(); 107 | this.myDomainsView.rednder(moreDomainsToDisplay, isLoadMore); 108 | this.isDataLoading = false; 109 | } 110 | 111 | setAccountAddress(accountAddressIn) { 112 | this.accountAddress = accountAddressIn; 113 | } 114 | 115 | setDomains(domainsIn) { 116 | this.domains = domainsIn; 117 | } 118 | 119 | getNextDomainsToDisplay() { 120 | const moreDomainsToDisplay = this.domains.slice(this.offset, this.offset + this.limit); 121 | this.offset += this.limit; 122 | 123 | if (this.offset >= this.domains.length) { 124 | return { moreDomainsToDisplay, isLoadMore: false }; 125 | } 126 | 127 | return { moreDomainsToDisplay, isLoadMore: true }; 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /src/controllers/testnetController.js: -------------------------------------------------------------------------------- 1 | class TestnetController { 2 | constructor() { 3 | this.isTestnet = window.location.href.indexOf('testnet=true') > -1 4 | 5 | this.update() 6 | } 7 | 8 | async update() { 9 | const isLoggedIn = await walletController.isLoggedIn() 10 | if (!isLoggedIn) { 11 | return 12 | } 13 | 14 | const isTestnet = await walletController.isTestnet() 15 | 16 | if (isTestnet) { 17 | this.turnOn() 18 | } else { 19 | this.turnOff() 20 | } 21 | } 22 | 23 | turnOn() { 24 | if (this.isTestnet) { 25 | return 26 | } 27 | 28 | this.isTestnet = true 29 | 30 | const searchParams = new URLSearchParams(window.location.search) 31 | searchParams.set("testnet", "true"); 32 | window.location.search = searchParams.toString(); 33 | } 34 | 35 | turnOff() { 36 | if (!this.isTestnet) { 37 | return 38 | } 39 | 40 | this.isTestnet = false 41 | 42 | const searchParams = new URLSearchParams(window.location.search) 43 | searchParams.delete("testnet"); 44 | window.location.search = searchParams.toString(); 45 | } 46 | } -------------------------------------------------------------------------------- /src/controllers/themeController.js: -------------------------------------------------------------------------------- 1 | class ThemeController { 2 | constructor(props) { 3 | this.store = props.store 4 | this.store.subscribe(this, 'changeTheme', this.setTheme) 5 | 6 | this.init() 7 | } 8 | 9 | init() { 10 | this.setTheme(this.getTheme()) 11 | } 12 | 13 | setTheme(theme) { 14 | window.localStorage.setItem('theme', theme) 15 | document.documentElement.setAttribute('data-theme', theme) 16 | } 17 | 18 | getTheme() { 19 | return window.localStorage.getItem('theme') || THEME_LIGHT 20 | } 21 | 22 | toggle() { 23 | const currentTheme = this.getTheme() 24 | 25 | if (currentTheme === THEME_LIGHT) { 26 | this.setTheme(THEME_DARK) 27 | this.themeEffect() 28 | return 29 | } 30 | 31 | this.setTheme(THEME_LIGHT) 32 | this.themeEffect() 33 | } 34 | 35 | themeEffect() { 36 | const currentTHeme = this.getTheme() 37 | walletController.updateTheme(UPPER_CASE_THEME[currentTHeme]) 38 | } 39 | 40 | } 41 | 42 | const THEME_LIGHT = 'light' 43 | 44 | const THEME_DARK = 'dark' 45 | 46 | 47 | const UPPER_CASE_THEME = { 48 | [THEME_LIGHT]: 'LIGHT', 49 | [THEME_DARK]: 'DARK', 50 | } -------------------------------------------------------------------------------- /src/controllers/walletController.js: -------------------------------------------------------------------------------- 1 | const UserRejectsError = TonConnectSDK.UserRejectsError; 2 | 3 | class WalletController { 4 | constructor(props) { 5 | this.store = props.store 6 | this.currentWallet = null 7 | 8 | this.connector = new TonConnectSDK.TonConnect(); 9 | this.tonConnectUI = new TON_CONNECT_UI.TonConnectUI({ 10 | connector: this.connector, 11 | buttonRootId: 'connect-wallet-button' 12 | }); 13 | 14 | const currentTheme = themeController.getTheme() 15 | const locale = store.locale 16 | 17 | this.tonConnectUI.uiOptions = { 18 | language: locale, 19 | uiPreferences: { 20 | theme: UPPER_CASE_THEME[currentTheme], 21 | colorsSet: COLORS_SET 22 | }, 23 | actionsConfiguration: { 24 | modals: [], 25 | notifications: [] 26 | } 27 | }; 28 | 29 | const unsubscribe = this.tonConnectUI.onStatusChange( 30 | (walletInfo) => { 31 | testnetController.update().then(() => { 32 | this.currentWallet = this.tonConnectUI.wallet 33 | this.updateMyDomainController(); 34 | }); 35 | } 36 | ); 37 | 38 | this.tonConnectUI.connectionRestored.then(restored => { 39 | if (!restored) { 40 | myDomainsController.destructor(); 41 | return; 42 | } 43 | 44 | testnetController.update().then(() => { 45 | this.currentWallet = this.tonConnectUI.wallet 46 | this.updateMyDomainController(); 47 | }); 48 | }); 49 | } 50 | 51 | updateMyDomainController() { 52 | if (!this.currentWallet) { 53 | myDomainsController.destructor(); 54 | return; 55 | } 56 | 57 | if (myDomainsController.isInitialized) { 58 | return; 59 | } 60 | 61 | const addr = this.currentWallet.account.address; 62 | myDomainsController.initialize(addr); 63 | } 64 | 65 | async sendTransaction( 66 | transaction, 67 | onPaymentSuccess = () => {}, 68 | onPaymentRejection = () => {}, 69 | onPaymentError = () => {} 70 | ) { 71 | try { 72 | const result = await this.tonConnectUI.sendTransaction(transaction) 73 | .then(() => onPaymentSuccess()); 74 | 75 | } catch (e) { 76 | if (e instanceof UserRejectsError) { 77 | onPaymentRejection() 78 | } else { 79 | onPaymentError() 80 | } 81 | } 82 | } 83 | 84 | updateTheme(theme) { 85 | this.tonConnectUI.uiOptions = { 86 | uiPreferences: { 87 | theme, 88 | } 89 | } 90 | } 91 | 92 | async isLoggedIn() { 93 | return !!this.tonConnectUI.connected 94 | } 95 | 96 | isLoggedInSync() { 97 | return !!this.tonConnectUI.connected 98 | } 99 | 100 | async isTestnet() { 101 | return this.tonConnectUI.account.chain === CHAIN.TESTNET 102 | } 103 | 104 | getCurrentWallet() { 105 | return this.currentWallet 106 | } 107 | 108 | getAccountAddressUserFriendly() { 109 | const { address, chain } = this.currentWallet?.account || {} 110 | 111 | if (!address || !chain) { 112 | return null 113 | } 114 | 115 | return this.getUserFriendlyAddress(address, chain) 116 | } 117 | 118 | getAccountAddress() { 119 | const { address, chain } = this.currentWallet?.account || {} 120 | 121 | if (!address || !chain) { 122 | return null 123 | } 124 | 125 | return address; 126 | } 127 | 128 | getUserFriendlyAddress(address, chain) { 129 | if (!address) { 130 | return ''; 131 | } 132 | 133 | return TonConnectSDK.toUserFriendlyAddress(address, chain === CHAIN.TESTNET); 134 | } 135 | 136 | } -------------------------------------------------------------------------------- /src/dnsAlert.js: -------------------------------------------------------------------------------- 1 | const backdrop = $('.alert--backdrop') 2 | 3 | function sanitize(string) { 4 | const map = { 5 | '&': '&', 6 | '<': '<', 7 | '>': '>', 8 | '"': '"', 9 | "'": ''', 10 | '/': '/', 11 | '`': '`', 12 | '=': '=' 13 | }; 14 | const reg = /[&<>"'`=\/]/g; 15 | return String(string).replace(reg, (s)=>(map[s])); 16 | } 17 | 18 | const dnsAlert = async (message = '', buttonMessage = 'Ok', onclick = () => { }) => { 19 | const sanitziedMessage = sanitize(message); 20 | const sanitziedButtonMessage = sanitize(buttonMessage); 21 | 22 | if (backdrop.children.length > 0) { 23 | await until(() => backdrop.children.length === 0) 24 | } 25 | 26 | toggle('.alert--backdrop', true) 27 | $('body').classList.add('scroll__disabled') 28 | 29 | const alertId = makeid(5) 30 | 31 | const alert = createAlert(sanitziedMessage, sanitziedButtonMessage, onclick, alertId) 32 | alert.classList.add('fade') 33 | 34 | alert.onclick = (e) => e.stopPropagation() 35 | backdrop.appendChild(alert) 36 | backdrop.onclick = (e) => closeAlert(e, alertId) 37 | 38 | setTimeout(() => toggle(`#${alertId}`, true), 50) 39 | } 40 | 41 | 42 | const createAlert = (message, buttonMessage, onclick, alertId) => { 43 | const sanitziedMessage = sanitize(message); 44 | const sanitziedButtonMessage = sanitize(buttonMessage); 45 | 46 | const container = document.createElement('div'); 47 | container.setAttribute('id', alertId) 48 | container.classList.add('alert--container') 49 | 50 | const template = ` 51 |
    52 | ${sanitziedMessage} 53 |
    54 |
    55 | 56 |
    57 | ` 58 | container.innerHTML = template 59 | 60 | const button = container.querySelector('#alert--button--id') 61 | const extendedOnclick = (e) => { 62 | closeAlert(e, alertId); 63 | onclick(); 64 | } 65 | button.onclick = extendedOnclick 66 | 67 | return container 68 | } 69 | 70 | const closeAlert = (e, alertId) => { 71 | e.preventDefault() 72 | e.stopPropagation() 73 | 74 | const alert = document.getElementById(alertId) 75 | alert.remove() 76 | 77 | toggle('.alert--backdrop', false, 'flex', true, 200) 78 | $('body').classList.remove('scroll__disabled') 79 | } 80 | 81 | -------------------------------------------------------------------------------- /src/libs/bignumbers.js: -------------------------------------------------------------------------------- 1 | !function(e){"use strict";var r,n=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,t=Math.ceil,i=Math.floor,o="[BigNumber Error] ",s=o+"Number primitive has more than 15 significant digits: ",f=1e14,u=14,l=9007199254740991,c=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],a=1e7,h=1e9;function g(e){var r=0|e;return e>0||e===r?r:r-1}function p(e){for(var r,n,t=1,i=e.length,o=e[0]+"";tl^n?1:-1;for(f=(u=i.length)<(l=o.length)?u:l,s=0;so[s]^n?1:-1;return u==l?0:u>l^n?1:-1}function d(e,r,n,t){if(en||e!==i(e))throw Error(o+(t||"Argument")+("number"==typeof e?en?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function m(e){var r=e.c.length-1;return g(e.e/u)==r&&e.c[r]%2!=0}function v(e,r){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(r<0?"e":"e+")+r}function N(e,r,n){var t,i;if(r<0){for(i=n+".";++r;i+=n);e=i+e}else if(++r>(t=e.length)){for(i=n,r-=t;--r;i+=n);e+=i}else rM?w.c=w.e=null:e.e=10;a/=10,c++);return void(c>M?w.c=w.e=null:(w.e=c,w.c=[e]))}p=String(e)}else{if(!n.test(p=String(e)))return b(w,p,h);w.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}(c=p.indexOf("."))>-1&&(p=p.replace(".","")),(a=p.search(/e/i))>0?(c<0&&(c=a),c+=+p.slice(a+1),p=p.substring(0,a)):c<0&&(c=p.length)}else{if(d(r,2,j.length,"Base"),10==r&&$)return X(w=new z(e),L+w.e+1,U);if(p=String(e),h="number"==typeof e){if(0*e!=0)return b(w,p,h,r);if(w.s=1/e<0?(p=p.slice(1),-1):1,z.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(s+e)}else w.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;for(t=j.slice(0,r),c=a=0,g=p.length;ac){c=g;continue}}else if(!f&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){f=!0,a=-1,c=0;continue}return b(w,String(e),h,r)}h=!1,(c=(p=y(p,r,10,w.s)).indexOf("."))>-1?p=p.replace(".",""):c=p.length}for(a=0;48===p.charCodeAt(a);a++);for(g=p.length;48===p.charCodeAt(--g););if(p=p.slice(a,++g)){if(g-=a,h&&z.DEBUG&&g>15&&(e>l||e!==i(e)))throw Error(s+w.s*e);if((c=c-a-1)>M)w.c=w.e=null;else if(c=T)?v(u,s):N(u,s,"0");else if(o=(e=X(new z(e),r,n)).e,f=(u=p(e.c)).length,1==t||2==t&&(r<=o||o<=I)){for(;ff){if(--r>0)for(u+=".";r--;u+="0");}else if((r+=o-f)>0)for(o+1==f&&(u+=".");r--;u+="0");return e.s<0&&i?"-"+u:u}function V(e,r){for(var n,t=1,i=new z(e[0]);t=10;i/=10,t++);return(n=t+n*u-1)>M?e.c=e.e=null:n=10;h/=10,s++);if((l=r-s)<0)l+=u,a=r,w=(g=d[p=0])/m[s-a-1]%10|0;else if((p=t((l+1)/u))>=d.length){if(!o)break e;for(;d.length<=p;d.push(0));g=w=0,s=1,a=(l%=u)-u+1}else{for(g=h=d[p],s=1;h>=10;h/=10,s++);w=(a=(l%=u)-u+s)<0?0:g/m[s-a-1]%10|0}if(o=o||r<0||null!=d[p+1]||(a<0?g:g%m[s-a-1]),o=n<4?(w||o)&&(0==n||n==(e.s<0?3:2)):w>5||5==w&&(4==n||o||6==n&&(l>0?a>0?g/m[s-a]:0:d[p-1])%10&1||n==(e.s<0?8:7)),r<1||!d[0])return d.length=0,o?(r-=e.e+1,d[0]=m[(u-r%u)%u],e.e=-r||0):d[0]=e.e=0,e;if(0==l?(d.length=p,h=1,p--):(d.length=p+1,h=m[u-l],d[p]=a>0?i(g/m[s-a]%m[a])*h:0),o)for(;;){if(0==p){for(l=1,a=d[0];a>=10;a/=10,l++);for(a=d[0]+=h,h=1;a>=10;a/=10,h++);l!=h&&(e.e++,d[0]==f&&(d[0]=1));break}if(d[p]+=h,d[p]!=f)break;d[p--]=0,h=1}for(l=d.length;0===d[--l];d.pop());}e.e>M?e.c=e.e=null:e.e=T?v(r,n):N(r,n,"0"),e.s<0?"-"+r:r)}return z.clone=e,z.ROUND_UP=0,z.ROUND_DOWN=1,z.ROUND_CEIL=2,z.ROUND_FLOOR=3,z.ROUND_HALF_UP=4,z.ROUND_HALF_DOWN=5,z.ROUND_HALF_EVEN=6,z.ROUND_HALF_CEIL=7,z.ROUND_HALF_FLOOR=8,z.EUCLID=9,z.config=z.set=function(e){var r,n;if(null!=e){if("object"!=typeof e)throw Error(o+"Object expected: "+e);if(e.hasOwnProperty(r="DECIMAL_PLACES")&&(d(n=e[r],0,h,r),L=n),e.hasOwnProperty(r="ROUNDING_MODE")&&(d(n=e[r],0,8,r),U=n),e.hasOwnProperty(r="EXPONENTIAL_AT")&&((n=e[r])&&n.pop?(d(n[0],-h,0,r),d(n[1],0,h,r),I=n[0],T=n[1]):(d(n,-h,h,r),I=-(T=n<0?-n:n))),e.hasOwnProperty(r="RANGE"))if((n=e[r])&&n.pop)d(n[0],-h,-1,r),d(n[1],1,h,r),C=n[0],M=n[1];else{if(d(n,-h,h,r),!n)throw Error(o+r+" cannot be zero: "+n);C=-(M=n<0?-n:n)}if(e.hasOwnProperty(r="CRYPTO")){if((n=e[r])!==!!n)throw Error(o+r+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw G=!n,Error(o+"crypto unavailable");G=n}else G=n}if(e.hasOwnProperty(r="MODULO_MODE")&&(d(n=e[r],0,9,r),k=n),e.hasOwnProperty(r="POW_PRECISION")&&(d(n=e[r],0,h,r),F=n),e.hasOwnProperty(r="FORMAT")){if("object"!=typeof(n=e[r]))throw Error(o+r+" not an object: "+n);q=n}if(e.hasOwnProperty(r="ALPHABET")){if("string"!=typeof(n=e[r])||/^.?$|[+\-.\s]|(.).*\1/.test(n))throw Error(o+r+" invalid: "+n);$="0123456789"==n.slice(0,10),j=n}}return{DECIMAL_PLACES:L,ROUNDING_MODE:U,EXPONENTIAL_AT:[I,T],RANGE:[C,M],CRYPTO:G,MODULO_MODE:k,POW_PRECISION:F,FORMAT:q,ALPHABET:j}},z.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!z.DEBUG)return!0;var r,n,t=e.c,s=e.e,l=e.s;e:if("[object Array]"=={}.toString.call(t)){if((1===l||-1===l)&&s>=-h&&s<=h&&s===i(s)){if(0===t[0]){if(0===s&&1===t.length)return!0;break e}if((r=(s+1)%u)<1&&(r+=u),String(t[0]).length==r){for(r=0;r=f||n!==i(n))break e;if(0!==n)return!0}}}else if(null===t&&null===s&&(null===l||1===l||-1===l))return!0;throw Error(o+"Invalid BigNumber: "+e)},z.maximum=z.max=function(){return V(arguments,P.lt)},z.minimum=z.min=function(){return V(arguments,P.gt)},z.random=(E=9007199254740992,A=Math.random()*E&2097151?function(){return i(Math.random()*E)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var r,n,s,f,l,a=0,g=[],p=new z(x);if(null==e?e=L:d(e,0,h),f=t(e/u),G)if(crypto.getRandomValues){for(r=crypto.getRandomValues(new Uint32Array(f*=2));a>>11))>=9e15?(n=crypto.getRandomValues(new Uint32Array(2)),r[a]=n[0],r[a+1]=n[1]):(g.push(l%1e14),a+=2);a=f/2}else{if(!crypto.randomBytes)throw G=!1,Error(o+"crypto unavailable");for(r=crypto.randomBytes(f*=7);a=9e15?crypto.randomBytes(7).copy(r,a):(g.push(l%1e14),a+=7);a=f/7}if(!G)for(;a=10;l/=10,a++);an-1&&(null==s[i+1]&&(s[i+1]=0),s[i+1]+=s[i]/n|0,s[i]%=n)}return s.reverse()}return function(n,t,i,o,s){var f,u,l,c,a,h,g,w,d=n.indexOf("."),m=L,v=U;for(d>=0&&(c=F,F=0,n=n.replace(".",""),h=(w=new z(t)).pow(n.length-d),F=c,w.c=r(N(p(h.c),h.e,"0"),10,i,e),w.e=w.c.length),l=c=(g=r(n,t,i,s?(f=j,e):(f=e,j))).length;0==g[--c];g.pop());if(!g[0])return f.charAt(0);if(d<0?--l:(h.c=g,h.e=l,h.s=o,g=(h=O(h,w,m,v,i)).c,a=h.r,l=h.e),d=g[u=l+m+1],c=i/2,a=a||u<0||null!=g[u+1],a=v<4?(null!=d||a)&&(0==v||v==(h.s<0?3:2)):d>c||d==c&&(4==v||a||6==v&&1&g[u-1]||v==(h.s<0?8:7)),u<1||!g[0])n=a?N(f.charAt(1),-m,f.charAt(0)):f.charAt(0);else{if(g.length=u,a)for(--i;++g[--u]>i;)g[u]=0,u||(++l,g=[1].concat(g));for(c=g.length;!g[--c];);for(d=0,n="";d<=c;n+=f.charAt(g[d++]));n=N(n,l,f.charAt(0))}return n}}(),O=function(){function e(e,r,n){var t,i,o,s,f=0,u=e.length,l=r%a,c=r/a|0;for(e=e.slice();u--;)f=((i=l*(o=e[u]%a)+(t=c*o+(s=e[u]/a|0)*l)%a*a+f)/n|0)+(t/a|0)+c*s,e[u]=i%n;return f&&(e=[f].concat(e)),e}function r(e,r,n,t){var i,o;if(n!=t)o=n>t?1:-1;else for(i=o=0;ir[i]?1:-1;break}return o}function n(e,r,n,t){for(var i=0;n--;)e[n]-=i,i=e[n]1;e.splice(0,1));}return function(t,o,s,l,c){var a,h,p,w,d,m,v,N,O,y,b,E,A,S,R,_,B,D=t.s==o.s?1:-1,P=t.c,x=o.c;if(!(P&&P[0]&&x&&x[0]))return new z(t.s&&o.s&&(P?!x||P[0]!=x[0]:x)?P&&0==P[0]||!x?0*D:D/0:NaN);for(O=(N=new z(D)).c=[],D=s+(h=t.e-o.e)+1,c||(c=f,h=g(t.e/u)-g(o.e/u),D=D/u|0),p=0;x[p]==(P[p]||0);p++);if(x[p]>(P[p]||0)&&h--,D<0)O.push(1),w=!0;else{for(S=P.length,_=x.length,p=0,D+=2,(d=i(c/(x[0]+1)))>1&&(x=e(x,d,c),P=e(P,d,c),_=x.length,S=P.length),A=_,b=(y=P.slice(0,_)).length;b<_;y[b++]=0);B=x.slice(),B=[0].concat(B),R=x[0],x[1]>=c/2&&R++;do{if(d=0,(a=r(x,y,_,b))<0){if(E=y[0],_!=b&&(E=E*c+(y[1]||0)),(d=i(E/R))>1)for(d>=c&&(d=c-1),v=(m=e(x,d,c)).length,b=y.length;1==r(m,y,v,b);)d--,n(m,_=10;D/=10,p++);X(N,s+(N.e=p+h*u-1)+1,l,w)}else N.e=h,N.r=+w;return N}}(),S=/^(-?)0([xbo])(?=\w[\w.]*$)/i,R=/^([^.]+)\.$/,_=/^\.([^.]+)$/,B=/^-?(Infinity|NaN)$/,D=/^\s*\+(?=[\w.])|^\s+|\s+$/g,b=function(e,r,n,t){var i,s=n?r:r.replace(D,"");if(B.test(s))e.s=isNaN(s)?null:s<0?-1:1;else{if(!n&&(s=s.replace(S,(function(e,r,n){return i="x"==(n=n.toLowerCase())?16:"b"==n?2:8,t&&t!=i?e:r})),t&&(i=t,s=s.replace(R,"$1").replace(_,"0.$1")),r!=s))return new z(s,i);if(z.DEBUG)throw Error(o+"Not a"+(t?" base "+t:"")+" number: "+r);e.s=null}e.c=e.e=null},P.absoluteValue=P.abs=function(){var e=new z(this);return e.s<0&&(e.s=1),e},P.comparedTo=function(e,r){return w(this,new z(e,r))},P.decimalPlaces=P.dp=function(e,r){var n,t,i,o=this;if(null!=e)return d(e,0,h),null==r?r=U:d(r,0,8),X(new z(o),e+o.e+1,r);if(!(n=o.c))return null;if(t=((i=n.length-1)-g(this.e/u))*u,i=n[i])for(;i%10==0;i/=10,t--);return t<0&&(t=0),t},P.dividedBy=P.div=function(e,r){return O(this,new z(e,r),L,U)},P.dividedToIntegerBy=P.idiv=function(e,r){return O(this,new z(e,r),0,1)},P.exponentiatedBy=P.pow=function(e,r){var n,s,f,l,c,a,h,g,p=this;if((e=new z(e)).c&&!e.isInteger())throw Error(o+"Exponent not an integer: "+Y(e));if(null!=r&&(r=new z(r)),c=e.e>14,!p.c||!p.c[0]||1==p.c[0]&&!p.e&&1==p.c.length||!e.c||!e.c[0])return g=new z(Math.pow(+Y(p),c?2-m(e):+Y(e))),r?g.mod(r):g;if(a=e.s<0,r){if(r.c?!r.c[0]:!r.s)return new z(NaN);(s=!a&&p.isInteger()&&r.isInteger())&&(p=p.mod(r))}else{if(e.e>9&&(p.e>0||p.e<-1||(0==p.e?p.c[0]>1||c&&p.c[1]>=24e7:p.c[0]<8e13||c&&p.c[0]<=9999975e7)))return l=p.s<0&&m(e)?-0:0,p.e>-1&&(l=1/l),new z(a?1/l:l);F&&(l=t(F/u+2))}for(c?(n=new z(.5),a&&(e.s=1),h=m(e)):h=(f=Math.abs(+Y(e)))%2,g=new z(x);;){if(h){if(!(g=g.times(p)).c)break;l?g.c.length>l&&(g.c.length=l):s&&(g=g.mod(r))}if(f){if(0===(f=i(f/2)))break;h=f%2}else if(X(e=e.times(n),e.e+1,1),e.e>14)h=m(e);else{if(0===(f=+Y(e)))break;h=f%2}p=p.times(p),l?p.c&&p.c.length>l&&(p.c.length=l):s&&(p=p.mod(r))}return s?g:(a&&(g=x.div(g)),r?g.mod(r):l?X(g,F,U,undefined):g)},P.integerValue=function(e){var r=new z(this);return null==e?e=U:d(e,0,8),X(r,r.e+1,e)},P.isEqualTo=P.eq=function(e,r){return 0===w(this,new z(e,r))},P.isFinite=function(){return!!this.c},P.isGreaterThan=P.gt=function(e,r){return w(this,new z(e,r))>0},P.isGreaterThanOrEqualTo=P.gte=function(e,r){return 1===(r=w(this,new z(e,r)))||0===r},P.isInteger=function(){return!!this.c&&g(this.e/u)>this.c.length-2},P.isLessThan=P.lt=function(e,r){return w(this,new z(e,r))<0},P.isLessThanOrEqualTo=P.lte=function(e,r){return-1===(r=w(this,new z(e,r)))||0===r},P.isNaN=function(){return!this.s},P.isNegative=function(){return this.s<0},P.isPositive=function(){return this.s>0},P.isZero=function(){return!!this.c&&0==this.c[0]},P.minus=function(e,r){var n,t,i,o,s=this,l=s.s;if(r=(e=new z(e,r)).s,!l||!r)return new z(NaN);if(l!=r)return e.s=-r,s.plus(e);var c=s.e/u,a=e.e/u,h=s.c,p=e.c;if(!c||!a){if(!h||!p)return h?(e.s=-r,e):new z(p?s:NaN);if(!h[0]||!p[0])return p[0]?(e.s=-r,e):new z(h[0]?s:3==U?-0:0)}if(c=g(c),a=g(a),h=h.slice(),l=c-a){for((o=l<0)?(l=-l,i=h):(a=c,i=p),i.reverse(),r=l;r--;i.push(0));i.reverse()}else for(t=(o=(l=h.length)<(r=p.length))?l:r,l=r=0;r0)for(;r--;h[n++]=0);for(r=f-1;t>l;){if(h[--t]=0;){for(n=0,d=E[i]%O,m=E[i]/O|0,o=i+(s=c);o>i;)n=((h=d*(h=b[--s]%O)+(l=m*h+(p=b[s]/O|0)*d)%O*O+v[o]+n)/N|0)+(l/O|0)+m*p,v[o--]=h%N;v[o]=n}return n?++t:v.splice(0,1),W(e,v,t)},P.negated=function(){var e=new z(this);return e.s=-e.s||null,e},P.plus=function(e,r){var n,t=this,i=t.s;if(r=(e=new z(e,r)).s,!i||!r)return new z(NaN);if(i!=r)return e.s=-r,t.minus(e);var o=t.e/u,s=e.e/u,l=t.c,c=e.c;if(!o||!s){if(!l||!c)return new z(i/0);if(!l[0]||!c[0])return c[0]?e:new z(l[0]?t:0*i)}if(o=g(o),s=g(s),l=l.slice(),i=o-s){for(i>0?(s=o,n=c):(i=-i,n=l),n.reverse();i--;n.push(0));n.reverse()}for((i=l.length)-(r=c.length)<0&&(n=c,c=l,l=n,r=i),i=0;r;)i=(l[--r]=l[r]+c[r]+i)/f|0,l[r]=f===l[r]?0:l[r]%f;return i&&(l=[i].concat(l),++s),W(e,l,s)},P.precision=P.sd=function(e,r){var n,t,i,o=this;if(null!=e&&e!==!!e)return d(e,1,h),null==r?r=U:d(r,0,8),X(new z(o),e,r);if(!(n=o.c))return null;if(t=(i=n.length-1)*u+1,i=n[i]){for(;i%10==0;i/=10,t--);for(i=n[0];i>=10;i/=10,t++);}return e&&o.e+1>t&&(t=o.e+1),t},P.shiftedBy=function(e){return d(e,-9007199254740991,l),this.times("1e"+e)},P.squareRoot=P.sqrt=function(){var e,r,n,t,i,o=this,s=o.c,f=o.s,u=o.e,l=L+4,c=new z("0.5");if(1!==f||!s||!s[0])return new z(!f||f<0&&(!s||s[0])?NaN:s?o:1/0);if(0==(f=Math.sqrt(+Y(o)))||f==1/0?(((r=p(s)).length+u)%2==0&&(r+="0"),f=Math.sqrt(+r),u=g((u+1)/2)-(u<0||u%2),n=new z(r=f==1/0?"5e"+u:(r=f.toExponential()).slice(0,r.indexOf("e")+1)+u)):n=new z(f+""),n.c[0])for((f=(u=n.e)+l)<3&&(f=0);;)if(i=n,n=c.times(i.plus(O(o,i,l,1))),p(i.c).slice(0,f)===(r=p(n.c)).slice(0,f)){if(n.e0&&w>0){for(s=w%u||u,a=p.substr(0,s);s0&&(a+=c+p.slice(s)),g&&(a="-"+a)}t=h?a+(n.decimalSeparator||"")+((l=+n.fractionGroupSize)?h.replace(new RegExp("\\d{"+l+"}\\B","g"),"$&"+(n.fractionGroupSeparator||"")):h):a}return(n.prefix||"")+t+(n.suffix||"")},P.toFraction=function(e){var r,n,t,i,s,f,l,a,h,g,w,d,m=this,v=m.c;if(null!=e&&(!(l=new z(e)).isInteger()&&(l.c||1!==l.s)||l.lt(x)))throw Error(o+"Argument "+(l.isInteger()?"out of range: ":"not an integer: ")+Y(l));if(!v)return new z(m);for(r=new z(x),h=n=new z(x),t=a=new z(x),d=p(v),s=r.e=d.length-m.e-1,r.c[0]=c[(f=s%u)<0?u+f:f],e=!e||l.comparedTo(r)>0?s>0?r:h:l,f=M,M=1/0,l=new z(d),a.c[0]=0;g=O(l,r,0,1),1!=(i=n.plus(g.times(t))).comparedTo(e);)n=t,t=i,h=a.plus(g.times(i=h)),a=i,r=l.minus(g.times(i=r)),l=i;return i=O(e.minus(n),t,0,1),a=a.plus(i.times(h)),n=n.plus(i.times(t)),a.s=h.s=m.s,w=O(h,t,s*=2,U).minus(m).abs().comparedTo(O(a,n,s,U).minus(m).abs())<1?[h,t]:[a,n],M=f,w},P.toNumber=function(){return+Y(this)},P.toPrecision=function(e,r){return null!=e&&d(e,1,h),H(this,e,r,2)},P.toString=function(e){var r,n=this,t=n.s,i=n.e;return null===i?t?(r="Infinity",t<0&&(r="-"+r)):r="NaN":(null==e?r=i<=I||i>=T?v(p(n.c),i):N(p(n.c),i,"0"):10===e&&$?r=N(p((n=X(new z(n),L+i+1,U)).c),n.e,"0"):(d(e,2,j.length,"Base"),r=y(N(p(n.c),i,"0"),10,e,t,!0)),t<0&&n.c[0]&&(r="-"+r)),r},P.valueOf=P.toJSON=function(){return Y(this)},P._isBigNumber=!0,null!=r&&z.set(r),z}(),r.default=r.BigNumber=r,"function"==typeof define&&define.amd?define((function(){return r})):"undefined"!=typeof module&&module.exports?module.exports=r:(e||(e="undefined"!=typeof self&&self?self:window),e.BigNumber=r)}(this); 2 | -------------------------------------------------------------------------------- /src/libs/flip-clock.js: -------------------------------------------------------------------------------- 1 | renderTimer = function ($, start) { 2 | $(document).ready(function () { 3 | const container = $('.flip-clock-container') 4 | container.addClass('show') 5 | container.each(function () { 6 | var result = prepareFlipItems($(this)) 7 | var flipElements = result.flipElements 8 | var timestamp = result.timestamp 9 | if (start) { 10 | setState(flipElements, timestamp, $(this)) 11 | } 12 | }) 13 | }) 14 | 15 | function completeUpdateState(flipElements, values, flipContainer) { 16 | return setTimeout(function () { 17 | for (var key in flipElements) 18 | for (var i = 0; i < flipElements[key].digits.length; i++) 19 | if (flipElements[key].digits[i].flipping) { 20 | flipElements[key].digits[i].currentValue = 21 | flipElements[key].digits[i].nextValue 22 | const currentValue = flipElements[key].digits[i].currentValue 23 | var preparedCurrentValue = 0 24 | if (key === 'days') { 25 | const postfix = getDaysPostfix(currentValue) 26 | preparedCurrentValue = currentValue + postfix 27 | } else { 28 | preparedCurrentValue = currentValue 29 | } 30 | flipElements[key].digits[i].element 31 | .children('.flip-digit-current') 32 | .attr('data-digit', preparedCurrentValue) 33 | var number = 0 34 | 35 | if (key === 'days') { 36 | number = flipElements[key].digits[0].nextValue 37 | } else { 38 | number = 39 | flipElements[key].digits[1].nextValue * 10 + 40 | flipElements[key].digits[0].nextValue 41 | } 42 | 43 | var nextValue = computeNextValue(number, key) 44 | for (var j = i; j < flipElements[key].digits.length; j++) { 45 | if (flipElements[key].digits[j].nextValue != nextValue[j]) { 46 | flipElements[key].digits[j].nextValue = nextValue[j] 47 | const unpreparedValue = flipElements[key].digits[j].nextValue 48 | var preparedNextValue = 0 49 | if (key === 'days') { 50 | const postfix = getDaysPostfix(unpreparedValue) 51 | preparedNextValue = unpreparedValue + postfix 52 | } else { 53 | preparedNextValue = unpreparedValue 54 | } 55 | flipElements[key].digits[j].element 56 | .children('.flip-digit-next') 57 | .attr('data-digit', preparedNextValue) 58 | } 59 | } 60 | flipElements[key].digits[i].flipping = false 61 | flipElements[key].digits[i].element.removeClass('flipping') 62 | } 63 | flipContainer.trigger('afterFlipping', values) 64 | }, 900) 65 | } 66 | 67 | function updateState(flipElements, timestamp, flipContainer) { 68 | var values = {} 69 | var digitValues = {} 70 | values.seconds = timestamp % 60 71 | values.minutes = Math.floor((timestamp / 60) % 60) 72 | values.hours = Math.floor((timestamp / 60 / 60) % 24) 73 | values.days = Math.floor(timestamp / 60 / 60 / 24) 74 | digitValues.seconds = numberToDigits(values.seconds) 75 | digitValues.minutes = numberToDigits(values.minutes) 76 | digitValues.hours = numberToDigits(values.hours) 77 | digitValues.days = numberToDigits(values.days, 'days') 78 | for (var key in flipElements) 79 | for (var i = 0; i < digitValues[key].digits.length; i++) 80 | if ( 81 | digitValues[key].digits[i] != flipElements[key].digits[i].currentValue 82 | ) { 83 | flipElements[key].digits[i].flipping = true 84 | flipElements[key].digits[i].element.addClass('flipping') 85 | } 86 | flipContainer.trigger('beforeFlipping', values) 87 | return completeUpdateState(flipElements, values, flipContainer) 88 | } 89 | 90 | function setState(flipElements, timestamp, flipContainer) { 91 | var countDown = setInterval(function () { 92 | if (!$('.flip-clock-container').children('li').length) { 93 | flipContainer.trigger('done') 94 | return clearInterval(countDown) 95 | } 96 | if (!timestamp || timestamp < 0) { 97 | flipContainer.trigger('done') 98 | return clearInterval(countDown) 99 | } 100 | updateState(flipElements, --timestamp, flipContainer) 101 | }, 1000) 102 | return 103 | } 104 | 105 | function prepareFlipItems(flipContainer) { 106 | var flipElements = {} 107 | var timestamp = 0 108 | var itemCount = 0 109 | flipContainer.children().each(function () { 110 | var element = $(this) 111 | var number = parseInt(element.text()) 112 | var getFlipItemChildObj = prepareFlipItemChild(element, number) 113 | 114 | if (element.hasClass('flip-item-seconds')) { 115 | timestamp += number 116 | flipElements.seconds = getFlipItemChildObj('seconds') 117 | } else if (element.hasClass('flip-item-minutes')) { 118 | timestamp += number * 60 119 | flipElements.minutes = getFlipItemChildObj('minutes') 120 | } else if (element.hasClass('flip-item-hours')) { 121 | timestamp += number * 60 * 60 122 | flipElements.hours = getFlipItemChildObj('hours') 123 | } else if (element.hasClass('flip-item-days')) { 124 | timestamp += number * 24 * 60 * 60 125 | flipElements.days = getFlipItemChildObj('days') 126 | } 127 | }) 128 | flipContainer[0].style.setProperty('--item-count', itemCount) 129 | return { 130 | flipElements: flipElements, 131 | timestamp: timestamp, 132 | } 133 | function prepareFlipItemChild(element, number) { 134 | return function (flipType) { 135 | var digitsComponent = new DigitsComponent(number, flipType) 136 | element.html(digitsComponent.render()) 137 | for (var i = 0; i < digitsComponent.digits.length; i++) { 138 | $.extend(digitsComponent.digits[i], { 139 | element: $(element.children()[i]), 140 | flipping: false, 141 | }) 142 | } 143 | itemCount++ 144 | return { 145 | parentElement: element, 146 | digits: digitsComponent.digits, 147 | } 148 | } 149 | } 150 | } 151 | 152 | function DigitsComponent(number, flipType) { 153 | (function constructor(number, flipType) { 154 | $.extend(this, setDigitValues(number, flipType)) 155 | }.call(this, number, flipType)) 156 | 157 | if (flipType === 'days') { 158 | const currentPostfix = getDaysPostfix(this.digits[0].currentValue) 159 | const nextPostfix = getDaysPostfix(this.digits[0].nextValue) 160 | const currentString = this.digits[0].currentValue + currentPostfix 161 | const nextString = this.digits[0].nextValue + nextPostfix 162 | this.render = function () { 163 | return document.createRange().createContextualFragment(` 164 |
    165 | 166 | 167 |
    168 | `) 169 | } 170 | return 171 | } 172 | 173 | this.render = function () { 174 | return document.createRange().createContextualFragment(` 175 |
    176 | 177 | 178 |
    179 |
    180 | 181 | 182 |
    183 | `) 184 | } 185 | } 186 | 187 | function setDigitValues(number, flipType) { 188 | let nextValue = computeNextValue(number, flipType); 189 | 190 | if (flipType === 'days') { 191 | return { 192 | digits: [ 193 | { 194 | currentValue: number, 195 | nextValue: nextValue[0], 196 | }, 197 | ], 198 | } 199 | } 200 | 201 | return { 202 | digits: [ 203 | { 204 | currentValue: number % 10, 205 | nextValue: nextValue[0], 206 | }, 207 | { 208 | currentValue: Math.floor(number / 10), 209 | nextValue: nextValue[1], 210 | }, 211 | ], 212 | } 213 | } 214 | 215 | function computeNextValue(number, flipType) { 216 | let nextNumber = number - 1; 217 | 218 | if (flipType === 'days') { 219 | return [nextNumber] 220 | } 221 | 222 | if (!number) nextNumber = flipType === 'hours' ? 23 : 59 223 | return [nextNumber % 10, Math.floor(nextNumber / 10)] 224 | } 225 | 226 | function numberToDigits(number, flipType = '') { 227 | if (flipType === 'days') { 228 | return { 229 | digits: [number], 230 | } 231 | } 232 | 233 | return { 234 | digits: [number % 10, Math.floor(number / 10)], 235 | } 236 | } 237 | 238 | function getDaysPostfix(days) { 239 | const lang = store.locale 240 | 241 | if (lang === 'ru') { 242 | let forms = [' день', ' дня', ' дней'] 243 | let n1 = Math.abs(days) % 100 244 | let n2 = n1 % 10 245 | 246 | if (n1 > 10 && n1 < 20) return forms[2] 247 | if (n2 > 1 && n2 < 5) return forms[1] 248 | if (n2 === 1) return forms[0] 249 | 250 | return forms[2] 251 | } else { 252 | if (days === 1) return ' day' 253 | 254 | return ' days' 255 | } 256 | } 257 | } 258 | -------------------------------------------------------------------------------- /src/libs/preloadImages.js: -------------------------------------------------------------------------------- 1 | function preloadImages(images) { 2 | if (document.images) { 3 | let i = 0; 4 | let imageArray = images; 5 | let imageObj = new Image(); 6 | 7 | for(i; i <= imageArray.length-1; i++) { 8 | imageObj.src=imageArray[i]; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/lottie.js: -------------------------------------------------------------------------------- 1 | ;(function () { 2 | let sunLottie = document.getElementById('sunLottie') 3 | let moonLottie = document.getElementById('moonLottie') 4 | 5 | let themeButton = document.getElementById('lottie-button') 6 | 7 | if (themeController.getTheme() === 'light') { 8 | sunLottie.seek(31) 9 | } else { 10 | moonLottie.seek(31) 11 | } 12 | 13 | themeButton.addEventListener('click', function () { 14 | if (themeController.getTheme() === 'light') { 15 | sunLottie.setDirection(1) 16 | sunLottie.play() 17 | moonLottie.stop() 18 | return 19 | } 20 | 21 | moonLottie.setDirection(1) 22 | moonLottie.play() 23 | sunLottie.stop() 24 | }) 25 | })() -------------------------------------------------------------------------------- /src/mobile-menu.js: -------------------------------------------------------------------------------- 1 | ;(function () { 2 | const mobileMenu = { 3 | isOpened: false, 4 | element: document.getElementById('mobile-menu'), 5 | } 6 | 7 | function openMenu() { 8 | mobileMenu.element.classList.add('mobile-menu-opened') 9 | mobileMenu.element.classList.remove('mobile-menu-closed') 10 | mobileMenu.isOpened = true 11 | document.body.style.overflow = 'hidden' 12 | toggleThemeSwitcher() 13 | } 14 | 15 | function toggleThemeSwitcher() { 16 | const themeSwitcher = document.getElementById('mobile-theme-switch') 17 | const currentTheme = themeController.getTheme() 18 | if (currentTheme === 'light') { 19 | themeSwitcher.checked = false 20 | return 21 | } 22 | 23 | themeSwitcher.checked = true 24 | } 25 | 26 | closeMenu = function () { 27 | mobileMenu.element.classList.remove('mobile-menu-opened') 28 | mobileMenu.element.classList.add('mobile-menu-closed') 29 | mobileMenu.isOpened = false 30 | document.body.style.overflow = '' 31 | toggleThemeSwitcher() 32 | } 33 | 34 | toggleMobileMenu = function () { 35 | if (window.location.pathname !== '/about.html') { 36 | scrollToTop() 37 | } 38 | 39 | if (mobileMenu.isOpened) { 40 | closeMenu() 41 | return 42 | } 43 | 44 | openMenu() 45 | } 46 | 47 | window.addEventListener('resize', function () { 48 | if (window.innerWidth <= 750) { 49 | closeMenu() 50 | } 51 | }) 52 | })() 53 | -------------------------------------------------------------------------------- /src/state.js: -------------------------------------------------------------------------------- 1 | class State { 2 | constructor() { 3 | this.actions = {} 4 | this.subscriptions = [] 5 | this.history = [] 6 | } 7 | 8 | subscribe = function (context, action, callback) { 9 | this.subscriptions[action] = this.subscriptions[action] || [] 10 | this.subscriptions[action].push(function (data) { 11 | callback.apply(context, data) 12 | }) 13 | } 14 | 15 | dispatch = function (action, data) { 16 | if (!Array.isArray(data)) { 17 | data = [data] 18 | } else if (Array.isArray(data)) { 19 | data = data || [] 20 | } 21 | 22 | this.history.push([action, data]) 23 | 24 | if ('function' === typeof this[action]) { 25 | this[action].apply(this, data) 26 | } 27 | 28 | data.push(action) 29 | data.push(this) 30 | 31 | this.subscriptions[action] = this.subscriptions[action] || [] 32 | this.subscriptions[action].forEach(function (subscription) { 33 | subscription(data) 34 | }) 35 | } 36 | } 37 | 38 | const store = new State() 39 | 40 | store.domain = null 41 | store.domainMinBid = null 42 | store.activeScreen = null 43 | store.localeDict = null 44 | store.locale = null 45 | store.domainStatus = null 46 | store.isTestnet = window.location.href.indexOf('testnet=true') > -1 47 | store.wallet = null 48 | store.walletsList = null 49 | 50 | store.setStatus = function (status) { 51 | this.domainStatus = status 52 | } 53 | 54 | store.setDomain = function (name) { 55 | this.domain = name 56 | } 57 | 58 | store.setDomainMinBid = function (minBid) { 59 | this.domainMinBid = minBid 60 | } 61 | 62 | store.setLocale = function (locale) { 63 | this.locale = locale 64 | } 65 | 66 | store.setLocaleDict = function (dict) { 67 | this.localeDict = dict 68 | } 69 | 70 | store.setTheme = function (theme) { 71 | this.theme = theme 72 | } 73 | 74 | -------------------------------------------------------------------------------- /src/views/myDomainsView.js: -------------------------------------------------------------------------------- 1 | class MyDomainsView { 2 | constructor() { } 3 | 4 | renderLoadingView() { 5 | showMyDomainsContainer(); 6 | showTableLoading(); 7 | showMyDomainsTitle(); 8 | resetViewAlignment(); 9 | } 10 | 11 | renderEmptyView() { 12 | hideTableLoading(); 13 | hideMyDomainsTitle(); 14 | 15 | showNoDomainsContainer(); 16 | centerView(); 17 | } 18 | 19 | resetTable() { 20 | document.querySelectorAll('.my-domains-table-row').forEach(node => node.remove()); 21 | } 22 | 23 | rednder(moreDomainsToDisplay, isLoadMore) { 24 | if (moreDomainsToDisplay.length) { 25 | firstRender(moreDomainsToDisplay); 26 | 27 | if (isLoadMore) { 28 | showLoadMoreButton(); 29 | } 30 | return; 31 | } 32 | 33 | this.renderEmptyView(); 34 | } 35 | } 36 | 37 | 38 | // --- UTILITY REDNER METHODS --- 39 | const assembleRowData = (item) => { 40 | const domainName = item.name; 41 | const salePricePromise = getSalePrice(domainName); // new Promise((r) => setTimeout(() => r(1234567), 5000)) 42 | const expiryDate = new Date(item.expiring_at * 1000); 43 | 44 | return { domainName, salePricePromise, expiryDate }; 45 | } 46 | 47 | const buildDomainCell = (cell, domain) => { 48 | cell.classList.add('my-domains-table-cell-first'); 49 | 50 | const domainCellDiv = document.createElement('div'); 51 | domainCellDiv.classList.add('my-domains-table-domain-cell'); 52 | domainCellDiv.innerText = domain; 53 | cell.appendChild(domainCellDiv); 54 | } 55 | 56 | const loadingPricePlaceholder = isMobile() ? 123 : 12345; 57 | const buildSalePriceCell = (cell, salePricePromise) => { 58 | cell.classList.add('my-domains-table-cell'); 59 | 60 | // --- first row in the cell 61 | const priceCellDiv = document.createElement('div'); 62 | priceCellDiv.classList.add('my-domains-cell-price-container'); 63 | 64 | const spanPriceInTON = document.createElement('span'); 65 | spanPriceInTON.classList.add('my-domains-cell-price-loading'); 66 | spanPriceInTON.innerHTML = ' ' + formatNumber(loadingPricePlaceholder, 2); 67 | priceCellDiv.appendChild(spanPriceInTON); 68 | 69 | const tonLogoSpan = document.createElement('span'); 70 | tonLogoSpan.classList.add('my-domains-cell-price-ton-logo'); 71 | priceCellDiv.insertBefore(tonLogoSpan, spanPriceInTON); 72 | // --- 73 | 74 | cell.appendChild(priceCellDiv); 75 | 76 | salePricePromise.then((priceInTON) => { 77 | spanPriceInTON.classList.remove('my-domains-cell-price-loading'); 78 | spanPriceInTON.classList.add('my-domains-cell-price'); 79 | spanPriceInTON.innerHTML = ' ' + formatNumber(priceInTON, 2); 80 | }); 81 | } 82 | 83 | const buildExpiredDate = (node) => { 84 | const expiredDateSpan = document.createElement('span'); 85 | expiredDateSpan.classList.add('my-domains-cell-expiried-date'); 86 | expiredDateSpan.innerHTML = store.localeDict.my_domains_domain_expired; 87 | node.appendChild(expiredDateSpan); 88 | } 89 | 90 | const buildDesktopExpiryDateTitleSpan = (node, { days, hours, minutes }) => { 91 | const desktopExpiryDateSpan = document.createElement('span'); 92 | desktopExpiryDateSpan.classList.add('my-domains-cell-expiry-title-desktop'); 93 | 94 | let dayStr = ''; 95 | if (days === 1) { 96 | dayStr = `1 ${store.localeDict.day} `; 97 | } 98 | if(days > 1){ 99 | dayStr = `${days} ${store.localeDict.days} `; 100 | } 101 | 102 | desktopExpiryDateSpan.innerHTML = `${dayStr} ${hours} ${store.localeDict.hours} ${minutes} ${store.localeDict.min}`; 103 | node.appendChild(desktopExpiryDateSpan); 104 | } 105 | 106 | const buildMobileExpiryDateTitleSpan = (node, { days }) => { 107 | const mobileExpiryDateSpan = document.createElement('span'); 108 | mobileExpiryDateSpan.classList.add('my-domains-cell-expiry-title-mobile'); 109 | 110 | let dayStr = ''; 111 | if (days === 1) { 112 | dayStr = `1 ${store.localeDict.day} `; 113 | } 114 | if(days > 1){ 115 | dayStr = `${days} ${store.localeDict.days} `; 116 | } 117 | 118 | mobileExpiryDateSpan.innerHTML = days === 0 ? store.localeDict.today : dayStr; 119 | node.appendChild(mobileExpiryDateSpan); 120 | } 121 | 122 | const buildDesktopExpiryDateCaptionSpan = (node, expiryDate) => { 123 | const desktopExpiryDateCaptionSpan = document.createElement('span'); 124 | desktopExpiryDateCaptionSpan.classList.add('my-domains-cell-expiry-caption-desktop'); 125 | 126 | desktopExpiryDateCaptionSpan.innerText = formatDate(expiryDate); 127 | node.appendChild(desktopExpiryDateCaptionSpan); 128 | } 129 | 130 | const buildMobileExpiryDateCaptionSpan = (node, expiryDate) => { 131 | const mobileExpiryDateCaptionSpan = document.createElement('span'); 132 | mobileExpiryDateCaptionSpan.classList.add('my-domains-cell-expiry-caption-mobile'); 133 | 134 | mobileExpiryDateCaptionSpan.innerText = formatDateShort(expiryDate); 135 | node.appendChild(mobileExpiryDateCaptionSpan); 136 | } 137 | 138 | const buildExpiryDate = (cell, expiryDate) => { 139 | cell.classList.add('my-domains-table-cell'); 140 | 141 | const expiryDateCellDiv = document.createElement('div'); 142 | expiryDateCellDiv.classList.add('my-domains-cell-container'); 143 | 144 | const isDomainExpired = expiryDate.getTime() <= new Date().getTime(); 145 | 146 | if (isDomainExpired) { 147 | buildExpiredDate(expiryDateCellDiv); 148 | } else { 149 | const datetime = getDifferenceBetweenDates(expiryDate, new Date()); 150 | 151 | buildDesktopExpiryDateTitleSpan(expiryDateCellDiv, datetime); 152 | buildMobileExpiryDateTitleSpan(expiryDateCellDiv, datetime); 153 | 154 | buildDesktopExpiryDateCaptionSpan(expiryDateCellDiv, expiryDate); 155 | buildMobileExpiryDateCaptionSpan(expiryDateCellDiv, expiryDate); 156 | } 157 | 158 | cell.appendChild(expiryDateCellDiv); 159 | } 160 | 161 | const buildArrowRight = (cell) => { 162 | cell.classList.add('my-domains-table-cell-last'); 163 | 164 | const rightChevronLottie = document.createElement('span'); 165 | rightChevronLottie.classList.add('my-domains-right-arrow-icon'); 166 | cell.appendChild(rightChevronLottie); 167 | } 168 | 169 | function renderRow(rowData) { 170 | const { domainName, salePricePromise, expiryDate } = rowData; 171 | const row = $('.my-domains-table').insertRow(-1); 172 | row.classList.add('my-domains-table-row'); 173 | 174 | row.onclick = function () { 175 | const domainNameWithoutDotTon = domainName.slice(0, -4); 176 | setDomainToBrowserHistory(domainNameWithoutDotTon); 177 | setDomain(domainNameWithoutDotTon).then(() => { 178 | analyticService.sendEvent({ type: 'view_domain_info' }) 179 | }); 180 | }; 181 | 182 | buildDomainCell(row.insertCell(0), domainName); 183 | buildSalePriceCell(row.insertCell(1), salePricePromise); 184 | buildExpiryDate(row.insertCell(2), expiryDate); 185 | buildArrowRight(row.insertCell(3)); 186 | } 187 | 188 | function renderMoreDomains(domains) { 189 | for (const domain of domains) { 190 | const row = assembleRowData(domain) 191 | renderRow(row); 192 | } 193 | } 194 | 195 | function firstRender(domains) { 196 | renderMoreDomains(domains); 197 | hideTableLoading(); 198 | } 199 | 200 | // ----------------------- 201 | 202 | // --- BUTTONS --- 203 | // Navigate to starting page 204 | $('#noDomainsStartNowButton').addEventListener('click', () => { 205 | clear(); 206 | window.history.pushState('', 'TON DNS ', '#'); 207 | setScreen('startScreen'); 208 | }); 209 | 210 | // Load more button click 211 | $('#myDomainsLoadMoreButton').addEventListener('click', async () => { 212 | hideLoadMoreButtonText(); 213 | showLoadMoreButtonSpinner(); 214 | 215 | const { moreDomainsToDisplay, isLoadMore } = myDomainsController.getNextDomainsToDisplay(); 216 | renderMoreDomains(moreDomainsToDisplay); 217 | hideLoadMoreButtonSpinner(); 218 | showLoadMoreButtonText(); 219 | 220 | if (!isLoadMore) { 221 | hideLoadMoreButton(); 222 | } 223 | }); 224 | 225 | // --- Navigation button click 226 | function navigateToMyDomainsView () { 227 | clear(); 228 | window.history.pushState({}, 'TON DNS ', '#/my-domains'); 229 | setScreen('myDomainsView'); 230 | } 231 | 232 | $('#myDomainsButton').addEventListener('click', navigateToMyDomainsView); 233 | $('#myDomainsMobileButton').addEventListener('click', () => { 234 | navigateToMyDomainsView(); 235 | toggleMobileMenu(); 236 | }); 237 | // --------------- 238 | 239 | // --- HIDE/SHOW TOGGLE METHODS --- 240 | function hideLoadMoreButton() { 241 | $('#myDomainsLoadMoreButton').style.display = 'none'; 242 | } 243 | 244 | function showLoadMoreButton() { 245 | $('#myDomainsLoadMoreButton').style.display = 'flex'; 246 | } 247 | 248 | function hideLoadMoreButtonText() { 249 | $('#myDomainsLoadMoreButtonText').style.display = 'none'; 250 | } 251 | 252 | function showLoadMoreButtonText() { 253 | $('#myDomainsLoadMoreButtonText').style.display = 'block'; 254 | } 255 | 256 | function hideLoadMoreButtonSpinner() { 257 | $('#myDomainsLoadMoreButtonLoader').style.display = 'none'; 258 | } 259 | 260 | function showLoadMoreButtonSpinner() { 261 | $('#myDomainsLoadMoreButtonLoader').style.display = 'block'; 262 | } 263 | 264 | function showMyDomainsContainer() { // and hide noDomainsContainer 265 | $('#myDomainsContainer').style.display = 'flex'; 266 | $('#noDomainsContainer').style.display = 'none'; 267 | } 268 | 269 | function showNoDomainsContainer() { // and hide myDomainsContainer 270 | $('#myDomainsContainer').style.display = 'none'; 271 | $('#noDomainsContainer').style.display = 'flex'; 272 | } 273 | 274 | function showTableLoading() { 275 | $('.my-domains-title').classList.add('my-domains-title-loading'); 276 | $('.my-domains-table-loading').style.display = 'flex'; 277 | hideMyDomainsTable(); 278 | } 279 | 280 | function hideTableLoading() { 281 | $('.my-domains-title').classList.remove('my-domains-title-loading'); 282 | $('.my-domains-table-loading').style.display = 'none'; 283 | showMyDomainsTable(); 284 | } 285 | 286 | function showMyDomainsTable() { 287 | $('.my-domains-table').removeAttribute('style'); 288 | } 289 | 290 | function hideMyDomainsTable() { 291 | $('.my-domains-table').style.display = 'none'; 292 | } 293 | 294 | function showMyDomainsTitle() { 295 | $('.my-domains-title').removeAttribute('style'); 296 | } 297 | 298 | function hideMyDomainsTitle() { 299 | $('.my-domains-title').style.display = 'none'; 300 | } 301 | 302 | function centerView() { 303 | $('#myDomainsView').style.justifyContent = 'center'; 304 | } 305 | 306 | function resetViewAlignment() { 307 | $('#myDomainsView').style.justifyContent = 'flex-start'; 308 | } 309 | 310 | // -------------------------------- 311 | -------------------------------------------------------------------------------- /tonconnect-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "url": "https://dns.ton.org", 3 | "name": "TON Domains", 4 | "iconUrl": "https://dns.ton.org/assets/ton-connect/dapp_icon.png", 5 | "termsOfUseUrl": "https://ton-connect.github.io/demo-dapp/terms-of-use.txt", 6 | "privacyPolicyUrl": "https://ton-connect.github.io/demo-dapp/privacy-policy.txt" 7 | } 8 | --------------------------------------------------------------------------------