slidev-theme-neversink 0.0.3 → 0.1.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.
Binary file
Binary file
@@ -0,0 +1,6 @@
1
+ <script setup>
2
+ import imgUrl from '../assets/arrowheads.png'
3
+ </script>
4
+ <template>
5
+ <img :src="imgUrl" alt="Arrowhead" class="w-30" />
6
+ </template>
@@ -0,0 +1,21 @@
1
+ <script setup>
2
+ const props = defineProps({
3
+ v: {
4
+ default: 'null@null.com',
5
+ },
6
+ })
7
+ </script>
8
+
9
+ <template>
10
+ <div class="ns-c-email text-0.85rem text-gray-700 mt-0 tracking-wide leading-none ns-c-iconlink">
11
+ {{ props.v }} <a href="mailto:" class=""><mdi-email /></a>
12
+ </div>
13
+ </template>
14
+
15
+ <style>
16
+ .ns-c-email {
17
+ font-family: var(--neversink-font-mono);
18
+ font-weight: 300;
19
+ letter-spacing: 0.09em;
20
+ }
21
+ </style>
@@ -2,11 +2,12 @@ import { defineConfig } from 'vitepress'
2
2
  import Unocss from 'unocss/vite'
3
3
  import { sub } from '@mdit/plugin-sub'
4
4
  import Mark from 'markdown-it-mark'
5
+ import { version } from '../../package.json'
5
6
 
6
7
  // https://vitepress.dev/reference/site-config
7
8
  export default defineConfig({
8
9
  title: 'Slidev Theme Neversink',
9
- description: 'An education/academia oriented Slidev theme with whimsical elements',
10
+ description: 'An education/academic oriented Slidev theme',
10
11
  base: '/slidev-theme-neversink/',
11
12
  themeConfig: {
12
13
  // https://vitepress.dev/reference/default-theme-config
@@ -14,6 +15,10 @@ export default defineConfig({
14
15
  { text: 'Home', link: '/' },
15
16
  { text: 'Getting started', link: '/getting-started' },
16
17
  { text: 'Example Deck', link: 'https://gureckis.github.io/slidev-theme-neversink/example/#1', target: '_self' },
18
+ {
19
+ text: `v${version}`,
20
+ items: [{ text: 'Release Notes', link: 'https://github.com/gureckis/slidev-theme-neversink/releases' }],
21
+ },
17
22
  ],
18
23
 
19
24
  sidebar: [
@@ -23,6 +28,7 @@ export default defineConfig({
23
28
  { text: 'Getting Started', link: '/getting-started' },
24
29
  { text: 'Markdown Features', link: '/markdown' },
25
30
  { text: 'Colors Schemes', link: '/colors' },
31
+ { text: 'Styling', link: '/styling' },
26
32
  { text: 'Branding', link: '/branding' },
27
33
  {
28
34
  text: 'Layouts',
@@ -48,11 +54,13 @@ export default defineConfig({
48
54
  items: [
49
55
  { text: 'Overview', link: '/components' },
50
56
  { text: 'Admonitions', link: '/components/admonitions' },
57
+ { text: 'Email', link: '/components/email' },
51
58
  { text: 'SpeechBubble', link: '/components/speechbubble' },
52
59
  { text: 'StickyNote', link: '/components/stickynote' },
53
60
  { text: 'CreditScroll', link: '/components/creditscroll' },
54
61
  { text: 'QRCode', link: '/components/qrcode' },
55
62
  { text: 'Kawaii', link: '/components/kawaii' },
63
+ { text: 'ArrowHeads', link: '/components/arrowheads' },
56
64
  ],
57
65
  },
58
66
  { text: 'Customizing', link: '/customizing' },
@@ -61,7 +69,7 @@ export default defineConfig({
61
69
  },
62
70
  ],
63
71
 
64
- socialLinks: [{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }],
72
+ socialLinks: [{ icon: 'github', link: 'https://github.com/gureckis/slidev-theme-neversink' }],
65
73
  },
66
74
  markdown: {
67
75
  config: (md) => {
@@ -109,8 +109,11 @@ mark {
109
109
  * -------------------------------------------------------------------------- */
110
110
 
111
111
  :root {
112
- --vp-home-hero-name-color: black;
112
+ --vp-home-hero-name-color: transparent;
113
113
  --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe 30%, #41d1ff);
114
+
115
+ --vp-home-hero-image-background-image: linear-gradient(-45deg, #bd34fe 50%, #47caff 50%);
116
+ --vp-home-hero-image-filter: blur(44px);
114
117
  }
115
118
 
116
119
  @media (min-width: 640px) {
@@ -0,0 +1,15 @@
1
+ # ArrowHeads
2
+
3
+ ## Description
4
+
5
+ Draws a set of hand drawn arrows that point to a central location. Useful to call attention to a particular element on a slide.
6
+
7
+ ## `ArrowHeads` component
8
+
9
+ ```md
10
+ <ArrowHeads v-drag />
11
+ ```
12
+
13
+ Renders as:
14
+
15
+ <img src="/screenshots/arrowheads.png" alt="ArrowHeads component" width="200px" />
@@ -0,0 +1,19 @@
1
+ # Email
2
+
3
+ ## Description
4
+
5
+ Email is a quick way to format a email addres. In add a `mailto:` link and an icon.
6
+
7
+ ## `Email` component
8
+
9
+ The `Email` component formats a email address on (usually) title slides
10
+
11
+ - `v` (required). The email address
12
+
13
+ ```md
14
+ <Email v="todd.gureckis@nyu.edu" />
15
+ ```
16
+
17
+ Renders as:
18
+
19
+ <img src="/screenshots/email.png" alt="ArrowHeads component" width="200px" />
@@ -16,4 +16,8 @@ The current components are:
16
16
 
17
17
  - [Kawaii](/components/kawaii) - Modification of select [Vue Kawaii](https://github.com/youngtailors/vue-kawaii) figures that add cute characters to slides.
18
18
 
19
+ - [Email](/components/email) - formats email addresses
20
+
21
+ - [ArrowHeads](/components/arrowheads) - draws a bunch of arrows pointing at a central place. Useful for drawing attention to a particular part of a slide.
22
+
19
23
  Most component can just be included in-line in your markdown. However, in some cases it can make sense to position these components using the `v-drag` directive. For example, the `SpeechBubble` component can be positioned using the `v-drag` directive to place it in a specific location on the slide. This can be useful for creating custom layouts or animations. In that case, it makes sense to keep the component in the [default slot](/layouts#slots) of each layout.
@@ -7,7 +7,7 @@ Generally you can customize this theme following the recommendations of [Slidev]
7
7
  To add custom CSS styles to your project simply create a folder in the same files as your slide markdown file (usually `slides.md`) called `styles`.
8
8
 
9
9
  ```sh
10
- your-slidev/
10
+ your-presentation-folder/
11
11
  ├── slides.md
12
12
  └── styles/
13
13
  ├── index.ts
@@ -32,7 +32,7 @@ To customize the fonts used in the theme, you can set the following CSS variable
32
32
  :root {
33
33
  --neversink-title-font: 'Inter', sans-serif;
34
34
  --neversink-main-font: 'Inter', sans-serif;
35
- --neversink-mono-font: 'Inter', monospace;
36
- --neversink-quote-font: 'Fire Code', monospace;
35
+ --neversink-mono-font: 'Fira Code', monospace;
36
+ --neversink-quote-font: 'Fira Code', monospace;
37
37
  }
38
38
  ```
@@ -1,12 +1,14 @@
1
1
  # Getting started with Neversink
2
2
 
3
- The theme depends on Slidev. So you need to have that [installed first](https://sli.dev/guide/install). Then you can install the theme with npm:
3
+ The theme depends on Node.js and [Slidev](https://sli.dev). If you don't have Node.js installed, you can download it from [nodejs.org](https://nodejs.org/). Once you have Node.js installed, you can create a new Slidev project with the Neversink theme by running the following command:
4
4
 
5
5
  ```bash
6
- npm install slidev-theme-neversink
6
+ npm init slidev@latest
7
7
  ```
8
8
 
9
- Then create a slidev markdown file (e.g., `slides.md`) and add the theme to the frontmatter of your first slide:
9
+ Then answer the sequence of questions. When it asks for the theme select `neversink`.
10
+
11
+ Alternatively if you already have installed Slidev globally you can just create a slidev markdown file (e.g., `slides.md`) and add the theme to the frontmatter of your first slide:
10
12
 
11
13
  ```md
12
14
  ---
@@ -23,6 +25,7 @@ If you are new to Slidev highly recommend you check out the [Slidev documentatio
23
25
  - [Markdown features](markdown.md) - special addons to the Slidev markdown syntax
24
26
  - [Color schemes](colors.md) - the color schemes available in Neversink
25
27
  - [Branding](branding.md) - how to customize the theme to your brand/logos
28
+ - [Styling](styling.md) - the custom CSS classes available in Neversink
26
29
  - [Custom layouts](layouts.md) - the custom slide layouts available in Neversink
27
30
  - [Components](components.md) - the custom components such as sticky notes and admonitions
28
31
  - [Customizing](customizing.md) - how to customize the theme with your own CSS/fonts, etc...
package/docs/index.md CHANGED
@@ -3,7 +3,8 @@
3
3
  layout: home
4
4
 
5
5
  hero:
6
- name: 'Neversink'
6
+ name: ''
7
+ text: 'Neversink'
7
8
  tagline: An education/academic Slidev theme
8
9
  actions:
9
10
  - theme: brand
package/docs/markdown.md CHANGED
@@ -50,38 +50,3 @@ This is my ==highlighted text==.
50
50
  ```
51
51
 
52
52
  Using the `==` syntax. Like ==this==.
53
-
54
- ## Icon link
55
-
56
- Drops the underline styling from icons.
57
-
58
- ```
59
- <a href="https://todd.gureckislab.org" class="iconlink"><mdi-open-in-new /></a>
60
- ```
61
-
62
- ## Tight bullets
63
-
64
- If you want to make bullets a little closer together to make spaceadd the `class='tight'`
65
-
66
- ```md
67
- <div class="tight">
68
-
69
- - Hi
70
- - There
71
- - I need space
72
- </div>
73
- ```
74
-
75
- ## V-click faders
76
-
77
- If you want to fade out a bullet as you step through, add the `class='fader'`
78
-
79
- ```md
80
- <v-clicks at="+0" class="fader">
81
-
82
- - This one appears immediately on slide load
83
- - This is a second click
84
- - This is a third click
85
-
86
- </v-clicks>
87
- ```
@@ -0,0 +1,179 @@
1
+ # Styling
2
+
3
+ In addition to [layouts](/layouts) and [components](/components), **Neversink** also
4
+ provides some helpful CSS classes to help with common slide formatting tasks.
5
+
6
+ These are included in `styles/neversink.css`. Each class in this file begins with `ns-c-` to indicate that it is a Neversink class.
7
+
8
+ ## Colors
9
+
10
+ In addition to the main color [schemes](/colors) there are some additional short hand classes you can use in your slides content.
11
+
12
+ | Alias | Equivalent |
13
+ | ---------------------- | ------------------------------ |
14
+ | `ns-c-bk-scheme` | `neversink-black-scheme` |
15
+ | `ns-c-wh-scheme` | `neversink-white-scheme` |
16
+ | `ns-c-dk-scheme` | `neversink-dark-scheme` |
17
+ | `ns-c-lt-scheme` | `neversink-light-scheme` |
18
+ | `ns-c-nv-scheme` | `neversink-navy-scheme` |
19
+ | `ns-c-nv-lt-scheme` | `neversink-navy-light-scheme` |
20
+ | `ns-c-COLOR-scheme` | `neversink-COLOR-scheme` |
21
+ | `ns-c-COLOR-lt-scheme` | `neversink-COLOR-light-scheme` |
22
+
23
+ where color can be any of the [colors](/colors) in the project.
24
+
25
+ ## Tight bullets
26
+
27
+ If you want to make bullets a little closer together to make spaceadd the `class='ns-c-tight'`
28
+
29
+ ```md
30
+ <div class="ns-c-tight">
31
+
32
+ - Hi
33
+ - There
34
+ - I need space
35
+ </div>
36
+ ```
37
+
38
+ Other options are `ns-c-tight` and `ns-c-supertight`.
39
+
40
+ ## V-click faders
41
+
42
+ If you want to fade out a bullet as you step through, add the `class='ns-c-fader'`
43
+
44
+ ```md
45
+ <v-clicks at="+0" class="ns-c-fader">
46
+
47
+ - This one appears immediately on slide load
48
+ - This is a second click
49
+ - This is a third click
50
+
51
+ </v-clicks>
52
+ ```
53
+
54
+ ## References
55
+
56
+ Including references often you want to include them but have them fade a bit relative to the main content of the tslide for this `ns-c-cite` is useful as it
57
+ applies a smaller, italic, and gray color to the text.
58
+
59
+ ```css
60
+ .ns-c-cite {
61
+ font-size: 0.75em;
62
+ font-style: italic;
63
+ @apply text-gray-400;
64
+ }
65
+ ```
66
+
67
+ To position the cittion on the bottom left of the slide add `ns-c-cite-bl` for `bottom-left`.
68
+
69
+ ```css
70
+ .ns-c-cite-bl {
71
+ text-align: left;
72
+ margin-bottom: 0.85em;
73
+ margin-left: 1.5em;
74
+ margin-top: auto;
75
+ }
76
+ ```
77
+
78
+ ## Quote
79
+
80
+ For quotes that appear outside the context of a [quote layout](/layouts/quote) you can use `ns-c-quote` to apply a larger font size and italic style.
81
+
82
+ ```css
83
+ .ns-c-quote {
84
+ font-family: var(--neversink-quote-font);
85
+ font-weight: 300;
86
+ @apply leading-relaxed;
87
+ }
88
+ ```
89
+
90
+ ## Icon links
91
+
92
+ If you write an icon in a link it includes the underline styleing. To remove that use
93
+ `ns-c-iconlink`.
94
+
95
+ ```css
96
+ /* for links that are icons. removes underlining which is default for links in markdown parser */
97
+ .ns-c-iconlink a {
98
+ border-style: none !important;
99
+ border-bottom: none !important;
100
+ }
101
+ ```
102
+
103
+ ## Grids
104
+
105
+ This is not a specific `ns-c-` class but a general unocss/tailwind utility for making grids.
106
+
107
+ ```html
108
+ <div class="grid grid-cols-2 gap-4 w-full">
109
+ <div class="grid-item grid-span-1 center">Row 1, Col 1</div>
110
+ <div class="grid-item grid-span-1 center">Row 1, Col 2</div>
111
+ <div class="grid-item grid-span-1 center">Row 2, Col 1</div>
112
+ <div class="grid-item grid-span-1 center">Row 2, Col 2</div>
113
+ </div>
114
+ ```
115
+
116
+ ### For putting images in grids
117
+
118
+ If you want to put images in a grid and have them fill the space you can use the `ns-c-imgtile` class.
119
+
120
+ ```css
121
+ .ns-c-imgtile img {
122
+ width: 100%;
123
+ height: fit-content;
124
+ object-fit: cover;
125
+ }
126
+ ```
127
+
128
+ then you use it like this:
129
+
130
+ ```html
131
+ <div class="grid grid-cols-2 gap-4 w-full">
132
+ <div class="grid-item grid-span-1 center"><img src="/images/img1.jpg" /></div>
133
+ <div class="grid-item grid-span-1 center"><img src="/images/img2.jpg" /></div>
134
+ <div class="grid-item grid-span-1 center"><img src="/images/img3.jpg" /></div>
135
+ <div class="grid-item grid-span-1 center"><img src="/images/img4.jpg" /></div>
136
+ </div>
137
+ ```
138
+
139
+ ## Columns
140
+
141
+ To make side by side columns use a flex box with `flex-wrap` and `w-1/X` where X is the proportion you want to give to each column.
142
+
143
+ ```html
144
+ <div class="flex flex-wrap ">
145
+ <div class="w-1/5">Hit wall</div>
146
+ <div class="w-1/5">Hit wall and goes on floor</div>
147
+ <div class="w-1/5">Hit wall and goes in bucket</div>
148
+ <div class="w-1/5">Misses wall</div>
149
+ <div class="w-1/5">Hit bucket and then hits walls</div>
150
+ </div>
151
+ ```
152
+
153
+ To add a border
154
+
155
+ ```html
156
+ <div class="flex flex-wrap ">
157
+ <div class="w-1/5 border-1 border-r-0">Hit wall</div>
158
+ <div class="w-1/5 border-1 border-r-0">Hit wall and goes on floor</div>
159
+ <div class="w-1/5 border-1 border-r-0">Hit wall and goes in bucket</div>
160
+ <div class="w-1/5 border-1 border-r-0">Misses wall</div>
161
+ <div class="w-1/5 border-1">Hit bucket and then hits walls</div>
162
+ </div>
163
+ ```
164
+
165
+ ## Borders
166
+
167
+ I forgot why i made this utility
168
+
169
+ ```css
170
+ .ns-c-border {
171
+ border-left: 0.25em solid var(--neversink-text-color);
172
+ background-color: var(--neversink-bg-color);
173
+ color: var(--neversink-text-color);
174
+ margin-top: 0.5em;
175
+ margin-bottom: 0.5em;
176
+ padding-left: 1em;
177
+ padding-right: 1em;
178
+ }
179
+ ```
package/example.md CHANGED
@@ -289,7 +289,7 @@ align: lt
289
289
  The available layouts in **Neversink** currently are:
290
290
 
291
291
 
292
- <div class="tight">
292
+ <div class="ns-c-tight">
293
293
 
294
294
  <div class='flex flex-wrap'>
295
295
 
@@ -478,9 +478,9 @@ Of course you can make bullet lists:
478
478
  - Hi
479
479
  - There
480
480
 
481
- Also there's a little helper class you can add to make the bullet spacing a bit tighter:
481
+ Also there's a little helper class `ns-c-tight` you can add to make the bullet spacing a bit tighter:
482
482
 
483
- <div class="tight">
483
+ <div class="ns-c-tight">
484
484
 
485
485
  - Hi
486
486
  - There
@@ -574,16 +574,12 @@ You can use HTML and inline CSS to modify the look and feel.
574
574
  ---
575
575
  layout: quote
576
576
  color: sky-light
577
- quote: "This is a quote slide. It has a frontmatter option of `quote` which is the text that appears in the quote box and `author` and options for the size of the text(`quotesize: text2xl` and `authorsize: text-l`). I feel it is a little uninspired but might save you some time."
577
+ quotesize: text-sm
578
+ authorsize: text-sm
578
579
  author: "Todd Gureckis"
579
580
  ---
580
581
 
581
-
582
- ---
583
- layout: quote
584
- color: amber-light
585
- ---
586
-
582
+ "This is a quote slide. It has a frontmatter option of `quote` which is the text that appears in the quote box and `author` and options for the size of the text(`quotesize: text-2xl` and `authorsize: text-l`). I feel it is a little uninspired but might save you some time."
587
583
 
588
584
 
589
585
 
@@ -625,7 +621,7 @@ I'm v-dragged out and ==floating==.
625
621
 
626
622
  <IceCream :size="150" mood="lovestruck" color="#FDA7DC" v-drag="[439,341,85,150]" />
627
623
 
628
- <div class="tight" v-drag="[143,33,277,214]">
624
+ <div class="ns-c-tight" v-drag="[143,33,277,214]">
629
625
 
630
626
  <span class="bg-red-100 text-red-600 p-2 border-l-6 border-2 border-red-200 rounded-lg pl-4 pr-4">Here's a list of somethings</span>
631
627
 
@@ -638,7 +634,7 @@ I'm v-dragged out and ==floating==.
638
634
 
639
635
  </div>
640
636
 
641
- <div class="tight" v-drag="[461,63,293,148,17]">
637
+ <div class="ns-c-tight" v-drag="[461,63,293,148,17]">
642
638
 
643
639
  <span class="bg-emerald-100 text-emerald-500 p-2 border-l-6 border-2 border-emerald-200 rounded-lg pl-4 pr-4">Here's another list of things</span>
644
640
 
@@ -1116,7 +1112,7 @@ layout: default
1116
1112
 
1117
1113
  In addition to these custom layouts, the **Neversink** theme includes a few custom components that can be used in your slides. These include sticky notes, speech bubbles, cute icons, QR codes, and more. The next few slides walks through them:
1118
1114
 
1119
- <div class="tight">
1115
+ <div class="ns-c-tight">
1120
1116
 
1121
1117
  - admonitions
1122
1118
  - sticky notes
package/layouts/cover.vue CHANGED
@@ -20,10 +20,10 @@ const colorscheme = computed(() => {
20
20
 
21
21
  <template>
22
22
  <div class="slidev-layout cover h-full slidecolor" :class="colorscheme">
23
- <div class="my-auto w-full">
23
+ <div class="myauto w-full">
24
24
  <slot />
25
25
  </div>
26
- <div class="absolute bottom-10">
26
+ <div class="note absolute bottom-3">
27
27
  <slot name="note" />
28
28
  </div>
29
29
  </div>
@@ -34,19 +34,36 @@ const colorscheme = computed(() => {
34
34
 
35
35
  .slidev-layout.cover {
36
36
  font-family: var(--neversink-main-font);
37
+
37
38
  font-weight: 300;
38
39
  }
39
40
 
41
+ .slidev-layout.cover {
42
+ margin-bottom: 0px;
43
+ }
44
+
45
+ .slidev-layout.cover p {
46
+ letter-spacing: 0.05em;
47
+ font-size: 0.85em;
48
+ line-height: 1.4em;
49
+ }
50
+
40
51
  .slidev-layout.cover strong {
41
52
  font-weight: 500;
42
53
  }
43
54
 
55
+ .slidev-layout.cover .note {
56
+ font-weight: 300;
57
+ font-size: 0.9rem;
58
+ }
59
+
44
60
  .slidev-layout.cover h1 {
45
61
  font-family: var(--neversink-title-font);
46
62
  font-weight: 500;
47
63
  font-size: 3em;
48
64
  line-height: normal;
49
65
  margin-bottom: 0.9rem;
66
+ margin-top: 40px;
50
67
  }
51
68
 
52
69
  .slidev-layout.cover h2 {
@@ -55,6 +72,7 @@ const colorscheme = computed(() => {
55
72
  font-size: 2.5em;
56
73
  line-height: normal;
57
74
  margin-bottom: 0.9rem;
75
+ margin-top: 40px;
58
76
  }
59
77
 
60
78
  .slidev-layout.cover h3 {
@@ -63,6 +81,7 @@ const colorscheme = computed(() => {
63
81
  font-size: 1.9em;
64
82
  line-height: normal;
65
83
  margin-bottom: 0.9rem;
84
+ margin-top: 40px;
66
85
  }
67
86
 
68
87
  .slidev-layout.cover h1 + p {
@@ -1,7 +1,9 @@
1
1
  <script setup lang="ts">
2
- import { computed } from 'vue'
2
+ import { computed, useSlots } from 'vue'
3
3
  import { compute_alignment, compute_column_size } from '../layoutHelper'
4
4
 
5
+ const slots = useSlots()
6
+
5
7
  const props = defineProps({
6
8
  columns: {
7
9
  default: 'is-one-half',
@@ -59,7 +61,7 @@ const colorscheme = computed(() => {
59
61
  </div>
60
62
  <template v-else>
61
63
  <div class="flex flex-col h-full w-full">
62
- <div class="w-full h-fit min-h-14 pt-2 pb-2 slidecolor" :class="colorscheme">
64
+ <div class="w-full h-fit min-h-13 pt-2 pb-2 slidecolor" :class="colorscheme">
63
65
  <div class="slidev-layout toptitlebar p-0 ml-6 mr-6 mt-auto mb-auto" :class="alignment.t">
64
66
  <slot name="title" />
65
67
  </div>
@@ -74,7 +76,7 @@ const colorscheme = computed(() => {
74
76
  </div>
75
77
  </div>
76
78
  </div>
77
- <div class="slidev-layout toptitlecontent h-fit w-full">
79
+ <div v-if="$slots.default" class="h-fit w-full">
78
80
  <slot name="default" />
79
81
  </div>
80
82
  </div>
@@ -86,6 +88,42 @@ const colorscheme = computed(() => {
86
88
  padding-top: 1.3rem;
87
89
  }
88
90
 
91
+ .slidev-layout.toptitlecontent h1 + ul {
92
+ margin-top: 0em;
93
+ }
94
+ .slidev-layout.toptitlecontent h2 + ul {
95
+ margin-top: 0em;
96
+ }
97
+
98
+ .slidev-layout.toptitlecontent h3 + ul {
99
+ margin-top: 0em;
100
+ }
101
+
102
+ li li {
103
+ margin-top: 0.5em; /* Adjust this value as needed */
104
+ }
105
+
106
+ .slidev-layout.toptitlecontent h1 {
107
+ font-size: 1.4em;
108
+ font-family: var(--neversink-title-font);
109
+ font-weight: 500;
110
+ margin-bottom: 0rem;
111
+ }
112
+
113
+ .slidev-layout.toptitlecontent h2 {
114
+ font-size: 1.4em;
115
+ font-family: var(--neversink-title-font);
116
+ font-weight: 500;
117
+ margin-bottom: 0rem;
118
+ }
119
+
120
+ .slidev-layout.toptitlecontent h3 {
121
+ font-size: 1.1em;
122
+ font-family: var(--neversink-title-font);
123
+ font-weight: 500;
124
+ margin-bottom: 0rem;
125
+ }
126
+
89
127
  .toptitlebar {
90
128
  padding: 0;
91
129
  margin: 0;
@@ -43,7 +43,7 @@ const colorscheme = computed(() => {
43
43
  </div>
44
44
  <template v-else>
45
45
  <div class="flex flex-col h-full w-full">
46
- <div class="w-full h-fit min-h-14 pt-2 pb-2 slidecolor" :class="colorscheme">
46
+ <div class="w-full h-fit min-h-13 pt-2 pb-2 slidecolor" :class="colorscheme">
47
47
  <div class="slidev-layout toptitlebar p-0 pt-0 ml-6 mr-6 mt-auto mb-auto" :class="alignment">
48
48
  <slot name="title" />
49
49
  </div>
@@ -51,7 +51,7 @@ const colorscheme = computed(() => {
51
51
  <div class="slidev-layout toptitlecontent h-fit w-full">
52
52
  <slot name="content" />
53
53
  </div>
54
- <div class="slidev-layout toptitlecontent h-fit w-full">
54
+ <div v-if="$slots.default" class="slidev-layout default h-fit w-full">
55
55
  <slot name="default" />
56
56
  </div>
57
57
  </div>
@@ -105,7 +105,7 @@ const flexclass = computed(() => {
105
105
  </div>
106
106
  </template>
107
107
 
108
- <style scoped>
108
+ <style>
109
109
  .slidev-layout.two-cols-header,
110
110
  .slidev-layout.two-cols-footer {
111
111
  display: grid;
@@ -129,6 +129,18 @@ const flexclass = computed(() => {
129
129
  margin-bottom: 1rem;
130
130
  }
131
131
 
132
+ .slidev-layout.two-cols-header .title h1 + p,
133
+ .slidev-layout.two-cols-footer .title h1 + p {
134
+ margin-top: 0.2em;
135
+ margin-bottom: 0;
136
+ }
137
+
138
+ .slidev-layout.two-cols-header .title p,
139
+ .slidev-layout.two-cols-footer .title p {
140
+ margin-top: 0.2em;
141
+ margin-bottom: 0;
142
+ }
143
+
132
144
  .slidev-layout.two-cols .left-col,
133
145
  .slidev-layout.two-cols-header .left-col,
134
146
  .slidev-layout.two-cols-footer .left-col {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slidev-theme-neversink",
3
- "version": "0.0.3",
3
+ "version": "0.1.1",
4
4
  "author": "gureckis",
5
5
  "type": "module",
6
6
  "keywords": [
package/styles/base.css CHANGED
@@ -5,8 +5,9 @@
5
5
  :root {
6
6
  --neversink-title-font: 'Inter', sans-serif;
7
7
  --neversink-main-font: 'Inter', sans-serif;
8
- --neversink-mono-font: 'Inter', monospace;
9
- --neversink-quote-font: 'Fire Code', monospace;
8
+ --neversink-mono-font: 'Fira Code', monospace;
9
+ --neversink-quote-font: 'Fira Code', monospace;
10
+ --font-mono: 'Courier New', Courier, monospace;
10
11
  @apply neversink-white-scheme; /* apply the default white scheme everywhere */
11
12
  }
12
13
 
@@ -16,7 +17,7 @@
16
17
  #page-root {
17
18
  font-family: var(--neversink-main-font);
18
19
  font-weight: 400;
19
- letter-spacing: 0.015em;
20
+ letter-spacing: 0.015rem;
20
21
  }
21
22
 
22
23
  /* binds variable to the color of a slide*/
@@ -25,16 +26,17 @@
25
26
  color: var(--neversink-text-color);
26
27
  }
27
28
 
29
+ .slidev-layout p {
30
+ line-height: normal;
31
+ }
28
32
  /* adjust default bullets */
29
33
  .slidev-layout li {
30
34
  margin-bottom: 1em;
31
35
  line-height: 1.5em;
32
36
  }
33
37
 
34
- /* adds a modifier class which reduces the space between bullets */
35
- .tight li {
36
- line-height: 1em;
37
- margin-bottom: 0.5em;
38
+ .slidev-layout ul {
39
+ margin-top: 0.7em;
38
40
  }
39
41
 
40
42
  /* change the bold and strong fonts */
@@ -73,12 +75,6 @@
73
75
  font-weight: 300;
74
76
  }
75
77
 
76
- /* for links that are icons. removes underlining which is default for links in markdown parser */
77
- .iconlink a {
78
- border-style: none !important;
79
- border-bottom: none !important;
80
- }
81
-
82
78
  /* default layout */
83
79
 
84
80
  .my-auto p {
@@ -196,11 +192,6 @@ img {
196
192
  pointer-events: none;
197
193
  }
198
194
 
199
- .fader .slidev-vclick-prior {
200
- opacity: 0.3;
201
- pointer-events: none;
202
- }
203
-
204
195
  html.dark {
205
196
  /* dark mode css here */
206
197
  .lectureno {
package/styles/index.ts CHANGED
@@ -5,6 +5,7 @@ import './bubbles.css'
5
5
  import './stickynote.css'
6
6
  import './base.css'
7
7
  import './colors.css'
8
+ import './neversink-c.css'
8
9
 
9
10
  // import './code.css'
10
11
  // import './layout.css'
@@ -0,0 +1,110 @@
1
+ /* neversink-c.css
2
+ provides custom helper classes for the Neversink theme
3
+ the have the namespace ns-c- for 'neversink convenience'
4
+ these provide simple styles for common elements
5
+ in talks
6
+
7
+ In addition to these there are shorthands for color schemes
8
+
9
+ ns-c-bk-scheme
10
+ ns-c-wh-scheme
11
+ ns-c-dk-scheme
12
+ ns-c-lt-scheme
13
+ ns-c-nv-scheme
14
+ ns-c-nv-lt-scheme
15
+ ns-c-red-scheme
16
+ ns-c-red-lt-scheme
17
+ and
18
+ ns-c-XX-scheme
19
+ ns-c-XX-lt-scheme
20
+ ...
21
+ where XX can be
22
+ slate,
23
+ gray,
24
+ zinc,
25
+ neutral,
26
+ stone,
27
+ red,
28
+ orange,
29
+ amber,
30
+ yellow,
31
+ lime,
32
+ green,
33
+ emerald,
34
+ teal,
35
+ cyan,
36
+ sky,
37
+ blue,
38
+ indigo,
39
+ violet,
40
+ purple,
41
+ fuchsia,
42
+ pink,
43
+ rose,
44
+ navy
45
+
46
+
47
+ */
48
+ /* adds a modifier class which reduces the space between bullets */
49
+ .ns-c-tight li {
50
+ line-height: normal;
51
+ margin-bottom: 0.4em;
52
+ margin-top: 0.4em;
53
+ }
54
+
55
+ .ns-c-verytight li {
56
+ line-height: normal;
57
+ margin-bottom: 0.1em;
58
+ }
59
+
60
+ .ns-c-supertight li {
61
+ line-height: normal;
62
+ margin-bottom: 0;
63
+ }
64
+
65
+ .ns-c-cite {
66
+ font-size: 0.75em;
67
+ font-style: italic;
68
+ @apply text-gray-400;
69
+ }
70
+
71
+ .ns-c-cite-bl {
72
+ text-align: left;
73
+ margin-bottom: 0.85em;
74
+ margin-left: 1.5em;
75
+ margin-top: auto;
76
+ }
77
+
78
+ .ns-c-quote {
79
+ font-family: var(--neversink-quote-font);
80
+ font-weight: 300;
81
+ @apply leading-relaxed;
82
+ }
83
+
84
+ .ns-c-border {
85
+ border-left: 0.25em solid var(--neversink-text-color);
86
+ background-color: var(--neversink-bg-color);
87
+ color: var(--neversink-text-color);
88
+ margin-top: 0.5em;
89
+ margin-bottom: 0.5em;
90
+ padding-left: 1em;
91
+ padding-right: 1em;
92
+ }
93
+
94
+ .ns-c-imgtile img {
95
+ width: 100%;
96
+ height: fit-content;
97
+ object-fit: cover;
98
+ }
99
+
100
+ /* for links that are icons. removes underlining which is default for links in markdown parser */
101
+ .ns-c-iconlink a {
102
+ border-style: none !important;
103
+ border-bottom: none !important;
104
+ }
105
+
106
+ /* fader for past bullets */
107
+ .ns-c-fader .slidev-vclick-prior {
108
+ opacity: 0.3;
109
+ pointer-events: none;
110
+ }
package/uno.config.ts CHANGED
@@ -3,6 +3,7 @@ import { defineConfig } from 'unocss'
3
3
  import presetUno from '@unocss/preset-uno'
4
4
  import { colors } from '@unocss/preset-mini'
5
5
  import transformerDirectives from '@unocss/transformer-directives'
6
+ import { version } from './package.json'
6
7
 
7
8
  // Tailwind CSS color palette
8
9
  const colornames = [
@@ -53,124 +54,98 @@ const generate_color_schemes = (colors) => {
53
54
  const schemes = []
54
55
  const classes = []
55
56
 
56
- schemes.push([
57
- `neversink-black-scheme`,
58
- {
59
- '--neversink-bg-color': colors['black'],
60
- '--neversink-bg-code-color': colors['gray'][600],
61
- '--neversink-fg-code-color': colors['white'],
62
- '--neversink-fg-color': colors['white'],
63
- '--neversink-text-color': colors['white'],
64
- '--neversink-border-color': colors['white'],
65
- '--neversink-highlight-color': '#FFA500',
66
- },
67
- ])
68
- classes.push('neversink-black-scheme')
69
-
70
- schemes.push([
71
- `neversink-white-scheme`,
72
- {
73
- '--neversink-bg-color': colors['white'],
74
- '--neversink-bg-code-color': colors['gray'][100],
75
- '--neversink-fg-code-color': colors['black'],
76
- '--neversink-fg-color': colors['black'],
77
- '--neversink-text-color': colors['black'],
78
- '--neversink-border-color': colors['gray'][950],
79
- '--neversink-highlight-color': '#FFA500',
80
- },
81
- ])
82
- classes.push('neversink-white-scheme')
83
-
84
- schemes.push([
85
- `neversink-dark-scheme`,
86
- {
87
- '--neversink-bg-color': colors['gray'][800],
88
- '--neversink-bg-code-color': colors['gray'][600],
89
- '--neversink-fg-code-color': colors['white'],
90
- '--neversink-fg-color': colors['gray'][100],
91
- '--neversink-text-color': colors['gray'][100],
92
- '--neversink-border-color': colors['gray'][100],
93
- '--neversink-highlight-color': '#FFA500',
94
- },
95
- ])
96
- classes.push('neversink-dark-scheme')
97
-
98
- schemes.push([
99
- `neversink-light-scheme`,
100
- {
101
- '--neversink-bg-color': colors['gray'][100],
102
- '--neversink-bg-code-color': colors['gray'][200],
103
- '--neversink-fg-color': colors['gray'][800],
104
- '--neversink-text-color': colors['gray'][800],
105
- '--neversink-border-color': colors['gray'][800],
106
- '--neversink-highlight-color': '#FFA500',
107
- },
108
- ])
109
- classes.push('neversink-light-scheme')
57
+ const addScheme = (longName, shortName, styles) => {
58
+ schemes.push([longName, styles])
59
+ schemes.push([shortName, styles])
60
+ classes.push(longName, shortName)
61
+ }
62
+
63
+ addScheme('neversink-black-scheme', 'ns-c-bk-scheme', {
64
+ '--neversink-bg-color': colors['black'],
65
+ '--neversink-bg-code-color': colors['gray'][600],
66
+ '--neversink-fg-code-color': colors['white'],
67
+ '--neversink-fg-color': colors['white'],
68
+ '--neversink-text-color': colors['white'],
69
+ '--neversink-border-color': colors['white'],
70
+ '--neversink-highlight-color': '#FFA500',
71
+ })
72
+
73
+ addScheme('neversink-white-scheme', 'ns-c-wh-scheme', {
74
+ '--neversink-bg-color': colors['white'],
75
+ '--neversink-bg-code-color': colors['gray'][100],
76
+ '--neversink-fg-code-color': colors['black'],
77
+ '--neversink-fg-color': colors['black'],
78
+ '--neversink-text-color': colors['black'],
79
+ '--neversink-border-color': colors['gray'][950],
80
+ '--neversink-highlight-color': '#FFA500',
81
+ })
82
+
83
+ addScheme('neversink-dark-scheme', 'ns-c-dk-scheme', {
84
+ '--neversink-bg-color': colors['gray'][800],
85
+ '--neversink-bg-code-color': colors['gray'][600],
86
+ '--neversink-fg-code-color': colors['white'],
87
+ '--neversink-fg-color': colors['gray'][100],
88
+ '--neversink-text-color': colors['gray'][100],
89
+ '--neversink-border-color': colors['gray'][100],
90
+ '--neversink-highlight-color': '#FFA500',
91
+ })
92
+
93
+ addScheme('neversink-light-scheme', 'ns-c-lt-scheme', {
94
+ '--neversink-bg-color': colors['gray'][100],
95
+ '--neversink-bg-code-color': colors['gray'][200],
96
+ '--neversink-fg-color': colors['gray'][800],
97
+ '--neversink-text-color': colors['gray'][800],
98
+ '--neversink-border-color': colors['gray'][800],
99
+ '--neversink-highlight-color': '#FFA500',
100
+ })
110
101
 
111
102
  for (const color of colornames) {
112
103
  if (color == 'navy') {
113
- schemes.push([
114
- `neversink-navy-scheme`,
115
- {
116
- '--neversink-bg-color': '#2a373a',
117
- '--neversink-bg-code-color': colors['gray'][200],
118
- '--neversink-fg-color': colors['gray'][300],
119
- '--neversink-text-color': colors['gray'][300],
120
- '--neversink-border-color': colors['gray'][300],
121
- '--neversink-highlight-color': '#FFA500',
122
- },
123
- ])
124
- classes.push('neversink-navy-scheme')
125
-
126
- schemes.push([
127
- `neversink-navy-light-scheme`,
128
- {
129
- '--neversink-bg-color': colors['gray'][50],
130
- '--neversink-bg-code-color': colors['gray'][400],
131
- '--neversink-fg-color': '#2a373a',
132
- '--neversink-text-color': '#2a373a',
133
- '--neversink-border-color': '#2a373a',
134
- '--neversink-highlight-color': '#FFA500',
135
- },
136
- ])
137
- classes.push('neversink-navy-light-scheme')
104
+ addScheme('neversink-navy-scheme', 'ns-c-nv-scheme', {
105
+ '--neversink-bg-color': '#2a373a',
106
+ '--neversink-bg-code-color': colors['gray'][200],
107
+ '--neversink-fg-color': colors['gray'][300],
108
+ '--neversink-text-color': colors['gray'][300],
109
+ '--neversink-border-color': colors['gray'][300],
110
+ '--neversink-highlight-color': '#FFA500',
111
+ })
112
+
113
+ addScheme('neversink-navy-light-scheme', 'ns-c-nv-lt-scheme', {
114
+ '--neversink-bg-color': colors['gray'][50],
115
+ '--neversink-bg-code-color': colors['gray'][400],
116
+ '--neversink-fg-color': '#2a373a',
117
+ '--neversink-text-color': '#2a373a',
118
+ '--neversink-border-color': '#2a373a',
119
+ '--neversink-highlight-color': '#FFA500',
120
+ })
138
121
  } else {
139
- // push the normal theme
140
- schemes.push([
141
- `neversink-${color}-scheme`,
142
- {
143
- '--neversink-bg-color': colors[color][500],
144
- '--neversink-bg-code-color': colors[color][600],
145
- '--neversink-fg-code-color': colors[color][100],
146
- '--neversink-fg-color': colors[color][100],
147
- '--neversink-text-color': colors[color][100],
148
- '--neversink-border-color': colors[color][100],
149
- '--neversink-highlight-color': colors[color][100],
150
- '--neversink-admon-bg-color': colors[color][500],
151
- '--neversink-admon-border-color': colors[color][300],
152
- '--neversink-admon-text-color': colors[color][100],
153
- },
154
- ])
155
- classes.push(`neversink-${color}-scheme`)
156
-
157
- // push the light theme
158
- schemes.push([
159
- `neversink-${color}-light-scheme`,
160
- {
161
- '--neversink-bg-color': colors[color][100],
162
- '--neversink-bg-code-color': colors[color][200],
163
- '--neversink-fg-code-color': colors[color][500],
164
- '--neversink-fg-color': colors[color][600],
165
- '--neversink-text-color': colors[color][500],
166
- '--neversink-border-color': colors[color][500],
167
- '--neversink-highlight-color': colors[color][500],
168
- '--neversink-admon-bg-color': colors[color][100],
169
- '--neversink-admon-border-color': colors[color][300],
170
- '--neversink-admon-text-color': colors[color][600],
171
- },
172
- ])
173
- classes.push(`neversink-${color}-light-scheme`)
122
+ const shortColor = color.slice(0, 2)
123
+
124
+ addScheme(`neversink-${color}-scheme`, `ns-c-${shortColor}-scheme`, {
125
+ '--neversink-bg-color': colors[color][500],
126
+ '--neversink-bg-code-color': colors[color][600],
127
+ '--neversink-fg-code-color': colors[color][100],
128
+ '--neversink-fg-color': colors[color][100],
129
+ '--neversink-text-color': colors[color][100],
130
+ '--neversink-border-color': colors[color][100],
131
+ '--neversink-highlight-color': colors[color][100],
132
+ '--neversink-admon-bg-color': colors[color][500],
133
+ '--neversink-admon-border-color': colors[color][300],
134
+ '--neversink-admon-text-color': colors[color][100],
135
+ })
136
+
137
+ addScheme(`neversink-${color}-light-scheme`, `ns-c-${shortColor}-lt-scheme`, {
138
+ '--neversink-bg-color': colors[color][100],
139
+ '--neversink-bg-code-color': colors[color][200],
140
+ '--neversink-fg-code-color': colors[color][500],
141
+ '--neversink-fg-color': colors[color][600],
142
+ '--neversink-text-color': colors[color][500],
143
+ '--neversink-border-color': colors[color][500],
144
+ '--neversink-highlight-color': colors[color][500],
145
+ '--neversink-admon-bg-color': colors[color][100],
146
+ '--neversink-admon-border-color': colors[color][300],
147
+ '--neversink-admon-text-color': colors[color][600],
148
+ })
174
149
  }
175
150
  }
176
151
  return { classes: classes, schemes: schemes }
@@ -195,7 +170,7 @@ const generateRows = (max) => {
195
170
 
196
171
  const schemes = generate_color_schemes(colors)
197
172
 
198
- console.log('Loading Neversink theme uno.config.ts...')
173
+ console.log(`Loading Neversink ${version} theme uno.config.ts...`)
199
174
  export default defineConfig({
200
175
  // ...UnoCSS options
201
176
  presets: [presetUno()],
package/vite.config.ts CHANGED
@@ -2,8 +2,9 @@ import { defineConfig } from 'vite'
2
2
  //import MarkdownItMagicLink from 'markdown-it-magic-link'
3
3
  import { sub } from '@mdit/plugin-sub'
4
4
  import Mark from 'markdown-it-mark'
5
+ import { version } from './package.json'
5
6
 
6
- console.log('Loading Neversink theme vite.config.ts...')
7
+ console.log(`Loading Neversink ${version} theme vite.config.ts...`)
7
8
  export default defineConfig({
8
9
  slidev: {
9
10
  markdown: {
@@ -1,85 +0,0 @@
1
- # Markdown Extension Examples
2
-
3
- This page demonstrates some of the built-in markdown extensions provided by VitePress.
4
-
5
- ## Syntax Highlighting
6
-
7
- VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting:
8
-
9
- **Input**
10
-
11
- ````md
12
- ```js{4}
13
- export default {
14
- data () {
15
- return {
16
- msg: 'Highlighted!'
17
- }
18
- }
19
- }
20
- ```
21
- ````
22
-
23
- **Output**
24
-
25
- ```js{4}
26
- export default {
27
- data () {
28
- return {
29
- msg: 'Highlighted!'
30
- }
31
- }
32
- }
33
- ```
34
-
35
- ## Custom Containers
36
-
37
- **Input**
38
-
39
- ```md
40
- ::: info
41
- This is an info box.
42
- :::
43
-
44
- ::: tip
45
- This is a tip.
46
- :::
47
-
48
- ::: warning
49
- This is a warning.
50
- :::
51
-
52
- ::: danger
53
- This is a dangerous warning.
54
- :::
55
-
56
- ::: details
57
- This is a details block.
58
- :::
59
- ```
60
-
61
- **Output**
62
-
63
- ::: info
64
- This is an info box.
65
- :::
66
-
67
- ::: tip
68
- This is a tip.
69
- :::
70
-
71
- ::: warning
72
- This is a warning.
73
- :::
74
-
75
- ::: danger
76
- This is a dangerous warning.
77
- :::
78
-
79
- ::: details
80
- This is a details block.
81
- :::
82
-
83
- ## More
84
-
85
- Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown).