├── .gitignore ├── README.md ├── chrome └── src │ ├── icon.svg │ ├── icon128.png │ ├── icon48.png │ ├── manifest.json │ └── twipster.css ├── dist ├── Twipster.safariextz ├── twipster-chrome-2.0.0.zip └── twipster-chrome-2.0.1.zip ├── google7a6ce854d6f18adc.html ├── gulpfile.js ├── index.html ├── package.json ├── safari ├── Twipster.safariextension │ ├── Icon.png │ ├── Info.plist │ └── twipster.css └── Update.plist ├── site ├── _basscss.scss ├── icon128.png ├── screenshot.png ├── style.css ├── style.scss └── twipster.svg └── src └── twipster.css /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store 3 | _site 4 | 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Twipster 2 | ======== 3 | 4 | **No longer maintained** 5 | 6 | See these alternatives: 7 | - [Twitter Lite](https://mobile.twitter.com) 8 | - [Refined Twitter](https://github.com/sindresorhus/refined-twitter) 9 | -------------------------------------------------------------------------------- /chrome/src/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 20 | 21 | 22 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /chrome/src/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jxnblk/Twipster/97702e2ca3e9416cc43a80aa5de7aab6f94482f7/chrome/src/icon128.png -------------------------------------------------------------------------------- /chrome/src/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jxnblk/Twipster/97702e2ca3e9416cc43a80aa5de7aab6f94482f7/chrome/src/icon48.png -------------------------------------------------------------------------------- /chrome/src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2, 3 | "name": "Twipster", 4 | "description": "Simpler, Readabler Twitter", 5 | "icons": { 6 | "48": "icon48.png", 7 | "128": "icon128.png" }, 8 | "version": "2.0.1", 9 | "homepage_url": "http://github.com/jxnblk/Twipster", 10 | "content_scripts": [ 11 | { 12 | "matches": ["*://*.twitter.com/*"], 13 | "css": ["twipster.css"], 14 | "run_at": "document_end" 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /chrome/src/twipster.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Twipster 3 | * Chrome and Safari extensions for a more readable Twitter experience 4 | * 5 | * http://jxnblk.com/Twipster 6 | * 7 | */ 8 | 9 | 10 | /* Tweet text styles */ 11 | .tweet-text, 12 | .ProfileTweet-text { 13 | font-family: Georgia !important; 14 | font-size: 20px !important; 15 | line-height: 1.5 !important; 16 | color: #444 !important; 17 | margin-bottom: 0.25em !important; 18 | } 19 | 20 | 21 | /* Compose tweet field */ 22 | .tweet-box { 23 | font-size: 18px !important; 24 | line-height: 24px !important; 25 | } 26 | 27 | /* Hide modules and promotions */ 28 | .trends, /* Trends module */ 29 | .promptbird, /* Prompt above timeline */ 30 | .enhanced-media-thumbnails, /* Inline images */ 31 | .content-header, /* Tweets column header */ 32 | .promoted-tweet, /* Promoted tweets */ 33 | .Footer, /* Site footer */ 34 | .site-footer, 35 | .DashboardProfileCard, /* Profile card on home */ 36 | .WhoToFollow, /* Who to follow module */ 37 | .wtf-module { 38 | display: none !important; 39 | } 40 | 41 | /* Hide inline media */ 42 | .cards-media-container, 43 | .card2 { 44 | display: none !important; 45 | } 46 | 47 | /* Show media when expanded or in detail view */ 48 | .expanding-stream-item.open .cards-media-container, 49 | .permalink-tweet .cards-media-container, 50 | .expanding-stream-item.open .card2, 51 | .permalink-tweet .card2 { 52 | display: block !important; 53 | } 54 | 55 | 56 | /* Remove Borders */ 57 | .stream-item, 58 | .tweet, 59 | .stream-loading, 60 | .stream-end, 61 | .new-tweets-bar, 62 | .module { 63 | border: none !important; 64 | } 65 | 66 | .stream-item-activity-me { 67 | border-bottom: none !important; 68 | } 69 | 70 | .user-similarities-list { 71 | border: 1px solid rgba(0,0,0,.1) !important; 72 | overflow: hidden !important; 73 | } 74 | 75 | 76 | /* Single Column Layout */ 77 | 78 | .wrapper-settings .content-header { 79 | display: block !important; 80 | } 81 | 82 | .wrapper, 83 | .wrapper-narrow, 84 | .wrapper-permalink { 85 | background: none !important; 86 | width: 90% !important; 87 | max-width: 56em !important; 88 | } 89 | 90 | .dashboard, 91 | .content-main { 92 | float: none !important; 93 | width: 100% !important; 94 | } 95 | 96 | /* Subnavigation */ 97 | .module ul li { 98 | display: inline-block !important; 99 | } 100 | .module ul li .Icon--caretRight { 101 | display: none !important; 102 | } 103 | .list-link { 104 | border: 0 !important; 105 | } 106 | 107 | /* White background */ 108 | body, 109 | body.ProfilePage { 110 | background-image: none !important; 111 | background-color: #fff !important; 112 | } 113 | 114 | 115 | /* Compose Tweet Modal */ 116 | 117 | .tweet-box { 118 | width: 95% !important; 119 | height: auto !important; 120 | min-height: 80px !important; 121 | padding: 8px 2.5% !important; 122 | } 123 | 124 | .tweet-form.has-preview.has-thumbnail .tweet-box { 125 | padding-bottom: 80px !important; 126 | } 127 | 128 | .tweet-form .thumbnail-container { 129 | width: auto !important; 130 | } 131 | 132 | 133 | /* Modals */ 134 | .modal { 135 | width: 90% !important; 136 | max-width: 56em !important; 137 | left: 0 !important; 138 | right: 0 !important; 139 | margin: 0 auto !important; 140 | } 141 | 142 | -------------------------------------------------------------------------------- /dist/Twipster.safariextz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jxnblk/Twipster/97702e2ca3e9416cc43a80aa5de7aab6f94482f7/dist/Twipster.safariextz -------------------------------------------------------------------------------- /dist/twipster-chrome-2.0.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jxnblk/Twipster/97702e2ca3e9416cc43a80aa5de7aab6f94482f7/dist/twipster-chrome-2.0.0.zip -------------------------------------------------------------------------------- /dist/twipster-chrome-2.0.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jxnblk/Twipster/97702e2ca3e9416cc43a80aa5de7aab6f94482f7/dist/twipster-chrome-2.0.1.zip -------------------------------------------------------------------------------- /google7a6ce854d6f18adc.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google7a6ce854d6f18adc.html 2 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | 2 | var gulp = require('gulp'); 3 | var rename = require('gulp-rename'); 4 | var zip = require('gulp-zip'); 5 | var chrome = require('./chrome/src/manifest'); 6 | 7 | gulp.task('css', function() { 8 | gulp.src('./src/twipster.css') 9 | .pipe(gulp.dest('./chrome/src')) 10 | .pipe(gulp.dest('./safari/Twipster.safariextension')); 11 | }); 12 | 13 | gulp.task('chrome', function() { 14 | gulp.src('./chrome/src/**/*') 15 | .pipe(zip('twipster-chrome-' + chrome.version + '.zip')) 16 | .pipe(gulp.dest('./dist')); 17 | }); 18 | 19 | gulp.task('default', ['css', 'chrome']); 20 | 21 | gulp.task('watch', ['default'], function() { 22 | gulp.watch(['./src/twipster.css'], ['default']); 23 | }); 24 | 25 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Twipster 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 | Twipster 19 |

Twipster

20 |

Simpler, Readabler Twitter

21 |
22 |
23 | 24 |
25 |

Install now

26 |

Twipster is a browser extension that alters the styles for twitter.com.

27 | Add to Chrome 28 | Add to Safari 29 |
30 | 31 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Twipster", 3 | "version": "2.0.1", 4 | "description": "Chrome extension for a simpler, more readable Twitter experience", 5 | "repository": { 6 | "type": "git", 7 | "url": "git://github.com/jxnblk/Twipster.git" 8 | }, 9 | "author": "Brent Jackson", 10 | "license": "MIT", 11 | "bugs": { 12 | "url": "https://github.com/jxnblk/Twipster/issues" 13 | }, 14 | "homepage": "https://github.com/jxnblk/Twipster", 15 | "devDependencies": { 16 | "gulp-rename": "^1.2.0", 17 | "gulp": "^3.8.8", 18 | "gulp-zip": "^2.0.2" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /safari/Twipster.safariextension/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jxnblk/Twipster/97702e2ca3e9416cc43a80aa5de7aab6f94482f7/safari/Twipster.safariextension/Icon.png -------------------------------------------------------------------------------- /safari/Twipster.safariextension/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Author 6 | Brent Jackson 7 | Builder Version 8 | 10600.1.25 9 | CFBundleDisplayName 10 | Twipster 11 | CFBundleIdentifier 12 | com.jxnblk.twipster 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleShortVersionString 16 | 2.0 17 | CFBundleVersion 18 | 2.0.1 19 | Chrome 20 | 21 | Content 22 | 23 | Scripts 24 | 25 | Stylesheets 26 | 27 | twipster.css 28 | 29 | 30 | Description 31 | Simpler, More Readable Styles for Twitter.com 32 | DeveloperIdentifier 33 | 36T97MXRKC 34 | ExtensionInfoDictionaryVersion 35 | 1.0 36 | Permissions 37 | 38 | Website Access 39 | 40 | Allowed Domains 41 | 42 | twitter.com 43 | 44 | Include Secure Pages 45 | 46 | Level 47 | Some 48 | 49 | 50 | Update Manifest URL 51 | http://jxnblk.com/Twipster/safari/Update.plist 52 | Website 53 | http://github.com/jxnblk/Twipster 54 | 55 | 56 | -------------------------------------------------------------------------------- /safari/Twipster.safariextension/twipster.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Twipster 3 | * Chrome and Safari extensions for a more readable Twitter experience 4 | * 5 | * http://jxnblk.com/Twipster 6 | * 7 | */ 8 | 9 | 10 | /* Tweet text styles */ 11 | .tweet-text, 12 | .ProfileTweet-text { 13 | font-family: Georgia !important; 14 | font-size: 20px !important; 15 | line-height: 1.5 !important; 16 | color: #444 !important; 17 | margin-bottom: 0.25em !important; 18 | } 19 | 20 | 21 | /* Compose tweet field */ 22 | .tweet-box { 23 | font-size: 18px !important; 24 | line-height: 24px !important; 25 | } 26 | 27 | /* Hide modules and promotions */ 28 | .trends, /* Trends module */ 29 | .promptbird, /* Prompt above timeline */ 30 | .enhanced-media-thumbnails, /* Inline images */ 31 | .content-header, /* Tweets column header */ 32 | .promoted-tweet, /* Promoted tweets */ 33 | .Footer, /* Site footer */ 34 | .site-footer, 35 | .DashboardProfileCard, /* Profile card on home */ 36 | .WhoToFollow, /* Who to follow module */ 37 | .wtf-module { 38 | display: none !important; 39 | } 40 | 41 | /* Hide inline media */ 42 | .cards-media-container, 43 | .card2 { 44 | display: none !important; 45 | } 46 | 47 | /* Show media when expanded or in detail view */ 48 | .expanding-stream-item.open .cards-media-container, 49 | .permalink-tweet .cards-media-container, 50 | .expanding-stream-item.open .card2, 51 | .permalink-tweet .card2 { 52 | display: block !important; 53 | } 54 | 55 | 56 | /* Remove Borders */ 57 | .stream-item, 58 | .tweet, 59 | .stream-loading, 60 | .stream-end, 61 | .new-tweets-bar, 62 | .module { 63 | border: none !important; 64 | } 65 | 66 | .stream-item-activity-me { 67 | border-bottom: none !important; 68 | } 69 | 70 | .user-similarities-list { 71 | border: 1px solid rgba(0,0,0,.1) !important; 72 | overflow: hidden !important; 73 | } 74 | 75 | 76 | /* Single Column Layout */ 77 | 78 | .wrapper-settings .content-header { 79 | display: block !important; 80 | } 81 | 82 | .wrapper, 83 | .wrapper-narrow, 84 | .wrapper-permalink { 85 | background: none !important; 86 | width: 90% !important; 87 | max-width: 56em !important; 88 | } 89 | 90 | .dashboard, 91 | .content-main { 92 | float: none !important; 93 | width: 100% !important; 94 | } 95 | 96 | /* Subnavigation */ 97 | .module ul li { 98 | display: inline-block !important; 99 | } 100 | .module ul li .Icon--caretRight { 101 | display: none !important; 102 | } 103 | .list-link { 104 | border: 0 !important; 105 | } 106 | 107 | /* White background */ 108 | body, 109 | body.ProfilePage { 110 | background-image: none !important; 111 | background-color: #fff !important; 112 | } 113 | 114 | 115 | /* Compose Tweet Modal */ 116 | 117 | .tweet-box { 118 | width: 95% !important; 119 | height: auto !important; 120 | min-height: 80px !important; 121 | padding: 8px 2.5% !important; 122 | } 123 | 124 | .tweet-form.has-preview.has-thumbnail .tweet-box { 125 | padding-bottom: 80px !important; 126 | } 127 | 128 | .tweet-form .thumbnail-container { 129 | width: auto !important; 130 | } 131 | 132 | 133 | /* Modals */ 134 | .modal { 135 | width: 90% !important; 136 | max-width: 56em !important; 137 | left: 0 !important; 138 | right: 0 !important; 139 | margin: 0 auto !important; 140 | } 141 | 142 | -------------------------------------------------------------------------------- /safari/Update.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Extension Updates 6 | 7 | 8 | CFBundleIdentifier 9 | com.jxnblk.safari.twipster 10 | Developer Identifier 11 | 36T97MXRKC 12 | CFBundleVersion 13 | 2.0.1 14 | CFBundleShortVersionString 15 | 2.0 16 | URL 17 | http://jxnblk.com/Twipster/dist/Twipster.safariextz 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /site/_basscss.scss: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | BASSCSS 4 | 5 | Part reset, part boilerplate, part framework, all minimal. 6 | 7 | BASSCSS is a small reset and collection of simple type and layout 8 | classes that can be used as the basis for any web project. 9 | Use it out of the box or as a base for a larger SASS project. 10 | 11 | 12 | Contents: 13 | 1. Reset 14 | 2. Typography 15 | a. Default Font Stack 16 | b. Base Type Scale 17 | c. Responsive Type Scale 18 | d. Utilities 19 | 3. Layout 20 | a. Margins 21 | b. Padding 22 | c. Display 23 | d. Utilities 24 | 25 | 26 | Made with love by Jxnblk 27 | 28 | */ 29 | 30 | 31 | 32 | 33 | // Settings 34 | 35 | // Defines whether or not to reset margins to 0 36 | // $reset-margins: true; 37 | // Default font stack 38 | // $font-primary: 'Helvetica Neue', Helvetica, sans-serif; 39 | // Base spacing unit 40 | // $space: 1rem; 41 | 42 | 43 | 44 | 45 | // Reset 46 | 47 | $reset-margins: true !default; 48 | @if ($reset-margins == true) { 49 | body, h1, h2, h3, h4, h5, h6, dl, ol, ul, p, 50 | button, input, select, textarea { margin: 0; } 51 | } 52 | 53 | button, input, select, textarea { font-family: inherit; font-size: 100%; } 54 | article, aside, details, figcaption, figure, footer, header, main, nav, section, summary { display: block; } 55 | 56 | 57 | 58 | 59 | // Typography 60 | 61 | // Default Font Stack 62 | $font-primary: 'Helvetica Neue', Helvetica, sans-serif !default; 63 | 64 | // Base spacing unit 65 | $space: 1rem !default; 66 | 67 | body { 68 | font-family: $font-primary; 69 | line-height: 1.5; 70 | font-weight: 400; 71 | } 72 | 73 | // Base Type Scale 74 | h1, .h1 { 75 | font-size: 2rem; 76 | line-height: 1.25; 77 | } 78 | 79 | h2, .h2 { 80 | font-size: 1.5rem; 81 | line-height: 1.25; 82 | } 83 | 84 | h3, h4, h5, h6, dl, ol, ul, p, .p { 85 | font-size: 1.125em; 86 | } 87 | 88 | small, .small { 89 | font-size: .875em; 90 | } 91 | 92 | // Responsive Type Scale 93 | // Apply the .responsive class directly to elements or their parents 94 | .responsive { 95 | @media (min-width: 896px) { 96 | .h1, &.h1 { font-size: 4rem; } 97 | .h2, &.h2 { font-size: 2rem; } 98 | .p, &.p { font-size: 1.25rem; } 99 | .small, &.small { font-size: 1rem; } 100 | } 101 | @media (min-width: 1280px) { 102 | .h1, &.h1 { font-size: 5rem; } 103 | .h2, &.h2 { font-size: 3rem; } 104 | } 105 | } 106 | 107 | // Utilities 108 | strong, .bold { font-weight: bold; } 109 | .regular { font-weight: normal; } 110 | .caps { text-transform: uppercase; letter-spacing: .2em; } 111 | .center { text-align: center; } 112 | .right-align { text-align: right; } 113 | 114 | // Type Spacing 115 | // Apply the .type-margins class to parent elements for default type spacing 116 | .type-margins { 117 | h1, .h1 { margin-bottom: $space; } 118 | h2, .h2 { margin-bottom: $space; } 119 | h3, h4, h5, h6, p, dl, ol, ul { margin-bottom: $space; } 120 | } 121 | 122 | 123 | 124 | // Layout 125 | 126 | // Margins 127 | .m1 { margin: $space; } 128 | .mt1 { margin-top: $space; } 129 | .mr1 { margin-right: $space; } 130 | .mb1 { margin-bottom: $space; } 131 | .ml1 { margin-left: $space; } 132 | 133 | .m2 { margin: 2 * $space; } 134 | .mt2 { margin-top: 2 * $space; } 135 | .mr2 { margin-right: 2 * $space; } 136 | .mb2 { margin-bottom: 2 * $space; } 137 | .ml2 { margin-left: 2 * $space; } 138 | 139 | .m3 { margin: 3 * $space; } 140 | .mt3 { margin-top: 3 * $space; } 141 | .mr3 { margin-right: 3 * $space; } 142 | .mb3 { margin-bottom: 3 * $space; } 143 | .ml3 { margin-left: 3 * $space; } 144 | 145 | .m4 { margin: 4 * $space; } 146 | .mt4 { margin-top: 4 * $space; } 147 | .mr4 { margin-right: 4 * $space; } 148 | .mb4 { margin-bottom: 4 * $space; } 149 | .ml4 { margin-left: 4 * $space; } 150 | 151 | // Useful for horizontally center elements with a fixed width 152 | .mxa { margin-right: auto; margin-left: auto; } 153 | 154 | // Padding 155 | .p1 { padding: $space; } 156 | .px1 { padding-right: $space; padding-left: $space; } 157 | .py1 { padding-top: $space; padding-bottom: $space; } 158 | 159 | .p2 { padding: 2 * $space; } 160 | .px2 { padding-right: 2 * $space; padding-left: 2 * $space; } 161 | .py2 { padding-top: 2 * $space; padding-bottom: 2 * $space; } 162 | 163 | .p3 { padding: 3 * $space; } 164 | .px3 { padding-right: 3 * $space; padding-left: 3 * $space; } 165 | .py3 { padding-top: 3 * $space; padding-bottom: 3 * $space; } 166 | 167 | .p4 { padding: 4 * $space; } 168 | .px4 { padding-right: 4 * $space; padding-left: 4 * $space; } 169 | .py4 { padding-top: 4 * $space; padding-bottom: 4 * $space; } 170 | 171 | // Display 172 | .inline { display: inline;} 173 | .block { display: block; } 174 | .inline-block { display: inline-block; } 175 | .table { display: table; } 176 | .table-cell { display: table-cell; vertical-align: middle; } 177 | 178 | // Utilities 179 | .clearfix { overflow: hidden; } 180 | // .clearfix { 181 | // &:before, &:after { content: " "; display: table; } 182 | // &:after { clear: both; } 183 | // } 184 | .left { float: left; } 185 | .right { float: right; } 186 | 187 | .fit { max-width: 100%; } 188 | -------------------------------------------------------------------------------- /site/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jxnblk/Twipster/97702e2ca3e9416cc43a80aa5de7aab6f94482f7/site/icon128.png -------------------------------------------------------------------------------- /site/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jxnblk/Twipster/97702e2ca3e9416cc43a80aa5de7aab6f94482f7/site/screenshot.png -------------------------------------------------------------------------------- /site/style.css: -------------------------------------------------------------------------------- 1 | body,h1,h2,h3,h4,h5,h6,dl,ol,ul,p,button,input,select,textarea{margin:0}button,input,select,textarea{font-family:inherit;font-size:100%}article,aside,details,figcaption,figure,footer,header,main,nav,section,summary{display:block}body{font-family:"Helvetica Neue",Helvetica,sans-serif;line-height:1.5;font-weight:400}h1,.h1{font-size:2rem;line-height:1.25}h2,.h2{font-size:1.5rem;line-height:1.25}h3,h4,h5,h6,dl,ol,ul,p,.p{font-size:1.125em}small,.small{font-size:.875em}@media (min-width: 896px){.responsive .h1,.responsive.h1{font-size:4rem}.responsive .h2,.responsive.h2{font-size:2rem}.responsive .p,.responsive.p{font-size:1.25rem}.responsive .small,.responsive.small{font-size:1rem}}@media (min-width: 1280px){.responsive .h1,.responsive.h1{font-size:5rem}.responsive .h2,.responsive.h2{font-size:3rem}}strong,.bold{font-weight:bold}.regular{font-weight:normal}.caps{text-transform:uppercase;letter-spacing:.2em}.center{text-align:center}.right-align{text-align:right}.type-margins h1,.type-margins .h1{margin-bottom:1rem}.type-margins h2,.type-margins .h2{margin-bottom:1rem}.type-margins h3,.type-margins h4,.type-margins h5,.type-margins h6,.type-margins p,.type-margins dl,.type-margins ol,.type-margins ul{margin-bottom:1rem}.m1{margin:1rem}.mt1{margin-top:1rem}.mr1{margin-right:1rem}.mb1{margin-bottom:1rem}.ml1{margin-left:1rem}.m2{margin:2rem}.mt2{margin-top:2rem}.mr2{margin-right:2rem}.mb2{margin-bottom:2rem}.ml2{margin-left:2rem}.m3{margin:3rem}.mt3{margin-top:3rem}.mr3{margin-right:3rem}.mb3{margin-bottom:3rem}.ml3{margin-left:3rem}.m4{margin:4rem}.mt4{margin-top:4rem}.mr4{margin-right:4rem}.mb4{margin-bottom:4rem}.ml4{margin-left:4rem}.mxa{margin-right:auto;margin-left:auto}.p1{padding:1rem}.px1{padding-right:1rem;padding-left:1rem}.py1{padding-top:1rem;padding-bottom:1rem}.p2{padding:2rem}.px2{padding-right:2rem;padding-left:2rem}.py2{padding-top:2rem;padding-bottom:2rem}.p3{padding:3rem}.px3{padding-right:3rem;padding-left:3rem}.py3{padding-top:3rem;padding-bottom:3rem}.p4{padding:4rem}.px4{padding-right:4rem;padding-left:4rem}.py4{padding-top:4rem;padding-bottom:4rem}.inline{display:inline}.block{display:block}.inline-block{display:inline-block}.table{display:table}.table-cell{display:table-cell;vertical-align:middle}.clearfix{overflow:hidden}.left{float:left}.right{float:right}.fit{max-width:100%}.helvetica{font-family:Helvetica, Arial, sans-serif}.georgia{font-family:Georgia, serif}.square2{width:2em;height:2em}.full-width{width:100%}@media (min-width: 896px){.p2{padding:4rem}.px2{padding-right:4rem;padding-left:4rem}}.btn{font-weight:bold;display:inline-block;line-height:3;padding-right:1rem;padding-left:1rem;border-radius:0.25rem}.tiles{overflow:hidden;margin-right:-1rem}.tile{float:left;width:100%;margin-right:1rem}@media (min-width: 512px){.tile{width:calc(50% - 1rem)}}a{color:#34a9de;text-decoration:none}a:hover{color:#13b5ff}.white{color:white}.blue{color:#34a9de}.dark-blue{color:#1a546f}.light-gray{color:#e0e6ef}.mid-gray{color:#aaa}.dark-gray{color:#444}.bg-white{background-color:white}.bg-blue{background-color:#34a9de}.bg-dark-blue{background-color:#1a546f}.bg-light-gray{background-color:#e0e6ef}.bg-dark-gray{background-color:#444}.btn-blue{color:white;background-color:#34a9de}.btn-blue:hover{color:white;background-color:#13b5ff}.rounded{border-radius:0.25rem} 2 | -------------------------------------------------------------------------------- /site/style.scss: -------------------------------------------------------------------------------- 1 | // Twipster 2 | 3 | @import "basscss"; 4 | 5 | .helvetica { font-family: Helvetica, Arial, sans-serif; } 6 | .georgia { font-family: Georgia, serif; } 7 | .square2 { width: 2em; height: 2em; } 8 | .full-width { width: 100%; } 9 | 10 | // Partially responsive padding 11 | @media (min-width: 896px) { 12 | .p2 { padding: 4*$space; } 13 | .px2 { padding-right: 4*$space; padding-left: 4*$space; } 14 | } 15 | 16 | .btn { 17 | font-weight: bold; 18 | display: inline-block; 19 | line-height: 3; 20 | padding-right: $space; 21 | padding-left: $space; 22 | border-radius: .25*$space; 23 | } 24 | 25 | .tiles { 26 | overflow: hidden; 27 | margin-right: -$space; 28 | } 29 | 30 | .tile { 31 | float: left; 32 | width: 100%; 33 | margin-right: $space; 34 | @media (min-width: 512px) { 35 | width: calc(50% - #{$space}); 36 | } 37 | } 38 | 39 | // Theme 40 | 41 | $blue: #34a9de; 42 | $dark-blue: #1a546f; 43 | $light-gray: #e0e6ef; 44 | $mid-gray: #aaa; 45 | $dark-gray: #444; 46 | 47 | a { 48 | color: $blue; 49 | text-decoration: none; 50 | &:hover { 51 | color: saturate($blue, 30%); 52 | } 53 | } 54 | 55 | .white { color: white; } 56 | .blue { color: $blue; } 57 | .dark-blue { color: $dark-blue; } 58 | .light-gray { color: $light-gray; } 59 | .mid-gray { color: $mid-gray; } 60 | .dark-gray { color: $dark-gray; } 61 | 62 | .bg-white { background-color: white; } 63 | .bg-blue { background-color: $blue; } 64 | .bg-dark-blue { background-color: $dark-blue; } 65 | .bg-light-gray { background-color: $light-gray; } 66 | .bg-dark-gray { background-color: $dark-gray; } 67 | 68 | .btn-blue { 69 | color: white; 70 | background-color: $blue; 71 | &:hover { 72 | color: white; 73 | background-color: saturate($blue, 40%); 74 | } 75 | } 76 | 77 | .rounded { border-radius: .25*$space; } 78 | -------------------------------------------------------------------------------- /site/twipster.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 15 | 16 | 17 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/twipster.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Twipster 3 | * Chrome and Safari extensions for a more readable Twitter experience 4 | * 5 | * http://jxnblk.com/Twipster 6 | * 7 | */ 8 | 9 | 10 | /* Tweet text styles */ 11 | .tweet-text, 12 | .ProfileTweet-text { 13 | font-family: Georgia !important; 14 | font-size: 20px !important; 15 | line-height: 1.5 !important; 16 | color: #444 !important; 17 | margin-bottom: 0.25em !important; 18 | } 19 | 20 | 21 | /* Compose tweet field */ 22 | .tweet-box { 23 | font-size: 18px !important; 24 | line-height: 24px !important; 25 | } 26 | 27 | /* Hide modules and promotions */ 28 | .trends, /* Trends module */ 29 | .promptbird, /* Prompt above timeline */ 30 | .enhanced-media-thumbnails, /* Inline images */ 31 | .content-header, /* Tweets column header */ 32 | .promoted-tweet, /* Promoted tweets */ 33 | .Footer, /* Site footer */ 34 | .site-footer, 35 | .DashboardProfileCard, /* Profile card on home */ 36 | .WhoToFollow, /* Who to follow module */ 37 | .wtf-module { 38 | display: none !important; 39 | } 40 | 41 | /* Hide inline media */ 42 | .cards-media-container, 43 | .card2 { 44 | display: none !important; 45 | } 46 | 47 | /* Show media when expanded or in detail view */ 48 | .expanding-stream-item.open .cards-media-container, 49 | .permalink-tweet .cards-media-container, 50 | .expanding-stream-item.open .card2, 51 | .permalink-tweet .card2 { 52 | display: block !important; 53 | } 54 | 55 | 56 | /* Remove Borders */ 57 | .stream-item, 58 | .tweet, 59 | .stream-loading, 60 | .stream-end, 61 | .new-tweets-bar, 62 | .module { 63 | border: none !important; 64 | } 65 | 66 | .stream-item-activity-me { 67 | border-bottom: none !important; 68 | } 69 | 70 | .user-similarities-list { 71 | border: 1px solid rgba(0,0,0,.1) !important; 72 | overflow: hidden !important; 73 | } 74 | 75 | 76 | /* Single Column Layout */ 77 | 78 | .wrapper-settings .content-header { 79 | display: block !important; 80 | } 81 | 82 | .wrapper, 83 | .wrapper-narrow, 84 | .wrapper-permalink { 85 | background: none !important; 86 | width: 90% !important; 87 | max-width: 56em !important; 88 | } 89 | 90 | .dashboard, 91 | .content-main { 92 | float: none !important; 93 | width: 100% !important; 94 | } 95 | 96 | /* Subnavigation */ 97 | .module ul li { 98 | display: inline-block !important; 99 | } 100 | .module ul li .Icon--caretRight { 101 | display: none !important; 102 | } 103 | .list-link { 104 | border: 0 !important; 105 | } 106 | 107 | /* White background */ 108 | body, 109 | body.ProfilePage { 110 | background-image: none !important; 111 | background-color: #fff !important; 112 | } 113 | 114 | 115 | /* Compose Tweet Modal */ 116 | 117 | .tweet-box { 118 | width: 95% !important; 119 | height: auto !important; 120 | min-height: 80px !important; 121 | padding: 8px 2.5% !important; 122 | } 123 | 124 | .tweet-form.has-preview.has-thumbnail .tweet-box { 125 | padding-bottom: 80px !important; 126 | } 127 | 128 | .tweet-form .thumbnail-container { 129 | width: auto !important; 130 | } 131 | 132 | 133 | /* Modals */ 134 | .modal { 135 | width: 90% !important; 136 | max-width: 56em !important; 137 | left: 0 !important; 138 | right: 0 !important; 139 | margin: 0 auto !important; 140 | } 141 | 142 | --------------------------------------------------------------------------------