@alphacifer/slidev-academic-theme 0.0.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/README.md ADDED
@@ -0,0 +1,70 @@
1
+ # Alpha Academic Theme
2
+
3
+ A light-only Slidev theme for lectures, research presentations, technical
4
+ reports, and thesis defenses.
5
+
6
+ ## Installation
7
+
8
+ ```bash
9
+ pnpm add -D @alphacifer/slidev-theme-alpha-academic
10
+ ```
11
+
12
+ ## Usage
13
+
14
+ ```yaml
15
+ ---
16
+ theme: '@alphacifer/slidev-theme-alpha-academic'
17
+ ---
18
+ ```
19
+
20
+ Combine it with Alpha's reusable Slidev addon when needed:
21
+
22
+ ```yaml
23
+ ---
24
+ theme: '@alphacifer/slidev-theme-alpha-academic'
25
+ addons:
26
+ - '@alphacifer/slidev-addon-theme'
27
+ ---
28
+ ```
29
+
30
+ ## Layouts
31
+
32
+ - `cover`: title slide with a restrained academic accent.
33
+ - `default`: standard content slide.
34
+ - `section`: centered section divider.
35
+ - `end`: closing slide.
36
+
37
+ ## Design tokens
38
+
39
+ Override the CSS custom properties in a deck-level `style.css` to customize the
40
+ theme without replacing its layouts:
41
+
42
+ ```css
43
+ :root {
44
+ /* Primary Text / Heading Color */
45
+ --alpha-academic-primary: #0f172a;
46
+ /* Content Background Color */
47
+ --alpha-academic-bg: #f8fafc;
48
+ /* Accent Highlight (e.g. Cover / Badge) */
49
+ --alpha-academic-accent: #0ea5e9;
50
+ /* Accent Foreground (e.g. highlighted terms / marks) */
51
+ --alpha-academic-accent-foreground: #0284c7;
52
+ }
53
+
54
+ .dark {
55
+ --alpha-academic-accent: #10b981;
56
+ --alpha-academic-accent-foreground: #34d399;
57
+ }
58
+ ```
59
+
60
+ ## Preview
61
+
62
+ ```bash
63
+ pnpm --filter @alphacifer/slidev-theme-alpha-academic dev
64
+ ```
65
+
66
+ Build the preview without opening a browser:
67
+
68
+ ```bash
69
+ pnpm --filter @alphacifer/slidev-theme-alpha-academic preview:build
70
+ ```
@@ -0,0 +1,23 @@
1
+ <script setup lang="ts">
2
+ import { handleBackground } from '@slidev/client';
3
+ import { computed } from 'vue';
4
+
5
+ const { background } = defineProps({
6
+ background: {
7
+ default: '',
8
+ },
9
+ });
10
+
11
+ const style = computed(() => handleBackground(background));
12
+ </script>
13
+
14
+ <template>
15
+ <main
16
+ class="slidev-layout alpha-academic-cover"
17
+ :style="style"
18
+ >
19
+ <div class="alpha-academic-cover__content">
20
+ <slot />
21
+ </div>
22
+ </main>
23
+ </template>
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <main class="slidev-layout alpha-academic-default">
3
+ <slot />
4
+ </main>
5
+ </template>
@@ -0,0 +1,11 @@
1
+ <template>
2
+ <main class="slidev-layout alpha-academic-end">
3
+ <div class="alpha-academic-end__content">
4
+ <slot />
5
+ <div
6
+ aria-hidden="true"
7
+ class="alpha-academic-end__rule"
8
+ />
9
+ </div>
10
+ </main>
11
+ </template>
@@ -0,0 +1,11 @@
1
+ <template>
2
+ <main class="slidev-layout alpha-academic-section">
3
+ <div class="alpha-academic-section__content">
4
+ <slot />
5
+ </div>
6
+ <div
7
+ aria-hidden="true"
8
+ class="alpha-academic-section__rule"
9
+ />
10
+ </main>
11
+ </template>
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@alphacifer/slidev-academic-theme",
3
+ "version": "0.0.0",
4
+ "description": "Alpha's light-only academic theme for Slidev",
5
+ "type": "module",
6
+ "keywords": [
7
+ "slidev-theme",
8
+ "slidev",
9
+ "academic"
10
+ ],
11
+ "files": [
12
+ "layouts",
13
+ "setup",
14
+ "slide-bottom.vue",
15
+ "style.css",
16
+ "README.md"
17
+ ],
18
+ "publishConfig": {
19
+ "access": "public",
20
+ "registry": "https://registry.npmjs.org/"
21
+ },
22
+ "author": "Alpha",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/zgid123/alpha-dx.git",
26
+ "directory": "packages/slidev/academic-theme"
27
+ },
28
+ "license": "MIT",
29
+ "slidev": {
30
+ "colorSchema": "light",
31
+ "defaults": {
32
+ "aspectRatio": "16/9",
33
+ "canvasWidth": 980,
34
+ "transition": "slide-left",
35
+ "fonts": {
36
+ "provider": "none",
37
+ "sans": "Inter",
38
+ "serif": "Georgia",
39
+ "mono": "JetBrains Mono"
40
+ }
41
+ }
42
+ },
43
+ "peerDependencies": {
44
+ "@slidev/client": ">=52.18.0",
45
+ "vue": "^3.5.40"
46
+ },
47
+ "devDependencies": {
48
+ "@slidev/client": "52.19.0",
49
+ "@slidev/cli": "52.19.0",
50
+ "vue": "3.5.40"
51
+ },
52
+ "scripts": {
53
+ "dev": "slidev slides.md --open",
54
+ "preview:build": "slidev build slides.md"
55
+ }
56
+ }
@@ -0,0 +1,20 @@
1
+ <script setup lang="ts">
2
+ import { useSlideContext } from '@slidev/client';
3
+ import { computed } from 'vue';
4
+
5
+ const { $frontmatter } = useSlideContext();
6
+
7
+ const isVisible = computed(() => !$frontmatter.hidePagy);
8
+ </script>
9
+
10
+ <template>
11
+ <div
12
+ v-if="isVisible"
13
+ aria-label="Slide pagination"
14
+ class="alpha-academic-pagy"
15
+ >
16
+ <SlideCurrentNo />
17
+ <span aria-hidden="true">/</span>
18
+ <SlidesTotal />
19
+ </div>
20
+ </template>
package/style.css ADDED
@@ -0,0 +1,116 @@
1
+ :root {
2
+ /* --alpha-academic-primary: #0369a1; */
3
+ --alpha-academic-primary: #0f172a;
4
+ --alpha-academic-bg: #f8fafc;
5
+ --alpha-academic-accent: #0ea5e9;
6
+ --alpha-academic-accent-foreground: #0284c7;
7
+ }
8
+
9
+ .dark,
10
+ html.dark {
11
+ --alpha-academic-accent: #10b981;
12
+ --alpha-academic-accent-foreground: #34d399;
13
+ --slidev-code-background: #f5f5f5;
14
+ --slidev-code-foreground: #1b1b1b;
15
+ --slidev-code-tab-divider: #e5e5e5;
16
+ --slidev-code-tab-text-color: #67676c;
17
+ --slidev-code-tab-active-text-color: #3c3c43;
18
+ }
19
+
20
+ /* Force Shiki syntax tokens to always use light-mode colors */
21
+ html.dark .shiki {
22
+ --twoslash-popup-bg: var(--shiki-light-bg, inherit);
23
+ color: var(--shiki-light, inherit);
24
+ }
25
+
26
+ html.dark pre.shiki span {
27
+ color: var(--shiki-light, inherit);
28
+ }
29
+
30
+ .slidev-page {
31
+ background-color: var(--alpha-academic-bg);
32
+ }
33
+
34
+ .alpha-bg-center {
35
+ /* Neutralise the dark gradient overlay injected by handleBackground(bg, true).
36
+ screen(black, X) = X, so the background image renders at its original brightness. */
37
+ background-blend-mode: screen;
38
+ }
39
+
40
+ .slidev-layout {
41
+ height: 100%;
42
+ padding: 2.5rem 3rem;
43
+ color: var(--alpha-academic-primary);
44
+ }
45
+
46
+ .slidev-layout mark {
47
+ font-weight: bold;
48
+ color: var(--alpha-academic-accent-foreground);
49
+ background-color: transparent;
50
+ }
51
+
52
+ .slidev-layout p {
53
+ font-size: 1.25rem;
54
+ }
55
+
56
+ .alpha-academic-cover {
57
+ display: grid;
58
+ place-items: center;
59
+ width: 100%;
60
+ height: 100%;
61
+ text-align: center;
62
+ }
63
+
64
+ .alpha-academic-cover__content {
65
+ width: 100%;
66
+ }
67
+
68
+ .slidev-layout h1 {
69
+ margin-bottom: 0.5rem;
70
+ font-size: 2.5rem;
71
+ font-weight: bold;
72
+ color: var(--alpha-academic-primary);
73
+ }
74
+
75
+ .alpha-academic-cover.slidev-layout h1 {
76
+ margin: 0;
77
+ font-size: 3.75rem;
78
+ font-weight: bold;
79
+ color: var(--alpha-academic-accent);
80
+ }
81
+
82
+ .alpha-speaker {
83
+ font-size: 20px;
84
+ }
85
+
86
+ .alpha-academic-pagy {
87
+ position: absolute;
88
+ right: 3rem;
89
+ bottom: 2.5rem;
90
+ z-index: 50;
91
+ display: flex;
92
+ gap: 0.4rem;
93
+ font-size: 1.2rem;
94
+ font-weight: bold;
95
+ font-variant-numeric: tabular-nums;
96
+ color: var(--alpha-academic-primary);
97
+ }
98
+
99
+ .slidev-page:has(.alpha-academic-cover) .alpha-academic-pagy,
100
+ .slidev-page:has(.alpha-arc-toc) .alpha-academic-pagy,
101
+ .slidev-page:has(.alpha-bg-center) .alpha-academic-pagy {
102
+ display: none;
103
+ }
104
+
105
+ .alpha-arc-toc.slidev-layout .alpha-arc-toc__heading,
106
+ .alpha-arc-toc.slidev-layout .alpha-arc-toc__heading h1 {
107
+ font-size: 2.5rem;
108
+ }
109
+
110
+ .slidev-page .alpha-arc-toc.slidev-layout .alpha-arc-toc__item > a {
111
+ font-size: 1.25rem;
112
+ }
113
+
114
+ .alpha-bg-center .alpha-bg-center__index {
115
+ color: var(--alpha-academic-accent-foreground);
116
+ }