starlight-theme-nova 0.1.0 → 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.
package/lib/aside.css ADDED
@@ -0,0 +1,17 @@
1
+ .starlight-aside {
2
+ border: 1px solid var(--sl-color-asides-border);
3
+ border-radius: 0.5rem;
4
+ }
5
+
6
+ .starlight-aside,
7
+ .starlight-aside a {
8
+ color: color-mix(
9
+ in srgb,
10
+ var(--sl-color-asides-text-accent) 50%,
11
+ var(--sl-color-white)
12
+ );
13
+ }
14
+
15
+ .starlight-aside a:is(:hover, :focus-visible) {
16
+ color: var(--sl-color-asides-text-accent);
17
+ }
package/lib/badge.css ADDED
@@ -0,0 +1,23 @@
1
+ .sl-badge {
2
+ --sl-badge-default-border: var(--sl-color-accent);
3
+ --sl-badge-default-bg: var(--sl-color-accent-low);
4
+ --sl-badge-default-text: var(--sl-color-accent-high);
5
+ --sl-badge-tip-text: var(--sl-color-purple-high);
6
+ --sl-badge-caution-text: var(--sl-color-orange-high);
7
+ --sl-badge-note-text: var(--sl-color-blue-high);
8
+ --sl-badge-success-text: var(--sl-color-green-high);
9
+ --sl-badge-danger-text: var(--sl-color-red-high);
10
+ }
11
+
12
+ [data-theme='light'] .sl-badge {
13
+ --sl-badge-tip-bg: var(--sl-color-purple-low);
14
+ --sl-badge-tip-text: var(--sl-color-purple-high);
15
+ --sl-badge-caution-bg: var(--sl-color-orange-low);
16
+ --sl-badge-caution-text: var(--sl-color-orange-high);
17
+ --sl-badge-note-bg: var(--sl-color-blue-low);
18
+ --sl-badge-note-text: var(--sl-color-blue-high);
19
+ --sl-badge-success-bg: var(--sl-color-green-low);
20
+ --sl-badge-success-text: var(--sl-color-green-high);
21
+ --sl-badge-danger-bg: var(--sl-color-red-low);
22
+ --sl-badge-danger-text: var(--sl-color-red-high);
23
+ }
package/lib/card.css ADDED
@@ -0,0 +1,42 @@
1
+ .sl-markdown-content .card-grid.stagger {
2
+ --stagger-height: 2.5rem;
3
+ }
4
+
5
+ .sl-markdown-content .card {
6
+ --sl-text-h1: var(--sl-text-4xl);
7
+ --sl-text-h2: var(--sl-text-3xl);
8
+ --sl-text-h3: var(--sl-text-2xl);
9
+ --sl-text-h4: var(--sl-text-xl);
10
+ --sl-text-h5: var(--sl-text-lg);
11
+
12
+ border-radius: 0.5rem;
13
+ padding: clamp(1rem, calc(0.125rem + 1.5vw), 2.5rem);
14
+ }
15
+
16
+ .sl-markdown-content .card .title .icon {
17
+ font-size: 1.875rem;
18
+ }
19
+
20
+ .sl-markdown-content .sl-link-card {
21
+ box-shadow: none;
22
+ }
23
+
24
+ .sl-markdown-content .sl-link-card:hover {
25
+ background: initial;
26
+ }
27
+
28
+ .sl-markdown-content .sl-link-card .title {
29
+ color: var(--sl-color-white);
30
+ }
31
+
32
+ .sl-markdown-content .sl-link-card .description {
33
+ color: var(--sl-color-gray-3);
34
+ }
35
+
36
+ .sl-markdown-content .sl-link-card:is(:hover, :focus-visible) .description {
37
+ color: var(--sl-color-gray-2);
38
+ }
39
+
40
+ .sl-markdown-content .sl-link-card .icon {
41
+ color: var(--sl-color-gray-2);
42
+ }
package/lib/shiki.css CHANGED
@@ -42,15 +42,23 @@
42
42
  }
43
43
 
44
44
  .line.highlighted {
45
- background-color: rgb(107 114 128 / 0.2) /* #6b7280 */;
45
+ background-color: var(--nano-color-highlight);
46
46
  }
47
47
 
48
48
  .line.diff.add {
49
- background-color: rgb(34 197 94 / 0.5) /* #22c55e */;
49
+ background-color: var(--sl-color-green-low);
50
50
  }
51
51
 
52
52
  .line.diff.remove {
53
- background-color: rgb(239 68 68 / 0.5) /* #ef4444 */;
53
+ background-color: var(--sl-color-red-low);
54
+ }
55
+
56
+ .highlighted-word {
57
+ border-radius: 0.25rem;
58
+ border-color: var(--sl-color-gray-5);
59
+ border-style: solid;
60
+ border-width: 1px;
61
+ padding: 0 0.125rem;
54
62
  }
55
63
  }
56
64
 
@@ -79,15 +87,3 @@ html[data-theme='dark'] .astro-code span {
79
87
  font-weight: var(--shiki-dark-font-weight);
80
88
  text-decoration: var(--shiki-dark-text-decoration);
81
89
  }
