slidev-theme-measurelab 0.1.0

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.
Files changed (36) hide show
  1. package/README.md +132 -0
  2. package/global.css +646 -0
  3. package/layouts/cover.vue +154 -0
  4. package/layouts/default.vue +254 -0
  5. package/layouts/full-image.vue +167 -0
  6. package/layouts/quote.vue +267 -0
  7. package/layouts/section-1.vue +217 -0
  8. package/layouts/section-2.vue +217 -0
  9. package/layouts/section-3.vue +217 -0
  10. package/layouts/three-cols.vue +291 -0
  11. package/layouts/two-cols-pic.vue +276 -0
  12. package/layouts/two-cols.vue +275 -0
  13. package/package.json +54 -0
  14. package/public/background-header-circles.svg +69 -0
  15. package/public/background-illustration.svg +1 -0
  16. package/public/background-image-half.svg +52 -0
  17. package/public/contact-background.svg +80 -0
  18. package/public/contact-grid-background-flipped.svg +53 -0
  19. package/public/contact-grid-background.svg +53 -0
  20. package/public/cta-background.svg +69 -0
  21. package/public/footer-background-illustration.svg +1 -0
  22. package/public/gmpcertified.png +0 -0
  23. package/public/google-cloud-partner.png +0 -0
  24. package/public/home-hero-background.svg +63 -0
  25. package/public/home-hero.svg +79 -0
  26. package/public/marketing-analytics-services-specialization.png +0 -0
  27. package/public/measurelab-dark-logo.svg +19 -0
  28. package/public/measurelab_favicon.svg +1 -0
  29. package/public/measurelab_logo.svg +1 -0
  30. package/public/services-analytics-bg.svg +101 -0
  31. package/public/services-hero-background.svg +39 -0
  32. package/public/services-hero.svg +76 -0
  33. package/public/technology-background.svg +71 -0
  34. package/setup/unocss.ts +68 -0
  35. package/styles/base.css +209 -0
  36. package/styles/index.ts +1 -0
