├── README.md ├── css ├── styles-appdetailsview.css ├── styles-trollapps-other.css └── styles-trollapps.css ├── index.html ├── js ├── default-sources.js └── index.js └── repo ├── app-details └── index.html └── index.html /README.md: -------------------------------------------------------------------------------- 1 | # trollapps-web 2 | 3 | web version of trollapps -------------------------------------------------------------------------------- /css/styles-appdetailsview.css: -------------------------------------------------------------------------------- 1 | .page-top-appdetails { 2 | position: fixed; 3 | width: 100%; 4 | height: 200px; 5 | z-index: 50000; 6 | background-color: rgba(255, 255, 255, 0.75); 7 | margin-bottom: 900px; 8 | -webkit-backdrop-filter: saturate(180%) blur(20px); 9 | backdrop-filter: saturate(180%) blur(20px); 10 | } 11 | 12 | .page-header-appdetails { 13 | position: fixed; 14 | top: 96px; /* Adjust the top distance as needed */ 15 | left: 42px; /* Adjust the left distance as needed */ 16 | } 17 | 18 | @media only screen and (max-width: 768px) { 19 | .page-top-appdetails { 20 | margin-bottom: 900px; 21 | height: 320px; 22 | } 23 | 24 | .page-header-appdetails { 25 | top: 32px; 26 | } 27 | } 28 | 29 | @media (prefers-color-scheme: dark) { 30 | .page-top-appdetails { 31 | background-color: rgba(0, 0, 0, 0.75); 32 | } 33 | } -------------------------------------------------------------------------------- /css/styles-trollapps-other.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: Arial, sans-serif; 3 | display: flex; 4 | flex-direction: column; /* Stack flex containers vertically */ 5 | min-height: 100vh; /* Ensure the body takes at least the full height of the viewport */ 6 | margin: 0; 7 | } 8 | 9 | .container { 10 | text-align: center; 11 | } 12 | 13 | .add-button { 14 | position: fixed; 15 | background-color: transparent; 16 | border: none; 17 | cursor: pointer; 18 | color: #007BFF; 19 | top: 25px; 20 | right: 25px; 21 | font-size: 2em; 22 | } 23 | 24 | #links-container { 25 | padding: 10px; 26 | text-align: left; 27 | max-width: 80%; 28 | min-width: 80%; 29 | background-color: #f2f2f2; 30 | border-radius: 16px; 31 | margin: auto; 32 | margin-top: 200px; /* Adjust the top margin to create space for the fixed header and button */ 33 | overflow: auto; 34 | } 35 | 36 | .link-item { 37 | margin-bottom: 15px !important; 38 | margin-top: 10px; 39 | border-bottom: 1px solid #ccc; 40 | padding: 20px; 41 | border-radius: 16px; 42 | position: relative; 43 | cursor: pointer; 44 | transition: background-color 0.3s ease; 45 | } 46 | 47 | .link-item:hover, 48 | .link-item:active { 49 | background-color: #d9d9d9; 50 | } 51 | 52 | .link-item:hover .link-item-button::before, 53 | .link-item:active .link-item-button::before { 54 | color: #0056b3; 55 | } 56 | 57 | .link-item-button { 58 | position: absolute; 59 | top: 50%; 60 | right: 0; 61 | margin-right: 20px; 62 | transform: translateY(-80%); 63 | cursor: pointer; 64 | line-height: 1; 65 | } 66 | 67 | .link-item-button::before { 68 | content: '>'; 69 | font-size: 1.2em; 70 | line-height: 0.8; 71 | transition: color 0.3s ease; 72 | } 73 | 74 | .link-item-content { 75 | display: flex; 76 | align-items: center; 77 | } 78 | 79 | .link-item-content img { 80 | width: 50px; 81 | height: 50px; 82 | border-radius: 10px; 83 | } 84 | 85 | .link-item-content span { 86 | font-weight: bold; 87 | margin-left: 10px; 88 | font-size: 16px; 89 | vertical-align: middle; 90 | } 91 | 92 | .link-item:last-child { 93 | margin-bottom: 0; 94 | } 95 | 96 | .page-header { 97 | position: fixed; 98 | top: 55px; /* Adjust the top distance as needed */ 99 | left: 42px; /* Adjust the left distance as needed */ 100 | } 101 | 102 | .page-top { 103 | position: fixed; 104 | width: 100%; 105 | height: 200px; 106 | z-index: 50000; 107 | background-color: rgba(255, 255, 255, 0.75); 108 | margin-bottom: 800px; 109 | -webkit-backdrop-filter: saturate(180%) blur(20px); 110 | backdrop-filter: saturate(180%) blur(20px); 111 | } 112 | 113 | @media only screen and (max-width: 768px) { 114 | .page-top { 115 | margin-bottom: 1000px; 116 | height: 140px; 117 | } 118 | } 119 | 120 | #app-details-container { 121 | position: relative; 122 | padding: 10px; 123 | text-align: left; 124 | max-width: 80%; 125 | min-width: 80%; 126 | border-radius: 16px; 127 | margin: auto; 128 | margin-top: 64px; 129 | overflow: auto; 130 | } 131 | 132 | .app-icon { 133 | width: 80px; 134 | height: 80px; 135 | border-radius: 16px; 136 | margin-right: 20px; 137 | } 138 | 139 | .app-details { 140 | display: flex; 141 | align-items: center; 142 | } 143 | 144 | .app-info { 145 | flex: 1; 146 | } 147 | 148 | .app-actions { 149 | position: absolute; 150 | margin-top: 155px; 151 | display: flex; 152 | } 153 | 154 | .app-actions button { 155 | padding: 10px; 156 | font-size: 16px; 157 | margin-bottom: 10px; 158 | background-color: #ededed; 159 | border-radius: 50px; 160 | } 161 | 162 | .app-actions select { 163 | padding: 10px; 164 | font-size: 16px; 165 | margin-bottom: 10px; 166 | background-color: white; 167 | border: none; 168 | border-radius: 50px; 169 | } 170 | 171 | .screenshots-container { 172 | margin-top: 64px; 173 | overflow-x: auto; 174 | white-space: nowrap; 175 | } 176 | 177 | .screenshots-container img { 178 | width: auto; 179 | height: 512px; 180 | border-radius: 24px; 181 | margin-right: 10px; 182 | } 183 | 184 | footer { 185 | background-color: #fff; 186 | color: rgba(0, 0, 0, 0.4); 187 | text-align: center; 188 | padding: 10px 0; 189 | } 190 | 191 | @media (prefers-color-scheme: dark) { 192 | footer { 193 | background-color: #000; 194 | color: rgba(255, 255, 255, 0.5); 195 | } 196 | 197 | body { 198 | background-color: #000; 199 | color: #fff; 200 | } 201 | 202 | .page-top { 203 | background-color: rgba(0, 0, 0, 0.75); 204 | } 205 | 206 | #links-container { 207 | background-color: #131313; 208 | } 209 | 210 | .link-item { 211 | border-bottom: 1px solid #212121; 212 | } 213 | 214 | .link-item:hover, 215 | .link-item:active { 216 | background-color: #262626; 217 | } 218 | 219 | .link-item-button::before { 220 | opacity: 0.5; 221 | } 222 | 223 | .app-actions button { 224 | padding: 10px; 225 | font-size: 16px; 226 | margin-bottom: 10px; 227 | background-color: #131313; 228 | border-radius: 50px; 229 | border: 1px solid #181818; 230 | } 231 | 232 | .app-actions select { 233 | background-color: #000000; 234 | border: none; 235 | } 236 | } -------------------------------------------------------------------------------- /css/styles-trollapps.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: Arial, sans-serif; 3 | display: flex; 4 | flex-direction: column; /* Stack flex containers vertically */ 5 | min-height: 100vh; /* Ensure the body takes at least the full height of the viewport */ 6 | margin: 0; 7 | } 8 | 9 | .container { 10 | text-align: center; 11 | } 12 | 13 | .add-button { 14 | position: fixed; 15 | background-color: transparent; 16 | border: none; 17 | cursor: pointer; 18 | color: #007BFF; 19 | top: 25px; 20 | right: 25px; 21 | font-size: 2em; 22 | } 23 | 24 | #links-container { 25 | padding: 10px; 26 | text-align: left; 27 | max-width: 80%; 28 | min-width: 80%; 29 | background-color: #f2f2f2; 30 | border-radius: 16px; 31 | margin: auto; 32 | margin-top: 200px; /* Adjust the top margin to create space for the fixed header and button */ 33 | overflow: auto; 34 | } 35 | 36 | .link-item { 37 | margin-bottom: 15px !important; 38 | margin-top: 10px; 39 | border-bottom: 1px solid #ccc; 40 | padding: 20px; 41 | border-radius: 16px; 42 | position: relative; 43 | cursor: pointer; 44 | transition: background-color 0.3s ease; 45 | } 46 | 47 | .link-item:hover, 48 | .link-item:active { 49 | background-color: #d9d9d9; 50 | } 51 | 52 | .link-item:hover .link-item-button::before, 53 | .link-item:active .link-item-button::before { 54 | color: #0056b3; 55 | } 56 | 57 | .link-item-button { 58 | position: absolute; 59 | top: 50%; 60 | right: 0; 61 | margin-right: 20px; 62 | transform: translateY(-80%); 63 | cursor: pointer; 64 | line-height: 1; 65 | opacity: 1; 66 | } 67 | 68 | .link-item-button::before { 69 | content: '>'; 70 | font-size: 1.2em; 71 | line-height: 0.8; 72 | transition: color 0.3s ease; 73 | } 74 | 75 | .link-item-content { 76 | display: flex; 77 | align-items: center; 78 | } 79 | 80 | .link-item-content img { 81 | width: 50px; 82 | height: 50px; 83 | border-radius: 50px; 84 | } 85 | 86 | .link-item-content span { 87 | font-weight: bold; 88 | margin-left: 10px; 89 | font-size: 16px; 90 | vertical-align: middle; 91 | } 92 | 93 | .link-item:last-child { 94 | margin-bottom: 0; 95 | } 96 | 97 | .page-header { 98 | position: fixed; 99 | top: 55px; /* Adjust the top distance as needed */ 100 | left: 42px; /* Adjust the left distance as needed */ 101 | } 102 | 103 | .page-top { 104 | position: fixed; 105 | width: 100%; 106 | height: 200px; 107 | z-index: 50000; 108 | background-color: rgba(255, 255, 255, 0.75); 109 | margin-bottom: 800px; 110 | -webkit-backdrop-filter: saturate(180%) blur(20px); 111 | backdrop-filter: saturate(180%) blur(20px); 112 | } 113 | 114 | @media only screen and (max-width: 768px) { 115 | .page-top { 116 | margin-bottom: 1000px; 117 | height: 140px; 118 | } 119 | } 120 | 121 | #app-details-container { 122 | position: relative; 123 | padding: 10px; 124 | text-align: left; 125 | max-width: 80%; 126 | min-width: 80%; 127 | border-radius: 16px; 128 | margin: auto; 129 | margin-top: 64px; 130 | overflow: auto; 131 | } 132 | 133 | .app-icon { 134 | width: 80px; 135 | height: 80px; 136 | border-radius: 16px; 137 | margin-right: 20px; 138 | } 139 | 140 | .app-details { 141 | display: flex; 142 | align-items: center; 143 | } 144 | 145 | .app-info { 146 | flex: 1; 147 | } 148 | 149 | .app-actions { 150 | position: absolute; 151 | margin-top: 155px; 152 | display: flex; 153 | } 154 | 155 | .app-actions button { 156 | padding: 10px; 157 | font-size: 16px; 158 | margin-bottom: 10px; 159 | } 160 | 161 | .app-actions select { 162 | padding: 10px; 163 | font-size: 16px; 164 | margin-bottom: 10px; 165 | } 166 | 167 | .screenshots-container { 168 | margin-top: 64px; 169 | overflow-x: auto; 170 | white-space: nowrap; 171 | } 172 | 173 | .screenshots-container img { 174 | width: auto; 175 | height: 512px; 176 | border-radius: 24px; 177 | margin-right: 10px; 178 | } 179 | 180 | footer { 181 | background-color: #fff; 182 | color: rgba(0, 0, 0, 0.4); 183 | text-align: center; 184 | padding: 10px 0; 185 | } 186 | 187 | @media (prefers-color-scheme: dark) { 188 | footer { 189 | background-color: #000; 190 | color: rgba(255, 255, 255, 0.5); 191 | } 192 | 193 | body { 194 | background-color: #000; 195 | color: #fff; 196 | } 197 | 198 | .page-top { 199 | background-color: rgba(0, 0, 0, 0.75); 200 | } 201 | 202 | #links-container { 203 | background-color: #131313; 204 | } 205 | 206 | .link-item { 207 | border-bottom: 1px solid #212121; 208 | } 209 | 210 | .link-item:hover, 211 | .link-item:active { 212 | background-color: #262626; 213 | } 214 | 215 | .link-item-button::before { 216 | opacity: 0.5; 217 | } 218 | } 219 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |