PluginProbe
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO / 1.0.0
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO v1.0.0
2.7.0 2.6.0 2.5.0 2.4.0 2.3.0 2.2.0 2.1.1 2.1.0 2.0.2 2.0.1 2.0.0 1.32.0 1.31.0 1.30.0 1.29.0 1.28.0 1.27.0 1.26.0 1.25.0 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.10.0 All 48 releases
thinkrank / src / shared / styles / components / serp-preview.scss

serp-preview.scss in ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO 1.0.0, at src/shared/styles/components/serp-preview.scss

305 lines 6.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * SERP Preview Styles
3 *
4 * Styles for the Search Engine Results Preview component
5 * Shared between admin and metabox contexts
6 *
7 * @package ThinkRank
8 * @since 1.0.0
9 */
10
11 @use '../variables' as *;
12 @use '../mixins' as *;
13
14 // SERP Preview Controls
15 .serp-preview-controls {
16 margin-bottom: 20px;
17
18 .preview-label {
19 display: block;
20 font-weight: 600;
21 margin-bottom: 8px;
22 color: var(--thinkrank-text-primary);
23 }
24
25 .preview-toggle {
26 display: flex;
27 gap: 16px;
28
29 .toggle-option {
30 display: flex;
31 align-items: center;
32 gap: 8px;
33 cursor: pointer;
34 font-size: 14px;
35 color: var(--thinkrank-text-secondary);
36 transition: color 0.2s ease;
37
38 &.active {
39 color: var(--thinkrank-primary);
40 font-weight: 500;
41 }
42
43 input[type="radio"]="radio""] {
44 display: none;
45 }
46
47 .radio-icon {
48 width: 16px;
49 height: 16px;
50 border: 2px solid var(--thinkrank-border);
51 border-radius: 50%;
52 position: relative;
53 transition: all 0.2s ease;
54
55 &::after {
56 content: '';
57 position: absolute;
58 top: 50%;
59 left: 50%;
60 transform: translate(-50%, -50%);
61 width: 8px;
62 height: 8px;
63 border-radius: 50%;
64 background: var(--thinkrank-primary);
65 opacity: 0;
66 transition: opacity 0.2s ease;
67 }
68 }
69
70 &.active .radio-icon {
71 border-color: var(--thinkrank-primary);
72
73 &::after {
74 opacity: 1;
75 }
76 }
77 }
78 }
79 }
80
81 // SERP Result Container
82 .serp-result-container {
83 background: #f8f9fa;
84 border: 1px solid var(--thinkrank-border-light);
85 border-radius: 8px;
86 padding: 20px;
87
88 &.mobile {
89 max-width: 375px;
90 margin: 0 auto;
91 }
92
93 &.desktop {
94 max-width: 600px;
95 }
96 }
97
98 // SERP Result
99 .serp-result {
100 background: white;
101 border-radius: 8px;
102 padding: 16px;
103 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
104 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
105
106 .serp-site-info {
107 display: flex;
108 align-items: center;
109 margin-bottom: 8px;
110 font-size: 14px;
111 color: #5f6368;
112
113 .site-favicon {
114 margin-right: 8px;
115
116 .favicon-image {
117 width: 16px;
118 height: 16px;
119 background: rgb(241, 243, 244);
120 border-radius: 2px;
121 position: relative;
122
123 &::after {
124 content: '';
125 position: absolute;
126 top: 2px;
127 left: 2px;
128 right: 2px;
129 bottom: 2px;
130 background: white;
131 border-radius: 1px;
132 }
133 }
134 }
135
136 .site-details {
137 display: flex;
138 align-items: center;
139 flex: 1;
140
141 .site-name {
142 font-weight: 500;
143 }
144
145 .breadcrumb-arrow {
146 margin: 0 4px;
147 color: #9aa0a6;
148 }
149
150 .page-path {
151 color: #9aa0a6;
152 }
153 }
154
155 .serp-menu {
156 color: #9aa0a6;
157 cursor: pointer;
158 padding: 4px;
159 border-radius: 4px;
160
161 &:hover {
162 background: #f1f3f4;
163 }
164 }
165 }
166
167 .serp-title {
168 font-size: 20px;
169 line-height: 1.3;
170 color: #1a0dab;
171 margin-bottom: 4px;
172 cursor: pointer;
173 text-decoration: none;
174
175 &:hover {
176 text-decoration: underline;
177 }
178
179 // Truncate long titles
180 display: -webkit-box;
181 -webkit-line-clamp: 2;
182 -webkit-box-orient: vertical;
183 overflow: hidden;
184 }
185
186 .serp-content {
187 display: flex;
188 align-items: flex-start;
189 gap: 12px;
190
191 &.serp-content-with-image {
192 .serp-meta {
193 flex: 1;
194 }
195 }
196 }
197
198 .serp-meta {
199 font-size: 14px;
200 line-height: 1.4;
201 color: #4d5156;
202
203 .serp-date {
204 color: #5f6368;
205 }
206
207 .serp-separator {
208 color: #9aa0a6;
209 }
210
211 .serp-description {
212 // Truncate long descriptions
213 display: -webkit-box;
214 -webkit-line-clamp: 2;
215 -webkit-box-orient: vertical;
216 overflow: hidden;
217 }
218 }
219
220 .serp-featured-image {
221 flex-shrink: 0;
222
223 .featured-image {
224 width: 80px;
225 height: 80px;
226 object-fit: cover;
227 border-radius: 8px;
228 }
229
230 .image-placeholder {
231 width: 80px;
232 height: 80px;
233 background: #f8f9fa;
234 border: 1px dashed #dadce0;
235 border-radius: 8px;
236 display: flex;
237 flex-direction: column;
238 align-items: center;
239 justify-content: center;
240 color: #9aa0a6;
241
242 .image-icon {
243 font-size: 16px;
244 }
245 }
246 }
247 }
248
249 // Mobile specific adjustments
250 .serp-result-container.mobile {
251 .serp-result {
252 .serp-title {
253 font-size: 18px;
254 }
255
256 .serp-meta {
257 font-size: 13px;
258 }
259
260 .serp-featured-image {
261 .featured-image {
262 width: 72px;
263 height: 72px;
264 }
265
266 .image-placeholder {
267 width: 72px;
268 height: 72px;
269
270 .image-icon {
271 font-size: 14px;
272 }
273 }
274 }
275 }
276 }
277
278 // Desktop specific adjustments
279 .serp-result-container.desktop {
280 .serp-result {
281 .serp-content {
282 display: block; // No flex layout on desktop
283 }
284
285 .serp-featured-image {
286 display: none; // Hide featured image on desktop view
287 }
288 }
289 }
290
291 // Responsive adjustments
292 @media (max-width: 768px) {
293 .serp-preview-controls {
294 .preview-toggle {
295 flex-direction: column;
296 gap: 12px;
297 }
298 }
299
300 .serp-result-container {
301 &.desktop {
302 max-width: 100%;
303 }
304 }
305 }