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