slidev-theme-neversink 0.4.0 → 0.4.1
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/.vscode/settings.json +4 -1
- package/components/CreditScroll.vue +16 -21
- package/components/StickyNote.vue +11 -1
- package/docs/.vitepress/config.js +1 -0
- package/docs/components/creditscroll.md +34 -0
- package/docs/components/stickynote.md +16 -0
- package/docs/dark-mode.md +134 -0
- package/docs/getting-started.md +1 -0
- package/docs/layouts/credits.md +1 -1
- package/docs/public/screenshots/1.png +0 -0
- package/docs/public/screenshots/10.png +0 -0
- package/docs/public/screenshots/11.png +0 -0
- package/docs/public/screenshots/12.png +0 -0
- package/docs/public/screenshots/13.png +0 -0
- package/docs/public/screenshots/14.png +0 -0
- package/docs/public/screenshots/15.png +0 -0
- package/docs/public/screenshots/16.png +0 -0
- package/docs/public/screenshots/17.png +0 -0
- package/docs/public/screenshots/18.png +0 -0
- package/docs/public/screenshots/19.png +0 -0
- package/docs/public/screenshots/2.png +0 -0
- package/docs/public/screenshots/20.png +0 -0
- package/docs/public/screenshots/21.png +0 -0
- package/docs/public/screenshots/22.png +0 -0
- package/docs/public/screenshots/23.png +0 -0
- package/docs/public/screenshots/24.png +0 -0
- package/docs/public/screenshots/25.png +0 -0
- package/docs/public/screenshots/26.png +0 -0
- package/docs/public/screenshots/27.png +0 -0
- package/docs/public/screenshots/28.png +0 -0
- package/docs/public/screenshots/29.png +0 -0
- package/docs/public/screenshots/3.png +0 -0
- package/docs/public/screenshots/30.png +0 -0
- package/docs/public/screenshots/31.png +0 -0
- package/docs/public/screenshots/32.png +0 -0
- package/docs/public/screenshots/33.png +0 -0
- package/docs/public/screenshots/34.png +0 -0
- package/docs/public/screenshots/35.png +0 -0
- package/docs/public/screenshots/36.png +0 -0
- package/docs/public/screenshots/37.png +0 -0
- package/docs/public/screenshots/38.png +0 -0
- package/docs/public/screenshots/39.png +0 -0
- package/docs/public/screenshots/4.png +0 -0
- package/docs/public/screenshots/40.png +0 -0
- package/docs/public/screenshots/41.png +0 -0
- package/docs/public/screenshots/42.png +0 -0
- package/docs/public/screenshots/5.png +0 -0
- package/docs/public/screenshots/6.png +0 -0
- package/docs/public/screenshots/7.png +0 -0
- package/docs/public/screenshots/8.png +0 -0
- package/docs/public/screenshots/9.png +0 -0
- package/docs/styling.md +85 -1
- package/example.md +108 -1
- package/layoutHelper.ts +13 -0
- package/layouts/default.vue +9 -1
- package/layouts/full.vue +9 -5
- package/layouts/section.vue +9 -1
- package/layouts/side-title.vue +12 -5
- package/layouts/top-title-two-cols.vue +10 -3
- package/layouts/top-title.vue +10 -3
- package/layouts/two-cols-title.vue +9 -2
- package/package.json +7 -5
- package/screenshot.md +89 -1
- package/styles/base.css +12 -5
- package/styles/dark-mode.css +785 -0
- package/styles/index.ts +1 -0
- package/styles/neversink-c.css +20 -0
- package/uno.config.ts +3 -0
package/.vscode/settings.json
CHANGED
|
@@ -5,25 +5,26 @@ import { onSlideEnter, useSlideContext } from '@slidev/client'
|
|
|
5
5
|
const { $renderContext } = useSlideContext()
|
|
6
6
|
const props = defineProps({
|
|
7
7
|
speed: {
|
|
8
|
+
type: Number,
|
|
8
9
|
default: 0.5,
|
|
9
10
|
},
|
|
10
11
|
loop: {
|
|
12
|
+
type: Boolean,
|
|
11
13
|
default: false,
|
|
12
14
|
},
|
|
13
15
|
})
|
|
14
16
|
|
|
15
17
|
const containerRef = ref(null)
|
|
16
18
|
const scrollPosition = ref(0)
|
|
17
|
-
const isScrolling = ref(false)
|
|
18
19
|
|
|
19
20
|
let animationFrameId = null
|
|
20
21
|
|
|
21
22
|
const scroll = () => {
|
|
22
23
|
scrollPosition.value -= props.speed
|
|
23
24
|
if (Math.abs(scrollPosition.value) >= 550) {
|
|
24
|
-
if (props.loop
|
|
25
|
-
console.log('resetting loop', props.loop.value)
|
|
25
|
+
if (props.loop) {
|
|
26
26
|
resetScroll()
|
|
27
|
+
animationFrameId = requestAnimationFrame(scroll)
|
|
27
28
|
} else {
|
|
28
29
|
stopScrolling()
|
|
29
30
|
return
|
|
@@ -40,34 +41,29 @@ const startScrolling = () => {
|
|
|
40
41
|
const stopScrolling = () => {
|
|
41
42
|
if (animationFrameId) {
|
|
42
43
|
cancelAnimationFrame(animationFrameId)
|
|
44
|
+
animationFrameId = null
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
const resetScroll = () => {
|
|
47
|
-
scrollPosition.value = 480
|
|
49
|
+
scrollPosition.value = 480
|
|
48
50
|
if (animationFrameId) {
|
|
49
51
|
cancelAnimationFrame(animationFrameId)
|
|
52
|
+
animationFrameId = null
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
55
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
resetScroll()
|
|
61
|
-
console.log('starting scrolling')
|
|
62
|
-
startScrolling()
|
|
63
|
-
}
|
|
64
|
-
})
|
|
56
|
+
// Must be called in setup scope
|
|
57
|
+
onSlideEnter(() => {
|
|
58
|
+
if (['slide', 'presenter'].includes($renderContext.value)) {
|
|
59
|
+
stopScrolling()
|
|
60
|
+
resetScroll()
|
|
61
|
+
startScrolling()
|
|
62
|
+
}
|
|
65
63
|
})
|
|
66
64
|
|
|
67
65
|
onUnmounted(() => {
|
|
68
|
-
|
|
69
|
-
cancelAnimationFrame(animationFrameId)
|
|
70
|
-
}
|
|
66
|
+
stopScrolling()
|
|
71
67
|
})
|
|
72
68
|
</script>
|
|
73
69
|
|
|
@@ -81,10 +77,9 @@ onUnmounted(() => {
|
|
|
81
77
|
|
|
82
78
|
<style scoped>
|
|
83
79
|
.scroll-container {
|
|
84
|
-
height: 100vh;
|
|
80
|
+
height: 100vh;
|
|
85
81
|
overflow: hidden;
|
|
86
82
|
position: relative;
|
|
87
|
-
cursor: pointer;
|
|
88
83
|
}
|
|
89
84
|
|
|
90
85
|
.scroll-content {
|
|
@@ -28,6 +28,16 @@ const props = defineProps({
|
|
|
28
28
|
type: String,
|
|
29
29
|
default: 'block text-xs font-mono tracking-normal font-bold',
|
|
30
30
|
},
|
|
31
|
+
devOnly: {
|
|
32
|
+
// only show in dev mode (useful for notes that shouldn't appear in exports)
|
|
33
|
+
type: Boolean,
|
|
34
|
+
default: false,
|
|
35
|
+
},
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
const isVisible = computed(() => {
|
|
39
|
+
if (!props.devOnly) return true
|
|
40
|
+
return import.meta.env.DEV
|
|
31
41
|
})
|
|
32
42
|
|
|
33
43
|
const colorscheme = computed(() => {
|
|
@@ -48,7 +58,7 @@ const stickyStyles = computed(() => ({
|
|
|
48
58
|
</script>
|
|
49
59
|
|
|
50
60
|
<template>
|
|
51
|
-
<div :class="stickyClasses" :style="stickyStyles">
|
|
61
|
+
<div v-if="isVisible" :class="stickyClasses" :style="stickyStyles">
|
|
52
62
|
<template v-if="props.title !== ''"
|
|
53
63
|
><span :class="props.customTitle">{{ props.title }}</span></template
|
|
54
64
|
>
|
|
@@ -28,6 +28,7 @@ export default defineConfig({
|
|
|
28
28
|
{ text: 'Getting Started', link: '/getting-started' },
|
|
29
29
|
{ text: 'Markdown Features', link: '/markdown' },
|
|
30
30
|
{ text: 'Colors Schemes', link: '/colors' },
|
|
31
|
+
{ text: 'Dark Mode', link: '/dark-mode' },
|
|
31
32
|
{ text: 'Styling', link: '/styling' },
|
|
32
33
|
{ text: 'Branding', link: '/branding' },
|
|
33
34
|
{
|
|
@@ -1 +1,35 @@
|
|
|
1
1
|
# CreditScroll
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
The `CreditScroll` component creates a scrolling container similar to movie credits. Content placed inside will automatically scroll upward when the slide is entered. This component is used internally by the [`layout: credits`](/layouts/credits) layout, but can also be used standalone.
|
|
6
|
+
|
|
7
|
+
## Props
|
|
8
|
+
|
|
9
|
+
- `speed` (optional) controls how fast the content scrolls. Default is `0.5`. Higher numbers scroll faster.
|
|
10
|
+
- `loop` (optional) whether the credits should loop back to the beginning after scrolling completes. Default is `false`.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
The component uses a default slot for content.
|
|
15
|
+
|
|
16
|
+
```vue
|
|
17
|
+
<CreditScroll speed="1.0" loop>
|
|
18
|
+
<div class="text-center">
|
|
19
|
+
<h2>Credits</h2>
|
|
20
|
+
<p>Person 1</p>
|
|
21
|
+
<p>Person 2</p>
|
|
22
|
+
</div>
|
|
23
|
+
</CreditScroll>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Behavior
|
|
27
|
+
|
|
28
|
+
- Scrolling automatically starts when you navigate to the slide
|
|
29
|
+
- Scrolling resets when re-entering the slide
|
|
30
|
+
- If `loop` is `true`, the content will restart from the beginning after completing
|
|
31
|
+
- If `loop` is `false`, scrolling stops when the content has fully scrolled through
|
|
32
|
+
|
|
33
|
+
## Note
|
|
34
|
+
|
|
35
|
+
For most use cases, it's easier to use the [`layout: credits`](/layouts/credits) layout which wraps this component and provides frontmatter options for `speed` and `loop`.
|
|
@@ -16,6 +16,7 @@ The `StickyNote` component is used to create a colored box with an title and con
|
|
|
16
16
|
- `textAlign` (optional) the text alignment of the content. Default is `left`.
|
|
17
17
|
- `custom` (optional) a custom CSS class to apply to the sticky note content. Default is empty.
|
|
18
18
|
- `customTitle` (optional) a custom CSS class to apply to the sticky note title. Default is `block text-xs font-mono tracking-normal font-bold`.
|
|
19
|
+
- `devOnly` (optional) when set to `true`, the sticky note will only be visible in development mode and will be hidden in production builds and exports. This is useful for personal notes or reminders that shouldn't appear in the final presentation. Default is `false`.
|
|
19
20
|
|
|
20
21
|
Example:
|
|
21
22
|
|
|
@@ -71,3 +72,18 @@ Another color:
|
|
|
71
72
|
|
|
72
73
|
Hello, I'm a **sticky note**.
|
|
73
74
|
</StickyNote>
|
|
75
|
+
|
|
76
|
+
## Dev-Only Notes
|
|
77
|
+
|
|
78
|
+
Use the `devOnly` prop to create sticky notes that only appear during development. These are perfect for speaker notes, reminders, or TODOs that you don't want in your exported presentation:
|
|
79
|
+
|
|
80
|
+
```vue
|
|
81
|
+
<StickyNote color="amber-light" width="180px" title="Note to self" devOnly>
|
|
82
|
+
Remember to add more examples here before the talk!
|
|
83
|
+
</StickyNote>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
When `devOnly` is set to `true`:
|
|
87
|
+
|
|
88
|
+
- The sticky note is visible when running `slidev dev`
|
|
89
|
+
- The sticky note is **hidden** when running `slidev build` or `slidev export`
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Dark Mode
|
|
2
|
+
|
|
3
|
+
Neversink supports Slidev's built-in dark mode feature, allowing your presentations to adapt to light and dark viewing preferences.
|
|
4
|
+
|
|
5
|
+
## Enabling Dark Mode
|
|
6
|
+
|
|
7
|
+
To enable dark mode support in your presentation, set the `colorSchema` option in your first slide's frontmatter:
|
|
8
|
+
|
|
9
|
+
```md
|
|
10
|
+
---
|
|
11
|
+
theme: neversink
|
|
12
|
+
colorSchema: auto
|
|
13
|
+
---
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Color Schema Options
|
|
17
|
+
|
|
18
|
+
| Value | Description |
|
|
19
|
+
|-------|-------------|
|
|
20
|
+
| `auto` | Automatically switches based on system preference (recommended) |
|
|
21
|
+
| `light` | Forces light mode only |
|
|
22
|
+
| `dark` | Forces dark mode only |
|
|
23
|
+
|
|
24
|
+
## Toggling Dark Mode
|
|
25
|
+
|
|
26
|
+
When `colorSchema` is set to `auto` or when both modes are available, you can toggle between light and dark mode using:
|
|
27
|
+
|
|
28
|
+
- **Keyboard shortcut**: Press `d` to toggle dark mode
|
|
29
|
+
- **Navigation controls**: Click the dark mode toggle in Slidev's navigation panel
|
|
30
|
+
- **System preference**: The presentation will automatically follow your OS dark mode setting when using `auto`
|
|
31
|
+
|
|
32
|
+
## How Color Schemes Work in Dark Mode
|
|
33
|
+
|
|
34
|
+
Neversink's [color schemes](/colors) automatically adapt when dark mode is enabled. Each scheme has been roughly designed to maintain readability and visual appeal in both modes. Suggested improvements are welcome!
|
|
35
|
+
|
|
36
|
+
For example, when you use a layout with `color: amber`:
|
|
37
|
+
|
|
38
|
+
```md
|
|
39
|
+
---
|
|
40
|
+
layout: top-title
|
|
41
|
+
color: amber
|
|
42
|
+
---
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The amber colors will automatically adjust to appropriate dark mode variants when the user toggles dark mode.
|
|
46
|
+
|
|
47
|
+
### CSS Variables in Dark Mode
|
|
48
|
+
|
|
49
|
+
The theme's CSS variables are redefined in dark mode to ensure proper contrast:
|
|
50
|
+
|
|
51
|
+
```css
|
|
52
|
+
/* Light mode (default) */
|
|
53
|
+
--neversink-bg-color: /* light background */
|
|
54
|
+
--neversink-text-color: /* dark text */
|
|
55
|
+
|
|
56
|
+
/* Dark mode (html.dark) */
|
|
57
|
+
--neversink-bg-color: /* dark background */
|
|
58
|
+
--neversink-text-color: /* light text */
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Conditional Content with LightOrDark
|
|
62
|
+
|
|
63
|
+
Slidev provides a built-in `<LightOrDark>` component for showing different content based on the current mode:
|
|
64
|
+
|
|
65
|
+
```vue
|
|
66
|
+
<LightOrDark>
|
|
67
|
+
<template #light>
|
|
68
|
+
<img src="/logo-light.png" />
|
|
69
|
+
</template>
|
|
70
|
+
<template #dark>
|
|
71
|
+
<img src="/logo-dark.png" />
|
|
72
|
+
</template>
|
|
73
|
+
</LightOrDark>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
This is useful for:
|
|
77
|
+
|
|
78
|
+
- Showing different logo versions
|
|
79
|
+
- Displaying images optimized for each mode
|
|
80
|
+
- Any content that needs to differ between modes
|
|
81
|
+
|
|
82
|
+
## Images in Dark Mode
|
|
83
|
+
|
|
84
|
+
Some images designed for light backgrounds may look odd on dark backgrounds. You have several options:
|
|
85
|
+
|
|
86
|
+
### 1. Use the `.invert` Class
|
|
87
|
+
|
|
88
|
+
Add the `invert` class to invert image colors in dark mode:
|
|
89
|
+
|
|
90
|
+
```html
|
|
91
|
+
<img src="/diagram.png" class="invert" />
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 2. Use Conditional Images
|
|
95
|
+
|
|
96
|
+
Use the `<LightOrDark>` component to show different images:
|
|
97
|
+
|
|
98
|
+
```vue
|
|
99
|
+
<LightOrDark>
|
|
100
|
+
<template #light>
|
|
101
|
+
<img src="/chart-light.png" />
|
|
102
|
+
</template>
|
|
103
|
+
<template #dark>
|
|
104
|
+
<img src="/chart-dark.png" />
|
|
105
|
+
</template>
|
|
106
|
+
</LightOrDark>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Components in Dark Mode
|
|
110
|
+
|
|
111
|
+
All Neversink components (StickyNote, Admonition, SpeechBubble, etc.) automatically adapt to dark mode when using color schemes:
|
|
112
|
+
|
|
113
|
+
```vue
|
|
114
|
+
<StickyNote color="amber-light" title="Note">
|
|
115
|
+
This sticky note will look great in both modes!
|
|
116
|
+
</StickyNote>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Programmatic Dark Mode Access
|
|
120
|
+
|
|
121
|
+
For advanced use cases, you can access the dark mode state in Vue components:
|
|
122
|
+
|
|
123
|
+
```vue
|
|
124
|
+
<script setup>
|
|
125
|
+
import { isDark, toggleDark } from '@slidev/client/logic/dark'
|
|
126
|
+
</script>
|
|
127
|
+
|
|
128
|
+
<template>
|
|
129
|
+
<button @click="toggleDark()">
|
|
130
|
+
{{ isDark ? 'Switch to Light' : 'Switch to Dark' }}
|
|
131
|
+
</button>
|
|
132
|
+
</template>
|
|
133
|
+
```
|
|
134
|
+
|
package/docs/getting-started.md
CHANGED
|
@@ -24,6 +24,7 @@ If you are new to Slidev highly recommend you check out the [Slidev documentatio
|
|
|
24
24
|
|
|
25
25
|
- [Markdown features](markdown.md) - special addons to the Slidev markdown syntax
|
|
26
26
|
- [Color schemes](colors.md) - the color schemes available in Neversink
|
|
27
|
+
- [Dark mode](dark-mode.md) - how to enable and use dark mode in your presentations
|
|
27
28
|
- [Branding](branding.md) - how to customize the theme to your brand/logos
|
|
28
29
|
- [Styling](styling.md) - the custom CSS classes available in Neversink
|
|
29
30
|
- [Custom layouts](layouts.md) - the custom slide layouts available in Neversink
|
package/docs/layouts/credits.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Description
|
|
4
4
|
|
|
5
|
-
The `layout: credits`
|
|
5
|
+
The `layout: credits` makes a scrolling credits slide similar to the end of a movie. The slide will automatically scroll the content up the screen. The actual logic for the scrolling is handled by the [CreditScroll component](/components/creditscroll).
|
|
6
6
|
|
|
7
7
|
## Frontmatter
|
|
8
8
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/styling.md
CHANGED
|
@@ -58,7 +58,91 @@ If you want to make bullets a little closer together to make spaceadd the `class
|
|
|
58
58
|
</div>
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
Other options are `ns-c-
|
|
61
|
+
Other options are `ns-c-verytight` and `ns-c-supertight`.
|
|
62
|
+
|
|
63
|
+
## Slide Margins
|
|
64
|
+
|
|
65
|
+
Sometimes you need more space on a slide to fit extra content. Neversink provides two ways to reduce slide margins:
|
|
66
|
+
|
|
67
|
+
### Frontmatter Option
|
|
68
|
+
|
|
69
|
+
Most layouts support a `margin` frontmatter option:
|
|
70
|
+
|
|
71
|
+
```md
|
|
72
|
+
---
|
|
73
|
+
layout: default
|
|
74
|
+
margin: tight
|
|
75
|
+
---
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
| Value | Description | Top Padding | Side Padding |
|
|
79
|
+
|-------|-------------|-------------|--------------|
|
|
80
|
+
| `normal` | Default margins (no change) | 1.8rem | default |
|
|
81
|
+
| `tight` | Reduced padding for more content space | 0.8rem | 1.5rem |
|
|
82
|
+
| `tighter` | Even smaller margins | 0.4rem | 1rem |
|
|
83
|
+
| `none` | Remove all padding | 0 | 0 |
|
|
84
|
+
|
|
85
|
+
This works with layouts: `default`, `full`, `section`, `top-title`, `top-title-two-cols`, `side-title`, and `two-cols-title`.
|
|
86
|
+
|
|
87
|
+
### Visual Comparison
|
|
88
|
+
|
|
89
|
+
Here's how each margin setting affects slide content:
|
|
90
|
+
|
|
91
|
+
<div class="flex flex-wrap gap-4">
|
|
92
|
+
<div class="w-[48%]">
|
|
93
|
+
|
|
94
|
+
**`margin: normal`** (default)
|
|
95
|
+
|
|
96
|
+
<img src="/screenshots/39.png" alt="normal margins" class="screenshot" />
|
|
97
|
+
|
|
98
|
+
</div>
|
|
99
|
+
<div class="w-[48%]">
|
|
100
|
+
|
|
101
|
+
**`margin: tight`**
|
|
102
|
+
|
|
103
|
+
<img src="/screenshots/40.png" alt="tight margins" class="screenshot" />
|
|
104
|
+
|
|
105
|
+
</div>
|
|
106
|
+
<div class="w-[48%]">
|
|
107
|
+
|
|
108
|
+
**`margin: tighter`**
|
|
109
|
+
|
|
110
|
+
<img src="/screenshots/41.png" alt="tighter margins" class="screenshot" />
|
|
111
|
+
|
|
112
|
+
</div>
|
|
113
|
+
<div class="w-[48%]">
|
|
114
|
+
|
|
115
|
+
**`margin: none`**
|
|
116
|
+
|
|
117
|
+
<img src="/screenshots/42.png" alt="no margins" class="screenshot" />
|
|
118
|
+
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
|
|
122
|
+
### CSS Classes
|
|
123
|
+
|
|
124
|
+
You can also apply margin classes directly to elements:
|
|
125
|
+
|
|
126
|
+
| Class | Effect |
|
|
127
|
+
|-------|--------|
|
|
128
|
+
| `ns-c-tight-margin` | Reduced padding (same as `margin: tight`) |
|
|
129
|
+
| `ns-c-tighter-margin` | Even smaller margins (same as `margin: tighter`) |
|
|
130
|
+
| `ns-c-no-margin` | Remove all padding (same as `margin: none`) |
|
|
131
|
+
|
|
132
|
+
Example using a class on a div:
|
|
133
|
+
|
|
134
|
+
```html
|
|
135
|
+
<div class="ns-c-tight-margin">
|
|
136
|
+
Content with reduced margins
|
|
137
|
+
</div>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### When to Use Each Option
|
|
141
|
+
|
|
142
|
+
- **`normal`**: Most slides - good balance of whitespace and content
|
|
143
|
+
- **`tight`**: When you need a little extra room for one more bullet point or a slightly larger image
|
|
144
|
+
- **`tighter`**: For data-heavy slides, large tables, or detailed diagrams
|
|
145
|
+
- **`none`**: Full-bleed images, custom layouts, or when you need absolute control over positioning
|
|
62
146
|
|
|
63
147
|
## Centering content
|
|
64
148
|
|
package/example.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
colorSchema:
|
|
2
|
+
colorSchema: auto
|
|
3
3
|
layout: cover
|
|
4
4
|
routerMode: hash
|
|
5
5
|
title: Base Template
|
|
@@ -1238,6 +1238,30 @@ Hello, I'm also a **sticky note** but I'm customized with a title and a custom c
|
|
|
1238
1238
|
</StickyNote>
|
|
1239
1239
|
```
|
|
1240
1240
|
|
|
1241
|
+
---
|
|
1242
|
+
layout: default
|
|
1243
|
+
title: Dev-Only Sticky Notes
|
|
1244
|
+
---
|
|
1245
|
+
|
|
1246
|
+
# Dev-Only Sticky Notes
|
|
1247
|
+
|
|
1248
|
+
<StickyNote color="rose-light" textAlign="left" width="200px" title="Dev Note" devOnly v-drag="[650,150,200,200]">
|
|
1249
|
+
|
|
1250
|
+
This note only appears in **dev mode**! It won't show in exports or production builds.
|
|
1251
|
+
</StickyNote>
|
|
1252
|
+
|
|
1253
|
+
Use the `devOnly` prop to create sticky notes that only appear during development. These are perfect for speaker notes, reminders, or TODOs that you don't want in your final presentation.
|
|
1254
|
+
|
|
1255
|
+
```vue
|
|
1256
|
+
<StickyNote color="rose-light" title="Dev Note" devOnly>
|
|
1257
|
+
This note only appears in dev mode!
|
|
1258
|
+
</StickyNote>
|
|
1259
|
+
```
|
|
1260
|
+
|
|
1261
|
+
When `devOnly` is set to `true`:
|
|
1262
|
+
- Visible when running `slidev dev`
|
|
1263
|
+
- Hidden when running `slidev build` or `slidev export`
|
|
1264
|
+
|
|
1241
1265
|
---
|
|
1242
1266
|
layout: default
|
|
1243
1267
|
title: Kawaii 1
|
|
@@ -1298,6 +1322,89 @@ Result:
|
|
|
1298
1322
|
|
|
1299
1323
|
|
|
1300
1324
|
|
|
1325
|
+
---
|
|
1326
|
+
layout: default
|
|
1327
|
+
title: Slide Margins - Normal
|
|
1328
|
+
---
|
|
1329
|
+
|
|
1330
|
+
# Slide Margins: `normal` (default)
|
|
1331
|
+
|
|
1332
|
+
Sometimes you need more space on a slide. Use the `margin` frontmatter option to control slide padding.
|
|
1333
|
+
|
|
1334
|
+
- This slide uses the default `margin: normal`
|
|
1335
|
+
- Notice the standard padding around the content
|
|
1336
|
+
- Good for most slides with typical content
|
|
1337
|
+
|
|
1338
|
+
```yaml
|
|
1339
|
+
---
|
|
1340
|
+
layout: default
|
|
1341
|
+
margin: normal # or just omit this line
|
|
1342
|
+
---
|
|
1343
|
+
```
|
|
1344
|
+
|
|
1345
|
+
---
|
|
1346
|
+
layout: default
|
|
1347
|
+
margin: tight
|
|
1348
|
+
title: Slide Margins - Tight
|
|
1349
|
+
---
|
|
1350
|
+
|
|
1351
|
+
# Slide Margins: `tight`
|
|
1352
|
+
|
|
1353
|
+
This slide uses `margin: tight` for reduced padding.
|
|
1354
|
+
|
|
1355
|
+
- More horizontal and vertical space for content
|
|
1356
|
+
- Useful when you need to fit more on a slide
|
|
1357
|
+
- Notice how the content extends closer to the edges
|
|
1358
|
+
|
|
1359
|
+
```yaml
|
|
1360
|
+
---
|
|
1361
|
+
layout: default
|
|
1362
|
+
margin: tight
|
|
1363
|
+
---
|
|
1364
|
+
```
|
|
1365
|
+
|
|
1366
|
+
---
|
|
1367
|
+
layout: default
|
|
1368
|
+
margin: tighter
|
|
1369
|
+
title: Slide Margins - Tighter
|
|
1370
|
+
---
|
|
1371
|
+
|
|
1372
|
+
# Slide Margins: `tighter`
|
|
1373
|
+
|
|
1374
|
+
This slide uses `margin: tighter` for even smaller margins.
|
|
1375
|
+
|
|
1376
|
+
- Maximum content space while still having some padding
|
|
1377
|
+
- Good for dense information or larger diagrams
|
|
1378
|
+
- Compare to the previous slides to see the difference
|
|
1379
|
+
|
|
1380
|
+
```yaml
|
|
1381
|
+
---
|
|
1382
|
+
layout: default
|
|
1383
|
+
margin: tighter
|
|
1384
|
+
---
|
|
1385
|
+
```
|
|
1386
|
+
|
|
1387
|
+
---
|
|
1388
|
+
layout: default
|
|
1389
|
+
margin: none
|
|
1390
|
+
title: Slide Margins - None
|
|
1391
|
+
---
|
|
1392
|
+
|
|
1393
|
+
# Slide Margins: `none`
|
|
1394
|
+
|
|
1395
|
+
This slide uses `margin: none` to remove all padding.
|
|
1396
|
+
|
|
1397
|
+
- Content goes edge-to-edge
|
|
1398
|
+
- Useful for full-bleed images or custom layouts
|
|
1399
|
+
- Be careful with readability near edges
|
|
1400
|
+
|
|
1401
|
+
```yaml
|
|
1402
|
+
---
|
|
1403
|
+
layout: default
|
|
1404
|
+
margin: none
|
|
1405
|
+
---
|
|
1406
|
+
```
|
|
1407
|
+
|
|
1301
1408
|
---
|
|
1302
1409
|
layout: default
|
|
1303
1410
|
title: Lines
|