@eox/pages-theme-eox 2.0.0-alpha.1 → 2.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eox/pages-theme-eox",
3
- "version": "2.0.0-alpha.1",
3
+ "version": "2.0.0-alpha.3",
4
4
  "type": "module",
5
5
  "description": "Vitepress Theme with EOX branding",
6
6
  "main": "src/index.js",
@@ -4,9 +4,7 @@
4
4
  <div class="blog-landing-header" role="banner">
5
5
  <div class="flex flex-col md:flex-row md:items-end justify-between gap-6">
6
6
  <div>
7
- <h1 class="blog-landing-title">
8
- EOX Blog
9
- </h1>
7
+ <h1 class="blog-landing-title">EOX Blog</h1>
10
8
  <p class="blog-landing-subtitle">
11
9
  Insights, updates, and deep dives from our geospatial experts.
12
10
  </p>
@@ -14,10 +12,7 @@
14
12
  </div>
15
13
 
16
14
  <!-- Active Filter Banner -->
17
- <div
18
- v-if="activeTag || activeAuthor"
19
- class="active-filter-banner"
20
- >
15
+ <div v-if="activeTag || activeAuthor" class="active-filter-banner">
21
16
  <span class="filter-label">Active filter:</span>
22
17
  <span
23
18
  v-if="activeTag"
@@ -32,10 +27,7 @@
32
27
  >
33
28
  Author: {{ getAuthorName(activeAuthor) }}
34
29
  </span>
35
- <button
36
- @click="clearFilters"
37
- class="clear-filter-btn"
38
- >
30
+ <button @click="clearFilters" class="clear-filter-btn">
39
31
  <i class="mdi mdi-close-circle"></i>
40
32
  <span>Clear Filter</span>
41
33
  </button>
@@ -52,14 +44,16 @@
52
44
  :key="post.url"
53
45
  :title="post.title"
54
46
  :content="post.excerpt"
55
- :image="post.coverImage ? getCoverImageUrl(post.coverImage) : undefined"
47
+ :image="
48
+ post.coverImage ? getCoverImageUrl(post.coverImage) : undefined
49
+ "
56
50
  :date="post.date"
57
51
  :authors="post.authors"
58
- :chips="post.tags ? post.tags.map(t => ({ text: t })) : []"
52
+ :chips="post.tags ? post.tags.map((t) => ({ text: t })) : []"
59
53
  :link="{
60
54
  text: 'Read more',
61
55
  href: post.url,
62
- target: '_self'
56
+ target: '_self',
63
57
  }"
64
58
  variant="cover"
65
59
  class="h-full bg-surface-container-low"
@@ -87,18 +81,18 @@
87
81
  <!-- Pagination -->
88
82
  <nav
89
83
  v-if="totalPages > 1"
90
- class="mt-16 flex justify-center items-center gap-2"
84
+ class="mt-16 flex justify-center items-center gap-1 sm:gap-2"
91
85
  >
92
86
  <button
93
87
  @click="changePage(currentPage - 1)"
94
88
  :disabled="currentPage === 1"
95
- class="p-2.5 rounded-xl border border-slate-200 text-slate-600 hover:bg-slate-50 disabled:opacity-40 disabled:hover:bg-transparent disabled:cursor-not-allowed transition-colors"
89
+ class="min-w-[32px] sm:min-w-[40px] h-[32px] sm:h-[40px] flex items-center justify-center rounded-xl border border-slate-200 text-slate-600 hover:bg-slate-50 disabled:opacity-40 disabled:hover:bg-transparent disabled:cursor-not-allowed transition-colors"
96
90
  >
97
91
  <span class="sr-only">Previous</span>
98
92
  <i class="mdi mdi-chevron-left text-lg"></i>
99
93
  </button>
100
94
 
101
- <div class="flex items-center gap-1.5">
95
+ <div class="flex items-center gap-1 sm:gap-1.5">
102
96
  <button
103
97
  v-for="page in visiblePages"
104
98
  :key="page"
@@ -108,7 +102,7 @@
108
102
  ? 'bg-primary text-white border-primary shadow-sm'
