A rewrite of Poly+, my quality-of-life browser extension for Polytoria. Built entirely fresh using the WXT extension framework, Typescript, and with added better overall code quality.
extension
1<!doctype html> 2<html> 3 <head> 4 <!-- META TAGS --> 5 <meta charset="utf-8" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1" /> 7 8 <!-- PUBLIC --> 9 <title>Poly+ Preferences</title> 10 </head> 11 <body data-bs-theme="dark"> 12 <dialog class="w-50" id="ResetDefaults-Modal"> 13 <div class="modal-header"> 14 <p>Are you sure?</p> 15 </div> 16 <div class="modal-body"> 17 <p>Are you sure you'd like to reset all settings to their defaults? (this action is irreversible)</p> 18 <button id="ResetDefaults-Modal-Yes" class="btn btn-danger">Yes</button> 19 <button id="ResetDefaults-Modal-No" class="btn btn-primary">No</button> 20 </div> 21 </dialog> 22 <dialog class="w-50" id="ThemeCreator-Modal" data-setting="ThemeCreator"> 23 <div class="modal-header"> 24 <p>Theme Creator</p> 25 </div> 26 <div class="modal-body"> 27 <p>Let out your creativity and turn it into a reality on Polytoria's website!</p> 28 <hr class="mt-3 mb-3" /> 29 30 <label>Save Theme to JSON</label> 31 <div class="input-group mb-3"> 32 <input id="SaveThemeToJSONInput" type="text" class="form-control bg-dark ignore" placeholder="JSON String..." disabled /> 33 <button id="CopyThemeJSONBtn" class="btn btn-warning">Copy</button> 34 </div> 35 36 <label>Load Theme from JSON</label> 37 <div class="input-group"> 38 <input type="text" class="form-control bg-dark ignore" placeholder="JSON..." /> 39 <button id="LoadThemeFromJSONBtn" class="btn btn-success ignore">Load</button> 40 </div> 41 42 <hr class="mt-2 mb-3" /> 43 44 <div class="card mb-2"> 45 <div class="card-header">Navigation</div> 46 <div class="card-body"> 47 <label>Navbar Background Color</label> 48 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="NavBGColor" /> 49 50 <label>Navbar Border Color</label> 51 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="NavBorderColor" /> 52 53 <label>Sidebar Background Color</label> 54 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="SideBGColor" /> 55 56 <label>Sidebar Border Color</label> 57 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="SideBorderColor" /> 58 59 <hr class="navbar-divider" /> 60 61 <label>Navbar Item Color</label> 62 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="NavItemColor" /> 63 64 <label>Sidebar Item Background Color</label> 65 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="SideItemBGColor" /> 66 67 <label>Sidebar Item Border Color</label> 68 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="SideItemBorderColor" /> 69 70 <label>Sidebar Item Color</label> 71 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="SideItemColor" /> 72 73 <label>Sidebar Item Label Color</label> 74 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="SideItemLabelColor" /> 75 </div> 76 </div> 77 78 <div class="card mb-2"> 79 <div class="card-header">Background</div> 80 <div class="card-body"> 81 <label>Background Color</label> 82 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="BGColor" /> 83 84 <label>Background Image (URL)</label> 85 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="BGImage" /> 86 87 <label>Background Image Size (if there is a background image)</label> 88 <select class="form-select bg-dark mb-2" data-setting="BGImageSize"> 89 <option value="fit" selected>Fit (default)</option> 90 <option value="cover">Cover</option> 91 <option value="contain">Contain</option> 92 </select> 93 </div> 94 </div> 95 96 <div class="card mb-2"> 97 <div class="card-header">Text</div> 98 <div class="card-body"> 99 <label>Primary Text Color</label> 100 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="PrimaryTextColor" /> 101 102 <label>Secondary Text Color</label> 103 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="SecondaryTextColor" /> 104 105 <div class="row"> 106 <div class="col"> 107 <label>Link (state: default) Text Color</label> 108 </div> 109 <div class="col"> 110 <label>Link (state: hovered) Text Color</label> 111 </div> 112 <div class="col"> 113 <label>Link (state: focused) Text Color</label> 114 </div> 115 </div> 116 117 <div class="input-group"> 118 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="LinkTextColor" /> 119 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="LinkHoveredTextColor" /> 120 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="LinkFocusedTextColor" /> 121 </div> 122 </div> 123 </div> 124 125 <div class="card mb-2"> 126 <div class="card-header">Cards</div> 127 <div class="card-body"> 128 <label>Card (Header) Background Color</label> 129 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="CardHeadBGColor" /> 130 131 <label>Card (Body) Background Color</label> 132 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="CardBodyBGColor" /> 133 134 <label>Card Border Color</label> 135 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="CardBorderColor" /> 136 </div> 137 </div> 138 139 <div class="card mb-2"> 140 <div class="card-header">Branding</div> 141 <div class="card-body"> 142 <label>Website Logo (URL)</label> 143 <input class="form-control bg-dark mb-2" placeholder="..." data-setting="WebsiteLogo" /> 144 </div> 145 </div> 146 147 <div role="group" class="btn-group w-100"> 148 <button class="btn btn-success w-25" data-setting="[save]">Save</button> 149 <button class="btn btn-warning w-25" data-setting="[reset-default]">Reset to Defaults</button> 150 <button class="btn btn-secondary w-25" data-setting="[cancel]">Cancel</button> 151 </div> 152 </div> 153 </dialog> 154 <dialog class="w-50" id="ModifyNav-Modal" data-setting="ModifyNav"> 155 <div class="modal-header"> 156 <p>Modify Navbar</p> 157 </div> 158 <div class="modal-body"> 159 <p>Customize the navbar to your liking!</p> 160 <hr class="mt-2 mb-3" /> 161 <div class="card mb-2"> 162 <div class="card-header">#1 Navbar Item</div> 163 <div class="card-body"> 164 <label>Label</label> 165 <input class="form-control bg-dark mb-2" placeholder="Play" data-parent="0" data-setting="Label" /> 166 167 <label>Link</label> 168 <input class="form-control bg-dark mb-2" placeholder="https://polytoria.com/places/" data-parent="0" data-setting="Link" /> 169 </div> 170 </div> 171 <div class="card mb-2"> 172 <div class="card-header">#2 Navbar Item</div> 173 <div class="card-body"> 174 <label>Label</label> 175 <input class="form-control bg-dark mb-2" placeholder="Store" data-parent="1" data-setting="Label" /> 176 177 <label>Link</label> 178 <input class="form-control bg-dark mb-2" placeholder="https://polytoria.com/store/" data-parent="1" data-setting="Link" /> 179 </div> 180 </div> 181 <div class="card mb-2"> 182 <div class="card-header">#3 Navbar Item</div> 183 <div class="card-body"> 184 <label>Label</label> 185 <input class="form-control bg-dark mb-2" placeholder="Guilds" data-parent="2" data-setting="Label" /> 186 187 <label>Link</label> 188 <input class="form-control bg-dark mb-2" placeholder="https://polytoria.com/guilds/" data-parent="2" data-setting="Link" /> 189 </div> 190 </div> 191 <div class="card mb-2"> 192 <div class="card-header">#4 Navbar Item</div> 193 <div class="card-body"> 194 <label>Label</label> 195 <input class="form-control bg-dark mb-2" placeholder="People" data-parent="3" data-setting="Label" /> 196 197 <label>Link</label> 198 <input class="form-control bg-dark mb-2" placeholder="https://polytoria.com/users/" data-parent="3" data-setting="Link" /> 199 </div> 200 </div> 201 <div class="card mb-2"> 202 <div class="card-header">#5 Navbar Item</div> 203 <div class="card-body"> 204 <label>Label</label> 205 <input class="form-control bg-dark mb-2" placeholder="Forum" data-parent="4" data-setting="Label" /> 206 207 <label>Link</label> 208 <input class="form-control bg-dark mb-2" placeholder="https://polytoria.com/forum" data-parent="4" data-setting="Link" /> 209 </div> 210 </div> 211 212 <div role="group" class="btn-group w-100"> 213 <button class="btn btn-success w-25" data-setting="[save]">Save</button> 214 <button class="btn btn-warning w-25" data-setting="[reset-default]">Reset to Defaults</button> 215 <button class="btn btn-secondary w-25" data-setting="[cancel]">Cancel</button> 216 </div> 217 </div> 218 </dialog> 219 <dialog class="w-75" id="AutoAdBidding-Modal" data-setting="AutoAdBidding"> 220 <div class="modal-header"> 221 <p>Automatic Ad Bidding</p> 222 </div> 223 <div class="modal-body"> 224 <p>description (max 10 ads)</p> 225 <hr class="mt-2 mb-3" /> 226 <div class="input-group mb-2"> 227 <input type="text" class="form-control ignore" placeholder="Ad ID.."> 228 <button class="btn btn-primary" id="auto-ad-bidding-add">Add</button> 229 </div> 230 <table class="table"> 231 <thead> 232 <tr> 233 <th scope="col">#</th> 234 <th scope="col">Ad Name</th> 235 <th scope="col">Bid</th> 236 <th scope="col">Automation</th> 237 <th scope="col">Actions</th> 238 </tr> 239 </thead> 240 <tbody> 241 <tr> 242 <th scope="row">1</th> 243 <td><a href="https://polytoria.com/create/ad/632">"everdayi m shuffling"</a></td> 244 <td class="text-success"><span class="pi">$</span> 150</td> 245 <td> 246 <select class="form-select ignore"> 247 <option value="daily" selected>Daily</option> 248 <option value="weekly">Weekly</option> 249 <option value="monthly">Monthly</option> 250 </select> 251 </td> 252 <td> 253 <div role="group" class="btn-group w-100"> 254 <button class="btn btn-success w-25"> 255 BID 256 </button> 257 <button class="btn btn-orange w-25"> 258 EDIT 259 </button> 260 <button class="btn btn-danger w-25"> 261 DELETE 262 </button> 263 </div> 264 </td> 265 </tr> 266 </tbody> 267 </table> 268 269 <div role="group" class="btn-group w-100"> 270 <button class="btn btn-success w-25" data-setting="[save]">Save</button> 271 <button class="btn btn-warning w-25" data-setting="[reset-default]">Reset to Defaults</button> 272 <button class="btn btn-secondary w-25" data-setting="[cancel]">Cancel</button> 273 </div> 274 </div> 275 </dialog> 276 <div id="page"> 277 <h1 278 class="text-center title-popup-bg" 279 style=" 280 text-shadow: 0px 0px 5px orange; 281 padding-bottom: 5px; 282 margin-bottom: 10px; 283 display: flex; 284 align-items: center; 285 justify-content: center; 286 " 287 > 288 <span>Poly+</span> 289 </h1> 290 <div id="discovery" class="row flex-nowrap mb-2" style="--bs-gutter-x: 5px; overflow-x: auto; scrollbar-width: none;" > 291 <div class="col-md-3"> 292 <input id="search" type="text" class="form-control form-control-sm" placeholder="Search.." /> 293 </div> 294 </div> 295 <div id="settings"></div> 296 <hr /> 297 <div class="btn-group w-100"> 298 <button id="save" class="btn btn-primary w-50" disabled="true">Save</button> 299 <button id="reset" class="btn btn-warning w-50">Reset to Default Settings</button> 300 </div> 301 <p id="footer-text" class="text-center text-muted mt-2" style="font-size: 0.8rem;"> 302 <span></span> 303 | 304 <a id="check-for-updates"><b>Check for Updates</b></a> 305 <br /> 306 made by <a href="https://polytoria.com/u/Index" target="_blank">Index</a> with the help of several contributors <3 307 </p> 308 </div> 309 <script src="preferences-handler.js"></script> 310 </body> 311</html>