├── .gitignore ├── css ├── _animations.scss ├── _base.scss ├── _buttons.scss ├── _inactive.scss ├── _notification.scss ├── _yosemite.scss ├── desk.scss ├── normalize.css └── reeddit.scss ├── img ├── add.png ├── add@2.png ├── alienHead.png ├── bg.png ├── cancel.png ├── close.png ├── comment.png ├── comment@2x.png ├── delete.png ├── delete@2x.png ├── edit.png ├── icon.png ├── icon144.png ├── refresh.png ├── refresh1.png ├── share.png └── share@2x.png ├── index.html ├── index.jade ├── js ├── dom.js ├── libs.js ├── reeddit.js └── sharing.js ├── package.json └── readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.sublime-project 2 | *.sublime-workspace 3 | .idea/* 4 | -------------------------------------------------------------------------------- /css/_animations.scss: -------------------------------------------------------------------------------- 1 | .anim-delete { 2 | height: 0; 3 | overflow: hidden; 4 | transition: height 200ms; 5 | } 6 | 7 | .anim-dismiss { 8 | transition: opacity 200ms; 9 | opacity: 0; 10 | } 11 | 12 | @-webkit-keyframes reveal { 13 | 0% { 14 | opacity: 0; 15 | } 16 | 100% { 17 | opacity: 1; 18 | } 19 | } 20 | 21 | @keyframes reveal { 22 | 0% { 23 | opacity: 0; 24 | } 25 | 100% { 26 | opacity: 1; 27 | } 28 | } 29 | 30 | .anim-reveal { 31 | opacity: 0; 32 | -webkit-animation: reveal 700ms ease both; 33 | animation: reveal 700ms ease both; 34 | } 35 | 36 | .loader { 37 | margin: 15px auto; 38 | background-color: #333; 39 | color: #777; 40 | width: 15px; 41 | height: 15px; 42 | border-radius: 100%; 43 | -webkit-animation: loading 1.0s ease-in-out infinite; 44 | animation: loading 1.0s ease-in-out infinite; 45 | text-align: center; 46 | font-weight: 700; 47 | display: block; 48 | } 49 | 50 | .loader-error { 51 | width: 100%; 52 | -webkit-animation: none; 53 | animation: none; 54 | background-color: transparent; 55 | } 56 | 57 | @-webkit-keyframes loading { 58 | 0% { 59 | opacity: 1; 60 | -webkit-transform: scale(0); 61 | } 62 | 100% { 63 | opacity: 0; 64 | -webkit-transform: scale(2); 65 | } 66 | } 67 | 68 | @keyframes loading { 69 | 0% { 70 | opacity: 1; 71 | transform: scale(0); 72 | } 73 | 100% { 74 | opacity: 0; 75 | transform: scale(2); 76 | } 77 | } 78 | 79 | @keyframes shake { 80 | 20% { 81 | transform: translateX(10px); 82 | } 83 | 40% { 84 | transform: translateX(-10px); 85 | } 86 | 60% { 87 | transform: translateX(5px); 88 | } 89 | 80% { 90 | transform: translateX(-5px); 91 | } 92 | } 93 | 94 | @-webkit-keyframes shake { 95 | 20% { 96 | -webkit-transform: translateX(10px); 97 | } 98 | 40% { 99 | -webkit-transform: translateX(-10px); 100 | } 101 | 60% { 102 | -webkit-transform: translateX(5px); 103 | } 104 | 80% { 105 | -webkit-transform: translateX(-5px); 106 | } 107 | } 108 | 109 | .anim-shake { 110 | -webkit-animation: shake 350ms ease-in-out; 111 | animation: shake 350ms ease-in-out; 112 | } 113 | 114 | @-webkit-keyframes bounceOut { 115 | 0% { 116 | -webkit-transform: scale(1); 117 | } 118 | 25% { 119 | -webkit-transform: scale(0.95); 120 | } 121 | 50% { 122 | opacity: 1; 123 | -webkit-transform: scale(1.1); 124 | } 125 | 100% { 126 | opacity: 0; 127 | -webkit-transform: scale(0.3); 128 | } 129 | } 130 | 131 | @keyframes bounceOut { 132 | 0% { 133 | transform: scale(1); 134 | } 135 | 25% { 136 | transform: scale(0.95); 137 | } 138 | 50% { 139 | opacity: 1; 140 | transform: scale(1.1); 141 | } 142 | 100% { 143 | opacity: 0; 144 | transform: scale(0.3); 145 | } 146 | } 147 | 148 | .anim-bounce-out { 149 | -webkit-animation: bounceOut 1s ease-in-out both; 150 | animation: bounceOut 1s ease-in-out both; 151 | } 152 | 153 | @-webkit-keyframes bounceInDown { 154 | 0% { 155 | opacity: 0; 156 | -webkit-transform: translateY(- 2000 px); 157 | } 158 | 60% { 159 | opacity: 1; 160 | -webkit-transform: translateY(30px); 161 | } 162 | 80% { 163 | -webkit-transform: translateY(-10px); 164 | } 165 | 100% { 166 | -webkit-transform: translateY(0); 167 | } 168 | } 169 | 170 | @keyframes bounceInDown { 171 | 0% { 172 | opacity: 0; 173 | transform: translateY(-2000px); 174 | } 175 | 60% { 176 | opacity: 1; 177 | transform: translateY(30px); 178 | } 179 | 80% { 180 | transform: translateY(-10px); 181 | } 182 | 100% { 183 | opacity: 1; 184 | transform: translateY(0); 185 | } 186 | } 187 | 188 | .anim-bounceInDown { 189 | -webkit-animation: bounceInDown 500ms ease-in-out both; 190 | animation: bounceInDown 500ms ease-in-out both; 191 | } 192 | -------------------------------------------------------------------------------- /css/_base.scss: -------------------------------------------------------------------------------- 1 | $main-red: #cf4f5b; 2 | $header-black: #4e4e4e; 3 | $header-height: 44px; 4 | $blue: #4286F5; 5 | $icon-hover-color: $blue; 6 | 7 | @mixin size($width, $height: $width) { 8 | width: $width; 9 | height: $height; 10 | } 11 | 12 | @mixin letterpress($opacity: .5) { 13 | text-shadow: 0 1px 0 rgba(255, 255, 255, $opacity); 14 | } 15 | 16 | @mixin emboss($top-opacity: .5, $bottom-opacity: .5) { 17 | box-shadow: inset rgba(0, 0, 0, $top-opacity) 0 1px 0, 18 | rgba(255, 255, 255, $bottom-opacity) 0 1px 0; 19 | } 20 | 21 | %overflow-ellipsis { 22 | white-space: nowrap; 23 | text-overflow: ellipsis; 24 | overflow-x: hidden; 25 | } 26 | 27 | %disable-letterpress { 28 | text-shadow: none; 29 | } 30 | -------------------------------------------------------------------------------- /css/_buttons.scss: -------------------------------------------------------------------------------- 1 | .button { 2 | @include size(28px, 22px); 3 | border: 1px solid transparent; 4 | border-radius: 4px; 5 | margin: 0 auto; 6 | 7 | &:hover, 8 | &:active { 9 | border: 1px solid #777; 10 | box-shadow: rgba(255, 255, 255, .4) 0 1px; 11 | } 12 | 13 | &:hover { 14 | background-image: linear-gradient(#eee, #959595); 15 | } 16 | 17 | &:active { 18 | background-image: linear-gradient(#959595, #d5d5d5); 19 | box-shadow: inset 0 3px 7px #757575, rgba(white, 0.4) 0 1px; 20 | } 21 | } 22 | 23 | #refresh-icon .icon-btn { 24 | opacity: .8; 25 | 26 | &:active { 27 | opacity: .9; 28 | } 29 | } 30 | 31 | .btn-side-menu-add { 32 | $btn-color: #777; 33 | position: absolute; 34 | right: 0; 35 | padding-left: 10px; 36 | padding-right: 10px; 37 | color: $btn-color; 38 | font-size: 16px; 39 | font-weight: 600; 40 | visibility: hidden; 41 | 42 | &:active { 43 | color: $icon-hover-color; 44 | } 45 | } 46 | 47 | .menu-desc:hover .btn-side-menu-add { 48 | visibility: visible; 49 | } 50 | 51 | .btn-edit-sub:hover { 52 | color: $icon-hover-color; 53 | } 54 | 55 | .comments-button, 56 | .btn-general { 57 | color: #555; 58 | background-image: linear-gradient(whiteSmoke 0%, #CCC 100%); 59 | box-shadow: rgba(255, 255, 255, .4) 0 1px 0 inset, 60 | rgba(255, 255, 255, .3) 0 25px 30px -12px inset, 61 | rgba(0, 0, 0, .6) 0 1px 2px; 62 | } 63 | 64 | .btn-general { 65 | background-color: #bbb; 66 | padding: 3px 10px; 67 | border-radius: 4px; 68 | font-weight: 700; 69 | text-align: center; 70 | border: 0; 71 | 72 | &:active { 73 | background-image: linear-gradient(#3f3f3f 50%, #4b4b4b 100%); 74 | box-shadow: 0 2px 7px black inset, 75 | rgba(255, 255, 255, .4) 0 1px 0; 76 | } 77 | 78 | &:hover, 79 | &:visited { 80 | color: #555; 81 | } 82 | 83 | &:active { 84 | color: #f5f5f5; 85 | } 86 | } 87 | 88 | #btn-save-data { 89 | width: 70%; 90 | margin: 0 auto; 91 | line-height: 20px; 92 | } 93 | 94 | #btn-import-data { 95 | width: 175px; 96 | } 97 | 98 | .btn-footer { 99 | position: absolute; 100 | } 101 | 102 | .btn-share { 103 | @include size(32px, 22px); 104 | -webkit-box-flex: 1; 105 | margin-right: 10px; 106 | display: inline-block; 107 | background-image: url(../img/share.png); 108 | background-size: 18px; 109 | background-repeat: no-repeat; 110 | background-position: center; 111 | 112 | &:active { 113 | background-image: url("../img/share.png"); 114 | } 115 | } 116 | 117 | .replies-button:active { 118 | background-image: linear-gradient(#ccc 0%, #777 100%) !important; 119 | color: white !important; 120 | } 121 | 122 | .btn-load-more { 123 | padding: 5px 10px; 124 | margin: 20px auto; 125 | text-align: center; 126 | width: 80%; 127 | border-radius: 5px; 128 | font-size: 14px; 129 | font-weight: 700; 130 | } 131 | 132 | .btn-edit-channel, 133 | .btn-remove-channel, 134 | .btn-remove-subreddit, 135 | .btn-add-sub { 136 | &:active { 137 | background-color: #ddd; 138 | } 139 | } 140 | 141 | .comments-button { 142 | padding: 3px 10px; 143 | border-radius: 4px; 144 | font-size: 11px; 145 | font-weight: 700; 146 | display: block; 147 | text-align: center; 148 | width: 90px; 149 | margin: 0 auto; 150 | } 151 | -------------------------------------------------------------------------------- /css/_inactive.scss: -------------------------------------------------------------------------------- 1 | .inactive { 2 | 3 | header, 4 | .view-footer { 5 | background-image: linear-gradient(#e5e5e5, #d5d5d5); 6 | box-shadow: none; 7 | } 8 | 9 | header { 10 | border-color: #999; 11 | } 12 | 13 | #header-icon, 14 | #main-title, 15 | #title, 16 | #footer-sub, 17 | #footer-post, 18 | .btn-footer, 19 | .icon-btn { 20 | opacity: .7; 21 | } 22 | 23 | #detail-close { 24 | opacity: .5; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /css/_notification.scss: -------------------------------------------------------------------------------- 1 | .notification { 2 | background-color: rgba(0, 0, 0, .8); 3 | color: white; 4 | border-radius: 4px; 5 | text-align: center; 6 | line-height: 30px; 7 | width: 200px; 8 | padding: 0 10px; 9 | position: relative; 10 | top: 50px; 11 | left: 50%; 12 | margin-left: -100px; 13 | margin-bottom: 10px; 14 | z-index: 11; 15 | } 16 | -------------------------------------------------------------------------------- /css/_yosemite.scss: -------------------------------------------------------------------------------- 1 | $gray-yos: #d2d2d2; 2 | $header-height-yos: 36px; 3 | 4 | .yosemite { 5 | 6 | header { 7 | background: { 8 | color: $gray-yos; 9 | image: none; 10 | } 11 | border: { 12 | top: 0; 13 | bottom: 1px solid #b3b3b3; 14 | } 15 | box-shadow: none; 16 | height: $header-height-yos; 17 | } 18 | 19 | #title-head { 20 | -webkit-box-align: baseline; 21 | } 22 | 23 | #main-title { 24 | top: 7px; 25 | } 26 | 27 | #title { 28 | margin-top: 5px; 29 | } 30 | 31 | #sub-title { 32 | line-height: 20px; 33 | 34 | &:hover { 35 | background-color: #f2f2f2; 36 | } 37 | 38 | &:active { 39 | box-shadow: none; 40 | background-color: #bbb; 41 | } 42 | } 43 | 44 | .view { 45 | top: $header-height-yos; 46 | } 47 | 48 | .corner { 49 | -webkit-box-align: baseline; 50 | } 51 | 52 | .button { 53 | background-image: none; 54 | border: 0; 55 | margin-top: 4px; 56 | 57 | &:hover { 58 | background-color: white; 59 | box-shadow: 0 1px 0 #aaa; 60 | } 61 | 62 | &:active { 63 | background-color: #ddd; 64 | box-shadow: inset 0 1px 0 #f2f2f2, 0 1px 0 #aaa; 65 | } 66 | } 67 | 68 | .comments-button { 69 | box-shadow: none; 70 | border: 1px solid #bbb; 71 | background-image: none; 72 | color: #999; 73 | font-weight: 400; 74 | 75 | &:hover { 76 | background-color: #eee; 77 | } 78 | 79 | &:active { 80 | background: { 81 | image: none; 82 | color: #bbb; 83 | } 84 | } 85 | } 86 | 87 | .replies-button:active { 88 | background-image: none !important; 89 | } 90 | 91 | .comment-poster::before { 92 | border-radius: 3px; 93 | color: white; 94 | background-color: #cf4f5b; 95 | } 96 | 97 | &.inactive { 98 | 99 | header { 100 | background-color: #f5f5f5; 101 | } 102 | } 103 | 104 | @media only screen and (min-width: 1000px) { 105 | 106 | .view { 107 | top: 0; 108 | } 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /css/desk.scss: -------------------------------------------------------------------------------- 1 | .btn-edit-sub, 2 | .sub, 3 | .channel > p, 4 | .option, 5 | #summary-title, 6 | #sorting p { 7 | transition-duration: 200ms; 8 | } 9 | 10 | .sub:hover, 11 | .channel:hover > p, 12 | .option:hover, 13 | #sorting p:hover { 14 | text-shadow: 0 0 10px rgba(255, 255, 255, 0.75); 15 | } 16 | 17 | .link, 18 | .list-button > span, 19 | .top-buttons > div, 20 | .comments-button, 21 | .item-to-edit > div, 22 | .btn-add-sub, 23 | .close-form, 24 | .btn-general, 25 | #btn-add-new-channel { 26 | cursor: pointer; 27 | } 28 | 29 | #subs, 30 | #channels, 31 | #main-title, 32 | #btn-add-another-sub, 33 | #title, 34 | #summary-sub, 35 | #summary-time, 36 | #summary-author, 37 | .edit-subs-title, 38 | .item-to-edit, 39 | .btn-edit-sub, 40 | .menu-desc, 41 | .loader-error, 42 | .notification, 43 | .option, 44 | .sort-option, 45 | .subreddit p, 46 | .view-footer p, 47 | .move-data h3, 48 | .move-data p { 49 | cursor: default; 50 | } 51 | 52 | #link-summary a:hover #summary-title { text-shadow: 0 1px 7px whiteSmoke; } 53 | 54 | /* Scrolling bars style */ 55 | ::-webkit-scrollbar, 56 | #main-menu::-webkit-scrollbar { width: 7px; } 57 | 58 | /* Track Principal */ 59 | ::-webkit-scrollbar-track { 60 | border-radius: 10px; 61 | background-color: whiteSmoke; 62 | } 63 | 64 | /* Handle Principal */ 65 | ::-webkit-scrollbar-thumb { 66 | border-radius: 10px; 67 | background: rgb(200, 200, 200); 68 | } 69 | 70 | /* Track Menu */ 71 | #main-menu::-webkit-scrollbar-track { 72 | border-radius: 10px; 73 | background-color: #262b30; 74 | } 75 | 76 | /* Handle Menu */ 77 | #main-menu::-webkit-scrollbar-thumb { 78 | border-radius: 10px; 79 | background-color: rgba(0, 0, 0, 0.4); 80 | } 81 | -------------------------------------------------------------------------------- /css/normalize.css: -------------------------------------------------------------------------------- 1 | article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } 2 | audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } 3 | audio:not([controls]) { display: none; } 4 | [hidden] { display: none; } 5 | html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } 6 | body { margin: 0; font-size: 13px; line-height: 1.231; } 7 | body, button, input, select, textarea { font-family: sans-serif; color: #222; } 8 | a { color: #00e; } 9 | a:visited { color: #551a8b; } 10 | a:hover { color: #06e; } 11 | a:focus { outline: thin dotted; } 12 | a:hover, a:active { outline: 0; } 13 | abbr[title] { border-bottom: 1px dotted; } 14 | b, strong { font-weight: bold; } 15 | blockquote { margin: 1em 40px; } 16 | dfn { font-style: italic; } 17 | hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } 18 | ins { background: #ff9; color: #000; text-decoration: none; } 19 | mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; } 20 | pre, code, kbd, samp { font-family: monospace, serif; _font-family: 'courier new', monospace; font-size: 1em; } 21 | pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; } 22 | q { quotes: none; } 23 | q:before, q:after { content: ""; content: none; } 24 | small { font-size: 85%; } 25 | sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } 26 | sup { top: -0.5em; } 27 | sub { bottom: -0.25em; } 28 | ul, ol { margin: 1em 0; padding: 0 0 0 40px; } 29 | dd { margin: 0 0 0 40px; } 30 | nav ul, nav ol { list-style: none; list-style-image: none; margin: 0; padding: 0; } 31 | img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; } 32 | svg:not(:root) { overflow: hidden; } 33 | figure { margin: 0; } 34 | form { margin: 0; } 35 | fieldset { border: 0; margin: 0; padding: 0; } 36 | label { cursor: pointer; } 37 | legend { border: 0; *margin-left: -7px; padding: 0; } 38 | button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; } 39 | button, input { line-height: normal; *overflow: visible; } 40 | table button, table input { *overflow: auto; } 41 | button, input[type="button"], input[type="reset"], input[type="submit"], [role="button"] { cursor: pointer; -webkit-appearance: button; } 42 | input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0; } 43 | input[type="search"] { -webkit-appearance: textfield; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; } 44 | input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } 45 | button::-moz-focus-inner { border: 0; padding: 0; } 46 | textarea { overflow: auto; vertical-align: top; resize: vertical; } 47 | input:valid, textarea:valid { } 48 | input:invalid, textarea:invalid { background-color: #f0dddd; } 49 | table { border-collapse: collapse; border-spacing: 0; } 50 | td { vertical-align: top; } 51 | .nocallout {-webkit-touch-callout: none;} 52 | textarea[contenteditable] {-webkit-appearance: none;} 53 | .gifhidden {position: absolute; left: -100%;} 54 | .ir { display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; } 55 | .ir br { display: none; } 56 | .hidden { display: none !important; visibility: hidden; } 57 | .visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } 58 | .visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } 59 | .invisible { visibility: hidden; } 60 | .clearfix:before, .clearfix:after { content: ""; display: table; } 61 | .clearfix:after { clear: both; } 62 | .clearfix { *zoom: 1; } 63 | -------------------------------------------------------------------------------- /css/reeddit.scss: -------------------------------------------------------------------------------- 1 | @import "base"; 2 | @import "buttons"; 3 | @import "inactive"; 4 | @import "yosemite"; 5 | @import "notification"; 6 | 7 | * { 8 | color: #373737; 9 | box-sizing: border-box; 10 | } 11 | 12 | html { 13 | height: 100%; 14 | } 15 | 16 | body { 17 | overflow: hidden; 18 | -webkit-user-select: none; 19 | user-select: none; 20 | margin: 0; 21 | padding: 0; 22 | height: 100%; 23 | background-color: white; 24 | word-wrap: break-word; 25 | -webkit-text-size-adjust: none; 26 | font-family: "Lucida Grande"; 27 | position: relative; 28 | } 29 | 30 | a { 31 | color: #999; 32 | } 33 | 34 | .link:visited div .link-title { 35 | color: #888; 36 | } 37 | 38 | /*--------------------- Vistas ---------------------------*/ 39 | 40 | .view { 41 | position: absolute; 42 | width: 100%; 43 | top: $header-height; 44 | bottom: 0; 45 | left: 0; 46 | right: 0; 47 | z-index: 1; 48 | transition-duration: 300ms; 49 | } 50 | 51 | .main-view, 52 | .detail-view { 53 | -webkit-perspective: 1000; 54 | -webkit-backface-visibility: hidden; 55 | background-color: #fafafa; 56 | } 57 | 58 | .main-view { 59 | -webkit-transform: translate3d(-100%, 0, 0); 60 | transform: translate3d(-100%, 0, 0); 61 | } 62 | 63 | .detail-view { 64 | -webkit-transform: translate3d(100%, 0, 0); 65 | transform: translate3d(100%, 0, 0); 66 | } 67 | 68 | .wrapper { 69 | height: 100%; 70 | overflow-x: hidden; 71 | overflow-y: auto; 72 | position: relative; 73 | } 74 | 75 | /*--------------------- Comentarios ----------------------*/ 76 | 77 | #comments-container { 78 | max-width: 600px; 79 | margin: 0 auto; 80 | } 81 | 82 | #comments-container > .comments-level > .comment-wrap { 83 | padding-right: 10px; 84 | border-left: 0; 85 | border-bottom-color: #ddd; 86 | } 87 | 88 | .comment-wrap { 89 | $comment-border: #ececec; 90 | padding: 10px 0 10px 10px; 91 | border-bottom: 1px solid $comment-border; 92 | border-left: 1px solid $comment-border; 93 | } 94 | 95 | .comments-level .comment-wrap:last-child { 96 | border-radius: 0 0 0 4px; 97 | } 98 | 99 | .comment-data { 100 | display: -webkit-box; 101 | display: box; 102 | width: 100%; 103 | font-size: 12px; 104 | } 105 | 106 | .comment-data > div { 107 | -webkit-box-flex: 1; 108 | box-flex: 1; 109 | width: 50%; 110 | } 111 | 112 | .comment-author p { 113 | color: $main-red; 114 | font-weight: 700; 115 | } 116 | 117 | .comment-poster { 118 | position: relative; 119 | } 120 | 121 | .comment-poster::before { 122 | content: "OP"; 123 | position: absolute; 124 | top: -2px; 125 | left: 0; 126 | color: $main-red; 127 | border: 1px solid; 128 | padding: 2px 4px; 129 | border-radius: 2px; 130 | font-size: 10px; 131 | font-weight: 700; 132 | } 133 | 134 | .comment-poster p { 135 | color: $main-red; 136 | font-weight: 700; 137 | position: relative; 138 | left: 28px; 139 | } 140 | 141 | .comment-info { 142 | text-align: right; 143 | width: 50%; 144 | } 145 | 146 | .comment-info a { 147 | color: #aaa; 148 | text-decoration: none; 149 | } 150 | 151 | .comment-body { 152 | -webkit-user-select: text; 153 | user-select: text; 154 | 155 | a { 156 | color: #777; 157 | padding: 2px 3px; 158 | margin-left: -3px; 159 | 160 | &:hover { 161 | border-radius: 4px; 162 | background-color: #e5e5e5; 163 | text-decoration: none; 164 | } 165 | } 166 | 167 | p { 168 | margin: 10px 0; 169 | color: #3D525E; 170 | } 171 | } 172 | 173 | #link-summary { 174 | background-color: #3C444C; 175 | padding-top: 10px; 176 | } 177 | 178 | #link-summary p { 179 | margin: 0; 180 | padding-left: 10px; 181 | } 182 | 183 | #link-summary a { 184 | text-decoration: none; 185 | display: block; 186 | } 187 | 188 | #summary-title { 189 | font-size: 1.2em; 190 | line-height: 22px; 191 | color: #fafafa; 192 | padding-right: 10px; 193 | } 194 | 195 | #summary-time { 196 | color: white; 197 | text-align: center; 198 | } 199 | 200 | #summary-domain { 201 | color: #F7545E; 202 | display: inline; 203 | } 204 | 205 | #summary-author { 206 | color: #E2E2E0; 207 | line-height: 14px; 208 | -webkit-box-flex: 1; 209 | } 210 | 211 | #summary-sub { 212 | color: #FAFAFA; 213 | text-align: left; 214 | } 215 | 216 | #summary-comment-num { 217 | text-align: right; 218 | text-decoration: none; 219 | display: block; 220 | } 221 | 222 | #summary-extra { 223 | display: -webkit-box; 224 | display: box; 225 | background-color: rgba(0, 0, 0, 0.4); 226 | padding: 0 10px; 227 | width: 100%; 228 | font-size: 12px; 229 | border-top: 1px solid #434c55; 230 | border-bottom: 1px solid #0f1113; 231 | } 232 | 233 | #summary-extra p, 234 | #summary-comment-num { 235 | color: #FAFAFA; 236 | -webkit-box-flex: 1; 237 | margin: 0; 238 | padding: 5px 0; 239 | width: 33%; 240 | } 241 | 242 | #summary-footer { 243 | display: -webkit-box; 244 | display: box; 245 | padding-bottom: 10px; 246 | padding-top: 1px; 247 | border-bottom: 1px solid #262b30; 248 | } 249 | 250 | #selftext { 251 | padding: 10px; 252 | margin: 10px; 253 | border-radius: 5px; 254 | border: 1px solid #bbb; 255 | background-color: #ddd; 256 | -webkit-user-select: text; 257 | user-select: text; 258 | box-shadow: inset 0 1px 1px #fff, 0 1px 10px rgba(0, 0, 0, 0.3); 259 | } 260 | 261 | #selftext p { 262 | margin-top: 5px; 263 | } 264 | 265 | #selftext p:last-child { 266 | margin-bottom: 5px; 267 | } 268 | 269 | .preview-container { 270 | padding: 10px; 271 | } 272 | 273 | .image-preview { 274 | margin: 0 auto; 275 | display: block; 276 | border-radius: 3px; 277 | box-shadow: 0 1px 10px rgba(0, 0, 0, 0.6); 278 | max-width: 100%; 279 | } 280 | 281 | /*--------------------- Menu -----------------------------*/ 282 | 283 | #main-menu { 284 | box-shadow: inset -3px 0 10px black; 285 | height: calc(100% - 32px); 286 | } 287 | 288 | .main-view.show-menu { 289 | -webkit-transform: translate3d(140px, 0px, 0px); 290 | transform: translate3d(140px, 0px, 0px); 291 | } 292 | 293 | #edit-subs { 294 | @include size(140px, 32px); 295 | position: fixed; 296 | bottom: 0; 297 | background-color: #262b30; 298 | z-index: 1; 299 | border-top: 1px solid rgba(0, 0, 0, .5); 300 | box-shadow: rgba(255, 255, 255, 0.1) 0px 1px 0px inset; 301 | text-align: center; 302 | } 303 | 304 | .btn-edit-sub { 305 | @include size(50%, 28px); 306 | font-size: 22px; 307 | color: #777; 308 | display: inline-block; 309 | margin: 0; 310 | position: absolute; 311 | top: 50%; 312 | margin-top: -14px; 313 | } 314 | 315 | #btn-add-subs { 316 | left: 0; 317 | } 318 | 319 | #btn-edit-subs { 320 | right: 0; 321 | font-size: 16px; 322 | line-height: 26px; 323 | } 324 | 325 | #subs, 326 | #channels { 327 | padding: 0; 328 | margin: 0; 329 | } 330 | 331 | .sub { 332 | margin: 0; 333 | padding: 8px 10px; 334 | text-transform: capitalize; 335 | white-space: nowrap; 336 | overflow: hidden; 337 | text-overflow: ellipsis; 338 | } 339 | 340 | .sub, 341 | .channel > p, 342 | .option, 343 | #sorting p { 344 | font-size: 12px; 345 | text-shadow: 0 1px 2px #000; 346 | color: whiteSmoke; 347 | } 348 | 349 | .channel { 350 | margin: 0; 351 | font-size: 14px; 352 | padding: 5px 10px; 353 | } 354 | 355 | .channel > p { 356 | margin: 0; 357 | } 358 | 359 | .channel > div { 360 | padding-left: 10px; 361 | } 362 | 363 | .channel > div p { 364 | @extend %overflow-ellipsis; 365 | font-size: 10px; 366 | color: #BBB; 367 | margin: 4px 0; 368 | text-transform: capitalize; 369 | letter-spacing: 1px; 370 | line-height: 14px; 371 | } 372 | 373 | .channel-active { 374 | border-left: 3px solid #4286F5; 375 | } 376 | 377 | .channel-active > p { 378 | text-shadow: 0 0 10px #CCC; 379 | } 380 | 381 | .sub-active { 382 | text-shadow: 0 0 7px #CCC; 383 | border-left: 3px solid #4286F5; 384 | } 385 | 386 | #menu-container { 387 | @include size(140px, 100%); 388 | overflow-y: auto; 389 | overflow-x: hidden; 390 | position: absolute; 391 | z-index: 0; 392 | background-color: #262b30; 393 | } 394 | 395 | #sorting p { 396 | margin: 0; 397 | padding: 8px 10px; 398 | text-transform: capitalize; 399 | } 400 | 401 | .sorting-choice { 402 | border-left: 3px solid; 403 | } 404 | 405 | #main-overflow { 406 | width: 100%; 407 | } 408 | 409 | /*--------------------- Principal -------------------------*/ 410 | 411 | .link { 412 | display: -webkit-box; 413 | display: box; 414 | text-decoration: none; 415 | width: 85%; 416 | padding: 10px; 417 | cursor: none; 418 | -webkit-tap-highlight-color: transparent; 419 | -webkit-box-flex: 1; 420 | box-flex: 1; 421 | 422 | &:active { 423 | background-image: linear-gradient(#599ad2, #3d6fba); 424 | } 425 | 426 | &:focus { 427 | background-color: #eee; 428 | outline: thin; 429 | } 430 | } 431 | 432 | .link-wrap { 433 | border-bottom: 1px solid #dfe6eb; 434 | border-top: 1px solid #fff; 435 | display: -webkit-box; 436 | display: box; 437 | width: 100%; 438 | } 439 | 440 | .link-wrap:first-child { 441 | border-top: 0; 442 | } 443 | 444 | .link-thumb { 445 | -webkit-box-flex: 1; 446 | box-flex: 1; 447 | width: 70px; 448 | max-width: 70px; 449 | min-width: 70px; 450 | } 451 | 452 | .link-thumb div { 453 | @include size(60px); 454 | background-position: center; 455 | background-repeat: no-repeat; 456 | background-size: 70px; 457 | background-color: #333; 458 | margin: 0; 459 | border-radius: 5px; 460 | box-shadow: inset 0 0 3px #333; 461 | } 462 | 463 | .link-title { 464 | font-weight: 600; 465 | font-size: 14px; 466 | -webkit-box-flex: 1; 467 | box-flex: 1; 468 | margin: 0; 469 | color: #3D525E; 470 | } 471 | 472 | .link-info { 473 | -webkit-box-flex: 1; 474 | box-flex: 1; 475 | width: 67%; 476 | } 477 | 478 | .link-domain { 479 | margin: 0; 480 | color: $main-red; 481 | } 482 | 483 | .link-sub { 484 | margin: 0; 485 | color: #6a7f8a; 486 | display: inline; 487 | } 488 | 489 | %bg-blue-gradient { 490 | background-image: linear-gradient(#599ad2, #3d6fba); 491 | } 492 | 493 | .sub, 494 | .channel, 495 | .sort-option { 496 | 497 | &:active { 498 | @extend %bg-blue-gradient; 499 | } 500 | } 501 | 502 | #imp-exp:active { 503 | @extend %bg-blue-gradient; 504 | } 505 | 506 | $active-link-color: #add0eb; 507 | 508 | .link:active, 509 | .link-selected { 510 | @extend %bg-blue-gradient; 511 | 512 | .link-title { 513 | color: white; 514 | text-shadow: 0 1px 0 #000; 515 | } 516 | 517 | .link-domain, 518 | .link-sub, 519 | .link-domain, 520 | .link-sub { 521 | color: $active-link-color; 522 | } 523 | } 524 | 525 | .channel:active div p { 526 | color: $active-link-color; 527 | } 528 | 529 | $nsfw: #D13; 530 | $stickied: #71B0D3; 531 | 532 | .link-label { 533 | font-size: 11px; 534 | margin-left: 5px; 535 | font-weight: 700; 536 | 537 | &.nsfw { 538 | color: $nsfw; 539 | } 540 | 541 | &.stickied { 542 | color: $stickied; 543 | letter-spacing: .3px; 544 | } 545 | } 546 | 547 | .summary-label { 548 | border-radius: 5px; 549 | padding: 1px 3px; 550 | 551 | &.nsfw { 552 | background-color: $nsfw; 553 | color: white; 554 | } 555 | 556 | &.stickied { 557 | background-color: $stickied; 558 | color: white; 559 | } 560 | } 561 | 562 | /*---------------------------- Cabecera -----------------------------*/ 563 | 564 | header { 565 | top: 0; 566 | width: 100%; 567 | position: fixed; 568 | z-index: 2; 569 | display: -webkit-box; 570 | display: box; 571 | height: $header-height; 572 | background-image: url(../img/bg.png); 573 | background-color: #e7e7e7; 574 | border-bottom: 1px solid #777; 575 | border-top: 1px solid #777; 576 | box-shadow: rgba(255, 255, 255, .5) 0 32px 20px -10px inset, 577 | 0 44px 0 rgba(0, 0, 0, .33) inset; 578 | } 579 | 580 | header > div { 581 | -webkit-box-flex: 1; 582 | box-flex: 1; 583 | width: 70%; 584 | display: -webkit-box; 585 | display: box; 586 | -webkit-box-align: center; 587 | box-align: center; 588 | } 589 | 590 | #title { 591 | @extend %overflow-ellipsis; 592 | color: $header-black; 593 | text-shadow: 0 1px 1px #eee; 594 | text-align: center; 595 | font-size: 16px; 596 | width: 100%; 597 | margin: 0; 598 | font-weight: 700; 599 | } 600 | 601 | #header-icon { 602 | background-image: url('../img/alienHead.png'); 603 | background-size: 35px; 604 | background-repeat: no-repeat; 605 | width: 35px; 606 | height: 30px; 607 | margin: 0 auto; 608 | } 609 | 610 | /*-- Botones --*/ 611 | 612 | #nav-back { 613 | transition-duration: 300ms; 614 | } 615 | 616 | .corner { 617 | // width: 15%; 618 | -webkit-box-flex: 1; 619 | box-flex: 1; 620 | display: -webkit-box; 621 | display: box; 622 | -webkit-box-align: center; 623 | box-align: center; 624 | } 625 | 626 | #refresh-icon .icon-btn { 627 | background-image: url('../img/refresh1.png'); 628 | @include size(12px, 16px); 629 | background-repeat: no-repeat; 630 | background-size: 12px; 631 | margin: 0 auto; 632 | } 633 | 634 | #back-arrow, 635 | #refresh-icon { 636 | display: -webkit-box; 637 | display: box; 638 | -webkit-box-align: center; 639 | box-align: center; 640 | } 641 | 642 | #back-arrow { 643 | 644 | .icon-btn { 645 | height: 0; 646 | width: 0; 647 | margin: 0 auto; 648 | border-bottom: 5px solid transparent; 649 | border-right: 10px solid $header-black; 650 | border-top: 5px solid transparent; 651 | } 652 | 653 | &:active .icon-btn { 654 | border-right-color: darken($header-black, 10%); 655 | } 656 | } 657 | 658 | .to-comments { 659 | width: 15%; 660 | display: -webkit-box; 661 | display: box; 662 | -webkit-box-align: center; 663 | box-align: center; 664 | -webkit-box-flex: 1; 665 | box-flex: 1; 666 | 667 | &:active { 668 | background-color: #ddd; 669 | } 670 | } 671 | 672 | .to-comments div { 673 | background-image: url('../img/comment.png'); 674 | width: 24px; 675 | height: 24px; 676 | background-repeat: no-repeat; 677 | background-size: 24px; 678 | margin: 0 auto; 679 | } 680 | 681 | #main-title { 682 | position: fixed; 683 | width: 40%; 684 | font-size: 14px; 685 | top: 14px; 686 | font-weight: 700; 687 | white-space: nowrap; 688 | text-overflow: ellipsis; 689 | overflow: hidden; 690 | } 691 | 692 | #sub-title { 693 | @include letterpress(); 694 | margin: 0 0 0 5px; 695 | padding: 0 5px; 696 | color: $header-black; 697 | border-radius: 5px; 698 | 699 | &:hover { 700 | background-color: lighten($header-black, 25%); 701 | } 702 | 703 | &:active { 704 | @include emboss(); 705 | background-color: lighten($header-black, 20%); 706 | } 707 | } 708 | 709 | /*--- Subreddits ---*/ 710 | 711 | .subreddit { 712 | padding-left: 10px; 713 | border-bottom: 1px solid #CCC; 714 | border-top: 1px solid white; 715 | display: -webkit-box; 716 | display: box; 717 | width: 100%; 718 | } 719 | 720 | .subreddit > div:first-child { 721 | width: 85%; 722 | padding: 10px 5px 10px 0; 723 | -webkit-box-flex: 1; 724 | box-flex: 1; 725 | } 726 | 727 | .btn-add-sub { 728 | width: 15%; 729 | display: -webkit-box; 730 | display: box; 731 | -webkit-box-align: center; 732 | box-align: center; 733 | -webkit-box-flex: 1; 734 | box-flex: 1; 735 | } 736 | 737 | .btn-add-sub > div { 738 | background-image: url('../img/add.png'); 739 | background-repeat: no-repeat; 740 | background-size: 24px; 741 | width: 24px; 742 | height: 24px; 743 | margin: 0 auto; 744 | } 745 | 746 | .subreddit-desc { 747 | margin: 5px 0; 748 | } 749 | 750 | .subreddit-title { 751 | font-weight: 700; 752 | margin: 5px 0; 753 | color: $main-red; 754 | } 755 | 756 | .new-form { 757 | width: 300px; 758 | background-color: #ddd; 759 | box-shadow: 0 0 15px black; 760 | position: absolute; 761 | z-index: 10000; 762 | border-radius: 7px; 763 | padding: 5px; 764 | left: 50%; 765 | margin-left: -150px; 766 | } 767 | 768 | #form-new-channel { 769 | min-height: 160px; 770 | top: 85px; 771 | } 772 | 773 | #form-new-channel input { 774 | width: 100%; 775 | margin-top: 5px; 776 | font-size: 15px; 777 | outline: none; 778 | } 779 | 780 | #txt-channel { 781 | border: 2px solid #AAA !important; 782 | border-radius: 5px; 783 | padding: 5px 10px; 784 | } 785 | 786 | #subs-for-channel { 787 | border-radius: 5px 5px 0 0; 788 | border: 1px solid #AAA; 789 | border-bottom: 0; 790 | margin-top: 5px; 791 | padding: 0 10px; 792 | background-color: #FFF; 793 | max-height: 350px; 794 | overflow-y: auto; 795 | } 796 | 797 | #subs-for-channel input { 798 | border: 0; 799 | border-bottom: 1px solid #CCC; 800 | padding: 5px; 801 | } 802 | 803 | #subs-for-channel input:last-child { 804 | border-bottom: 0; 805 | padding-bottom: 10px; 806 | } 807 | 808 | #btn-add-new-channel { 809 | padding: 5px 10px; 810 | } 811 | 812 | #btn-add-another-sub { 813 | border-bottom-left-radius: 5px; 814 | border-bottom-right-radius: 5px; 815 | padding: 8px 15px; 816 | font-size: 14px; 817 | font-weight: bold; 818 | color: #333; 819 | text-shadow: 0 1px 0 #fff; 820 | border: 1px solid #aaa; 821 | background-image: linear-gradient(#e5e5e5, #bbb); 822 | box-shadow: inset 0 1px 0 0 #fff; 823 | } 824 | 825 | #btn-add-another-sub:active { 826 | box-shadow: inset 0 0 8px 4px #c5c5c5; 827 | } 828 | 829 | .channel-added-msg { 830 | color: white; 831 | font-weight: 700; 832 | padding: 5px 10px; 833 | margin: 0; 834 | background-color: #33B300; 835 | border-radius: 5px; 836 | } 837 | 838 | #form-new-sub { 839 | height: 50px; 840 | top: 50%; 841 | margin-top: -100px; 842 | } 843 | 844 | #form-new-sub input { 845 | width: 100%; 846 | height: 40px; 847 | font-size: 20px; 848 | outline: none; 849 | } 850 | 851 | #add-sub-manual { 852 | padding: 10px; 853 | } 854 | 855 | #remove-wrap { 856 | height: 100%; 857 | } 858 | 859 | .edit-subs-title { 860 | padding: 10px; 861 | font-weight: 700; 862 | font-size: 16px; 863 | margin: 0; 864 | text-align: center; 865 | color: #777; 866 | background-color: rgba(220, 220, 220, 0.4); 867 | text-shadow: 0 1px 1px whiteSmoke; 868 | } 869 | 870 | .remove-list { 871 | margin: 0; 872 | padding: 0; 873 | } 874 | 875 | .item-to-edit { 876 | display: -webkit-box; 877 | display: box; 878 | border-bottom: 1px solid #DDD; 879 | border-top: 1px solid white; 880 | -webkit-box-align: center; 881 | box-align: center; 882 | height: 60px; 883 | } 884 | 885 | .item-to-edit > p { 886 | width: 85%; 887 | text-transform: capitalize; 888 | font-size: 14px; 889 | font-weight: 700; 890 | padding-left: 10px; 891 | } 892 | 893 | .item-to-edit .channel-name { 894 | width: 70%; 895 | } 896 | 897 | .item-to-edit > div { 898 | width: 15%; 899 | height: 100%; 900 | background-repeat: no-repeat; 901 | background-position: center; 902 | } 903 | 904 | .item-to-edit .btn-remove-channel, 905 | .item-to-edit .btn-remove-subreddit { 906 | background-image: url('../img/delete.png'); 907 | background-size: 22px; 908 | } 909 | 910 | .item-to-edit .btn-edit-channel { 911 | background-image: url('../img/edit.png'); 912 | background-size: 16px; 913 | } 914 | 915 | /*--- Constantes ---*/ 916 | 917 | .invisible { 918 | opacity: 0; 919 | } 920 | 921 | .hide { 922 | display: none !important; 923 | } 924 | 925 | .show-view { 926 | -webkit-transform: translate3d(0, 0, 0); 927 | transform: translate3d(0, 0, 0); 928 | } 929 | 930 | .slide-transition { 931 | transition-duration: 300ms; 932 | } 933 | 934 | #modal { 935 | position: absolute; 936 | top: 0; 937 | left: 0; 938 | width: 100%; 939 | height: 100%; 940 | background-color: rgba(0, 0, 0, .7); 941 | transition-duration: 300ms; 942 | opacity: 0; 943 | z-index: 9999; 944 | } 945 | 946 | .close-form { 947 | position: absolute; 948 | top: -30px; 949 | z-index: 10001; 950 | right: 0; 951 | color: whiteSmoke; 952 | background-image: url('../img/cancel.png'); 953 | width: 60px; 954 | background-repeat: no-repeat; 955 | padding-left: 20px; 956 | font-weight: 700; 957 | background-size: 18px; 958 | } 959 | 960 | .form-left-corner { 961 | position: absolute; 962 | top: -30px; 963 | z-index: 10001; 964 | left: 0; 965 | } 966 | 967 | .option { 968 | padding: 10px; 969 | letter-spacing: 1px; 970 | } 971 | 972 | .option:last-child { 973 | margin-bottom: 15px; 974 | } 975 | 976 | .menu-desc { 977 | color: rgba(255, 255, 255, 0.82); 978 | font-size: 11px; 979 | text-transform: uppercase; 980 | text-shadow: rgba(0, 0, 0, 0.7) 0px 1px 0px; 981 | margin: 0px; 982 | width: 100%; 983 | padding-left: 10px; 984 | height: 35px; 985 | line-height: 35px; 986 | box-sizing: border-box; 987 | background: rgba(0, 0, 0, 0.20); 988 | border-top: 1px solid #111; 989 | border-bottom: 1px solid #111; 990 | box-shadow: rgba(255, 255, 255, 0.1) 0px 1px 0px, rgba(255, 255, 255, 0.1) 0px 1px 0px inset; 991 | position: relative; 992 | } 993 | 994 | .move-data { 995 | top: 80px; 996 | padding: 10px; 997 | } 998 | 999 | .move-data h3, 1000 | .move-data p { 1001 | text-shadow: 0 1px 0 #fff; 1002 | } 1003 | 1004 | .move-data h3 { 1005 | text-align: center; 1006 | margin: 5px 0; 1007 | } 1008 | 1009 | .move-data p { 1010 | text-align: left; 1011 | margin: 10px 0; 1012 | } 1013 | 1014 | .move-data-exp { 1015 | border-bottom: 1px solid #999; 1016 | padding: 10px 10px 20px; 1017 | } 1018 | 1019 | .move-data-imp { 1020 | border-top: 1px solid #fff; 1021 | padding: 10px; 1022 | text-align: center; 1023 | } 1024 | 1025 | .move-data-field { 1026 | @include size(100%, 70px); 1027 | } 1028 | 1029 | .view-footer { 1030 | @include size(100%, 26px); 1031 | display: none; 1032 | position: absolute; 1033 | bottom: 0; 1034 | background-image: linear-gradient(#d5d5d5, #b0b0b0); 1035 | border-top: 1px solid #aaa; 1036 | box-shadow: inset 0 1px 1px #eee; 1037 | } 1038 | 1039 | .view-footer p { 1040 | line-height: 25px; 1041 | margin: 0 auto; 1042 | text-align: center; 1043 | font-size: 12px; 1044 | width: 70%; 1045 | white-space: nowrap; 1046 | text-overflow: ellipsis; 1047 | overflow: hidden; 1048 | } 1049 | 1050 | .footer-refresh { 1051 | background-image: url('../img/refresh1.png'); 1052 | top: 4px; 1053 | right: 10px; 1054 | width: 12px; 1055 | height: 15px; 1056 | background-size: 12px 15px; 1057 | } 1058 | 1059 | #detail-close { 1060 | background-image: url('../img/close.png'); 1061 | opacity: .7; 1062 | top: 3px; 1063 | left: 7px; 1064 | width: 18px; 1065 | height: 18px; 1066 | background-size: 18px; 1067 | } 1068 | 1069 | @media only screen and (-webkit-min-device-pixel-ratio: 2) { 1070 | 1071 | .to-comments div { 1072 | background-image: url('../img/comment@2x.png'); 1073 | } 1074 | 1075 | .btn-add-sub > div { 1076 | background-image: url('../img/add@2.png') 1077 | } 1078 | ; 1079 | 1080 | .item-to-edit .btn-remove-channel, 1081 | .item-to-edit .btn-remove-subreddit { 1082 | background-image: url('../img/delete@2x.png'); 1083 | } 1084 | 1085 | .btn-share { 1086 | background-image: url(../img/share@2x.png); 1087 | } 1088 | } 1089 | 1090 | /* Tablet Portrait / 'LargeScreen' */ 1091 | @media only screen and (min-width: 490px) { 1092 | 1093 | .main-view { 1094 | -webkit-transform: none !important; 1095 | transform: none !important; 1096 | } 1097 | 1098 | #sub-title { 1099 | pointer-events: none; 1100 | } 1101 | } 1102 | 1103 | @media only screen and (min-width: 490px) and (max-width: 759px) { 1104 | 1105 | #menu-container, 1106 | #edit-subs { 1107 | width: 28%; 1108 | } 1109 | 1110 | .main-view, 1111 | .detail-view { 1112 | left: 28%; 1113 | width: 72%; 1114 | } 1115 | } 1116 | 1117 | @media only screen and (min-width: 760px) and (max-width: 999px) { 1118 | 1119 | #menu-container, 1120 | #edit-subs { 1121 | width: 22%; 1122 | } 1123 | 1124 | .main-view, 1125 | .detail-view { 1126 | left: 22%; 1127 | width: 78%; 1128 | } 1129 | } 1130 | 1131 | /* Tablet Landscape / 'WideScreen' */ 1132 | 1133 | @media only screen and (min-width: 1000px) { 1134 | 1135 | body { 1136 | border-top: 1px solid #aaa; 1137 | 1138 | &.inactive { 1139 | border-top-color: #ddd; 1140 | } 1141 | } 1142 | 1143 | #menu-container, 1144 | #edit-subs { 1145 | width: 16%; 1146 | } 1147 | 1148 | .main-view { 1149 | width: 34%; 1150 | left: 16%; 1151 | } 1152 | 1153 | .detail-view { 1154 | width: 50%; 1155 | right: 0; 1156 | left: auto; 1157 | border-left: 1px solid #999; 1158 | -webkit-transform: none; 1159 | transform: none; 1160 | } 1161 | 1162 | header, 1163 | .to-comments { 1164 | display: none; 1165 | } 1166 | 1167 | .link { 1168 | width: 100%; 1169 | } 1170 | 1171 | .view { 1172 | top: 0; 1173 | transition-duration: 0s; 1174 | } 1175 | 1176 | #edit-subs { 1177 | height: 26px !important; 1178 | } 1179 | 1180 | #btn-edit-subs { 1181 | line-height: 20px; 1182 | } 1183 | 1184 | .btn-edit-sub { 1185 | font-size: 18px; 1186 | margin-top: -11px; 1187 | height: 22px; 1188 | } 1189 | 1190 | .wrapper { 1191 | height: calc(100% - 26px) !important; 1192 | } 1193 | 1194 | .view-footer { 1195 | display: block; 1196 | } 1197 | } 1198 | 1199 | /* Wide-ass stuff */ 1200 | @media only screen and (min-width: 1150px) { 1201 | #main-menu, 1202 | #edit-subs { 1203 | width: 180px; 1204 | } 1205 | 1206 | .main-view { 1207 | width: 390px; 1208 | left: 180px; 1209 | } 1210 | 1211 | .detail-view { 1212 | left: 570px; 1213 | width: auto; 1214 | } 1215 | } 1216 | 1217 | @media only screen and (min-height: 890px) { 1218 | #main-menu { 1219 | height: 96%; 1220 | } 1221 | 1222 | #edit-subs { 1223 | height: 4%; 1224 | } 1225 | } 1226 | 1227 | @import "animations"; 1228 | -------------------------------------------------------------------------------- /img/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/add.png -------------------------------------------------------------------------------- /img/add@2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/add@2.png -------------------------------------------------------------------------------- /img/alienHead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/alienHead.png -------------------------------------------------------------------------------- /img/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/bg.png -------------------------------------------------------------------------------- /img/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/cancel.png -------------------------------------------------------------------------------- /img/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/close.png -------------------------------------------------------------------------------- /img/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/comment.png -------------------------------------------------------------------------------- /img/comment@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/comment@2x.png -------------------------------------------------------------------------------- /img/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/delete.png -------------------------------------------------------------------------------- /img/delete@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/delete@2x.png -------------------------------------------------------------------------------- /img/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/edit.png -------------------------------------------------------------------------------- /img/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/icon.png -------------------------------------------------------------------------------- /img/icon144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/icon144.png -------------------------------------------------------------------------------- /img/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/refresh.png -------------------------------------------------------------------------------- /img/refresh1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/refresh1.png -------------------------------------------------------------------------------- /img/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/share.png -------------------------------------------------------------------------------- /img/share@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berbaquero/Reeddit-app/eb353f24f1b8a57210b5bfdd8935358369b05743/img/share@2x.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Reeddit 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 |