109
103
  : 'border-slate-200 text-slate-600 hover:bg-slate-50',
110
104
  ]"
111
- class="min-w-[40px] h-[40px] px-3 font-semibold text-sm rounded-xl border flex items-center justify-center transition-all duration-150"
105
+ class="min-w-[32px] sm:min-w-[40px] h-[32px] sm:h-[40px] px-2 sm:px-3 font-semibold text-sm rounded-xl border flex items-center justify-center transition-all duration-150"
112
106
  >
113
107
  {{ page }}
114
108
  </button>
@@ -117,7 +111,7 @@
117
111
  <button
118
112
  @click="changePage(currentPage + 1)"
119
113
  :disabled="currentPage === totalPages"
120
- class="p-2.5 rounded-xl border border-slate-200 text-slate-600 hover:bg-slate-50 disabled:opacity-40 disabled:hover:bg-transparent disabled:cursor-not-allowed transition-colors"
114
+ class="min-w-[32px] sm:min-w-[40px] h-[32px] sm:h-[40px] flex items-center justify-center rounded-xl border border-slate-200 text-slate-600 hover:bg-slate-50 disabled:opacity-40 disabled:hover:bg-transparent disabled:cursor-not-allowed transition-colors"
121
115
  >
122
116
  <span class="sr-only">Next</span>
123
117
  <i class="mdi mdi-chevron-right text-lg"></i>
@@ -129,9 +123,7 @@
129
123
  <aside class="blog-sidebar-col">
130
124
  <!-- Search widget -->
131
125
  <div class="sidebar-widget">
132
- <h3 class="sidebar-title">
133
- Search
134
- </h3>
126
+ <h3 class="sidebar-title">Search</h3>
135
127
  <div class="search-container">
136
128
  <VPNavBarSearch class="search" />
137
129
  </div>
@@ -140,9 +132,7 @@
140
132
  <!-- Hot Tags -->
141
133
  <div class="sidebar-widget">
142
134
  <div class="sidebar-title-container">
143
- <h3 class="sidebar-title-inline">
144
- Hot tags
145
- </h3>
135
+ <h3 class="sidebar-title-inline">Hot tags</h3>
146
136
  <a href="/tag" class="see-all-link">
147
137
  <span>see all</span>
148
138
  <i class="mdi mdi-arrow-right"></i>
@@ -522,7 +512,9 @@ function clearFilters() {
522
512
  border-radius: 4px !important;
523
513
  text-decoration: none !important;
524
514
  line-height: 1.2 !important;
525
- transition: opacity 0.2s ease, transform 0.1s ease !important;
515
+ transition:
516
+ opacity 0.2s ease,
517
+ transform 0.1s ease !important;
526
518
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05) !important;
527
519
  }
528
520
 
