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/*
2 FRONTEND FIXES / SPACING IMPROVEMENTS
3*/
4
5body[data-URL^='/my/friends'] .col-lg-3 {
6 margin-bottom: 20px;
7}
8
9body[data-URL^='/create/'] .mt-2.mt-lg-0.col-lg.d-flex.align-content-between.flex-wrap {
10 width: 50%;
11}
12
13body[data-URL^='/create/'] .col.d-flex.align-content-between.flex-wrap {
14 width: 50%;
15}
16
17body[data-URL^='/create'] .me-2:has(.fa-thumbs-up)::after {
18 content: '%';
19 margin-left: -2.5px;
20 margin-bottom: 2px;
21 cursor: text;
22}
23
24.text-truncate {
25 white-space: nowrap !important;
26 overflow: hidden !important;
27 text-overflow: ellipsis !important;
28}
29
30#servers-tabpane .card {
31 margin-bottom: 10px;
32}
33
34body[data-URL^='/my/settings/privacy'] .card-body:has([action^="/api/users/"]) .card {
35 margin-bottom: 10px;
36}
37
38.home-event-container .img-container {
39 height: 100% !important;
40}
41
42/* ------------------------------------------ */
43
44/*
45 INLINE EDITING
46*/
47
48body[data-polyplus-inlineEditing='true'] .polyplus-inlineEditing-visible {
49 display: block !important;
50}
51.polyplus-inlineEditing-visible {
52 display: none;
53}
54
55body[data-polyplus-inlineEditing='true'] .polyplus-inlineEditing-hidden {
56 display: none !important;
57}
58.polyplus-inlineEditing-hidden {
59 display: block;
60}
61
62/* ------------------------------------------ */
63
64/*
65 MODALS
66*/
67
68html:has(.polyplus-modal[open]),
69body:has(.polyplus-modal[open]) {
70 overflow: hidden;
71}
72
73.polyplus-modal::backdrop {
74 background: rgba(0, 0, 0, 0.73);
75}
76
77/* ------------------------------------------ */
78
79
80/*
81 EVENT PLACE CARD HIGHLIGHT ANIMATION
82 CSS BY @Dragonism ON POLYTORIA
83*/
84
85.event-card {
86 background-size: 200% 200% !important;
87
88 -webkit-animation: EventPlace 5s ease infinite;
89 -moz-animation: EventPlace 5s ease infinite;
90 animation: EventPlace 5s ease infinite;
91}
92
93@-webkit-keyframes EventPlace {
94 0%{background-position:10% 0%}
95 50%{background-position:91% 100%}
96 100%{background-position:10% 0%}
97}
98
99@-moz-keyframes EventPlace {
100 0%{background-position:10% 0%}
101 50%{background-position:91% 100%}
102 100%{background-position:10% 0%}
103}
104
105@keyframes EventPlace {
106 0%{background-position:10% 0%}
107 50%{background-position:91% 100%}
108 100%{background-position:10% 0%}
109}
110
111/* - */
112
113/*
114 AVATAR SANDBOX
115*/
116
117.ribbon-polyplus-custom span {
118 background-color: orange !important;
119}
120
121.ribbon-polyplus-custom::after, .ribbon-polyplus-custom::before {
122 border-color: #c68000 !important;
123}
124
125.ribbon-polyplus-unknown span {
126 background-color: #000 !important;
127}
128
129.ribbon-polyplus-unknown::after, .ribbon-polyplus-unknown::before {
130 border-color: #121212 !important;
131}
132
133.ribbon-polyplus-retro span {
134 background-color: purple !important;
135 font-family: 'Courier New', Courier, monospace;
136}
137
138.ribbon-polyplus-retro::after, .ribbon-polyplus-retro::before {
139 border-color: rgb(104, 0, 104) !important;
140}