@sp-days-framework/slidev-theme-sykehuspartner 1.1.1 → 1.1.3-beta1
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/docs/changelog.mdx +69 -0
- package/docs/multi-column/three-cols-header.mdx +14 -1
- package/docs/multi-column/three-cols.mdx +45 -0
- package/docs/multi-column/two-cols-header.mdx +38 -2
- package/docs/multi-column/two-cols.mdx +62 -1
- package/layouts/three-cols-header.vue +16 -2
- package/layouts/three-cols.vue +17 -3
- package/layouts/two-cols-header.vue +32 -5
- package/layouts/two-cols.vue +33 -6
- package/package.json +4 -6
- package/styles/layout.css +22 -3
- package/uno.config.ts +3 -6
package/docs/changelog.mdx
CHANGED
|
@@ -19,6 +19,75 @@ All packages within `@sp-days-framework` use the same version number. In some ca
|
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
+
## Version 1.1.3-beta1 
|
|
23
|
+
|
|
24
|
+
New column layout features, styling improvements, and bug fixes
|
|
25
|
+
|
|
26
|
+
<details>
|
|
27
|
+
<summary><strong>Details</strong> (2026 May 08)</summary>
|
|
28
|
+
|
|
29
|
+
### Breaking Changes
|
|
30
|
+
|
|
31
|
+
- **Column layouts**: `two-cols` and `three-cols` (without `-header`) now use a named `::left::` slot instead of the default slot for left column content. Update existing slides to use `::left::` explicitly.
|
|
32
|
+
|
|
33
|
+
### New Features
|
|
34
|
+
|
|
35
|
+
- **Column ratio**: `two-cols` and `two-cols-header` layouts now accept a `ratio` prop to control the left/right column split (e.g., `ratio: "70%"` gives 70% left, 30% right). Default remains `50%`.
|
|
36
|
+
- **Top/bottom slots**: All column layouts (`two-cols`, `two-cols-header`, `three-cols`, `three-cols-header`) now support `::top::`, `::top-center::`, `::bottom::`, and `::bottom-center::` slots for content above and below the columns.
|
|
37
|
+
|
|
38
|
+
### Bug Fixes
|
|
39
|
+
|
|
40
|
+
- **Inline code dark mode**: Fixed inline code background not being visible when the theme is installed as a package (CSS property was being overridden by conflicting rules)
|
|
41
|
+
- **Inline code background opacity**: Fixed dark mode `--sp-code-background` being nearly invisible (`#01010213` → `#ffffff0f`)
|
|
42
|
+
|
|
43
|
+
### Improvements
|
|
44
|
+
|
|
45
|
+
- **Inline code color**: Inline code now has a subtle yellow tint (`#e8d44d`) in dark mode for better distinction from regular text
|
|
46
|
+
- **Table headers**: Table headers (`th`) are now bold (`font-weight: 700`) and slightly larger (`font-size: 1.05em`) for better visual hierarchy
|
|
47
|
+
- **Dependencies**: Replaced deprecated `glob` package with Node.js built-in `fs.globSync` (requires Node.js >= 22.0.0)
|
|
48
|
+
|
|
49
|
+
### Migration
|
|
50
|
+
|
|
51
|
+
**Column layout slot changes** — Update `two-cols` and `three-cols` slides to use named `::left::` slot:
|
|
52
|
+
|
|
53
|
+
```markdown
|
|
54
|
+
# Before (v1.1.2)
|
|
55
|
+
---
|
|
56
|
+
layout: two-cols
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
# Left content here
|
|
60
|
+
|
|
61
|
+
::right::
|
|
62
|
+
|
|
63
|
+
# Right content
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```markdown
|
|
67
|
+
# After (v1.1.3)
|
|
68
|
+
---
|
|
69
|
+
layout: two-cols
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
::left::
|
|
73
|
+
|
|
74
|
+
# Left content here
|
|
75
|
+
|
|
76
|
+
::right::
|
|
77
|
+
|
|
78
|
+
# Right content
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
</details>
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Version 1.1.2 
|
|
86
|
+
|
|
87
|
+
Version bump to match other packages in the framework
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
22
91
|
## Version 1.1.1 
|
|
23
92
|
|
|
24
93
|
Relative image path support and security updates
|
|
@@ -12,7 +12,20 @@ Three equal columns with a header spanning all three.
|
|
|
12
12
|
| Parameter | Type | Default | Description |
|
|
13
13
|
|-----------|------|---------|-------------|
|
|
14
14
|
| `logo` | boolean | `true` | Show/hide logo |
|
|
15
|
-
| `textAlignment` | string | `'center'` | Content vertical alignment |
|
|
15
|
+
| `textAlignment` | string | `'center'` | Content vertical alignment (`'top'`, `'center'`, `'bottom'`) |
|
|
16
|
+
|
|
17
|
+
## Slots
|
|
18
|
+
|
|
19
|
+
| Slot | Description |
|
|
20
|
+
|------|-------------|
|
|
21
|
+
| default | Header content (spans full width, above columns) |
|
|
22
|
+
| `left` | Left column content |
|
|
23
|
+
| `middle` | Middle column content |
|
|
24
|
+
| `right` | Right column content |
|
|
25
|
+
| `top` | Left-aligned text above all columns (below header) |
|
|
26
|
+
| `top-center` | Center-aligned text above all columns (below header) |
|
|
27
|
+
| `bottom` | Left-aligned text below all columns |
|
|
28
|
+
| `bottom-center` | Center-aligned text below all columns |
|
|
16
29
|
|
|
17
30
|
## Basic Example
|
|
18
31
|
|
|
@@ -13,6 +13,18 @@ Organize content across three equal columns.
|
|
|
13
13
|
|-----------|------|---------|-------------|
|
|
14
14
|
| `logo` | boolean | `false` | Show/hide logo |
|
|
15
15
|
|
|
16
|
+
## Slots
|
|
17
|
+
|
|
18
|
+
| Slot | Description |
|
|
19
|
+
|------|-------------|
|
|
20
|
+
| `left` | Left column content |
|
|
21
|
+
| `middle` | Middle column content |
|
|
22
|
+
| `right` | Right column content |
|
|
23
|
+
| `top` | Left-aligned text above all columns |
|
|
24
|
+
| `top-center` | Center-aligned text above all columns |
|
|
25
|
+
| `bottom` | Left-aligned text below all columns |
|
|
26
|
+
| `bottom-center` | Center-aligned text below all columns |
|
|
27
|
+
|
|
16
28
|
## Basic Example
|
|
17
29
|
|
|
18
30
|
```markdown
|
|
@@ -20,6 +32,8 @@ Organize content across three equal columns.
|
|
|
20
32
|
layout: three-cols
|
|
21
33
|
---
|
|
22
34
|
|
|
35
|
+
::left::
|
|
36
|
+
|
|
23
37
|
# Development
|
|
24
38
|
|
|
25
39
|
- Local Docker
|
|
@@ -45,3 +59,34 @@ layout: three-cols
|
|
|
45
59
|
- Logging
|
|
46
60
|
- Backups
|
|
47
61
|
```
|
|
62
|
+
|
|
63
|
+
## Top & Bottom Slots Example
|
|
64
|
+
|
|
65
|
+
```markdown
|
|
66
|
+
---
|
|
67
|
+
layout: three-cols
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
::top-center::
|
|
71
|
+
|
|
72
|
+
Overview of all environments
|
|
73
|
+
|
|
74
|
+
::left::
|
|
75
|
+
|
|
76
|
+
## Dev
|
|
77
|
+
- Content here
|
|
78
|
+
|
|
79
|
+
::middle::
|
|
80
|
+
|
|
81
|
+
## Staging
|
|
82
|
+
- Content here
|
|
83
|
+
|
|
84
|
+
::right::
|
|
85
|
+
|
|
86
|
+
## Prod
|
|
87
|
+
- Content here
|
|
88
|
+
|
|
89
|
+
::bottom::
|
|
90
|
+
|
|
91
|
+
All environments use the same base configuration.
|
|
92
|
+
```
|
|
@@ -5,14 +5,27 @@ description: Two columns with spanning header
|
|
|
5
5
|
|
|
6
6
|
# Two Cols Header Layout
|
|
7
7
|
|
|
8
|
-
Two
|
|
8
|
+
Two columns with a header that spans both columns.
|
|
9
9
|
|
|
10
10
|
## Parameters
|
|
11
11
|
|
|
12
12
|
| Parameter | Type | Default | Description |
|
|
13
13
|
|-----------|------|---------|-------------|
|
|
14
14
|
| `logo` | boolean | `true` | Show/hide logo |
|
|
15
|
-
| `textAlignment` | string | `'center'` | Content vertical alignment |
|
|
15
|
+
| `textAlignment` | string | `'center'` | Content vertical alignment (`'top'`, `'center'`, `'bottom'`) |
|
|
16
|
+
| `ratio` | string | `'50%'` | Width of the left column (e.g., `'70%'` gives 70% left, 30% right) |
|
|
17
|
+
|
|
18
|
+
## Slots
|
|
19
|
+
|
|
20
|
+
| Slot | Description |
|
|
21
|
+
|------|-------------|
|
|
22
|
+
| default | Header content (spans full width, above columns) |
|
|
23
|
+
| `left` | Left column content |
|
|
24
|
+
| `right` | Right column content |
|
|
25
|
+
| `top` | Left-aligned text above both columns (below header) |
|
|
26
|
+
| `top-center` | Center-aligned text above both columns (below header) |
|
|
27
|
+
| `bottom` | Left-aligned text below both columns |
|
|
28
|
+
| `bottom-center` | Center-aligned text below both columns |
|
|
16
29
|
|
|
17
30
|
## Basic Example
|
|
18
31
|
|
|
@@ -41,3 +54,26 @@ layout: two-cols-header
|
|
|
41
54
|
- Zero-downtime deploy
|
|
42
55
|
- Easy rollback
|
|
43
56
|
```
|
|
57
|
+
|
|
58
|
+
## Custom Ratio Example
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
---
|
|
62
|
+
layout: two-cols-header
|
|
63
|
+
ratio: "30%"
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
# Sidebar Layout
|
|
67
|
+
|
|
68
|
+
::left::
|
|
69
|
+
|
|
70
|
+
## Navigation
|
|
71
|
+
- Item 1
|
|
72
|
+
- Item 2
|
|
73
|
+
|
|
74
|
+
::right::
|
|
75
|
+
|
|
76
|
+
## Main Content (70%)
|
|
77
|
+
|
|
78
|
+
The right column gets the remaining space.
|
|
79
|
+
```
|
|
@@ -5,13 +5,25 @@ description: Two equal-width columns
|
|
|
5
5
|
|
|
6
6
|
# Two Cols Layout
|
|
7
7
|
|
|
8
|
-
Split content into two
|
|
8
|
+
Split content into two columns for comparisons, lists, or parallel information.
|
|
9
9
|
|
|
10
10
|
## Parameters
|
|
11
11
|
|
|
12
12
|
| Parameter | Type | Default | Description |
|
|
13
13
|
|-----------|------|---------|-------------|
|
|
14
14
|
| `logo` | boolean | `false` | Show/hide logo |
|
|
15
|
+
| `ratio` | string | `'50%'` | Width of the left column (e.g., `'70%'` gives 70% left, 30% right) |
|
|
16
|
+
|
|
17
|
+
## Slots
|
|
18
|
+
|
|
19
|
+
| Slot | Description |
|
|
20
|
+
|------|-------------|
|
|
21
|
+
| `left` | Left column content |
|
|
22
|
+
| `right` | Right column content |
|
|
23
|
+
| `top` | Left-aligned text above both columns |
|
|
24
|
+
| `top-center` | Center-aligned text above both columns |
|
|
25
|
+
| `bottom` | Left-aligned text below both columns |
|
|
26
|
+
| `bottom-center` | Center-aligned text below both columns |
|
|
15
27
|
|
|
16
28
|
## Basic Example
|
|
17
29
|
|
|
@@ -20,6 +32,8 @@ Split content into two equal columns for comparisons, lists, or parallel informa
|
|
|
20
32
|
layout: two-cols
|
|
21
33
|
---
|
|
22
34
|
|
|
35
|
+
::left::
|
|
36
|
+
|
|
23
37
|
# Traditional VMs
|
|
24
38
|
|
|
25
39
|
- Heavy resource usage
|
|
@@ -36,3 +50,50 @@ layout: two-cols
|
|
|
36
50
|
- Shared OS kernel
|
|
37
51
|
- Simple orchestration
|
|
38
52
|
```
|
|
53
|
+
|
|
54
|
+
## Custom Ratio Example
|
|
55
|
+
|
|
56
|
+
```markdown
|
|
57
|
+
---
|
|
58
|
+
layout: two-cols
|
|
59
|
+
ratio: "70%"
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
::left::
|
|
63
|
+
|
|
64
|
+
# Main Content (70%)
|
|
65
|
+
|
|
66
|
+
This column takes up 70% of the width.
|
|
67
|
+
|
|
68
|
+
::right::
|
|
69
|
+
|
|
70
|
+
# Sidebar (30%)
|
|
71
|
+
|
|
72
|
+
- Quick notes
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Top & Bottom Slots Example
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
---
|
|
79
|
+
layout: two-cols
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
::top::
|
|
83
|
+
|
|
84
|
+
This text appears above both columns, left-aligned.
|
|
85
|
+
|
|
86
|
+
::left::
|
|
87
|
+
|
|
88
|
+
## Left Column
|
|
89
|
+
- Content here
|
|
90
|
+
|
|
91
|
+
::right::
|
|
92
|
+
|
|
93
|
+
## Right Column
|
|
94
|
+
- Content here
|
|
95
|
+
|
|
96
|
+
::bottom-center::
|
|
97
|
+
|
|
98
|
+
This centered text appears below both columns.
|
|
99
|
+
```
|
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
<div class="header">
|
|
7
7
|
<slot />
|
|
8
8
|
</div>
|
|
9
|
+
<div v-if="$slots.top || $slots['top-center']" class="top-section" :class="{ 'text-center': $slots['top-center'] && !$slots.top }">
|
|
10
|
+
<slot name="top" />
|
|
11
|
+
<slot name="top-center" />
|
|
12
|
+
</div>
|
|
9
13
|
<div class="cols-container">
|
|
10
14
|
<div class="col left">
|
|
11
15
|
<slot name="left" />
|
|
@@ -17,6 +21,10 @@
|
|
|
17
21
|
<slot name="right" />
|
|
18
22
|
</div>
|
|
19
23
|
</div>
|
|
24
|
+
<div v-if="$slots.bottom || $slots['bottom-center']" class="bottom-section" :class="{ 'text-center': $slots['bottom-center'] && !$slots.bottom }">
|
|
25
|
+
<slot name="bottom" />
|
|
26
|
+
<slot name="bottom-center" />
|
|
27
|
+
</div>
|
|
20
28
|
</div>
|
|
21
29
|
</template>
|
|
22
30
|
|
|
@@ -66,6 +74,14 @@ const contentAlignmentStyle = computed(() => {
|
|
|
66
74
|
margin-bottom: 1rem;
|
|
67
75
|
}
|
|
68
76
|
|
|
77
|
+
.top-section {
|
|
78
|
+
margin-bottom: 1rem;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.bottom-section {
|
|
82
|
+
margin-top: 1rem;
|
|
83
|
+
}
|
|
84
|
+
|
|
69
85
|
.cols-container {
|
|
70
86
|
display: flex;
|
|
71
87
|
flex-grow: 1;
|
|
@@ -98,6 +114,4 @@ const contentAlignmentStyle = computed(() => {
|
|
|
98
114
|
right: 1rem;
|
|
99
115
|
z-index: 10;
|
|
100
116
|
}
|
|
101
|
-
|
|
102
|
-
/* Logo styling moved to global layout.css */
|
|
103
117
|
</style>
|
package/layouts/three-cols.vue
CHANGED
|
@@ -3,9 +3,13 @@
|
|
|
3
3
|
<div v-if="showLogo" class="logo-container">
|
|
4
4
|
<div class="logo-image logo"></div>
|
|
5
5
|
</div>
|
|
6
|
+
<div v-if="$slots.top || $slots['top-center']" class="top-section" :class="{ 'text-center': $slots['top-center'] && !$slots.top }">
|
|
7
|
+
<slot name="top" />
|
|
8
|
+
<slot name="top-center" />
|
|
9
|
+
</div>
|
|
6
10
|
<div class="cols-container">
|
|
7
11
|
<div class="col left">
|
|
8
|
-
<slot />
|
|
12
|
+
<slot name="left" />
|
|
9
13
|
</div>
|
|
10
14
|
<div class="col middle">
|
|
11
15
|
<slot name="middle" />
|
|
@@ -14,6 +18,10 @@
|
|
|
14
18
|
<slot name="right" />
|
|
15
19
|
</div>
|
|
16
20
|
</div>
|
|
21
|
+
<div v-if="$slots.bottom || $slots['bottom-center']" class="bottom-section" :class="{ 'text-center': $slots['bottom-center'] && !$slots.bottom }">
|
|
22
|
+
<slot name="bottom" />
|
|
23
|
+
<slot name="bottom-center" />
|
|
24
|
+
</div>
|
|
17
25
|
</div>
|
|
18
26
|
</template>
|
|
19
27
|
|
|
@@ -41,6 +49,14 @@ const showLogo = computed(() => {
|
|
|
41
49
|
flex-direction: column;
|
|
42
50
|
}
|
|
43
51
|
|
|
52
|
+
.top-section {
|
|
53
|
+
margin-bottom: 1rem;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.bottom-section {
|
|
57
|
+
margin-top: 1rem;
|
|
58
|
+
}
|
|
59
|
+
|
|
44
60
|
.cols-container {
|
|
45
61
|
display: flex;
|
|
46
62
|
flex-grow: 1;
|
|
@@ -72,6 +88,4 @@ const showLogo = computed(() => {
|
|
|
72
88
|
right: 1rem;
|
|
73
89
|
z-index: 10;
|
|
74
90
|
}
|
|
75
|
-
|
|
76
|
-
/* Logo styling moved to global layout.css */
|
|
77
91
|
</style>
|
|
@@ -6,14 +6,22 @@
|
|
|
6
6
|
<div class="header">
|
|
7
7
|
<slot />
|
|
8
8
|
</div>
|
|
9
|
+
<div v-if="$slots.top || $slots['top-center']" class="top-section" :class="{ 'text-center': $slots['top-center'] && !$slots.top }">
|
|
10
|
+
<slot name="top" />
|
|
11
|
+
<slot name="top-center" />
|
|
12
|
+
</div>
|
|
9
13
|
<div class="cols-container">
|
|
10
|
-
<div class="col left">
|
|
14
|
+
<div class="col left" :style="{ width: leftWidth }">
|
|
11
15
|
<slot name="left" />
|
|
12
16
|
</div>
|
|
13
|
-
<div class="col right">
|
|
17
|
+
<div class="col right" :style="{ width: rightWidth }">
|
|
14
18
|
<slot name="right" />
|
|
15
19
|
</div>
|
|
16
20
|
</div>
|
|
21
|
+
<div v-if="$slots.bottom || $slots['bottom-center']" class="bottom-section" :class="{ 'text-center': $slots['bottom-center'] && !$slots.bottom }">
|
|
22
|
+
<slot name="bottom" />
|
|
23
|
+
<slot name="bottom-center" />
|
|
24
|
+
</div>
|
|
17
25
|
</div>
|
|
18
26
|
</template>
|
|
19
27
|
|
|
@@ -29,6 +37,10 @@ const props = defineProps({
|
|
|
29
37
|
type: String,
|
|
30
38
|
default: 'center',
|
|
31
39
|
validator: (value) => ['top', 'center', 'bottom'].includes(value)
|
|
40
|
+
},
|
|
41
|
+
ratio: {
|
|
42
|
+
type: String,
|
|
43
|
+
default: '50%'
|
|
32
44
|
}
|
|
33
45
|
})
|
|
34
46
|
|
|
@@ -51,6 +63,16 @@ const contentAlignmentStyle = computed(() => {
|
|
|
51
63
|
return 'center'
|
|
52
64
|
}
|
|
53
65
|
})
|
|
66
|
+
|
|
67
|
+
const leftWidth = computed(() => {
|
|
68
|
+
const r = props.ratio.endsWith('%') ? props.ratio : `${parseFloat(props.ratio)}%`
|
|
69
|
+
return r
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
const rightWidth = computed(() => {
|
|
73
|
+
const left = parseFloat(leftWidth.value)
|
|
74
|
+
return `${100 - left}%`
|
|
75
|
+
})
|
|
54
76
|
</script>
|
|
55
77
|
|
|
56
78
|
<style scoped>
|
|
@@ -69,6 +91,14 @@ const contentAlignmentStyle = computed(() => {
|
|
|
69
91
|
margin-bottom: 0.5rem;
|
|
70
92
|
}
|
|
71
93
|
|
|
94
|
+
.top-section {
|
|
95
|
+
margin-bottom: 1rem;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.bottom-section {
|
|
99
|
+
margin-top: 1rem;
|
|
100
|
+
}
|
|
101
|
+
|
|
72
102
|
.cols-container {
|
|
73
103
|
display: flex;
|
|
74
104
|
flex-grow: 1;
|
|
@@ -78,7 +108,6 @@ const contentAlignmentStyle = computed(() => {
|
|
|
78
108
|
.col {
|
|
79
109
|
display: flex;
|
|
80
110
|
flex-direction: column;
|
|
81
|
-
width: 50%;
|
|
82
111
|
justify-content: v-bind(contentAlignmentStyle);
|
|
83
112
|
}
|
|
84
113
|
|
|
@@ -96,6 +125,4 @@ const contentAlignmentStyle = computed(() => {
|
|
|
96
125
|
right: 1rem;
|
|
97
126
|
z-index: 10;
|
|
98
127
|
}
|
|
99
|
-
|
|
100
|
-
/* Logo styling moved to global layout.css */
|
|
101
128
|
</style>
|
package/layouts/two-cols.vue
CHANGED
|
@@ -3,14 +3,22 @@
|
|
|
3
3
|
<div v-if="showLogo" class="logo-container">
|
|
4
4
|
<div class="logo-image logo"></div>
|
|
5
5
|
</div>
|
|
6
|
+
<div v-if="$slots.top || $slots['top-center']" class="top-section" :class="{ 'text-center': $slots['top-center'] && !$slots.top }">
|
|
7
|
+
<slot name="top" />
|
|
8
|
+
<slot name="top-center" />
|
|
9
|
+
</div>
|
|
6
10
|
<div class="cols-container">
|
|
7
|
-
<div class="col left">
|
|
8
|
-
<slot />
|
|
11
|
+
<div class="col left" :style="{ width: leftWidth }">
|
|
12
|
+
<slot name="left" />
|
|
9
13
|
</div>
|
|
10
|
-
<div class="col right">
|
|
14
|
+
<div class="col right" :style="{ width: rightWidth }">
|
|
11
15
|
<slot name="right" />
|
|
12
16
|
</div>
|
|
13
17
|
</div>
|
|
18
|
+
<div v-if="$slots.bottom || $slots['bottom-center']" class="bottom-section" :class="{ 'text-center': $slots['bottom-center'] && !$slots.bottom }">
|
|
19
|
+
<slot name="bottom" />
|
|
20
|
+
<slot name="bottom-center" />
|
|
21
|
+
</div>
|
|
14
22
|
</div>
|
|
15
23
|
</template>
|
|
16
24
|
|
|
@@ -21,6 +29,10 @@ const props = defineProps({
|
|
|
21
29
|
logo: {
|
|
22
30
|
type: Boolean,
|
|
23
31
|
default: false
|
|
32
|
+
},
|
|
33
|
+
ratio: {
|
|
34
|
+
type: String,
|
|
35
|
+
default: '50%'
|
|
24
36
|
}
|
|
25
37
|
})
|
|
26
38
|
|
|
@@ -30,6 +42,16 @@ const showLogo = computed(() => {
|
|
|
30
42
|
}
|
|
31
43
|
return props.logo
|
|
32
44
|
})
|
|
45
|
+
|
|
46
|
+
const leftWidth = computed(() => {
|
|
47
|
+
const r = props.ratio.endsWith('%') ? props.ratio : `${parseFloat(props.ratio)}%`
|
|
48
|
+
return r
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
const rightWidth = computed(() => {
|
|
52
|
+
const left = parseFloat(leftWidth.value)
|
|
53
|
+
return `${100 - left}%`
|
|
54
|
+
})
|
|
33
55
|
</script>
|
|
34
56
|
|
|
35
57
|
<style scoped>
|
|
@@ -38,6 +60,14 @@ const showLogo = computed(() => {
|
|
|
38
60
|
flex-direction: column;
|
|
39
61
|
}
|
|
40
62
|
|
|
63
|
+
.top-section {
|
|
64
|
+
margin-bottom: 1rem;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.bottom-section {
|
|
68
|
+
margin-top: 1rem;
|
|
69
|
+
}
|
|
70
|
+
|
|
41
71
|
.cols-container {
|
|
42
72
|
display: flex;
|
|
43
73
|
flex-grow: 1;
|
|
@@ -47,7 +77,6 @@ const showLogo = computed(() => {
|
|
|
47
77
|
.col {
|
|
48
78
|
display: flex;
|
|
49
79
|
flex-direction: column;
|
|
50
|
-
width: 50%;
|
|
51
80
|
}
|
|
52
81
|
|
|
53
82
|
.left {
|
|
@@ -64,6 +93,4 @@ const showLogo = computed(() => {
|
|
|
64
93
|
right: 1rem;
|
|
65
94
|
z-index: 10;
|
|
66
95
|
}
|
|
67
|
-
|
|
68
|
-
/* Logo styling moved to global layout.css */
|
|
69
96
|
</style>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sp-days-framework/slidev-theme-sykehuspartner",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.3-beta1",
|
|
4
4
|
"description": "A Slidev theme for Sykehuspartner presentations.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"./publish-package-docs": "./publish-package-docs.js"
|
|
20
20
|
},
|
|
21
21
|
"engines": {
|
|
22
|
-
"node": ">=
|
|
22
|
+
"node": ">=22.0.0"
|
|
23
23
|
},
|
|
24
24
|
"scripts": {
|
|
25
25
|
"slidev": "slidev",
|
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"export": "slidev export example.md",
|
|
29
29
|
"screenshot": "slidev export example.md --format png"
|
|
30
30
|
},
|
|
31
|
-
"dependencies": {
|
|
32
|
-
"glob": "^11.1.0"
|
|
33
|
-
},
|
|
31
|
+
"dependencies": {},
|
|
34
32
|
"devDependencies": {
|
|
35
33
|
"@iconify-json/vscode-icons": "^1.2.36",
|
|
36
34
|
"@slidev/cli": "^52.9.1",
|
|
@@ -43,7 +41,7 @@
|
|
|
43
41
|
},
|
|
44
42
|
"overrides": {
|
|
45
43
|
"dompurify": "^3.2.4",
|
|
46
|
-
"lodash-es": ">=4.
|
|
44
|
+
"lodash-es": ">=4.18.1",
|
|
47
45
|
"chevrotain": ">=11.1.1"
|
|
48
46
|
},
|
|
49
47
|
"files": [
|
package/styles/layout.css
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
--sp-danger: #fa383e;
|
|
8
8
|
--sp-background: #f7faff;
|
|
9
9
|
--sp-shadow: #00000028;
|
|
10
|
-
--sp-code-background: #
|
|
10
|
+
--sp-code-background: #2525250a;
|
|
11
11
|
|
|
12
12
|
/* Primary color variations (light) */
|
|
13
13
|
--sp-primary-dark: #023977;
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
--sp-danger: #ff6369;
|
|
30
30
|
--sp-background: #0d1117;
|
|
31
31
|
--sp-shadow: #ffffff28;
|
|
32
|
-
--sp-code-background: #
|
|
32
|
+
--sp-code-background: #cfcfcf0f;
|
|
33
33
|
|
|
34
34
|
/* Primary color variations inverted (dark) */
|
|
35
35
|
--sp-primary-light: #5ea4e1;
|
|
@@ -40,6 +40,15 @@
|
|
|
40
40
|
--sp-primary-darkest: #c1dcf4;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
.slidev-layout :not(pre) > code {
|
|
44
|
+
color: #272200;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* Dark mode inline code font color */
|
|
48
|
+
.dark .slidev-layout :not(pre) > code {
|
|
49
|
+
color: #f0e38f;
|
|
50
|
+
}
|
|
51
|
+
|
|
43
52
|
/* Default styling for all layouts */
|
|
44
53
|
.slidev-layout {
|
|
45
54
|
h1 {
|
|
@@ -65,7 +74,17 @@
|
|
|
65
74
|
position: relative;
|
|
66
75
|
|
|
67
76
|
:not(pre) > code {
|
|
68
|
-
background: var(--sp-code-background);
|
|
77
|
+
background: var(--sp-code-background) !important;
|
|
78
|
+
border-radius: var(--slidev-code-radius) !important;
|
|
79
|
+
padding-top: 0.06rem !important;
|
|
80
|
+
padding-bottom: 0.06rem !important;
|
|
81
|
+
padding-left: 0.375rem !important;
|
|
82
|
+
padding-right: 0.375rem !important;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
th {
|
|
86
|
+
font-weight: 700;
|
|
87
|
+
font-size: 1.05em;
|
|
69
88
|
}
|
|
70
89
|
|
|
71
90
|
/* blockquote {
|
package/uno.config.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { defineConfig } from 'unocss'
|
|
2
2
|
import fs from 'fs'
|
|
3
3
|
import path from 'path'
|
|
4
|
-
import { globSync } from 'glob'
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* Scans markdown files for VSCode icon patterns used in code blocks.
|
|
@@ -75,12 +74,10 @@ function scanFilesForIcons(): string[] {
|
|
|
75
74
|
if (!fs.existsSync(searchRoot)) continue
|
|
76
75
|
|
|
77
76
|
// Find all markdown files, excluding node_modules but INCLUDE .docusaurus
|
|
78
|
-
const slideFiles = globSync('**/*.md', {
|
|
79
|
-
absolute: true,
|
|
77
|
+
const slideFiles = fs.globSync('**/*.md', {
|
|
80
78
|
cwd: searchRoot,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
})
|
|
79
|
+
exclude: (name) => name === 'node_modules' || name === 'dist' || name === 'build'
|
|
80
|
+
}).map((f: string) => path.resolve(searchRoot, f))
|
|
84
81
|
|
|
85
82
|
// Scan each file for icon patterns
|
|
86
83
|
slideFiles.forEach((file: string) => {
|