slidev-theme-one-purple-unicorn-pro 0.1.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 +152 -0
- package/index.ts +17 -0
- package/layouts/cover.vue +18 -0
- package/layouts/end.vue +18 -0
- package/layouts/intro.vue +18 -0
- package/layouts/section.vue +18 -0
- package/package.json +71 -0
- package/setup/main.ts +6 -0
- package/styles/animations.css +30 -0
- package/styles/code-theme.css +312 -0
- package/styles/colors.css +117 -0
- package/styles/dark-theme.css +75 -0
- package/styles/gradients.css +293 -0
- package/styles/index.css +406 -0
- package/styles/layout-fix.css +196 -0
- package/styles/layout.css +171 -0
- package/styles/light-theme.css +266 -0
- package/styles/macos-buttons.css +354 -0
- package/styles/main.css +494 -0
- package/styles.css +2 -0
- package/uno.config.ts +28 -0
package/README.md
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# One Purple Unicorn Pro - Slidev Theme
|
|
2
|
+
|
|
3
|
+
A professional Slidev theme with purple and indigo gradients, optimized for technical presentations.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Purple & Indigo Color Scheme**: Beautiful gradient effects from purple to blue
|
|
8
|
+
- **Light & Dark Modes**: User-configurable theme switching
|
|
9
|
+
- **Korean + English Support**: Noto Sans KR font for mixed language presentations
|
|
10
|
+
- **Clean Layouts**: Special layouts for cover, intro, section, and end slides
|
|
11
|
+
- **Code Highlighting**: Vitesse theme for consistent syntax highlighting
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install slidev-theme-one-purple-unicorn-pro
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
Add the theme to your Slidev presentation:
|
|
22
|
+
|
|
23
|
+
```yaml
|
|
24
|
+
---
|
|
25
|
+
theme: slidev-theme-one-purple-unicorn-pro
|
|
26
|
+
colorSchema: light # or 'dark', 'auto'
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
# Your Presentation Title
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Theme Modes
|
|
33
|
+
|
|
34
|
+
### Light Mode (Default)
|
|
35
|
+
```yaml
|
|
36
|
+
---
|
|
37
|
+
colorSchema: light
|
|
38
|
+
---
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Dark Mode
|
|
42
|
+
```yaml
|
|
43
|
+
---
|
|
44
|
+
colorSchema: dark
|
|
45
|
+
---
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Auto Mode (System Preference)
|
|
49
|
+
```yaml
|
|
50
|
+
---
|
|
51
|
+
colorSchema: auto
|
|
52
|
+
---
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
You can also switch themes per slide:
|
|
56
|
+
```yaml
|
|
57
|
+
---
|
|
58
|
+
colorSchema: dark
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
# This slide uses dark mode
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Available Layouts
|
|
65
|
+
|
|
66
|
+
### Cover Layout
|
|
67
|
+
```yaml
|
|
68
|
+
---
|
|
69
|
+
layout: cover
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
# Your Title
|
|
73
|
+
Subtitle or description
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Section Layout
|
|
77
|
+
```yaml
|
|
78
|
+
---
|
|
79
|
+
layout: section
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
# Section Title
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Intro Layout
|
|
86
|
+
```yaml
|
|
87
|
+
---
|
|
88
|
+
layout: intro
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
# Introduction
|
|
92
|
+
Your intro content here
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### End Layout
|
|
96
|
+
```yaml
|
|
97
|
+
---
|
|
98
|
+
layout: end
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
# Thank You
|
|
102
|
+
Contact information
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Two Columns Layout
|
|
106
|
+
```yaml
|
|
107
|
+
---
|
|
108
|
+
layout: two-cols
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
# Two Column Layout
|
|
112
|
+
|
|
113
|
+
::left::
|
|
114
|
+
|
|
115
|
+
Left column content
|
|
116
|
+
|
|
117
|
+
::right::
|
|
118
|
+
|
|
119
|
+
Right column content
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Color Palette
|
|
123
|
+
|
|
124
|
+
- **Primary**: `#8b5cf6` (Purple)
|
|
125
|
+
- **Secondary**: `#6366f1` (Indigo)
|
|
126
|
+
- **Accent**: `#ec4899` (Pink)
|
|
127
|
+
- **Gradient**: Purple → Blue
|
|
128
|
+
|
|
129
|
+
## Typography
|
|
130
|
+
|
|
131
|
+
- **Sans**: Noto Sans KR, Inter, system-ui
|
|
132
|
+
- **Mono**: JetBrains Mono, Fira Code
|
|
133
|
+
- **Serif**: Noto Serif KR
|
|
134
|
+
|
|
135
|
+
## CSS Variables
|
|
136
|
+
|
|
137
|
+
You can override theme variables in your slides:
|
|
138
|
+
|
|
139
|
+
```css
|
|
140
|
+
:root {
|
|
141
|
+
--primary: #8b5cf6;
|
|
142
|
+
--primary-light: #a78bfa;
|
|
143
|
+
--primary-dark: #7c3aed;
|
|
144
|
+
--secondary: #6366f1;
|
|
145
|
+
--accent: #ec4899;
|
|
146
|
+
--gradient: linear-gradient(135deg, var(--primary), var(--secondary));
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## License
|
|
151
|
+
|
|
152
|
+
MIT
|
package/index.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { defineTheme } from '@slidev/types'
|
|
2
|
+
|
|
3
|
+
export default defineTheme({
|
|
4
|
+
name: 'slidev-theme-one-purple-unicorn-pro',
|
|
5
|
+
colorSchema: 'both', // Support both light and dark themes
|
|
6
|
+
highlighter: {
|
|
7
|
+
theme: {
|
|
8
|
+
light: 'vitesse-light',
|
|
9
|
+
dark: 'vitesse-dark'
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
fonts: {
|
|
13
|
+
sans: ['Noto Sans KR', 'Inter', 'system-ui', 'sans-serif'],
|
|
14
|
+
serif: ['Noto Serif KR', 'serif'],
|
|
15
|
+
mono: ['JetBrains Mono', 'Fira Code', 'monospace']
|
|
16
|
+
}
|
|
17
|
+
})
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="slidev-layout cover">
|
|
3
|
+
<div class="cover-content">
|
|
4
|
+
<slot />
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<style scoped>
|
|
10
|
+
.cover {
|
|
11
|
+
@apply h-full flex items-center justify-center;
|
|
12
|
+
background: var(--dark-bg);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.cover-content {
|
|
16
|
+
@apply text-center max-w-4xl mx-auto px-8;
|
|
17
|
+
}
|
|
18
|
+
</style>
|
package/layouts/end.vue
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="slidev-layout end">
|
|
3
|
+
<div class="end-content">
|
|
4
|
+
<slot />
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<style scoped>
|
|
10
|
+
.end {
|
|
11
|
+
@apply h-full flex items-center justify-center;
|
|
12
|
+
background: var(--dark-bg);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.end-content {
|
|
16
|
+
@apply text-center max-w-4xl mx-auto px-8;
|
|
17
|
+
}
|
|
18
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="slidev-layout intro">
|
|
3
|
+
<div class="intro-content">
|
|
4
|
+
<slot />
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<style scoped>
|
|
10
|
+
.intro {
|
|
11
|
+
@apply h-full flex items-center;
|
|
12
|
+
background: var(--dark-bg);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.intro-content {
|
|
16
|
+
@apply max-w-5xl mx-auto px-12;
|
|
17
|
+
}
|
|
18
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="slidev-layout section">
|
|
3
|
+
<div class="section-content">
|
|
4
|
+
<slot />
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<style scoped>
|
|
10
|
+
.section {
|
|
11
|
+
@apply h-full flex items-center justify-center;
|
|
12
|
+
background: var(--dark-bg);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.section-content {
|
|
16
|
+
@apply text-center max-w-4xl mx-auto px-8;
|
|
17
|
+
}
|
|
18
|
+
</style>
|
package/package.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "slidev-theme-one-purple-unicorn-pro",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "One Purple Unicorn Pro theme for Slidev - Purple/Indigo focused theme with clean macOS style",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"slidev-theme",
|
|
8
|
+
"slidev"
|
|
9
|
+
],
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">=14.0.0",
|
|
12
|
+
"slidev": ">=0.47.0"
|
|
13
|
+
},
|
|
14
|
+
"author": {
|
|
15
|
+
"name": "Hawk",
|
|
16
|
+
"email": "hawking90a@gmail.com"
|
|
17
|
+
},
|
|
18
|
+
"main": "./index.ts",
|
|
19
|
+
"files": [
|
|
20
|
+
"index.ts",
|
|
21
|
+
"components/**/*",
|
|
22
|
+
"layouts/**/*",
|
|
23
|
+
"styles/**/*",
|
|
24
|
+
"setup/**/*",
|
|
25
|
+
"uno.config.ts",
|
|
26
|
+
"styles.css",
|
|
27
|
+
"README.md"
|
|
28
|
+
],
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "https://github.com/hawk90/slidev-theme-one-purple-unicorn-pro"
|
|
32
|
+
},
|
|
33
|
+
"homepage": "https://github.com/hawk90/slidev-theme-one-purple-unicorn-pro",
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/hawk90/slidev-theme-one-purple-unicorn-pro/issues"
|
|
36
|
+
},
|
|
37
|
+
"license": "MIT",
|
|
38
|
+
"slidev": {
|
|
39
|
+
"colorSchema": "both",
|
|
40
|
+
"defaults": {
|
|
41
|
+
"fonts": {
|
|
42
|
+
"sans": "Noto Sans KR, Inter, system-ui",
|
|
43
|
+
"serif": "Noto Serif KR",
|
|
44
|
+
"mono": "JetBrains Mono, Fira Code, monospace"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@slidev/types": "latest",
|
|
50
|
+
"codemirror-theme-vars": "^0.1.2",
|
|
51
|
+
"prism-theme-vars": "^0.2.4",
|
|
52
|
+
"theme-vitesse": "^0.6.0"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"postcss": "^8.4.24",
|
|
56
|
+
"postcss-cli": "^10.1.0",
|
|
57
|
+
"postcss-import": "^15.1.0",
|
|
58
|
+
"postcss-nested": "^6.0.1",
|
|
59
|
+
"postcss-custom-properties": "^13.1.4",
|
|
60
|
+
"autoprefixer": "^10.4.14",
|
|
61
|
+
"cssnano": "^6.0.1"
|
|
62
|
+
},
|
|
63
|
+
"scripts": {
|
|
64
|
+
"dev": "echo 'Theme development mode - changes are automatically reflected'",
|
|
65
|
+
"build": "echo 'Building theme...' && npm link",
|
|
66
|
+
"watch": "echo 'Watching for changes...'",
|
|
67
|
+
"link": "npm link && cd ../.. && npm link slidev-theme-one-purple-unicorn-pro",
|
|
68
|
+
"unlink": "npm unlink && cd ../.. && npm unlink slidev-theme-one-purple-unicorn-pro",
|
|
69
|
+
"prepublishOnly": "echo 'Preparing for publish...'"
|
|
70
|
+
}
|
|
71
|
+
}
|
package/setup/main.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* No animations - PDF export only */
|
|
2
|
+
|
|
3
|
+
/* Disable all animations */
|
|
4
|
+
* {
|
|
5
|
+
animation: none !important;
|
|
6
|
+
transition: none !important;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/* Static gradients */
|
|
10
|
+
.gradient-animated,
|
|
11
|
+
.gradient-text-animated {
|
|
12
|
+
background-position: 50% 50% !important;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Hide animated elements */
|
|
16
|
+
.animated-blob,
|
|
17
|
+
.particle,
|
|
18
|
+
.wave {
|
|
19
|
+
display: none !important;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* Static glow effect */
|
|
23
|
+
.glow {
|
|
24
|
+
box-shadow: 0 0 30px rgba(97, 175, 239, 0.4);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Static blob shapes */
|
|
28
|
+
.blob {
|
|
29
|
+
border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
|
|
30
|
+
}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
/* One Purple Unicorn Pro Code Theme - One Dark Pro for All Code */
|
|
2
|
+
|
|
3
|
+
/* === BASE CODE BLOCK STYLES === */
|
|
4
|
+
.slidev-code,
|
|
5
|
+
pre,
|
|
6
|
+
.shiki,
|
|
7
|
+
code[class*="language-"],
|
|
8
|
+
pre[class*="language-"],
|
|
9
|
+
.slidev-layout pre,
|
|
10
|
+
.slidev-layout .shiki {
|
|
11
|
+
background: #f8f9fa !important;
|
|
12
|
+
background-image: none !important;
|
|
13
|
+
background-attachment: initial !important;
|
|
14
|
+
background-size: initial !important;
|
|
15
|
+
background-repeat: no-repeat !important;
|
|
16
|
+
color: #1e293b !important;
|
|
17
|
+
border: none !important;
|
|
18
|
+
border-radius: 12px !important;
|
|
19
|
+
outline: none !important;
|
|
20
|
+
box-shadow: none !important;
|
|
21
|
+
font-family: 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', monospace !important;
|
|
22
|
+
font-size: 14px !important;
|
|
23
|
+
line-height: 1.6 !important;
|
|
24
|
+
padding: 2rem 1.5rem 1.5rem !important;
|
|
25
|
+
position: relative !important;
|
|
26
|
+
overflow-x: auto !important;
|
|
27
|
+
text-rendering: optimizeLegibility !important;
|
|
28
|
+
-webkit-font-smoothing: antialiased !important;
|
|
29
|
+
-moz-osx-font-smoothing: grayscale !important;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* === MAC TERMINAL BUTTONS === */
|
|
33
|
+
/* More specific selectors for Slidev generated HTML */
|
|
34
|
+
.shiki[class*="language-bash"]::before,
|
|
35
|
+
.shiki[class*="language-shell"]::before,
|
|
36
|
+
.shiki[class*="language-terminal"]::before,
|
|
37
|
+
.shiki[class*="language-console"]::before,
|
|
38
|
+
pre[class*="language-bash"]::before,
|
|
39
|
+
pre[class*="language-shell"]::before,
|
|
40
|
+
pre[class*="language-terminal"]::before,
|
|
41
|
+
pre[class*="language-console"]::before,
|
|
42
|
+
.slidev-code[class*="language-bash"]::before,
|
|
43
|
+
.slidev-code[class*="language-shell"]::before,
|
|
44
|
+
.slidev-code[class*="language-terminal"]::before,
|
|
45
|
+
.slidev-code[class*="language-console"]::before,
|
|
46
|
+
/* Also target by data attributes */
|
|
47
|
+
pre[data-language="bash"]::before,
|
|
48
|
+
pre[data-language="shell"]::before,
|
|
49
|
+
pre[data-language="terminal"]::before,
|
|
50
|
+
pre[data-language="console"]::before,
|
|
51
|
+
.shiki[data-language="bash"]::before,
|
|
52
|
+
.shiki[data-language="shell"]::before,
|
|
53
|
+
.shiki[data-language="terminal"]::before,
|
|
54
|
+
.shiki[data-language="console"]::before {
|
|
55
|
+
content: '';
|
|
56
|
+
position: absolute;
|
|
57
|
+
top: 16px;
|
|
58
|
+
left: 20px;
|
|
59
|
+
width: 12px;
|
|
60
|
+
height: 12px;
|
|
61
|
+
background: #ff5f57;
|
|
62
|
+
border-radius: 50%;
|
|
63
|
+
box-shadow: 20px 0 0 #ffbd2e, 40px 0 0 #28ca42;
|
|
64
|
+
z-index: 1000;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* === MAC TERMINAL BUTTONS - ALL TYPES (CIRCULAR) === */
|
|
68
|
+
*[class*="bash"]::before,
|
|
69
|
+
*[class*="shell"]::before,
|
|
70
|
+
*[class*="terminal"]::before,
|
|
71
|
+
*[class*="console"]::before,
|
|
72
|
+
*[lang*="bash"]::before,
|
|
73
|
+
*[lang*="shell"]::before,
|
|
74
|
+
*[lang*="terminal"]::before,
|
|
75
|
+
*[lang*="console"]::before {
|
|
76
|
+
content: '';
|
|
77
|
+
position: absolute;
|
|
78
|
+
top: 8px;
|
|
79
|
+
left: calc(-1.5rem + 12px); /* Outside padding + comfortable Mac terminal spacing */
|
|
80
|
+
width: 12px;
|
|
81
|
+
height: 12px;
|
|
82
|
+
background: #ff5f57;
|
|
83
|
+
border-radius: 50%;
|
|
84
|
+
box-shadow: 20px 0 0 #ffbd2e, 40px 0 0 #28ca42;
|
|
85
|
+
z-index: 1000;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* === PURE CSS SYNTAX HIGHLIGHTING === */
|
|
89
|
+
/* Shiki 없이 순수 CSS로 구문 강조 구현 */
|
|
90
|
+
|
|
91
|
+
/* 기본 코드 블록 스타일 */
|
|
92
|
+
pre,
|
|
93
|
+
code,
|
|
94
|
+
.slidev-code {
|
|
95
|
+
color: #abb2bf !important;
|
|
96
|
+
background: #282c34 !important;
|
|
97
|
+
font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace !important;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* CSS 기반 구문 강조 - 정규식 패턴 매칭 */
|
|
101
|
+
|
|
102
|
+
/* 키워드: if, for, while, return, function, const, let, var, class */
|
|
103
|
+
pre:has-text("\\bif\\b"),
|
|
104
|
+
pre:has-text("\\bfor\\b"),
|
|
105
|
+
pre:has-text("\\bwhile\\b"),
|
|
106
|
+
pre:has-text("\\breturn\\b"),
|
|
107
|
+
pre:has-text("\\bfunction\\b"),
|
|
108
|
+
pre:has-text("\\bconst\\b"),
|
|
109
|
+
pre:has-text("\\blet\\b"),
|
|
110
|
+
pre:has-text("\\bvar\\b"),
|
|
111
|
+
pre:has-text("\\bclass\\b"),
|
|
112
|
+
pre:has-text("\\b__global__\\b"),
|
|
113
|
+
pre:has-text("\\b__device__\\b"),
|
|
114
|
+
pre:has-text("\\b__host__\\b"),
|
|
115
|
+
pre:has-text("\\bvoid\\b"),
|
|
116
|
+
pre:has-text("\\bint\\b"),
|
|
117
|
+
pre:has-text("\\bfloat\\b"),
|
|
118
|
+
pre:has-text("\\bdouble\\b") {
|
|
119
|
+
/* 키워드가 있는 줄을 찾아서 처리 */
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* 실제 간단한 구문 강조 구현 */
|
|
123
|
+
/* 문자열 패턴 - CSS로 직접 구현 */
|
|
124
|
+
pre::after {
|
|
125
|
+
content: "";
|
|
126
|
+
position: absolute;
|
|
127
|
+
top: 0;
|
|
128
|
+
left: 0;
|
|
129
|
+
right: 0;
|
|
130
|
+
bottom: 0;
|
|
131
|
+
pointer-events: none;
|
|
132
|
+
/* JavaScript로 실시간 구문 강조 적용 */
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* === ONE DARK PRO SYNTAX HIGHLIGHTING === */
|
|
136
|
+
/* Base code color */
|
|
137
|
+
pre, code, .shiki {
|
|
138
|
+
color: #1e293b !important;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Let Shiki handle syntax highlighting colors */
|
|
142
|
+
.shiki {
|
|
143
|
+
background: #282c34 !important;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/* Direct style attribute overrides for Shiki generated content */
|
|
147
|
+
.shiki span[style*="#569CD6"] { color: #569cd6 !important; } /* Keywords */
|
|
148
|
+
.shiki span[style*="#CE9178"] { color: #ce9178 !important; } /* Strings */
|
|
149
|
+
.shiki span[style*="#6A9955"] { color: #6a9955 !important; font-style: italic !important; } /* Comments */
|
|
150
|
+
.shiki span[style*="#DCDCAA"] { color: #dcdcaa !important; } /* Functions */
|
|
151
|
+
.shiki span[style*="#9CDCFE"] { color: #9cdcfe !important; } /* Variables */
|
|
152
|
+
.shiki span[style*="#B5CEA8"] { color: #b5cea8 !important; } /* Numbers */
|
|
153
|
+
.shiki span[style*="#4EC9B0"] { color: #4ec9b0 !important; } /* Types */
|
|
154
|
+
.shiki span[style*="#C586C0"] { color: #c586c0 !important; } /* Purple keywords */
|
|
155
|
+
|
|
156
|
+
/* Force dark background on all code elements - Remove all patterns */
|
|
157
|
+
pre,
|
|
158
|
+
.shiki,
|
|
159
|
+
.slidev-code,
|
|
160
|
+
code[class*="language-"],
|
|
161
|
+
pre[class*="language-"] {
|
|
162
|
+
background: #f8f9fa !important;
|
|
163
|
+
background-image: none !important;
|
|
164
|
+
background-attachment: initial !important;
|
|
165
|
+
background-origin: initial !important;
|
|
166
|
+
background-clip: initial !important;
|
|
167
|
+
background-size: initial !important;
|
|
168
|
+
background-repeat: no-repeat !important;
|
|
169
|
+
background-position: initial !important;
|
|
170
|
+
color: #1e293b !important;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/* Remove any pseudo-element backgrounds */
|
|
174
|
+
pre::before,
|
|
175
|
+
pre::after,
|
|
176
|
+
.shiki::before,
|
|
177
|
+
.shiki::after {
|
|
178
|
+
background: none !important;
|
|
179
|
+
background-image: none !important;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* === ENHANCED SYNTAX HIGHLIGHTING === */
|
|
183
|
+
/* One Dark Pro colors with better coverage */
|
|
184
|
+
|
|
185
|
+
/* Comments - Green italic */
|
|
186
|
+
.shiki .token.comment,
|
|
187
|
+
.shiki .token.prolog,
|
|
188
|
+
.shiki .token.doctype,
|
|
189
|
+
.shiki .token.cdata,
|
|
190
|
+
.shiki span[style*="color:#6A9955"],
|
|
191
|
+
.shiki span[style*="color:#608B4E"] {
|
|
192
|
+
color: #008000 !important;
|
|
193
|
+
font-style: italic !important;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/* Keywords - Blue */
|
|
197
|
+
.shiki .token.atrule,
|
|
198
|
+
.shiki .token.attr-value,
|
|
199
|
+
.shiki .token.keyword,
|
|
200
|
+
.shiki span[style*="color:#569CD6"],
|
|
201
|
+
.shiki span[style*="color:#C586C0"] {
|
|
202
|
+
color: #0066cc !important;
|
|
203
|
+
font-weight: 500 !important;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Strings - Orange */
|
|
207
|
+
.shiki .token.selector,
|
|
208
|
+
.shiki .token.attr-name,
|
|
209
|
+
.shiki .token.string,
|
|
210
|
+
.shiki .token.char,
|
|
211
|
+
.shiki .token.builtin,
|
|
212
|
+
.shiki .token.inserted,
|
|
213
|
+
.shiki span[style*="color:#CE9178"],
|
|
214
|
+
.shiki span[style*="color:#D69D85"] {
|
|
215
|
+
color: #d83a00 !important;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/* Numbers - Light Green */
|
|
219
|
+
.shiki .token.property,
|
|
220
|
+
.shiki .token.tag,
|
|
221
|
+
.shiki .token.boolean,
|
|
222
|
+
.shiki .token.number,
|
|
223
|
+
.shiki .token.constant,
|
|
224
|
+
.shiki .token.symbol,
|
|
225
|
+
.shiki .token.deleted,
|
|
226
|
+
.shiki span[style*="color:#B5CEA8"] {
|
|
227
|
+
color: #b5cea8 !important;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/* Functions - Yellow */
|
|
231
|
+
.shiki .token.function,
|
|
232
|
+
.shiki .token.class-name,
|
|
233
|
+
.shiki span[style*="color:#DCDCAA"],
|
|
234
|
+
.shiki span[style*="color:#4EC9B0"] {
|
|
235
|
+
color: #dcdcaa !important;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/* Variables & Identifiers - Light Blue */
|
|
239
|
+
.shiki .token.regex,
|
|
240
|
+
.shiki .token.important,
|
|
241
|
+
.shiki .token.variable,
|
|
242
|
+
.shiki span[style*="color:#9CDCFE"],
|
|
243
|
+
.shiki span[style*="color:#4FC1FF"] {
|
|
244
|
+
color: #9cdcfe !important;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/* Types - Cyan */
|
|
248
|
+
.shiki span[style*="color:#4EC9B0"] {
|
|
249
|
+
color: #4ec9b0 !important;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* Operators & Punctuation */
|
|
253
|
+
.shiki .token.punctuation,
|
|
254
|
+
.shiki .token.operator,
|
|
255
|
+
.shiki .token.entity,
|
|
256
|
+
.shiki .token.url {
|
|
257
|
+
color: #1e293b !important;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/* Special tokens for C++/CUDA */
|
|
261
|
+
.shiki span:contains("__global__"),
|
|
262
|
+
.shiki span:contains("__device__"),
|
|
263
|
+
.shiki span:contains("__host__") {
|
|
264
|
+
color: #c586c0 !important;
|
|
265
|
+
font-weight: bold !important;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/* Ensure proper font rendering */
|
|
269
|
+
.shiki code,
|
|
270
|
+
pre code {
|
|
271
|
+
color: inherit !important;
|
|
272
|
+
background: transparent !important;
|
|
273
|
+
font-family: inherit !important;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/* === INLINE CODE === */
|
|
277
|
+
:not(pre) > code {
|
|
278
|
+
background: linear-gradient(135deg, #f3f0ff 0%, #fdf4ff 100%) !important;
|
|
279
|
+
color: #8b5cf6 !important;
|
|
280
|
+
border: 1px solid rgba(139, 92, 246, 0.2) !important;
|
|
281
|
+
border-radius: 0.375rem !important;
|
|
282
|
+
padding: 0.125rem 0.375rem !important;
|
|
283
|
+
font-weight: 500 !important;
|
|
284
|
+
font-size: 0.9em !important;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/* === SCROLLBAR === */
|
|
288
|
+
.shiki::-webkit-scrollbar {
|
|
289
|
+
width: 8px;
|
|
290
|
+
height: 8px;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.shiki::-webkit-scrollbar-track {
|
|
294
|
+
background: #e2e8f0;
|
|
295
|
+
border-radius: 4px;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.shiki::-webkit-scrollbar-thumb {
|
|
299
|
+
background: #94a3b8;
|
|
300
|
+
border-radius: 4px;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.shiki::-webkit-scrollbar-thumb:hover {
|
|
304
|
+
background: #64748b;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/* === HOVER EFFECTS === */
|
|
308
|
+
.slidev-code:hover,
|
|
309
|
+
.shiki:hover {
|
|
310
|
+
box-shadow: 0 10px 15px -3px rgba(139, 92, 246, 0.15) !important;
|
|
311
|
+
transition: box-shadow 0.3s ease;
|
|
312
|
+
}
|