82
- /*
83
- .astro-code.twoslash .twoslash-popup-container {
84
- transform: translateY(1.8em);
85
- }
86
-
87
- .astro-code.twoslash .twoslash-query-presisted .twoslash-popup-container {
88
- transform: translateY(2.2em);
89
- }
90
-
91
- .astro-code.twoslash .twoslash-query-line .twoslash-popup-container {
92
- transform: translateY(1.3em);
93
- } */
package/lib/styles.css ADDED
@@ -0,0 +1,6 @@
1
+ @import './styles.gen.css';
2
+ @import './markdown.css';
3
+ @import './shiki.css';
4
+ @import './aside.css';
5
+ @import './badge.css';
6
+ @import './card.css';
@@ -23,6 +23,28 @@
23
23
  --sl-color-bg-inline-code: #1f2937;
24
24
  --sl-color-border-inline-code: #374151;
25
25
  --sl-color-bg-nav: color-mix(in srgb, #030712 50%, transparent);
26
+
27
+ --sl-color-orange-low: #451a03;
28
+ --sl-color-orange: #78350f;
29
+ --sl-color-orange-high: #fde68a;
30
+
31
+ --sl-color-green-low: #052e16;
32
+ --sl-color-green: #14532d;
33
+ --sl-color-green-high: #bbf7d0;
34
+
35
+ --sl-color-blue-low: #172554;
36
+ --sl-color-blue: #1e3a8a;
37
+ --sl-color-blue-high: #bfdbfe;
38
+
39
+ --sl-color-purple-low: #3b0764;
40
+ --sl-color-purple: #581c87;
41
+ --sl-color-purple-high: #e9d5ff;
42
+
43
+ --sl-color-red-low: #450a0a;
44
+ --sl-color-red: #7f1d1d;
45
+ --sl-color-red-high: #fecaca;
46
+
47
+ --nano-color-highlight: var(--sl-color-gray-5);
26
48
  }
27
49
 
28
50
  /* Light mode Starlight theme variables */
@@ -44,6 +66,28 @@
44
66
  --sl-color-bg-inline-code: #f3f4f6;
45
67
  --sl-color-border-inline-code: #d1d5db;
46
68
  --sl-color-bg-nav: color-mix(in srgb, #fff 80%, transparent);
69
+
70
+ --sl-color-orange-low: #fef3c7;
71
+ --sl-color-orange: #fbbf24;
72
+ --sl-color-orange-high: #92400e;
73
+
74
+ --sl-color-green-low: #dcfce7;
75
+ --sl-color-green: #4ade80;
76
+ --sl-color-green-high: #166534;
77
+
78
+ --sl-color-blue-low: #dbeafe;
79
+ --sl-color-blue: #60a5fa;
80
+ --sl-color-blue-high: #1e40af;
81
+
82
+ --sl-color-purple-low: #f3e8ff;
83
+ --sl-color-purple: #c084fc;
84
+ --sl-color-purple-high: #6b21a8;
85
+
86
+ --sl-color-red-low: #fee2e2;
87
+ --sl-color-red: #f87171;
88
+ --sl-color-red-high: #991b1b;
89
+
90
+ --nano-color-highlight: var(--sl-color-gray-6);
47
91
  }
48
92
 
49
93
  /* layer: shortcuts */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "starlight-theme-nova",
3
3
  "type": "module",
4
- "version": "0.1.0",
4
+ "version": "0.1.1",
5
5
  "description": "",
6
6
  "author": "ocavue <ocavue@gmail.com>",
7
7
  "license": "MIT",
@@ -5,6 +5,18 @@ import Default from '@astrojs/starlight/components/Search.astro'
5
5
  <Default />
6
6
 
7
7
  <style is:global>
8
+ site-search {
9
+ & dialog {
10
+ background-color: var(--sl-color-bg);
11
+ }
12
+
13
+ & input:focus-visible {
14
+ outline-style: solid;
15
+ outline-width: 1px;
16
+ outline-color: var(--sl-color-accent);
17
+ }
18
+ }
19
+
8
20
  ::backdrop {
9
21
  --sl-color-backdrop-overlay: hsl(0 0 0% / 0.9);
10
22
  }
@@ -26,14 +38,14 @@ import Default from '@astrojs/starlight/components/Search.astro'
26
38
  }
27
39
 
28
40
  & dialog {
29
- animation-name: sl-ocavue-search-dialog-zoom-out;
41
+ animation-name: nova-search-dialog-zoom-out;
30
42
  animation-duration: 150ms;
31
43
  transform: translateZ(0);
32
44
  }
33
45
 
34
46
  & dialog[open] {
35
47
  animation-duration: 50ms;
36
- animation-name: sl-ocavue-search-dialog-zoom-in;
48
+ animation-name: nova-search-dialog-zoom-in;
37
49
  }
38
50
 
39
51
  & dialog::backdrop {
@@ -41,17 +53,17 @@ import Default from '@astrojs/starlight/components/Search.astro'
41
53
  backdrop-filter: none;
42
54
 
43
55
  animation-duration: 150ms;
44
- animation-name: sl-ocavue-search-backdrop-fade-out;
56
+ animation-name: nova-search-backdrop-fade-out;
45
57
  }