26 |
27 | 30 |
31 |
32 |

33 |
34 |
35 |
36 |
37 |
38 | 39 | 62 | 63 |
64 |
65 | 69 |
70 | 71 |
72 |
73 | 78 |
79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /index.jade: -------------------------------------------------------------------------------- 1 | doctype html 2 | html 3 | 4 | head 5 | 6 | title ​ 7 | 8 | meta(charset="utf-8") 9 | 10 | link(rel="stylesheet", href="css/normalize.css") 11 | 12 | link(rel="stylesheet", href="css/reeddit.css") 13 | 14 | link(rel="stylesheet", href="css/desk.css") 15 | 16 | 17 | 18 | body 19 | 20 | header 21 | 22 | div#main-title 23 | 24 | p#sub-title 25 | 26 | section#nav-back.corner.invisible 27 | 28 | div#back-arrow.button.btn-to-main 29 | 30 | div.icon-btn 31 | 32 | div#title-head 33 | 34 | div#header-icon 35 | 36 | p#title 37 | 38 | section.corner 39 | 40 | div#refresh-icon.button.btn-refresh 41 | 42 | div.icon-btn 43 | 44 | 45 | 46 | nav#menu-container 47 | 48 | div.view 49 | 50 | div#edit-subs 51 | 52 | span#btn-add-subs.btn-edit-sub + 53 | 54 | span#btn-edit-subs.btn-edit-sub ••• 55 | 56 | div#main-menu.wrapper 57 | 58 | div.menu-desc Subreddits 59 | 60 | span#btn-new-sub.btn-side-menu-add + 61 | 62 | ul#subs 63 | 64 | div.menu-desc Channels 65 | 66 | span#btn-new-channel.btn-side-menu-add + 67 | 68 | ul#channels 69 | 70 | div.menu-desc Sorting 71 | 72 | div#sorting 73 | 74 | p.sort-option.sorting-choice hot 75 | 76 | p.sort-option new 77 | 78 | p.sort-option controversial 79 | 80 | p.sort-option top 81 | 82 | div.menu-desc Options 83 | 84 | div#imp-exp.option Import & Export Data 85 | 86 | 87 | 88 | section.view.main-view.show-view 89 | 90 | section#main-wrap.wrapper 91 | 92 | div#main-footer.view-footer 93 | 94 | p#footer-sub 95 | 96 | div(class="btn-footer footer-refresh btn-refresh", data-origin="footer-main") 97 | 98 | 99 | 100 | section.view.detail-view 101 | 102 | section#detail-wrap.wrapper 103 | 104 | div#detail-footer.view-footer 105 | 106 | div#detail-close.btn-footer.hide.btn-to-main 107 | 108 | p#footer-post 109 | 110 | div(class="btn-footer footer-refresh btn-refresh hide", data-origin="footer-detail") 111 | 112 | 113 | 114 | script(src="js/libs.js") 115 | 116 | script(src="js/dom.js") 117 | 118 | script(src="js/reeddit.js") 119 | 120 | script(src="js/sharing.js") 121 | -------------------------------------------------------------------------------- /js/dom.js: -------------------------------------------------------------------------------- 1 | var doc = window.document; 2 | 3 | // Selection 4 | 5 | function $id(id) { // id: String - element id 6 | return doc.getElementById(id); 7 | } 8 | 9 | function $q(q) { // q: String - selector query 10 | return doc.querySelector(q); 11 | } 12 | 13 | function $qAll(q) { // q: String - selector query 14 | return doc.querySelectorAll(q); 15 | } 16 | 17 | // Manipulation 18 | 19 | function $el(el, c, id) { // el: String - html element 20 | var n = doc.createElement(el); 21 | if (c) n.className = c; 22 | if (id) n.id = id; 23 | return n; 24 | } 25 | 26 | function $append(par, chi) { // par: DOM Node - the container/parent, chi: DOM Node or String - the appendee/child 27 | if (typeof chi === "string") { 28 | var el = $el("div"); 29 | el.innerHTML = chi; 30 | while (el.childNodes.length > 0) { 31 | par.appendChild(el.childNodes[0]); 32 | } 33 | } else { 34 | par.appendChild(chi); 35 | } 36 | } 37 | 38 | function $prepend(par, chi) { // par: DOM Node - the container/parent, chi: DOM Node or String - the prependee/child 39 | if (typeof chi === "string") { 40 | var el = $el("div"); 41 | el.innerHTML = chi; 42 | while (el.childNodes.length > 0) { 43 | par.insertBefore(el.childNodes[0], par.childNodes[0]); 44 | } 45 | } else { 46 | par.insertBefore(chi, par.childNodes[0]); 47 | } 48 | } 49 | 50 | function $html(el, html) { 51 | el.innerHTML = html; 52 | } 53 | 54 | function $empty(el) { 55 | $html(el, ""); 56 | } 57 | 58 | function $text(el, s) { 59 | el.textContent = s; 60 | } 61 | 62 | function $remove(el) { 63 | if (el) el.parentNode.removeChild(el); 64 | } 65 | 66 | // Classes 67 | 68 | function $addClass(el, c) { 69 | if (el) el.classList.add(c); 70 | } 71 | 72 | function $removeClass(el, c) { 73 | if (el) el.classList.remove(c); 74 | } 75 | 76 | // Events 77 | 78 | function clickable(el, delegatedSelector, callback) { 79 | el.addEventListener("click", function(e) { 80 | var del = delegation(e, delegatedSelector); 81 | if (del.found) { 82 | e.preventDefault(); 83 | callback(del.target); 84 | } 85 | }); 86 | } 87 | 88 | function delegate(el, delegatedSelector, eventName, callback) { 89 | el.addEventListener(eventName, function(e) { 90 | var del = delegation(e, delegatedSelector); 91 | if (del.found) { 92 | callback(del.ev, del.target); 93 | } 94 | }); 95 | } 96 | 97 | function delegation(e, selector) { 98 | var currentTarget = e.target, 99 | found = false, 100 | isID = selector.charCodeAt(0) === 35, // # 101 | keyword = selector.substring(1); 102 | while (currentTarget) { 103 | var discriminator = false; 104 | if (isID) { 105 | discriminator = currentTarget.id === keyword; 106 | } else { 107 | if (currentTarget.className) { 108 | discriminator = currentTarget.className.split(" ").indexOf(keyword) >= 0; 109 | } 110 | } 111 | if (discriminator) { 112 | found = true; 113 | break; 114 | } else { 115 | currentTarget = currentTarget.parentNode; 116 | } 117 | } 118 | return { 119 | "found": found, 120 | "target": currentTarget, 121 | "ev": e 122 | }; 123 | } 124 | -------------------------------------------------------------------------------- /js/libs.js: -------------------------------------------------------------------------------- 1 | // Mustache.js 2 | var Mustache="undefined"!==typeof module&&module.exports||{}; 3 | (function(j){function H(a){return String(a).replace(/&(?!\w+;)|[<>"']/g,function(a){return I[a]||a})}function u(a,c,d,e){for(var e=e||"