@@ -0,0 +1,217 @@
1
+ <script setup lang="ts">
2
+ import { computed } from 'vue'
3
+
4
+ const props = defineProps<{
5
+ class?: string
6
+ }>()
7
+
8
+ const isDark = computed(() => {
9
+ return props.class?.includes('dark')
10
+ })
11
+ </script>
12
+
13
+ <template>
14
+ <div
15
+ class="slidev-layout section-3"
16
+ :class="[$props.class, { 'is-dark': isDark }]"
17
+ >
18
+ <!-- Top background pattern -->
19
+ <div class="section-bg-top">
20
+ <img src="/services-hero-background.svg" alt="" />
21
+ </div>
22
+
23
+ <!-- Bottom background graphic -->
24
+ <div class="section-bg">
25
+ <img src="/contact-background.svg" alt="" />
26
+ </div>
27
+
28
+ <!-- Header -->
29
+ <div class="slide-header">
30
+ <span class="section-label"></span>
31
+ <div class="header-logo">
32
+ <img
33
+ v-show="!isDark"
34
+ src="/measurelab_logo.svg"
35
+ alt="Measurelab"
36
+ />
37
+ <img
38
+ v-show="isDark"
39
+ src="/measurelab-dark-logo.svg"
40
+ alt="Measurelab"
41
+ />
42
+ </div>
43
+ </div>
44
+
45
+ <!-- Centered content -->
46
+ <div class="section-content">
47
+ <slot />
48
+ </div>
49
+
50
+ <!-- Footer -->
51
+ <div class="slide-footer">
52
+ <div class="footer-left">
53
+ <span class="copyright">© <strong>Measurelab</strong></span>
54
+ <span class="confidential">All rights reserved. Company confidential.</span>
55
+ </div>
56
+ <div class="footer-right">
57
+ <span class="page-number">{{ $slidev?.nav.currentPage }}</span>
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </template>
62
+
63
+ <style scoped>
64
+ .section-3 {
65
+ display: flex;
66
+ flex-direction: column;
67
+ height: 100%;
68
+ position: relative;
69
+ background: #ffffff;
70
+ color: #081f30;
71
+ overflow: hidden;
72
+ }
73
+
74
+ .section-3.is-dark {
75
+ background: #081f30;
76
+ color: #f9f9f9;
77
+ }
78
+
79
+ /* Top background pattern */
80
+ .section-bg-top {
81
+ position: absolute;
82
+ top: 0;
83
+ left: 0;
84
+ right: 0;
85
+ height: 50%;
86
+ pointer-events: none;
87
+ overflow: hidden;
88
+ z-index: 2;
89
+ }
90
+
91
+ .section-bg-top img {
92
+ width: 100%;
93
+ height: auto;
94
+ position: absolute;
95
+ top: 20px;
96
+ left: 0;
97
+ }
98
+
99
+ .section-3.is-dark .section-bg-top {
100
+ opacity: 0.3;
101
+ }
102
+
103
+ /* Bottom background graphic - positioned like grid in default */
104
+ .section-bg {
105
+ position: absolute;
106
+ top: 0;
107
+ left: 0;
108
+ right: 0;
109
+ bottom: 3rem;
110
+ pointer-events: none;
111
+ z-index: 1;
112
+ }
113
+
114
+ .section-bg img {
115
+ width: 100%;
116
+ height: auto;
117
+ position: absolute;
118
+ bottom: 0;
119
+ left: 0;
120
+ }
121
+
122
+ .section-3.is-dark .section-bg {
123
+ opacity: 0.3;
124
+ }
125
+
126
+ /* Header */
127
+ .slide-header {
128
+ display: flex;
129
+ justify-content: space-between;
130
+ align-items: flex-start;
131
+ padding: 1.5rem 2.5rem;
132
+ position: relative;
133
+ z-index: 10;
134
+ }
135
+
136
+ .section-label {
137
+ font-size: 0.75rem;
138
+ font-weight: 400;
139
+ color: inherit;
140
+ }
141
+
142
+ .header-logo {
143
+ height: 1.25rem;
144
+ }
145
+
146
+ .header-logo img {
147
+ height: 100%;
148
+ width: auto;
149
+ }
150
+
151
+ /* Centered content */
152
+ .section-content {
153
+ flex: 1;
154
+ display: flex;
155
+ flex-direction: column;
156
+ align-items: center;
157
+ justify-content: center;
158
+ text-align: center;
159
+ padding: 0 2.5rem;
160
+ position: relative;
161
+ z-index: 10;
162
+ gap: 1rem;
163
+ transform: translateY(-75px);
164
+ }
165
+
166
+ .section-content :deep(h1) {
167
+ font-size: 2.5rem;
168
+ font-weight: 600;
169
+ line-height: 1.2;
170
+ margin: 0;
171
+ color: inherit;
172
+ }
173
+
174
+ .section-content :deep(h2) {
175
+ font-size: 1.5rem;
176
+ font-weight: 400;
177
+ line-height: 1.4;
178
+ margin: 0;
179
+ color: inherit;
180
+ opacity: 0.8;
181
+ }
182
+
183
+ .section-content :deep(p) {
184
+ font-size: 1.25rem;
185
+ line-height: 1.6;
186
+ margin: 0;
187
+ color: inherit;
188
+ opacity: 0.8;
189
+ }
190
+
191
+ /* Footer */
192
+ .slide-footer {
193
+ display: flex;
194
+ justify-content: space-between;
195
+ align-items: center;
196
+ padding: 1rem 2.5rem;
197
+ position: relative;
198
+ z-index: 10;
199
+ color: inherit;
200
+ }
201
+
202
+ .footer-left {
203
+ display: flex;
204
+ gap: 1rem;
205
+ font-size: 0.75rem;
206
+ color: inherit;
207
+ }
208
+
209
+ .footer-left strong {
210
+ font-weight: 500;
211
+ }
212
+
213
+ .footer-right {
214
+ font-size: 0.75rem;
215
+ color: inherit;
216
+ }
217
+ </style>
@@ -0,0 +1,291 @@
1
+ <script setup lang="ts">
2
+ import { computed } from 'vue'
3
+
4
+ const props = defineProps<{
5
+ section?: string
6
+ heading?: string
7
+ class?: string
8
+ }>()
9
+
10
+ const isDark = computed(() => {
11
+ return props.class?.includes('dark')
12
+ })
13
+ </script>
14
+
15
+ <template>
16
+ <div
17
+ class="slidev-layout three-cols"
18
+ :class="[$props.class, { 'is-dark': isDark }]"
19
+ >
20
+ <!-- Grid background -->
21
+ <div class="grid-bg">
22
+ <img src="/contact-grid-background.svg" alt="" />
23
+ </div>
24
+
25
+ <!-- Header -->
26
+ <div class="slide-header">
27
+ <span v-if="section" class="section-label">{{ section }}</span>
28
+ <span v-else class="section-label"></span>
29
+ <div class="header-logo">
30
+ <img
31
+ v-show="!isDark"
32
+ src="/measurelab_logo.svg"
33
+ alt="Measurelab"
34
+ />
35
+ <img
36
+ v-show="isDark"
37
+ src="/measurelab-dark-logo.svg"
38
+ alt="Measurelab"
39
+ />
40
+ </div>
41
+ </div>
42
+
43
+ <!-- Title -->
44
+ <h1 v-if="heading" class="slide-title">{{ heading }}</h1>
45
+
46
+ <!-- Three column content -->
47
+ <div class="slide-columns">
48
+ <div class="col-1">
49
+ <slot name="default" />
50
+ </div>
51
+ <div class="col-2">
52
+ <slot name="col2" />
53
+ </div>
54
+ <div class="col-3">
55
+ <slot name="col3" />
56
+ </div>
57
+ </div>
58
+
59
+ <!-- Footer -->
60
+ <div class="slide-footer">
61
+ <div class="footer-left">
62
+ <span class="copyright">© <strong>Measurelab</strong></span>
63
+ <span class="confidential">All rights reserved. Company confidential.</span>
64
+ </div>
65
+ <div class="footer-right">
66
+ <span class="page-number">{{ $slidev?.nav.currentPage }}</span>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ </template>
71
+
72
+ <style scoped>
73
+ .three-cols {
74
+ display: flex;
75
+ flex-direction: column;
76
+ height: 100%;
77
+ position: relative;
78
+ background: #ffffff;
79
+ color: #081f30;
80
+ overflow: hidden;
81
+ }
82
+
83
+ .three-cols.is-dark {
84
+ background: #081f30;
85
+ color: #f9f9f9;
86
+ }
87
+
88
+ /* Grid background */
89
+ .grid-bg {
90
+ position: absolute;
91
+ top: 0;
92
+ left: 0;
93
+ right: 0;
94
+ bottom: 3rem;
95
+ pointer-events: none;
96
+ }
97
+
98
+ .grid-bg img {
99
+ width: 100%;
100
+ height: auto;
101
+ position: absolute;
102
+ bottom: 0;
103
+ left: 0;
104
+ }
105
+
106
+ .three-cols.is-dark .grid-bg {
107
+ opacity: 0.3;
108
+ }
109
+
110
+ /* Header */
111
+ .slide-header {
112
+ display: flex;
113
+ justify-content: space-between;
114
+ align-items: flex-start;
115
+ padding: 1.5rem 2.5rem;
116
+ position: relative;
117
+ z-index: 10;
118
+ }
119
+
120
+ .section-label {
121
+ font-size: 0.75rem;
122
+ font-weight: 400;
123
+ color: inherit;
124
+ }
125
+
126
+ .header-logo {
127
+ height: 1.25rem;
128
+ }
129
+
130
+ .header-logo img {
131
+ height: 100%;
132
+ width: auto;
133
+ }
134
+
135
+ /* Title */
136
+ .slide-title {
137
+ font-size: 2rem;
138
+ font-weight: 600;
139
+ line-height: 1.2;
140
+ margin: 20px 0 1.5rem 0;
141
+ padding: 0 2.5rem;
142
+ color: inherit;
143
+ position: relative;
144
+ z-index: 10;
145
+ }
146
+
147
+ /* Three column content */
148
+ .slide-columns {
149
+ flex: 1;
150
+ display: grid;
151
+ grid-template-columns: 1fr 1fr 1fr;
152
+ gap: 2rem;
153
+ padding: 0 2.5rem;
154
+ position: relative;
155
+ z-index: 10;
156
+ color: inherit;
157
+ }
158
+
159
+ .col-1,
160
+ .col-2,
161
+ .col-3 {
162
+ display: flex;
163
+ flex-direction: column;
164
+ gap: 0.25rem;
165
+ }
166
+
167
+ .col-1 :deep(h1),
168
+ .col-2 :deep(h1),
169
+ .col-3 :deep(h1) {
170
+ font-size: 1.75rem !important;
171
+ font-weight: 600 !important;
172
+ line-height: 1.2;
173
+ margin: 0 0 1rem 0;
174
+ color: inherit;
175
+ }
176
+
177
+ .col-1 :deep(h2),
178
+ .col-2 :deep(h2),
179
+ .col-3 :deep(h2) {
180
+ font-size: 1.35rem !important;
181
+ font-weight: 500 !important;
182
+ line-height: 1.3;
183
+ margin: 1rem 0 0.125rem 0;
184
+ color: inherit;
185
+ }
186
+
187
+ .col-1 :deep(h3),
188
+ .col-2 :deep(h3),
189
+ .col-3 :deep(h3) {
190
+ font-size: 1.125rem !important;
191
+ font-weight: 500 !important;
192
+ line-height: 1.3;
193
+ margin: 0.75rem 0 0.125rem 0;
194
+ color: inherit;
195
+ }
196
+
197
+ .col-1 :deep(p),
198
+ .col-2 :deep(p),
199
+ .col-3 :deep(p) {
200
+ font-size: 1rem !important;
201
+ line-height: 1.6;
202
+ margin: 0;
203
+ color: inherit;
204
+ }
205
+
206
+ .col-1 :deep(ul),
207
+ .col-1 :deep(ol),
208
+ .col-2 :deep(ul),
209
+ .col-2 :deep(ol),
210
+ .col-3 :deep(ul),
211
+ .col-3 :deep(ol) {
212
+ margin: 0;
213
+ padding-left: 1.25rem;
214
+ list-style: disc;
215
+ }
216
+
217
+ .col-1 :deep(li),
218
+ .col-2 :deep(li),
219
+ .col-3 :deep(li) {
220
+ font-size: 1rem !important;
221
+ line-height: 1.5;
222
+ margin: 0.25rem 0;
223
+ color: inherit;
224
+ }
225
+
226
+ .col-1 :deep(li::marker),
227
+ .col-2 :deep(li::marker),
228
+ .col-3 :deep(li::marker) {
229
+ color: #6dd750;
230
+ }
231
+
232
+ .col-1 :deep(h4),
233
+ .col-2 :deep(h4),
234
+ .col-3 :deep(h4) {
235
+ font-size: 1rem !important;
236
+ font-weight: 500 !important;
237
+ line-height: 1.3;
238
+ margin: 0.5rem 0 0.125rem 0;
239
+ color: inherit;
240
+ }
241
+
242
+ .col-1 :deep(ol),
243
+ .col-2 :deep(ol),
244
+ .col-3 :deep(ol) {
245
+ list-style: decimal;
246
+ }
247
+
248
+ .col-1 :deep(ol li::marker),
249
+ .col-2 :deep(ol li::marker),
250
+ .col-3 :deep(ol li::marker) {
251
+ color: #6dd750;
252
+ }
253
+
254
+ .col-1 :deep(blockquote),
255
+ .col-2 :deep(blockquote),
256
+ .col-3 :deep(blockquote) {
257
+ border-left: 4px solid #6dd750;
258
+ padding-left: 1rem;
259
+ margin: 1rem 0;
260
+ font-style: italic;
261
+ color: inherit;
262
+ opacity: 0.8;
263
+ }
264
+
265
+ /* Footer */
266
+ .slide-footer {
267
+ display: flex;
268
+ justify-content: space-between;
269
+ align-items: center;
270
+ padding: 1rem 2.5rem;
271
+ position: relative;
272
+ z-index: 10;
273
+ color: inherit;
274
+ }
275
+
276
+ .footer-left {
277
+ display: flex;
278
+ gap: 1rem;
279
+ font-size: 0.75rem;
280
+ color: inherit;
281
+ }
282
+
283
+ .footer-left strong {
284
+ font-weight: 500;
285
+ }
286
+
287
+ .footer-right {
288
+ font-size: 0.75rem;
289
+ color: inherit;
290
+ }
291
+ </style>