46
58
 
47
59
  & dialog[open]::backdrop {
48
60
  animation-duration: 50ms;
49
- animation-name: sl-ocavue-search-backdrop-fade-in;
61
+ animation-name: nova-search-backdrop-fade-in;
50
62
  }
51
63
  }
52
64
  }
53
65
 
54
- @keyframes sl-ocavue-search-backdrop-fade-in {
66
+ @keyframes nova-search-backdrop-fade-in {
55
67
  from {
56
68
  background-color: transparent;
57
69
  }
@@ -60,7 +72,7 @@ import Default from '@astrojs/starlight/components/Search.astro'
60
72
  }
61
73
  }
62
74
 
63
- @keyframes sl-ocavue-search-backdrop-fade-out {
75
+ @keyframes nova-search-backdrop-fade-out {
64
76
  from {
65
77
  background-color: var(--sl-color-backdrop-overlay);
66
78
  }
@@ -69,23 +81,23 @@ import Default from '@astrojs/starlight/components/Search.astro'
69
81
  }
70
82
  }
71
83
 
72
- :root {
73
- --sl-ocavue-search-dialog-zoom-scale: 1;
74
- --sl-ocavue-search-dialog-zoom-translate-y: 0;
84
+ site-search {
85
+ --nova-search-dialog-zoom-scale: 1;
86
+ --nova-search-dialog-zoom-translate-y: 0;
75
87
  }
76
88
 
77
89
  @media (min-width: 72rem) {
78
- :root {
79
- --sl-ocavue-search-dialog-zoom-scale: 0.95;
80
- --sl-ocavue-search-dialog-zoom-translate-y: -1rem;
90
+ site-search {
91
+ --nova-search-dialog-zoom-scale: 0.95;
92
+ --nova-search-dialog-zoom-translate-y: -1rem;
81
93
  }
82
94
  }
83
95
 
84
- @keyframes sl-ocavue-search-dialog-zoom-in {
96
+ @keyframes nova-search-dialog-zoom-in {
85
97
  from {
86
98
  opacity: 0;
87
- transform: scale(var(--sl-ocavue-search-dialog-zoom-scale))
88
- translateY(var(--sl-ocavue-search-dialog-zoom-translate-y));
99
+ transform: scale(var(--nova-search-dialog-zoom-scale))
100
+ translateY(var(--nova-search-dialog-zoom-translate-y));
89
101
  }
90
102
  to {
91
103
  opacity: 1;
@@ -93,15 +105,15 @@ import Default from '@astrojs/starlight/components/Search.astro'
93
105
  }
94
106
  }
95
107
 
96
- @keyframes sl-ocavue-search-dialog-zoom-out {
108
+ @keyframes nova-search-dialog-zoom-out {
97
109
  from {
98
110
  opacity: 1;
99
111
  transform: scale(1) translateY(0);
100
112
  }
101
113
  to {
102
114
  opacity: 0;
103
- transform: scale(var(--sl-ocavue-search-dialog-zoom-scale))
104
- translateY(var(--sl-ocavue-search-dialog-zoom-translate-y));
115
+ transform: scale(var(--nova-search-dialog-zoom-scale))
116
+ translateY(var(--nova-search-dialog-zoom-translate-y));
105
117
  }
106
118
  }
107
119
  </style>
package/src/index.ts CHANGED
@@ -36,9 +36,7 @@ export default function starlightThemeNova(
36
36
  const newConfig = {
37
37
  customCss: [
38
38
  // Including any user CSS *after* our own.
39
- 'starlight-theme-nova/styles.gen.css',
40
- 'starlight-theme-nova/shiki.css',
41
- 'starlight-theme-nova/markdown.css',
39
+ 'starlight-theme-nova/styles.css',
42
40
  ...(config.customCss || []),
43
41
  ],
44
42
  components: {
@@ -1,7 +1,9 @@
1
1
  import {
2
2
  transformerMetaHighlight,
3
+ transformerMetaWordHighlight,
3
4
  transformerNotationDiff,
4
5
  transformerNotationHighlight,
6
+ transformerNotationWordHighlight,
5
7
  } from '@shikijs/transformers'
6
8
  import { transformerTwoslash } from '@shikijs/twoslash'
7
9
  import type { ShikiTransformer } from '@shikijs/types'
@@ -12,9 +14,12 @@ import { transformerCopyButton } from './shiki-transformer-copy-button'
12
14
 
13
15
  export function createShikiConfig(options: { twoslash: boolean }): ShikiConfig {
14
16
  const transformers: ShikiTransformer[] = [
17
+ transformerMetaHighlight(),
18
+ transformerMetaWordHighlight(),
15
19
  transformerNotationDiff(),
16
20
  transformerNotationHighlight(),
17
- transformerMetaHighlight(),
21
+ transformerNotationWordHighlight(),
22
+
18
23
  transformerCopyButton(),
19
24
  options.twoslash
20
25
  ? transformerTwoslash({