@nu-appdev/northwestern-starlight-theme 1.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/CHANGELOG.md +21 -0
- package/LICENSE +21 -0
- package/README.md +52 -0
- package/expressive-code.mjs +18 -0
- package/index.ts +170 -0
- package/mermaid.ts +376 -0
- package/package.json +63 -0
- package/src/components/ConditionalEditLink.astro +7 -0
- package/src/components/Hero.astro +252 -0
- package/src/components/ThemeToggle.astro +199 -0
- package/src/scripts/mermaid-toolbar.ts +503 -0
- package/src/styles/components/cards.css +31 -0
- package/src/styles/components/code.css +168 -0
- package/src/styles/components/mermaid.css +86 -0
- package/src/styles/components/steps.css +28 -0
- package/src/styles/components/tabs.css +103 -0
- package/src/styles/components/utility-surfaces.css +41 -0
- package/src/styles/content.css +386 -0
- package/src/styles/layers.css +8 -0
- package/src/styles/mermaid-toolbar.css +163 -0
- package/src/styles/navigation.css +201 -0
- package/src/styles/openapi.css +119 -0
- package/src/styles/theme.css +114 -0
- package/src/styles/typography.css +170 -0
- package/src/styles/variables.css +121 -0
- package/src/virtual.d.ts +9 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
Mermaid — Structural SVG Overrides
|
|
3
|
+
|
|
4
|
+
Only includes CSS that cannot be expressed through mermaid themeVariables:
|
|
5
|
+
font enforcement, HTML label backgrounds, and diagram-specific structural
|
|
6
|
+
fixes. Colors and contrast are handled by the TS config in mermaid.ts.
|
|
7
|
+
========================================================================== */
|
|
8
|
+
|
|
9
|
+
/* stylelint-disable selector-class-pattern, order/properties-order */
|
|
10
|
+
|
|
11
|
+
/* Container — card-like border matching cards.css */
|
|
12
|
+
pre.mermaid,
|
|
13
|
+
.mermaid {
|
|
14
|
+
padding: 1.5rem;
|
|
15
|
+
border: 1px solid var(--nu-border-color) !important;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* Font — mermaid applies font via inline style, CSS !important needed */
|
|
19
|
+
.mermaid text {
|
|
20
|
+
font-family: var(--nu-font-body) !important;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* HTML labels inherit color from parent instead of mermaid's inline style */
|
|
24
|
+
.mermaid .nodeLabel p {
|
|
25
|
+
color: inherit !important;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Edge label HTML elements — mermaid uses <div> with inline background */
|
|
29
|
+
.mermaid .edgeLabel,
|
|
30
|
+
.mermaid .edgeLabel p {
|
|
31
|
+
color: var(--nu-color-text, #342f2e) !important;
|
|
32
|
+
background: var(--nu-card-bg, #fff) !important;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.mermaid .labelBkg {
|
|
36
|
+
color: var(--nu-color-text, #342f2e) !important;
|
|
37
|
+
background: var(--nu-card-bg, #fff) !important;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Class diagram: edge labels on purple bg */
|
|
41
|
+
.mermaid svg.classDiagram .labelBkg,
|
|
42
|
+
.mermaid svg.classDiagram .labelBkg .edgeLabel,
|
|
43
|
+
.mermaid svg.classDiagram .labelBkg .edgeLabel p {
|
|
44
|
+
background: var(--nu-purple-100) !important;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
:root:not([data-theme="light"]) .mermaid svg.classDiagram .labelBkg,
|
|
48
|
+
:root:not([data-theme="light"]) .mermaid svg.classDiagram .labelBkg .edgeLabel,
|
|
49
|
+
:root:not([data-theme="light"]) .mermaid svg.classDiagram .labelBkg .edgeLabel p {
|
|
50
|
+
background: var(--nu-purple-80) !important;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Class diagram: first attribute row header tint */
|
|
54
|
+
.mermaid svg.classDiagram .node.default > .row-rect-odd:nth-child(2) path[fill*="hsl"] {
|
|
55
|
+
fill: #fff !important;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
:root:not([data-theme="light"]) .mermaid svg.classDiagram .node.default > .row-rect-odd:nth-child(2) path[fill*="hsl"] {
|
|
59
|
+
fill: var(--nu-card-bg, #292929) !important;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* ER diagram: HTML label text readability */
|
|
63
|
+
.mermaid svg.erDiagram .edgeLabel,
|
|
64
|
+
.mermaid svg.erDiagram .edgeLabel p,
|
|
65
|
+
.mermaid svg.erDiagram .edgeLabel span {
|
|
66
|
+
color: var(--nu-color-text, #342f2e) !important;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* ER attribute labels: dark text on light rows */
|
|
70
|
+
.mermaid svg.erDiagram .label.attribute-type .nodeLabel,
|
|
71
|
+
.mermaid svg.erDiagram .label.attribute-name .nodeLabel,
|
|
72
|
+
.mermaid svg.erDiagram .label.attribute-keys .nodeLabel,
|
|
73
|
+
.mermaid svg.erDiagram .label.attribute-comment .nodeLabel {
|
|
74
|
+
color: var(--nu-color-text, #342f2e) !important;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* ER entity name headers: white text on purple */
|
|
78
|
+
.mermaid svg.erDiagram .label.name .nodeLabel {
|
|
79
|
+
color: #fff !important;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* Sequence diagram: actor label text outside the purple box */
|
|
83
|
+
.mermaid [class*="actor-bottom"] [class*="actor"] tspan,
|
|
84
|
+
.mermaid [class*="actor-top"] [class*="actor"] tspan {
|
|
85
|
+
fill: var(--nu-color-text, #342f2e) !important;
|
|
86
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
Steps — Ordered Step Indicators
|
|
3
|
+
|
|
4
|
+
Encapsulates Starlight step marker styling, including numbered bullets and
|
|
5
|
+
connector lines across light and dark modes.
|
|
6
|
+
========================================================================== */
|
|
7
|
+
|
|
8
|
+
@layer northwestern {
|
|
9
|
+
.sl-steps > li::before {
|
|
10
|
+
font-family: var(--nu-font-heading);
|
|
11
|
+
font-weight: 700;
|
|
12
|
+
color: #fff !important;
|
|
13
|
+
background-color: var(--nu-purple-100) !important;
|
|
14
|
+
box-shadow: none !important;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
:root:not([data-theme="light"]) .sl-steps > li::before {
|
|
18
|
+
background-color: var(--nu-purple-80) !important;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.sl-steps > li::after {
|
|
22
|
+
background-color: var(--nu-purple-20) !important;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
:root:not([data-theme="light"]) .sl-steps > li::after {
|
|
26
|
+
background-color: var(--nu-purple-80) !important;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
Tabs — Code-Oriented Tab Panels
|
|
3
|
+
|
|
4
|
+
Encapsulates Starlight tab styling when tabs wrap code blocks, including
|
|
5
|
+
tab chrome, panel spacing, and embedded code-frame adjustments.
|
|
6
|
+
========================================================================== */
|
|
7
|
+
|
|
8
|
+
/* stylelint-disable custom-property-pattern */
|
|
9
|
+
|
|
10
|
+
@layer northwestern {
|
|
11
|
+
starlight-tabs:has(.expressive-code) {
|
|
12
|
+
border: 1px solid var(--nu-border-color);
|
|
13
|
+
border-top: 4px solid var(--nu-purple-100);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
starlight-tabs:has(.expressive-code) .tablist-wrapper {
|
|
17
|
+
padding: 0;
|
|
18
|
+
background: var(--nu-purple-surface);
|
|
19
|
+
border-bottom: 1px solid var(--nu-border-color);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
starlight-tabs:has(.expressive-code) [role="tablist"] {
|
|
23
|
+
gap: 0;
|
|
24
|
+
border-bottom: none;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
starlight-tabs:has(.expressive-code) [role="tab"] {
|
|
28
|
+
padding: 0.5rem 1rem;
|
|
29
|
+
font-family: var(--__sl-font-mono);
|
|
30
|
+
font-size: 0.8rem;
|
|
31
|
+
font-weight: 600;
|
|
32
|
+
color: var(--nu-black-80);
|
|
33
|
+
border-bottom: 2px solid transparent;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
starlight-tabs:has(.expressive-code) [role="tab"][aria-selected="true"] {
|
|
37
|
+
color: var(--nu-purple-100);
|
|
38
|
+
border-bottom-color: var(--nu-purple-100);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
starlight-tabs:has(.expressive-code) .expressive-code {
|
|
42
|
+
margin: 0 !important;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
starlight-tabs:has(.expressive-code) .expressive-code .frame {
|
|
46
|
+
margin: 0 !important;
|
|
47
|
+
border: none !important;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
starlight-tabs:has(.expressive-code) .expressive-code .frame.is-terminal .header,
|
|
51
|
+
starlight-tabs:has(.expressive-code) .expressive-code .frame.is-terminal .header::before,
|
|
52
|
+
starlight-tabs:has(.expressive-code) .expressive-code .frame.is-terminal .header::after,
|
|
53
|
+
starlight-tabs:has(.expressive-code) .expressive-code .frame:not(.has-title, .is-terminal) .header,
|
|
54
|
+
starlight-tabs:has(.expressive-code) .expressive-code .frame:not(.has-title, .is-terminal) .header::before,
|
|
55
|
+
starlight-tabs:has(.expressive-code) .expressive-code .frame:not(.has-title, .is-terminal) .header::after {
|
|
56
|
+
display: none !important;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
starlight-tabs:has(.expressive-code) [role="tabpanel"] {
|
|
60
|
+
margin-top: 0 !important;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
starlight-tabs:has(.expressive-code) [role="tabpanel"]:not(:has(p, ul, ol, h1, h2, h3, h4, h5, h6)) {
|
|
64
|
+
padding: 0 !important;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
starlight-tabs:has(.expressive-code) [role="tabpanel"]:has(p, ul, ol, h1, h2, h3, h4, h5, h6) {
|
|
68
|
+
padding: 1rem 1.25rem !important;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
starlight-tabs [role="tabpanel"] p + .expressive-code,
|
|
72
|
+
starlight-tabs [role="tabpanel"] ul + .expressive-code,
|
|
73
|
+
starlight-tabs [role="tabpanel"] ol + .expressive-code {
|
|
74
|
+
margin-top: 0.75rem !important;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
starlight-tabs:has(.expressive-code) .expressive-code .copy {
|
|
78
|
+
top: 0.45rem !important;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
starlight-tabs:has(.expressive-code) .expressive-code .frame.has-title .copy {
|
|
82
|
+
top: calc(0.45rem + 2.2rem) !important;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
:root:not([data-theme="light"]) starlight-tabs:has(.expressive-code) {
|
|
86
|
+
border-top-color: var(--nu-purple-40);
|
|
87
|
+
box-shadow: none;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
:root:not([data-theme="light"]) starlight-tabs:has(.expressive-code) .tablist-wrapper {
|
|
91
|
+
background: rgb(78 42 132 / 14%);
|
|
92
|
+
border-bottom-color: var(--nu-border-color);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
:root:not([data-theme="light"]) starlight-tabs:has(.expressive-code) [role="tab"] {
|
|
96
|
+
color: var(--sl-color-gray-2);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
:root:not([data-theme="light"]) starlight-tabs:has(.expressive-code) [role="tab"][aria-selected="true"] {
|
|
100
|
+
color: var(--nu-purple-30);
|
|
101
|
+
border-bottom-color: var(--nu-purple-30);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
Utility Surfaces — File Tree, Pagination, Banner
|
|
3
|
+
|
|
4
|
+
Encapsulates smaller shared surface treatments used by file trees,
|
|
5
|
+
pagination links, and the site banner.
|
|
6
|
+
========================================================================== */
|
|
7
|
+
|
|
8
|
+
@layer northwestern {
|
|
9
|
+
starlight-file-tree,
|
|
10
|
+
.pagination-links a {
|
|
11
|
+
background-color: var(--nu-card-bg) !important;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
starlight-file-tree .highlight {
|
|
15
|
+
color: #fff !important;
|
|
16
|
+
background-color: var(--nu-purple-100) !important;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:root:not([data-theme="light"]) starlight-file-tree .highlight {
|
|
20
|
+
background-color: var(--nu-purple-80) !important;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.pagination-links a {
|
|
24
|
+
transition:
|
|
25
|
+
border-color var(--nu-transition-fast),
|
|
26
|
+
background-color var(--nu-transition-fast);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.pagination-links a:hover {
|
|
30
|
+
border-color: var(--nu-purple-60) !important;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:root:not([data-theme="light"]) .pagination-links a:hover {
|
|
34
|
+
border-color: var(--nu-purple-40) !important;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.sl-banner {
|
|
38
|
+
--sl-color-banner-bg: var(--nu-purple-100);
|
|
39
|
+
--sl-color-banner-text: #fff;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
Content — Markdown Prose, Badges, Tables, Buttons
|
|
3
|
+
|
|
4
|
+
Encapsulates rendered markdown content, prose-adjacent Starlight components,
|
|
5
|
+
and content-area UI such as badges, asides, tables, and link buttons.
|
|
6
|
+
========================================================================== */
|
|
7
|
+
|
|
8
|
+
@layer northwestern {
|
|
9
|
+
.sl-markdown-content a:not(.anchor-link, [role="tab"], .not-content) {
|
|
10
|
+
padding-bottom: 2px;
|
|
11
|
+
font-weight: 700;
|
|
12
|
+
color: var(--sl-color-accent);
|
|
13
|
+
text-decoration: none;
|
|
14
|
+
border-bottom: 1px dashed var(--sl-color-accent);
|
|
15
|
+
transition: all var(--nu-transition-default);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.sl-markdown-content a:not(.anchor-link, [role="tab"], .not-content):hover {
|
|
19
|
+
text-decoration: none;
|
|
20
|
+
border-bottom-style: solid;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.sl-markdown-content ul:not(:where(.not-content *)) {
|
|
24
|
+
padding-left: 1.25rem;
|
|
25
|
+
list-style: none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.sl-markdown-content ul:not(:where(.not-content *)) > li {
|
|
29
|
+
position: relative;
|
|
30
|
+
padding-left: 0.25rem;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.sl-markdown-content ul:not(:where(.not-content *)) > li::before {
|
|
34
|
+
position: absolute;
|
|
35
|
+
top: 0.55em;
|
|
36
|
+
left: -1rem;
|
|
37
|
+
width: 6px;
|
|
38
|
+
height: 6px;
|
|
39
|
+
content: "";
|
|
40
|
+
background: var(--nu-purple-40);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
:root:not([data-theme="light"]) .sl-markdown-content ul:not(:where(.not-content *)) > li::before {
|
|
44
|
+
background: var(--nu-purple-30);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.sl-markdown-content ul:not(:where(.not-content *)) ul > li::before {
|
|
48
|
+
background: transparent;
|
|
49
|
+
border: 1.5px solid var(--nu-purple-40);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
:root:not([data-theme="light"]) .sl-markdown-content ul:not(:where(.not-content *)) ul > li::before {
|
|
53
|
+
background: transparent;
|
|
54
|
+
border-color: var(--nu-purple-30);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.sl-markdown-content hr:not(:where(.not-content *)) {
|
|
58
|
+
height: 3px;
|
|
59
|
+
margin: 2.5rem 0;
|
|
60
|
+
background: var(--nu-purple-10);
|
|
61
|
+
border: 0;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:root:not([data-theme="light"]) .sl-markdown-content hr:not(:where(.not-content *)) {
|
|
65
|
+
background: var(--nu-purple-140);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.sl-markdown-content blockquote:not(:where(.not-content *)) {
|
|
69
|
+
padding: 1rem 1.5rem;
|
|
70
|
+
margin: 2rem 0;
|
|
71
|
+
color: var(--nu-color-text);
|
|
72
|
+
background: rgb(228 224 238 / 42%);
|
|
73
|
+
border-inline-start: 10px solid var(--nu-purple-100);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.sl-markdown-content blockquote:not(:where(.not-content *)) p:last-child {
|
|
77
|
+
margin-bottom: 0;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.sl-markdown-content blockquote:not(:where(.not-content *)) cite,
|
|
81
|
+
.sl-markdown-content blockquote:not(:where(.not-content *)) footer {
|
|
82
|
+
display: block;
|
|
83
|
+
margin-top: 0.75rem;
|
|
84
|
+
font-size: var(--sl-text-sm);
|
|
85
|
+
font-style: normal;
|
|
86
|
+
font-weight: 700;
|
|
87
|
+
color: var(--nu-color-link);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
:root:not([data-theme="light"]) .sl-markdown-content blockquote:not(:where(.not-content *)) {
|
|
91
|
+
background: rgb(48 16 78 / 35%);
|
|
92
|
+
border-inline-start-color: var(--nu-purple-40);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
:root:not([data-theme="light"]) .sl-markdown-content blockquote:not(:where(.not-content *)) cite,
|
|
96
|
+
:root:not([data-theme="light"]) .sl-markdown-content blockquote:not(:where(.not-content *)) footer {
|
|
97
|
+
color: var(--nu-purple-30);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.sl-markdown-content figure:not(:where(.not-content *)) {
|
|
101
|
+
margin: 2rem 0;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.sl-markdown-content figure:not(:where(.not-content *)) img,
|
|
105
|
+
.sl-markdown-content figure:not(:where(.not-content *)) svg,
|
|
106
|
+
.sl-markdown-content figure:not(:where(.not-content *)) video {
|
|
107
|
+
display: block;
|
|
108
|
+
margin-bottom: 0.75rem;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.sl-markdown-content figcaption:not(:where(.not-content *)) {
|
|
112
|
+
max-width: 42rem;
|
|
113
|
+
padding-top: 0.75rem;
|
|
114
|
+
font-size: var(--sl-text-sm);
|
|
115
|
+
line-height: 1.5;
|
|
116
|
+
color: var(--nu-color-text-muted);
|
|
117
|
+
border-top: 3px solid var(--nu-purple-10);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
:root:not([data-theme="light"]) .sl-markdown-content figcaption:not(:where(.not-content *)) {
|
|
121
|
+
color: var(--sl-color-gray-2);
|
|
122
|
+
border-top-color: var(--nu-purple-140);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* stylelint-disable selector-class-pattern */
|
|
126
|
+
|
|
127
|
+
.sl-badge {
|
|
128
|
+
font-family: var(--nu-font-body);
|
|
129
|
+
font-weight: 600;
|
|
130
|
+
letter-spacing: 0.02em;
|
|
131
|
+
border-width: 1px;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.sl-badge.default:not([class*="sl-openapi"]) {
|
|
135
|
+
--sl-color-bg-badge: rgb(78 42 132 / 10%);
|
|
136
|
+
--sl-color-border-badge: rgb(78 42 132 / 30%);
|
|
137
|
+
--sl-color-text-badge: var(--nu-purple-100);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.sl-badge.note:not([class*="sl-openapi"]) {
|
|
141
|
+
--sl-color-bg-badge: rgb(80 145 205 / 10%);
|
|
142
|
+
--sl-color-border-badge: rgb(80 145 205 / 30%);
|
|
143
|
+
--sl-color-text-badge: color-mix(in srgb, var(--nu-blue), black 40%);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.sl-badge.tip:not([class*="sl-openapi"]),
|
|
147
|
+
.sl-badge.success:not([class*="sl-openapi"]) {
|
|
148
|
+
--sl-color-bg-badge: rgb(0 134 86 / 10%);
|
|
149
|
+
--sl-color-border-badge: rgb(0 134 86 / 30%);
|
|
150
|
+
--sl-color-text-badge: color-mix(in srgb, var(--nu-dark-green), black 30%);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.sl-badge.caution:not([class*="sl-openapi"]) {
|
|
154
|
+
--sl-color-bg-badge: rgb(255 197 32 / 12%);
|
|
155
|
+
--sl-color-border-badge: rgb(255 197 32 / 35%);
|
|
156
|
+
--sl-color-text-badge: color-mix(in srgb, var(--nu-dark-gold), black 38%);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.sl-badge.danger:not([class*="sl-openapi"]) {
|
|
160
|
+
--sl-color-bg-badge: rgb(239 85 63 / 10%);
|
|
161
|
+
--sl-color-border-badge: rgb(239 85 63 / 30%);
|
|
162
|
+
--sl-color-text-badge: color-mix(in srgb, var(--nu-dark-orange), black 26%);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/* Dark mode — lighter text, slightly stronger tints */
|
|
166
|
+
:root:not([data-theme="light"]) .sl-badge.default:not([class*="sl-openapi"]) {
|
|
167
|
+
--sl-color-bg-badge: rgb(78 42 132 / 15%);
|
|
168
|
+
--sl-color-border-badge: rgb(78 42 132 / 35%);
|
|
169
|
+
--sl-color-text-badge: var(--nu-purple-30);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
:root:not([data-theme="light"]) .sl-badge.note:not([class*="sl-openapi"]) {
|
|
173
|
+
--sl-color-bg-badge: rgb(80 145 205 / 12%);
|
|
174
|
+
--sl-color-border-badge: rgb(80 145 205 / 30%);
|
|
175
|
+
--sl-color-text-badge: #93c5fd;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
:root:not([data-theme="light"]) .sl-badge.tip:not([class*="sl-openapi"]),
|
|
179
|
+
:root:not([data-theme="light"]) .sl-badge.success:not([class*="sl-openapi"]) {
|
|
180
|
+
--sl-color-bg-badge: rgb(0 134 86 / 12%);
|
|
181
|
+
--sl-color-border-badge: rgb(0 134 86 / 30%);
|
|
182
|
+
--sl-color-text-badge: #6ee7b7;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
:root:not([data-theme="light"]) .sl-badge.caution:not([class*="sl-openapi"]) {
|
|
186
|
+
--sl-color-bg-badge: rgb(255 197 32 / 14%);
|
|
187
|
+
--sl-color-border-badge: rgb(255 197 32 / 35%);
|
|
188
|
+
--sl-color-text-badge: #fde68a;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
:root:not([data-theme="light"]) .sl-badge.danger:not([class*="sl-openapi"]) {
|
|
192
|
+
--sl-color-bg-badge: rgb(239 85 63 / 12%);
|
|
193
|
+
--sl-color-border-badge: rgb(239 85 63 / 30%);
|
|
194
|
+
--sl-color-text-badge: #fca5a5;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.sidebar-content a[aria-current="page"] .sl-badge:not([class*="sl-openapi"]) {
|
|
198
|
+
color: var(--sl-color-text-badge, inherit) !important;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.sidebar-content a[aria-current="page"] .sl-badge.default:not([class*="sl-openapi"]) {
|
|
202
|
+
color: inherit !important;
|
|
203
|
+
background-color: transparent !important;
|
|
204
|
+
border-color: currentcolor !important;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.starlight-aside {
|
|
208
|
+
padding: 1rem 1.25rem;
|
|
209
|
+
border: 1px solid var(--sl-color-asides-border) !important;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.starlight-aside__title {
|
|
213
|
+
font-family: var(--nu-font-heading);
|
|
214
|
+
font-size: var(--sl-text-xs);
|
|
215
|
+
font-weight: 700;
|
|
216
|
+
text-transform: uppercase;
|
|
217
|
+
letter-spacing: 0.06em;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.starlight-aside__content {
|
|
221
|
+
font-size: var(--sl-text-sm);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.starlight-aside--note {
|
|
225
|
+
--sl-color-asides-text-accent: color-mix(in srgb, var(--nu-blue), black 30%);
|
|
226
|
+
--sl-color-asides-border: rgb(80 145 205 / 30%);
|
|
227
|
+
background-color: rgb(80 145 205 / 6%) !important;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.starlight-aside--tip {
|
|
231
|
+
--sl-color-asides-text-accent: color-mix(in srgb, var(--nu-dark-green), black 18%);
|
|
232
|
+
--sl-color-asides-border: rgb(0 134 86 / 30%);
|
|
233
|
+
background-color: rgb(0 134 86 / 6%) !important;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.starlight-aside--caution {
|
|
237
|
+
--sl-color-asides-text-accent: color-mix(in srgb, var(--nu-dark-gold), black 24%);
|
|
238
|
+
--sl-color-asides-border: rgb(255 197 32 / 35%);
|
|
239
|
+
background-color: rgb(255 197 32 / 8%) !important;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.starlight-aside--danger {
|
|
243
|
+
--sl-color-asides-text-accent: color-mix(in srgb, var(--nu-dark-orange), black 18%);
|
|
244
|
+
--sl-color-asides-border: rgb(239 85 63 / 30%);
|
|
245
|
+
background-color: rgb(239 85 63 / 6%) !important;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
:root:not([data-theme="light"]) .starlight-aside--note {
|
|
249
|
+
--sl-color-asides-text-accent: #93c5fd;
|
|
250
|
+
--sl-color-asides-border: rgb(80 145 205 / 25%);
|
|
251
|
+
background-color: rgb(80 145 205 / 8%) !important;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
:root:not([data-theme="light"]) .starlight-aside--tip {
|
|
255
|
+
--sl-color-asides-text-accent: #6ee7b7;
|
|
256
|
+
--sl-color-asides-border: rgb(0 134 86 / 25%);
|
|
257
|
+
background-color: rgb(0 134 86 / 8%) !important;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
:root:not([data-theme="light"]) .starlight-aside--caution {
|
|
261
|
+
--sl-color-asides-text-accent: #fde68a;
|
|
262
|
+
--sl-color-asides-border: rgb(255 197 32 / 30%);
|
|
263
|
+
background-color: rgb(255 197 32 / 10%) !important;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
:root:not([data-theme="light"]) .starlight-aside--danger {
|
|
267
|
+
--sl-color-asides-text-accent: #fca5a5;
|
|
268
|
+
--sl-color-asides-border: rgb(239 85 63 / 25%);
|
|
269
|
+
background-color: rgb(239 85 63 / 8%) !important;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.sl-markdown-content table:not(:where(.not-content *)) {
|
|
273
|
+
display: table;
|
|
274
|
+
width: 100%;
|
|
275
|
+
text-indent: 0;
|
|
276
|
+
border-collapse: collapse;
|
|
277
|
+
border-color: var(--nu-border-color);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.sl-markdown-content table:not(:where(.not-content *)) > thead > tr > th {
|
|
281
|
+
padding: 0.5rem 1rem;
|
|
282
|
+
font-family: var(--nu-font-heading);
|
|
283
|
+
font-weight: 600;
|
|
284
|
+
color: var(--nu-black-80);
|
|
285
|
+
text-align: left;
|
|
286
|
+
background-color: var(--nu-purple-surface);
|
|
287
|
+
border: 1px solid var(--nu-border-color);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
:root:not([data-theme="light"]) .sl-markdown-content table:not(:where(.not-content *)) > thead > tr > th {
|
|
291
|
+
color: var(--nu-color-text);
|
|
292
|
+
background-color: rgb(78 42 132 / 14%);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.sl-markdown-content table:not(:where(.not-content *)) > tbody > tr > td {
|
|
296
|
+
padding: 0.5rem 1rem;
|
|
297
|
+
text-align: left;
|
|
298
|
+
border: 1px solid var(--nu-border-color);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.sl-markdown-content table:not(:where(.not-content *)) > thead > tr > th[align="right"],
|
|
302
|
+
.sl-markdown-content table:not(:where(.not-content *)) > tbody > tr > td[align="right"] {
|
|
303
|
+
text-align: right;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.sl-markdown-content table:not(:where(.not-content *)) > thead > tr > th[align="center"],
|
|
307
|
+
.sl-markdown-content table:not(:where(.not-content *)) > tbody > tr > td[align="center"] {
|
|
308
|
+
text-align: center;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.sl-markdown-content table:not(:where(.not-content *)) > tbody > tr:nth-child(even) {
|
|
312
|
+
background-color: #f3f4f6;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
:root:not([data-theme="light"])
|
|
316
|
+
.sl-markdown-content
|
|
317
|
+
table:not(:where(.not-content *))
|
|
318
|
+
> tbody
|
|
319
|
+
> tr:nth-child(even) {
|
|
320
|
+
background-color: #1e1e1e;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.sl-link-button {
|
|
324
|
+
transition:
|
|
325
|
+
background-color var(--nu-transition-fast),
|
|
326
|
+
border-color var(--nu-transition-fast),
|
|
327
|
+
color var(--nu-transition-fast);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.sl-link-button.primary {
|
|
331
|
+
color: #fff !important;
|
|
332
|
+
background: var(--nu-purple-100) !important;
|
|
333
|
+
border-color: var(--nu-purple-100) !important;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.sl-link-button.primary:hover {
|
|
337
|
+
color: #fff !important;
|
|
338
|
+
background: var(--nu-purple-80) !important;
|
|
339
|
+
border-color: var(--nu-purple-80) !important;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.sl-link-button.secondary {
|
|
343
|
+
color: var(--nu-color-text) !important;
|
|
344
|
+
border-color: var(--nu-black-20) !important;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.sl-link-button.secondary:hover {
|
|
348
|
+
color: var(--nu-color-text) !important;
|
|
349
|
+
background: var(--nu-hover-bg) !important;
|
|
350
|
+
border-color: var(--nu-black-50) !important;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.sl-link-button.minimal:hover {
|
|
354
|
+
color: var(--nu-purple-100) !important;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
:root:not([data-theme="light"]) .sl-link-button.primary {
|
|
358
|
+
background: var(--nu-purple-80) !important;
|
|
359
|
+
border-color: var(--nu-purple-80) !important;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
:root:not([data-theme="light"]) .sl-link-button.primary:hover {
|
|
363
|
+
background: var(--nu-purple-60) !important;
|
|
364
|
+
border-color: var(--nu-purple-60) !important;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
:root:not([data-theme="light"]) .sl-link-button.secondary {
|
|
368
|
+
color: var(--nu-color-text) !important;
|
|
369
|
+
border-color: var(--nu-black-50) !important;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
:root:not([data-theme="light"]) .sl-link-button.secondary:hover {
|
|
373
|
+
color: var(--nu-color-text) !important;
|
|
374
|
+
background: var(--nu-hover-bg) !important;
|
|
375
|
+
border-color: var(--nu-black-20) !important;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
:root:not([data-theme="light"]) .sl-link-button.minimal:hover {
|
|
379
|
+
color: var(--nu-purple-40) !important;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
.sl-link-button:focus-visible {
|
|
383
|
+
outline: 2px solid var(--nu-focus-ring);
|
|
384
|
+
outline-offset: 2px;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
Layers — Theme Cascade Order
|
|
3
|
+
|
|
4
|
+
Encapsulates the cascade layer ordering shared by Starlight and the
|
|
5
|
+
Northwestern theme so later files can rely on a stable layer stack.
|
|
6
|
+
========================================================================== */
|
|
7
|
+
|
|
8
|
+
@layer starlight, northwestern;
|