@@ -584,7 +576,7 @@ function clearFilters() {
584
576
  padding: 0 !important;
585
577
  margin: 0 !important;
586
578
  margin-left: 0.5rem !important;
587
-
579
+
588
580
  display: inline-flex !important;
589
581
  align-items: center !important;
590
582
  gap: 0.375rem !important;
@@ -30,7 +30,7 @@
30
30
  {{ formatDate(frontmatter.date) }}
31
31
  </time>
32
32
  </span>
33
-
33
+
34
34
  <!-- Author Span -->
35
35
  <span v-if="authors && authors.length" class="metadata-item">
36
36
  <i class="mdi mdi-account-outline metadata-icon"></i>
@@ -40,13 +40,12 @@
40
40
  :key="authorId"
41
41
  class="author-item"
42
42
  >
43
- <a
44
- :href="`/author/${authorId}/`"
45
- class="author-link-active"
46
- >
43
+ <a :href="`/author/${authorId}/`" class="author-link-active">
47
44
  {{ getAuthorName(authorId) }}
48
45
  </a>
49
- <span v-if="idx < authors.length - 1" class="author-separator">,</span>
46
+ <span v-if="idx < authors.length - 1" class="author-separator"
47
+ >,</span
48
+ >
50
49
  </span>
51
50
  </span>
52
51
  </div>
@@ -77,18 +76,13 @@
77
76
  <!-- Sidebar Column -->
78
77
  <div class="blog-sidebar-col">
79
78
  <!-- Table of Contents (On This Page) -->
80
- <div
81
- v-if="headers && headers.length"
82
- class="toc-container"
83
- >
79
+ <div v-if="headers && headers.length" class="toc-container">
84
80
  <VPDocAsideOutline />
85
81
  </div>
86
82
 
87
83
  <!-- Hot Tags -->
88
84
  <div class="sidebar-widget">
89
- <h3 class="sidebar-title">
90
- Hot tags
91
- </h3>
85
+ <h3 class="sidebar-title">Hot tags</h3>
92
86
  <div class="sidebar-tags-container">
93
87
  <a
94
88
  v-for="tag in calculatedHotTags"
@@ -104,9 +98,7 @@
104
98
 
105
99
  <!-- Recent Posts -->
106
100
  <div class="sidebar-widget">
107
- <h3 class="sidebar-title">
108
- Recent posts
109
- </h3>
101
+ <h3 class="sidebar-title">Recent posts</h3>
110
102
  <div class="space-y-4">
111
103
  <div
112
104
  v-for="post in calculatedRecentPosts"
@@ -320,7 +312,9 @@ const calculatedHotTags = computed(() => {
320
312
  align-items: center;
321
313
  justify-content: center;
322
314
  height: 100%;
323
- transform: translateY(0.5px); /* Micro-adjustment for perfect vertical alignment */
315
+ transform: translateY(
316
+ 0.5px
317
+ ); /* Micro-adjustment for perfect vertical alignment */
324
318
  }
325
319
 
326
320
  .metadata-text {
@@ -343,7 +337,9 @@ const calculatedHotTags = computed(() => {
343
337
  font-weight: 600;
344
338
  color: var(--vp-c-brand, #004170) !important;
345
339
  text-decoration: none;
346
- transition: color 0.15s ease, text-decoration 0.15s ease;
340
+ transition:
341
+ color 0.15s ease,
342
+ text-decoration 0.15s ease;
347
343
  line-height: 1.2;
348
344
  }
349
345
 
@@ -391,7 +387,9 @@ const calculatedHotTags = computed(() => {
391
387
  border-radius: 4px !important;
392
388
  text-decoration: none !important;
393
389
  line-height: 1.2 !important;
394
- transition: opacity 0.2s ease, transform 0.1s ease !important;
390
+ transition:
391
+ opacity 0.2s ease,
392
+ transform 0.1s ease !important;
395
393
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05) !important;
396
394
  }
397
395
 
@@ -416,7 +414,9 @@ const calculatedHotTags = computed(() => {
416
414
  border-radius: 4px !important;
417
415
  text-decoration: none !important;
418
416
  line-height: 1.2 !important;
419
- transition: opacity 0.2s ease, transform 0.1s ease !important;
417
+ transition:
418
+ opacity 0.2s ease,
419
+ transform 0.1s ease !important;
420
420
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05) !important;
421
421
  }
422
422
 
@@ -60,7 +60,10 @@ const iconStyle = {
60
60
 
61
61
  // Check if we should render a full-width cover image
62
62
  const isCoverLayout = computed(() => {
63
- return props.image && (props.variant === "cover" || props.date || props.authors.length);
63
+ return (
64
+ props.image &&
65
+ (props.variant === "cover" || props.date || props.authors.length)
66
+ );
64
67
  });
65
68
 
66
69
  // Check if the card itself is fully clickable (has a link but NO link text)
@@ -71,7 +74,7 @@ const isClickableCard = computed(() => {
71
74
  function getAuthorName(authorId) {
72
75
  if (!authorId) return "EOX Experts";
73
76
  const author = authorsList.find(
74
- (a) => a.id.toLowerCase().trim() === authorId.toLowerCase().trim()
77
+ (a) => a.id.toLowerCase().trim() === authorId.toLowerCase().trim(),
75
78
  );
76
79
  return author ? author.name : authorId;
77
80
  }
@@ -82,31 +85,31 @@ function getTagStyle(tag) {
82
85
  return {
83
86
  backgroundColor: "rgba(255, 94, 94, 0.15)",
84
87
  border: "1px solid rgb(255, 94, 94)",
85
- color: "#d32f2f"
88
+ color: "#d32f2f",
86
89
  };
87
90
  } else if (color.startsWith("rgb(0, 177, 176)")) {
88
91
  return {
89
92
  backgroundColor: "rgba(0, 177, 176, 0.15)",
90
93
  border: "1px solid rgb(0, 177, 176)",
91
- color: "#00796b"
94
+ color: "#00796b",
92
95
  };
93
96
  } else if (color.startsWith("rgb(219, 173, 66)")) {
94
97
  return {
95
98
  backgroundColor: "rgba(219, 173, 66, 0.15)",
96
99
  border: "1px solid rgb(219, 173, 66)",
97
- color: "#f57c00"
100
+ color: "#f57c00",
98
101
  };
99
102
  } else if (color.startsWith("rgb(218, 71, 228)")) {
100
103
  return {
101
104
  backgroundColor: "rgba(218, 71, 228, 0.15)",
102
105
  border: "1px solid rgb(218, 71, 228)",
103
- color: "#c2185b"
106
+ color: "#c2185b",
104
107
  };
105
108
  }
106
109
  return {
107
110
  backgroundColor: "rgba(0, 0, 0, 0.05)",
108
111
  border: "1px solid rgba(0, 0, 0, 0.1)",
109
- color: "#475569"
112
+ color: "#475569",
110
113
  };
111
114
  }
112
115
 
@@ -126,7 +129,7 @@ function formatDate(dateString) {
126
129
  class="vertical large-padding no-margin theme-feature-card"
127
130
  :class="[
128
131
  isClickableCard ? 'small-elevate clickable-card' : 'no-elevate',
129
- isCoverLayout ? 'has-cover-image' : ''
132
+ isCoverLayout ? 'has-cover-image' : '',
130
133
  ]"
131
134
  >
132
135
  <!-- Cover Image for cover/blog/rich cards -->
@@ -146,7 +149,12 @@ function formatDate(dateString) {
146
149
  class="icon"
147
150
  ></div>
148
151
  <!-- Render small icon image only if NOT rendering a full cover image -->
149
- <img v-else-if="image && !isCoverLayout" :src="image" alt="" class="icon" />
152
+ <img
153
+ v-else-if="image && !isCoverLayout"
154
+ :src="image"
155
+ alt=""
156
+ class="icon"
157
+ />
150
158
 
151
159
  <!-- Metadata & Tags directly under place/author -->
152
160
  <div v-if="date || (authors && authors.length)" class="metadata-wrapper">
@@ -159,16 +167,25 @@ function formatDate(dateString) {
159
167
  <span class="author-icon">
160
168
  <i class="mdi mdi-account-outline"></i>
161
169
  </span>
162
- <span v-for="(authorId, idx) in authors" :key="authorId" class="author-item">
163
- <a :href="`/author/${authorId}/`" class="author-link">{{ getAuthorName(authorId) }}</a><span v-if="idx < authors.length - 1" class="author-separator">,</span>
170
+ <span
171
+ v-for="(authorId, idx) in authors"
172
+ :key="authorId"
173
+ class="author-item"
174
+ >
175
+ <a :href="`/author/${authorId}/`" class="author-link">{{
176
+ getAuthorName(authorId)
177
+ }}</a
178
+ ><span v-if="idx < authors.length - 1" class="author-separator"
179
+ >,</span
180
+ >
164
181
  </span>
165
182
  </span>
166
183
  </div>
167
184
 
168
185
  <!-- Tags directly under metadata if chips are provided and this is a rich card -->
169
186
  <div v-if="chips && chips.length" class="blog-tags-container">
170
- <a
171
- v-for="chip in chips"
187
+ <a
188
+ v-for="chip in chips"
172
189
  :key="chip.text"
173
190
  :href="chip.link || chip.href || `/tag/${chip.text}/`"
174
191
  :style="getTagStyle(chip.text)"
@@ -211,7 +228,10 @@ function formatDate(dateString) {
211
228
  </template>
212
229
  </div>
213
230
 
214
- <p v-if="metadata && metadata.length && !date && !authors.length" class="small-text">
231
+ <p
232
+ v-if="metadata && metadata.length && !date && !authors.length"
233
+ class="small-text"
234
+ >
215
235
  <span
216
236
  v-for="(item, index) in metadata"
217
237
  :key="index"
@@ -295,13 +315,17 @@ function formatDate(dateString) {
295
315
  /* Clickable Cards Hover System */
296
316
  .theme-feature-card.clickable-card {
297
317
  cursor: pointer;
298
- transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1), box-shadow 0.3s cubic-bezier(0.25, 0.8, 0.25, 1) !important;
318
+ transition:
319
+ transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1),
320
+ box-shadow 0.3s cubic-bezier(0.25, 0.8, 0.25, 1) !important;
299
321
  will-change: transform, box-shadow;
300
322
  }
301
323
 
302
324
  .theme-feature-card.clickable-card:hover {
303
325
  transform: translateY(-4px) !important;
304
- box-shadow: 0 12px 28px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.04) !important;
326
+ box-shadow:
327
+ 0 12px 28px rgba(0, 0, 0, 0.12),
328
+ 0 4px 8px rgba(0, 0, 0, 0.04) !important;
305
329
  }
306
330
 
307
331
  .small-chip {
@@ -26,7 +26,7 @@
26
26
  style="grid-area: image"
27
27
  :src="withBase(frontmatter.hero.image.src)"
28
28
  />
29
- <div class="title" style="grid-area: title; align-content: end">
29
+ <div class="title" style="grid-area: title">
30
30
  <h1 class="bold" style="font-size: clamp(2.25rem, 5vw, 3.3rem)">
31
31
  {{ frontmatter.hero.text }}
32
32
  </h1>
@@ -77,15 +77,15 @@ const { frontmatter } = useData();
77
77
 
78
78
  <style scoped>
79
79
  header {
80
+ position: relative;
80
81
  margin-top: calc(var(--vp-nav-height) * -1);
81
- padding-top: 10rem !important;
82
- padding-bottom: 10rem !important;
83
- height: 76dvh;
84
- max-height: 1000px;
82
+ padding-top: calc(var(--vp-nav-height) + 3.5rem) !important;
83
+ padding-bottom: 4.5rem !important;
84
+ min-height: 380px;
85
85
  }
86
86
  @media (max-width: 1024px) {
87
87
  header {
88
- padding: 0 1.5rem !important;
88
+ padding: calc(var(--vp-nav-height) + 2rem) 1.5rem 3rem !important;
89
89
  }
90
90
  header h1.large {
91
91
  font-size: 3rem;
@@ -1,9 +1,7 @@
1
1
  <template>
2
2
  <div class="tags-page">
3
3
  <header class="tags-header">
4
- <h1 class="tags-title">
5
- Blog Tags
6
- </h1>
4
+ <h1 class="tags-title">Blog Tags</h1>
7
5
  <p class="tags-subtitle">
8
6
  Explore our blog posts by topics and technology pillars.
9
7
  </p>
@@ -60,7 +58,9 @@
60
58
  </ul>
61
59
  <p class="legend-note">
62
60
  For more detailed information on our technology solutions, visit the
63
- <a href="/software-products" class="legend-link">Solutions & Services</a>
61
+ <a href="/software-products" class="legend-link"
62
+ >Solutions & Services</a
63
+ >
64
64
  page.
65
65
  </p>
66
66
  </footer>
@@ -180,7 +180,9 @@ const allTagsList = computed(() => {
180
180
  padding: 2.5rem 2rem;
181
181
  border-radius: 1rem;
182
182
  border: 1px solid rgba(226, 232, 240, 0.5); /* border-slate-100/50 */
183
- box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05), 0 1px 2px -1px rgba(0, 0, 0, 0.05); /* shadow-sm */
183
+ box-shadow:
184
+ 0 1px 3px 0 rgba(0, 0, 0, 0.05),
185
+ 0 1px 2px -1px rgba(0, 0, 0, 0.05); /* shadow-sm */
184
186
  margin-bottom: 3rem;
185
187
  }
186
188
 
@@ -202,14 +204,19 @@ const allTagsList = computed(() => {
202
204
  border-radius: 4px; /* small rounding to distinguish from full-rounded buttons */
203
205
  text-decoration: none !important;
204
206
  line-height: 1.2;
205
- transition: opacity 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
207
+ transition:
208
+ opacity 0.2s ease,
209
+ transform 0.15s ease,
210
+ box-shadow 0.2s ease;
206
211
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
207
212
  }
208
213
 
209
214
  .tag-item:hover {
210
215
  opacity: 0.85;
211
216
  transform: translateY(-1px);
212
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);
217
+ box-shadow:
218
+ 0 4px 6px -1px rgba(0, 0, 0, 0.05),
219
+ 0 2px 4px -2px rgba(0, 0, 0, 0.05);
213
220
  }
214
221
 
215
222
  .tag-count {
@@ -26,12 +26,20 @@
26
26
  v-for="member in sortedTeamMembers"
27
27
  :key="member.id"
28
28
  :title="member.name"
29
- :image="member.image ? withBase(member.image) : withBase('/images/team/new_member.jpg')"
30
- :link="memberHasPosts(member.id) ? {
31
- text: 'View blog posts',
32
- href: `/author/${member.id}/`,
33
- target: '_self'
34
- } : undefined"
29
+ :image="
30
+ member.image
31
+ ? withBase(member.image)
32
+ : withBase('/images/team/new_member.jpg')
33
+ "
34
+ :link="
35
+ memberHasPosts(member.id)
36
+ ? {
37
+ text: 'View blog posts',
38
+ href: `/author/${member.id}/`,
39
+ target: '_self',
40
+ }
41
+ : undefined
42
+ "
35
43
  variant="cover"
36
44
  class="bg-surface-container-low team-member-card"
37
45
  >
@@ -43,11 +51,7 @@
43
51
  <span class="member-divider"></span>
44
52
 
45
53
  <!-- Description / Bio -->
46
- <span
47
- v-if="member.bio"
48
- class="member-bio"
49
- v-html="member.bio"
50
- ></span>
54
+ <span v-if="member.bio" class="member-bio" v-html="member.bio"></span>
51
55
 
52
56
  <!-- Social Links row at the bottom of slot -->
53
57
  <span class="member-footer">
package/src/style.css CHANGED
@@ -374,7 +374,11 @@ eox-feedback-button {
374
374
  }
375
375
 
376
376
  /* Constrain standard reading elements to 1000px max-width, while letting full-width custom page components span 1200px */
377
- .layout-page .VPPage > div > div > :is(p, ul, ol, blockquote, h1, h2, h3, h4, h5, h6, pre, table) {
377
+ .layout-page
378
+ .VPPage
379
+ > div
380
+ > div
381
+ > :is(p, ul, ol, blockquote, h1, h2, h3, h4, h5, h6, pre, table) {
378
382
  max-width: 1000px;
379
383
  margin-inline-start: 0;
380
384
  margin-inline-end: auto;
@@ -473,7 +477,9 @@ eox-feedback-button {
473
477
  text-decoration: underline;
474
478
  text-underline-offset: 3px;
475
479
  text-decoration-thickness: 1px;
476
- transition: color 0.2s ease, text-decoration-color 0.2s ease;
480
+ transition:
481
+ color 0.2s ease,
482
+ text-decoration-color 0.2s ease;
477
483
  }
478
484
 
479
485
  .layout-page .VPPage a:not(.button):hover {
@@ -505,3 +511,57 @@ eox-feedback-button {
505
511
  overflow-x: auto;
506
512
  }
507
513
 
514
+ /* Local Search styles overrides */
515
+ .VPLocalSearchBox .search-actions button {
516
+ height: 36px !important;
517
+ width: 36px !important;
518
+ min-width: 0 !important;
519
+ max-width: none !important;
520
+ border-radius: 50% !important;
521
+ padding: 0 !important;
522
+ display: inline-flex !important;
523
+ align-items: center !important;
524
+ justify-content: center !important;
525
+ border: none !important;
526
+ background: transparent !important;
527
+ box-shadow: none !important;
528
+ color: var(--vp-c-text-2) !important;
529
+ transition:
530
+ background-color 0.15s,
531
+ color 0.15s !important;
532
+ }
533
+
534
+ .VPLocalSearchBox .search-actions button:not([disabled]):hover {
535
+ background-color: var(--vp-c-default-soft) !important;
536
+ color: var(--vp-c-brand-1) !important;
537
+ }
538
+
539
+ .VPLocalSearchBox .search-actions button:disabled {
540
+ opacity: 0.37 !important;
541
+ background: transparent !important;
542
+ color: var(--vp-c-text-3) !important;
543
+ }
544
+
545
+ .VPLocalSearchBox .results {
546
+ list-style: none !important;
547
+ padding-left: 0 !important;
548
+ margin: 0 !important;
549
+ }
550
+
551
+ .VPLocalSearchBox .results li {
552
+ list-style: none !important;
553
+ margin: 0 !important;
554
+ }
555
+
556
+ /* Screen Reader Only Utility */
557
+ .sr-only {
558
+ position: absolute !important;
559
+ width: 1px !important;
560
+ height: 1px !important;
561
+ padding: 0 !important;
562
+ margin: -1px !important;
563
+ overflow: hidden !important;
564
+ clip: rect(0, 0, 0, 0) !important;
565
+ white-space: nowrap !important;
566
+ border-width: 0 !important;
567
+ }
package/src/tagUtils.js CHANGED
@@ -103,31 +103,31 @@ export function getTagStyle(tag) {
103
103
  return {
104
104
  backgroundColor: "rgba(255, 94, 94, 0.15)",
105
105
  border: "1px solid rgb(255, 94, 94)",
106
- color: "#d32f2f"
106
+ color: "#d32f2f",
107
107
  };
108
108
  } else if (color.startsWith("rgb(0, 177, 176)")) {
109
109
  return {
110
110
  backgroundColor: "rgba(0, 177, 176, 0.15)",
111
111
  border: "1px solid rgb(0, 177, 176)",
112
- color: "#00796b"
112
+ color: "#00796b",
113
113
  };
114
114
  } else if (color.startsWith("rgb(219, 173, 66)")) {
115
115
  return {
116
116
  backgroundColor: "rgba(219, 173, 66, 0.15)",
117
117
  border: "1px solid rgb(219, 173, 66)",
118
- color: "#f57c00"
118
+ color: "#f57c00",
119
119
  };
120
120
  } else if (color.startsWith("rgb(218, 71, 228)")) {
121
121
  return {
122
122
  backgroundColor: "rgba(218, 71, 228, 0.15)",
123
123
  border: "1px solid rgb(218, 71, 228)",
124
- color: "#c2185b"
124
+ color: "#c2185b",
125
125
  };
126
126
  }
127
127
  return {
128
128
  backgroundColor: "rgba(0, 0, 0, 0.05)",
129
129
  border: "1px solid rgba(0, 0, 0, 0.1)",
130
- color: "#475569"
130
+ color: "#475569",
131
131
  };
132
132
  }
133
133
 
@@ -98,8 +98,8 @@ export const generate = (brandConfig) => {
98
98
  cleanUrls: true,
99
99
  markdown: {
100
100
  headers: {
101
- level: [2, 3, 4, 5, 6]
102
- }
101
+ level: [2, 3, 4, 5, 6],
102
+ },
103
103
  },
104
104
  rewrites: {
105
105
  ...getBlogRewrites(),
@@ -220,6 +220,9 @@ export const generate = (brandConfig) => {
220
220
  ssr: {
221
221
  noExternal: ["@eox/pages-theme-eox"],
222
222
  },
223
+ optimizeDeps: {
224
+ exclude: ["@eox/pages-theme-eox"],
225
+ },
223
226
  },
224
227
  vue: {
225
228
  template: {