├── img ├── header.jpg ├── screenshot.png ├── tweet-pic-iwd.jpg ├── tweet-pic-pain.jpg ├── link.svg ├── reply.svg ├── like.svg ├── more.svg ├── discord-search.svg ├── location.svg ├── calendar.svg ├── discord-icon-black.svg ├── discord-icon-blue.svg ├── discord-icon-green.svg ├── discord-icon-orange.svg ├── discord-icon-pink.svg ├── discord-icon-red.svg ├── discord-icon.svg ├── retweet.svg ├── discord-mentions.svg ├── discord-icon-with-status.svg ├── discord-icon-with-status-bordered.svg ├── verify.svg ├── birthday.svg ├── discord-logo.svg ├── discord-friends.svg └── discord-badges.svg ├── LICENSE ├── js └── main.js ├── README.md ├── css └── main.css └── index.html /img/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anniedotexe/twitcord/HEAD/img/header.jpg -------------------------------------------------------------------------------- /img/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anniedotexe/twitcord/HEAD/img/screenshot.png -------------------------------------------------------------------------------- /img/tweet-pic-iwd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anniedotexe/twitcord/HEAD/img/tweet-pic-iwd.jpg -------------------------------------------------------------------------------- /img/tweet-pic-pain.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anniedotexe/twitcord/HEAD/img/tweet-pic-pain.jpg -------------------------------------------------------------------------------- /img/link.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /img/reply.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /img/like.svg: -------------------------------------------------------------------------------- 1 | 2 | 11 | -------------------------------------------------------------------------------- /img/more.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 22 | -------------------------------------------------------------------------------- /img/discord-search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | -------------------------------------------------------------------------------- /img/location.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /img/calendar.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /img/discord-icon-black.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /img/discord-icon-blue.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /img/discord-icon-green.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /img/discord-icon-orange.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /img/discord-icon-pink.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /img/discord-icon-red.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /img/discord-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Annie Wu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /img/retweet.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /img/discord-mentions.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /js/main.js: -------------------------------------------------------------------------------- 1 | function changeTab(tabID, tabName) { 2 | var i, tabContent, tabButton; 3 | 4 | // Hide all tab content 5 | tabContent = document.getElementsByClassName("tab-content"); 6 | for (i = 0; i < tabContent.length; i++) { 7 | tabContent[i].style.display = "none"; 8 | } 9 | 10 | // Get all tab buttons and remove "active" 11 | tabButton = document.getElementsByClassName("tab-button"); 12 | for (i = 0; i < tabButton.length; i++) { 13 | tabButton[i].classList.remove("active"); 14 | } 15 | 16 | // Show current tab, add "active" to the button that opened the tab 17 | document.getElementById(tabName).style.display = "block"; 18 | document.getElementById(tabID).classList.add("active"); 19 | } 20 | 21 | function clickReaction(reactID) { 22 | document.getElementById(reactID).classList.toggle("clicked"); 23 | } 24 | 25 | function clickFollow(buttonID) { 26 | document.getElementById(buttonID).innerHTML = "Unfollow"; 27 | if (document.getElementById(buttonID).classList.contains("clicked")) { 28 | document.getElementById(buttonID).innerHTML = "Follow"; 29 | } 30 | else { 31 | document.getElementById(buttonID).innerHTML = "Unfollow"; 32 | } 33 | document.getElementById(buttonID).classList.toggle("clicked") 34 | } -------------------------------------------------------------------------------- /img/discord-icon-with-status.svg: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /img/discord-icon-with-status-bordered.svg: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /img/verify.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /img/birthday.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /img/discord-logo.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Twitcord 2 | 3 | #### An interactive mobile UI concept of if Twitter was owned by Discord 4 | 5 | **LIVE DEMO** - [twitcord.anniew.xyz](https://twitcord.anniew.xyz/) OR [twitcord.netlify.app](https://twitcord.netlify.app) 6 | 7 | Users can click on reactions, follow button, and tweets navigation bar. 8 | 9 | _Inspired by [this reddit post](https://www.reddit.com/r/discordapp/comments/lxjoe1/if_twitter_were_owned_by_discord/)._ 10 | 11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
28 |
29 |
70 |
--------------------------------------------------------------------------------
/img/discord-friends.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/css/main.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | font-size: 100%;
6 | font-family: 'Open Sans', sans-serif;
7 | color: #FFFFFF;
8 | }
9 |
10 | body {
11 | font-size: 14px;
12 | }
13 |
14 | a {
15 | color: #5cb2e4;
16 | text-decoration: none;
17 | }
18 |
19 | .page {
20 | width: 100%;
21 | position: absolute;
22 | margin: 0 auto;
23 | }
24 |
25 | .profile-top-container {
26 | max-width: 600px;
27 | background-color: #23272A;
28 | }
29 |
30 | .header-photo img {
31 | max-width: 100%;
32 | height: auto;
33 | }
34 |
35 | .profile {
36 | margin: 0;
37 | padding: 20px;
38 | border-bottom: 2px solid #2C2F33;
39 | }
40 |
41 | .prof-pic-and-buttons-row {
42 | display: flex;
43 | flex-wrap: wrap;
44 | flex-direction: row;
45 | justify-content: space-between;
46 | margin-bottom: 5px;
47 | }
48 |
49 | .prof-pic {
50 | overflow: hidden;
51 | width: 70px;
52 | height: 70px;
53 | margin: -57px 0;
54 | }
55 |
56 | .prof-pic img {
57 | margin: 0 auto;
58 | height: 100%;
59 | width: auto;
60 | cursor: pointer;
61 | inset: 0;
62 | }
63 |
64 | .buttons {
65 | display: flex;
66 | font-size: 10.5px;
67 | }
68 |
69 | .button {
70 | cursor: pointer;
71 | margin-right: 15px;
72 | border-radius: 3px;
73 | }
74 |
75 | .follow {
76 | text-decoration: none;
77 | background-color: #808080;
78 | padding: 5px 10px;
79 | }
80 |
81 | .follow a {
82 | color: #FFFFFF;
83 | }
84 |
85 | .message {
86 | background-color: #3cb371;
87 | padding: 5px 10px;
88 | border-radius: 3px;
89 | margin-right: 7px;
90 | }
91 |
92 | .more {
93 | margin: 0;
94 | padding-top: 4px;
95 | }
96 |
97 | .username {
98 | display: flex;
99 | flex-direction: row;
100 | flex-wrap: nowrap;
101 | align-items: center;
102 | }
103 |
104 | .username span {
105 | font-size: 16px;
106 | margin-right: 5px;
107 | font-weight: 600;
108 | letter-spacing: 1px;
109 | }
110 |
111 | .username img {
112 | height: 100%;
113 | margin-top: 5px;
114 | }
115 |
116 | .hashtagNumber {
117 | font-size: 14px;
118 | color: #808080;
119 | }
120 |
121 | .badges {
122 | margin: 10px 0;
123 | }
124 |
125 | .bio {
126 | margin: 10px 0;
127 | }
128 |
129 | .bio span {
130 | color: #dadada;
131 | }
132 |
133 | .location-link-bday-joined {
134 | margin: 10px 0;
135 | display: flex;
136 | flex-direction: row;
137 | flex-wrap: wrap;
138 | flex-basis: auto;
139 | justify-content: start;
140 | }
141 |
142 | .location-link-bday-joined div {
143 | margin-right: 15px;
144 | }
145 |
146 | .location-link-bday-joined div span {
147 | line-height: 18px;
148 | font-size: 13px;
149 | color: #808080;
150 | -webkit-user-select: none;
151 | -ms-user-select: none;
152 | user-select: none;
153 | }
154 |
155 | .location-link-bday-joined div img {
156 | height: 18px;
157 | line-height: 18px;
158 | margin-right: 2px;
159 | vertical-align: middle;
160 | }
161 |
162 | .location {
163 | cursor: pointer;
164 | }
165 |
166 | .following-follower {
167 | display: flex;
168 | flex-direction: row;
169 | margin-top: 10px;
170 | }
171 |
172 | .following-follower div {
173 | margin-right: 20px;
174 | font-size: 12px;
175 | }
176 |
177 | .follow-number {
178 | font-weight: 600;
179 | color: #dadada;
180 | background-color: #D7443E;
181 | margin-right: 5px;
182 | padding: 0 6px;
183 | border-radius: 15px;
184 | }
185 |
186 | .follow-text {
187 | -webkit-user-select: none;
188 | -ms-user-select: none;
189 | user-select: none;
190 | color: #dadada;
191 | }
192 |
193 | .profile-tweets-tabs {
194 | padding: 0 20px;
195 | display: flex;
196 | flex-direction: row;
197 | flex-wrap: nowrap;
198 | justify-content: space-around;
199 | overflow: hidden;
200 | }
201 |
202 | .profile-tweets-tabs .tab-button {
203 | background-color: inherit;
204 | border: none;
205 | outline: none;
206 | cursor: pointer;
207 | text-align: center;
208 | color: #dadada;
209 | font-weight: 600;
210 | letter-spacing: 0.5px;
211 | padding: 15px 5px;
212 | }
213 |
214 | .tab-button.active {
215 | color: #7289DA;
216 | border-bottom: 2px solid #7289DA;
217 | }
218 |
219 | .tab-content {
220 | max-width: 600px;
221 | margin-bottom: 50px;
222 | /* add margin because of the bottom nav bar */
223 | background-color: #2C2F33;
224 | }
225 |
226 | .tweet {
227 | position: relative;
228 | display: flex;
229 | flex-direction: row;
230 | flex-basis: auto;
231 | align-items: stretch;
232 | overflow: hidden;
233 | padding: 20px;
234 | border-bottom: 1px solid #808080;
235 | }
236 |
237 | .tweet.reply {
238 | padding-bottom: 0;
239 | border: 0;
240 | }
241 |
242 | .tweet-profile-pic {
243 | cursor: pointer;
244 | position: absolute;
245 | display: flex;
246 | justify-content: start;
247 | flex-direction: column;
248 | overflow: hidden;
249 | width: 40px;
250 | height: 100%;
251 | }
252 |
253 | .tweet-profile-pic div {
254 | padding-bottom: 10px;
255 | height: auto;
256 | width: 100%;
257 | }
258 |
259 | .tweet-profile-pic img {
260 | position: absolute;
261 | width: 100%;
262 | height: auto;
263 | border-radius: 50%;
264 | inset: 0;
265 | }
266 |
267 | .tweet-profile-pic .replying-icon-line {
268 | align-items: stretch;
269 | flex-grow: 1;
270 | margin: 40px auto 0 auto;
271 | width: 2px;
272 | background-color: #808080;
273 | }
274 |
275 | .replying-to {
276 | color: #808080;
277 | }
278 |
279 | .replying-to:before {
280 | content: "Replying to ";
281 | }
282 |
283 | .tweet-content {
284 | display: flex;
285 | flex-direction: column;
286 | align-items: left;
287 | margin-left: 50px;
288 | }
289 |
290 | .tweeter-info {
291 | display: flex;
292 | flex-direction: row;
293 | flex-wrap: nowrap;
294 | }
295 |
296 | .tweeter-info span {
297 | line-height: 20px;
298 | margin-right: 5px;
299 | }
300 |
301 | .name {
302 | font-weight: 600;
303 | letter-spacing: 1px;
304 | }
305 |
306 | .hashtag, .separator, .date-sent {
307 | color: #808080;
308 | }
309 |
310 | .tweet-text {
311 | margin: 10px 0;
312 | }
313 |
314 | .quoted.tweet-pic {
315 | margin: 0;
316 | }
317 |
318 | .tweet-pic {
319 | margin: 10px 0;
320 | }
321 |
322 | .tweet-pic img {
323 | border-radius: 15px;
324 | width: 100%;
325 | height: 100%;
326 | }
327 |
328 | .tweet-react {
329 | display: flex;
330 | flex-direction: row;
331 | flex-wrap: nowrap;
332 | margin: 5px 0;
333 | }
334 |
335 | .reaction {
336 | cursor: pointer;
337 | display: flex;
338 | flex-direction: row;
339 | flex-wrap: nowrap;
340 | padding: 2px 2px 2px 7px;
341 | margin-right: 10px;
342 | border-radius: 5px;
343 | background-color: #4b4b4b8e;
344 | }
345 |
346 | .clicked {
347 | background-color: #7289da4b;
348 | }
349 |
350 | .clicked .react-number {
351 | color: #7289da;
352 | }
353 |
354 | .reaction img {
355 | margin-right: 5px;
356 | height: 18px;
357 | line-height: 18px;
358 | vertical-align: middle;
359 | }
360 |
361 | .reaction span {
362 | margin-right: 5px;
363 | height: 18px;
364 | font-size: 13px;
365 | color: #dadada;
366 | }
367 |
368 | .quote-tweet {
369 | margin: 10px 0;
370 | }
371 |
372 | .quote-tweet-content {
373 | border-radius: 15px;
374 | border: 1px solid #4b4b4b;
375 | padding: 10px;
376 | }
377 |
378 | .quote-tweet-content img {
379 | border-radius: 15px;
380 | border: 1px solid #4b4b4b;
381 | padding: 0;
382 | }
383 |
384 | .quote-prof-pic-tweeter-info {
385 | display: flex;
386 | flex-direction: row;
387 | flex-wrap: nowrap;
388 | margin-bottom: 5px;
389 | }
390 |
391 | .quote-prof-pic-tweeter-info img {
392 | height: 20px;
393 | margin-right: 5px;
394 | }
395 |
396 | .quote-prof-pic-tweeter-info span {
397 | line-height: 20px;
398 | margin-right: 5px;
399 | }
400 |
401 | .nav-bar-bottom {
402 | display: flex;
403 | flex-direction: row;
404 | justify-content: space-between;
405 | position: fixed;
406 | text-align: center;
407 | bottom: 0;
408 | max-width: 600px;
409 | width: 100%;
410 | height: 51px;
411 | margin: 0;
412 | padding: 0;
413 | background-color: #23272A;
414 | }
415 |
416 | .nav-bar-bottom a {
417 | margin: auto;
418 | }
419 |
420 | .nav-bar-bottom a img {
421 | padding: 10px;
422 | }
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
22 | cannot believe they're making me post again
105 |did we ever figure out why they did surgery on a grape
135 |We're supporting breast cancer research for International Womens Day! There's over a 165 | dozen Discord communities holding streams and events to support @BCRFcure today through 167 | the 14th. 168 | (ง'̀-'́)ง We're matching up to 60k in donations, so join the cause: http://dis.gd/iwd-events 170 |
171 |
174 | who?
204 |Anyone heard of this Discord - Chat for Games program? Looks interesting.
216 |