slidev-theme-measurelab 0.1.0 → 0.2.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.
package/global.css CHANGED
@@ -644,3 +644,90 @@ button:disabled,
644
644
  .dark .recharts-rectangle.recharts-tooltip-cursor {
645
645
  fill: oklch(0.7879 0.1991 139.5227 / 0.1) !important;
646
646
  }
647
+
648
+ /* Slidev layout content safe area - keep content away from footer */
649
+ .slidev-layout {
650
+ padding-bottom: 5.5rem !important;
651
+ }
652
+
653
+ /* For PDF export - reduce padding since nav buttons are hidden */
654
+ @media print {
655
+ .slidev-layout {
656
+ padding-bottom: 1rem !important;
657
+ }
658
+ }
659
+
660
+ /* Slidev inline code styling - use brand green */
661
+ .slidev-layout code {
662
+ color: #6dd750 !important;
663
+ background-color: #081f30 !important;
664
+ padding: 0.125rem 0.375rem;
665
+ border-radius: 0.25rem;
666
+ font-family: var(--font-mono);
667
+ }
668
+
669
+ /* Dark mode inline code */
670
+ .dark .slidev-layout code,
671
+ .slidev-layout.is-dark code {
672
+ color: #6dd750 !important;
673
+ background-color: rgba(255, 255, 255, 0.1) !important;
674
+ }
675
+
676
+ /* Mermaid diagram styling */
677
+ .mermaid {
678
+ font-family: var(--font-sans) !important;
679
+ }
680
+
681
+ .mermaid .node rect,
682
+ .mermaid .node circle,
683
+ .mermaid .node polygon {
684
+ fill: #f9f9f9 !important;
685
+ stroke: #6dd750 !important;
686
+ stroke-width: 2px !important;
687
+ }
688
+
689
+ .mermaid .node .label {
690
+ color: #081f30 !important;
691
+ fill: #081f30 !important;
692
+ }
693
+
694
+ .mermaid .edgePath .path {
695
+ stroke: #f97316 !important;
696
+ stroke-width: 2px !important;
697
+ }
698
+
699
+ .mermaid .arrowheadPath {
700
+ fill: #f97316 !important;
701
+ }
702
+
703
+ .mermaid .edgeLabel {
704
+ background-color: #ffffff !important;
705
+ color: #081f30 !important;
706
+ }
707
+
708
+ /* Dark mode Mermaid */
709
+ .dark .mermaid .node rect,
710
+ .dark .mermaid .node circle,
711
+ .dark .mermaid .node polygon {
712
+ fill: #2a3a4a !important;
713
+ stroke: #6dd750 !important;
714
+ }
715
+
716
+ .dark .mermaid .node .label {
717
+ color: #f9f9f9 !important;
718
+ fill: #f9f9f9 !important;
719
+ }
720
+
721
+ .dark .mermaid .edgePath .path {
722
+ stroke: #f97316 !important;
723
+ }
724
+
725
+ .dark .mermaid .arrowheadPath {
726
+ fill: #f97316 !important;
727
+ }
728
+
729
+ .dark .mermaid .edgeLabel {
730
+ background-color: #081f30 !important;
731
+ color: #f9f9f9 !important;
732
+ }
733
+
@@ -225,6 +225,54 @@ const isDark = computed(() => {
225
225
  opacity: 0.8;
226
226
  }
227
227
 
228
+ /* Tables */
229
+ .slide-content :deep(table) {
230
+ width: 100%;
231
+ border-collapse: collapse;
232
+ margin: 1rem 0;
233
+ border: 1px solid #f0f0f0;
234
+ }
235
+
236
+ .default.is-dark .slide-content :deep(table) {
237
+ border-color: #2a3a4a;
238
+ }
239
+
240
+ .slide-content :deep(th) {
241
+ background-color: #f9f9f9;
242
+ color: #081f30;
243
+ font-weight: 500;
244
+ text-align: left;
245
+ padding: 0.75rem 1rem;
246
+ border-bottom: 1px solid #f0f0f0;
247
+ }
248
+
249
+ .slide-content :deep(td) {
250
+ background-color: #ffffff;
251
+ color: #081f30;
252
+ padding: 0.75rem 1rem;
253
+ border-bottom: 1px solid #f0f0f0;
254
+ }
255
+
256
+ .slide-content :deep(tr:last-child td) {
257
+ border-bottom: none;
258
+ }
259
+
260
+ /* Dark mode tables */
261
+ .default.is-dark .slide-content :deep(th) {
262
+ background-color: #2a3a4a;
263
+ color: #f9f9f9;
264
+ }
265
+
266
+ .default.is-dark .slide-content :deep(td) {
267
+ background-color: #081f30;
268
+ color: #f9f9f9;
269
+ border-bottom-color: #2a3a4a;
270
+ }
271
+
272
+ .default.is-dark .slide-content :deep(th) {
273
+ border-bottom-color: #2a3a4a;
274
+ }
275
+
228
276
  /* Footer */
229
277
  .slide-footer {
230
278
  display: flex;
@@ -251,4 +299,14 @@ const isDark = computed(() => {
251
299
  font-size: 0.75rem;
252
300
  color: inherit;
253
301
  }
302
+
303
+ /* Dark mode footer */
304
+ .default.is-dark .slide-footer,
305
+ .default.is-dark .footer-left,
306
+ .default.is-dark .footer-right,
307
+ .default.is-dark .copyright,
308
+ .default.is-dark .confidential,
309
+ .default.is-dark .page-number {
310
+ color: #f9f9f9;
311
+ }
254
312
  </style>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slidev-theme-measurelab",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "description": "Measurelab branded theme for Slidev presentations",
6
6
  "author": "Measurelab",
@@ -43,7 +43,8 @@
43
43
  "export": "slidev export slides.md"
44
44
  },
45
45
  "dependencies": {
46
- "@iconify-json/lucide": "^1.1.0"
46
+ "@iconify-json/lucide": "^1.1.0",
47
+ "slidev-theme-measurelab": "^0.1.0"
47
48
  },
48
49
  "devDependencies": {
49
50
  "@slidev/cli": "^0.50.0",
@@ -0,0 +1,48 @@
1
+ import { defineMermaidSetup } from '@slidev/types'
2
+
3
+ export default defineMermaidSetup(() => {
4
+ return {
5
+ theme: 'base',
6
+ themeVariables: {
7
+ // Primary colors - light grey nodes with green border
8
+ primaryColor: '#f9f9f9',
9
+ primaryTextColor: '#081f30',
10
+ primaryBorderColor: '#6dd750',
11
+
12
+ // Secondary colors
13
+ secondaryColor: '#e8e8e8',
14
+ secondaryTextColor: '#081f30',
15
+ secondaryBorderColor: '#6dd750',
16
+
17
+ // Tertiary colors
18
+ tertiaryColor: '#f5f5f5',
19
+ tertiaryTextColor: '#081f30',
20
+ tertiaryBorderColor: '#6dd750',
21
+
22
+ // Background
23
+ background: '#ffffff',
24
+ mainBkg: '#f9f9f9',
25
+
26
+ // Lines and arrows - coral orange
27
+ lineColor: '#f97316',
28
+ arrowheadColor: '#f97316',
29
+
30
+ // Text
31
+ textColor: '#081f30',
32
+
33
+ // Flowchart specific
34
+ nodeBorder: '#6dd750',
35
+ nodeTextColor: '#081f30',
36
+
37
+ // Sequence diagram
38
+ actorBkg: '#f9f9f9',
39
+ actorBorder: '#6dd750',
40
+ actorTextColor: '#081f30',
41
+ signalColor: '#f97316',
42
+ signalTextColor: '#081f30',
43
+
44
+ // Fonts
45
+ fontFamily: 'Poppins, sans-serif',
46
+ },
47
+ }
48
+ })
@@ -0,0 +1,96 @@
1
+ {
2
+ "name": "measurelab",
3
+ "type": "dark",
4
+ "colors": {
5
+ "editor.background": "#081f30",
6
+ "editor.foreground": "#f9f9f9"
7
+ },
8
+ "tokenColors": [
9
+ {
10
+ "scope": ["comment", "punctuation.definition.comment"],
11
+ "settings": {
12
+ "foreground": "#7ddaee",
13
+ "fontStyle": "italic"
14
+ }
15
+ },
16
+ {
17
+ "scope": ["string", "string.quoted", "string.template"],
18
+ "settings": {
19
+ "foreground": "#40faa3"
20
+ }
21
+ },
22
+ {
23
+ "scope": ["constant.numeric", "constant.language", "constant.character"],
24
+ "settings": {
25
+ "foreground": "#f97316"
26
+ }
27
+ },
28
+ {
29
+ "scope": ["keyword", "storage.type", "storage.modifier"],
30
+ "settings": {
31
+ "foreground": "#fbbc02"
32
+ }
33
+ },
34
+ {
35
+ "scope": ["entity.name.function", "support.function", "meta.function-call"],
36
+ "settings": {
37
+ "foreground": "#7ddaee"
38
+ }
39
+ },
40
+ {
41
+ "scope": ["entity.name.type", "entity.name.class", "support.type", "support.class"],
42
+ "settings": {
43
+ "foreground": "#cdfe0c"
44
+ }
45
+ },
46
+ {
47
+ "scope": ["variable", "variable.other", "variable.parameter"],
48
+ "settings": {
49
+ "foreground": "#f9f9f9"
50
+ }
51
+ },
52
+ {
53
+ "scope": ["entity.name.tag", "punctuation.definition.tag"],
54
+ "settings": {
55
+ "foreground": "#fbbc02"
56
+ }
57
+ },
58
+ {
59
+ "scope": ["entity.other.attribute-name"],
60
+ "settings": {
61
+ "foreground": "#40faa3"
62
+ }
63
+ },
64
+ {
65
+ "scope": ["punctuation", "meta.brace"],
66
+ "settings": {
67
+ "foreground": "#f9f9f9"
68
+ }
69
+ },
70
+ {
71
+ "scope": ["markup.heading"],
72
+ "settings": {
73
+ "foreground": "#40faa3",
74
+ "fontStyle": "bold"
75
+ }
76
+ },
77
+ {
78
+ "scope": ["markup.bold"],
79
+ "settings": {
80
+ "fontStyle": "bold"
81
+ }
82
+ },
83
+ {
84
+ "scope": ["markup.italic"],
85
+ "settings": {
86
+ "fontStyle": "italic"
87
+ }
88
+ },
89
+ {
90
+ "scope": ["markup.list"],
91
+ "settings": {
92
+ "foreground": "#f97316"
93
+ }
94
+ }
95
+ ]
96
+ }
package/setup/shiki.ts ADDED
@@ -0,0 +1,11 @@
1
+ import { defineShikiSetup } from '@slidev/types'
2
+ import measurelabTheme from './shiki-theme.json'
3
+
4
+ export default defineShikiSetup(() => {
5
+ return {
6
+ themes: {
7
+ dark: measurelabTheme,
8
+ light: measurelabTheme,
9
+ },
10
+ }
11
+ })