@nu-appdev/northwestern-starlight-theme 1.1.1 → 1.3.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 +73 -2
- package/index.ts +84 -5
- package/mermaid.ts +196 -80
- package/package.json +19 -4
- package/src/components/Expandable.astro +19 -0
- package/src/components/Glossary.astro +11 -0
- package/src/components/Hero.astro +0 -2
- package/src/components/Kbd.astro +147 -0
- package/src/components/Property.astro +64 -0
- package/src/components/PropertyGroup.astro +13 -0
- package/src/components/PropertyTable.astro +54 -0
- package/src/components/Term.astro +29 -0
- package/src/components/Tooltip.astro +138 -0
- package/src/components/glossary-store.ts +12 -0
- package/src/components/index.ts +8 -0
- package/src/rehype-table-scroll.ts +35 -0
- package/src/scripts/mermaid/focus.ts +100 -0
- package/src/scripts/mermaid/fullscreen.ts +120 -0
- package/src/scripts/mermaid/index.ts +2 -0
- package/src/scripts/mermaid/overlay.ts +132 -0
- package/src/scripts/mermaid/pan-zoom.ts +285 -0
- package/src/scripts/mermaid/render.ts +143 -0
- package/src/scripts/mermaid/toolbar.ts +137 -0
- package/src/scripts/mermaid/ui.ts +265 -0
- package/src/styles/a11y.css +69 -0
- package/src/styles/components/blockquotes.css +37 -0
- package/src/styles/components/code.css +8 -5
- package/src/styles/components/footnotes.css +76 -0
- package/src/styles/components/kbd.css +69 -0
- package/src/styles/components/mermaid.css +4 -4
- package/src/styles/components/property-table.css +569 -0
- package/src/styles/components/steps.css +0 -3
- package/src/styles/components/tables.css +60 -0
- package/src/styles/components/tabs.css +0 -3
- package/src/styles/components/tooltip.css +145 -0
- package/src/styles/content.css +9 -94
- package/src/styles/layers.css +0 -7
- package/src/styles/mermaid-toolbar.css +91 -14
- package/src/styles/navigation.css +72 -16
- package/src/styles/openapi.css +0 -3
- package/src/styles/theme.css +0 -4
- package/src/styles/typography.css +4 -0
- package/src/styles/variables.css +0 -3
- package/src/virtual.d.ts +11 -0
- package/src/scripts/mermaid-toolbar.ts +0 -589
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
Tooltip — Inline hover/focus definitions
|
|
3
|
+
========================================================================== */
|
|
4
|
+
|
|
5
|
+
/* stylelint-disable selector-class-pattern */
|
|
6
|
+
|
|
7
|
+
@layer northwestern {
|
|
8
|
+
.nu-tooltip {
|
|
9
|
+
position: relative;
|
|
10
|
+
display: inline;
|
|
11
|
+
cursor: help;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.nu-tooltip__trigger {
|
|
15
|
+
position: relative;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.nu-tooltip--underline .nu-tooltip__trigger {
|
|
19
|
+
text-decoration: underline;
|
|
20
|
+
text-decoration-thickness: 1px;
|
|
21
|
+
text-decoration-style: dotted;
|
|
22
|
+
text-decoration-color: var(--nu-color-text-muted);
|
|
23
|
+
text-underline-offset: 3px;
|
|
24
|
+
transition: text-decoration-color var(--nu-transition-fast);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.nu-tooltip--underline:hover .nu-tooltip__trigger,
|
|
28
|
+
.nu-tooltip--underline:focus-within .nu-tooltip__trigger {
|
|
29
|
+
text-decoration-color: var(--sl-color-text-accent);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.nu-tooltip__content {
|
|
33
|
+
position: fixed;
|
|
34
|
+
z-index: 1000;
|
|
35
|
+
box-sizing: border-box;
|
|
36
|
+
width: max-content;
|
|
37
|
+
max-width: 280px;
|
|
38
|
+
padding: 0.375rem 0.625rem;
|
|
39
|
+
margin: 0;
|
|
40
|
+
font-family: var(--nu-font-body);
|
|
41
|
+
font-size: var(--sl-text-xs);
|
|
42
|
+
font-weight: 400;
|
|
43
|
+
line-height: 1.5;
|
|
44
|
+
color: var(--nu-color-text);
|
|
45
|
+
text-align: left;
|
|
46
|
+
background-color: var(--nu-card-bg);
|
|
47
|
+
border: 1px solid var(--nu-border-color);
|
|
48
|
+
box-shadow: 0 2px 8px rgb(0 0 0 / 8%);
|
|
49
|
+
opacity: 0;
|
|
50
|
+
transition: opacity var(--nu-transition-fast);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
:root:not([data-theme="light"]) .nu-tooltip__content {
|
|
54
|
+
box-shadow: 0 2px 8px rgb(0 0 0 / 25%);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* Rich content slot styling */
|
|
58
|
+
.nu-tooltip__content p,
|
|
59
|
+
.nu-tooltip__content > :first-child {
|
|
60
|
+
margin-top: 0;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.nu-tooltip__content p,
|
|
64
|
+
.nu-tooltip__content > :last-child {
|
|
65
|
+
margin-bottom: 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.nu-tooltip__trigger p {
|
|
69
|
+
display: inline;
|
|
70
|
+
margin: 0;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.nu-tooltip__content strong {
|
|
74
|
+
font-weight: 600;
|
|
75
|
+
color: inherit;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.nu-tooltip__content code {
|
|
79
|
+
padding: 0.1rem 0.25rem;
|
|
80
|
+
font-family: var(--sl-font-system-mono);
|
|
81
|
+
font-size: 0.9em;
|
|
82
|
+
background-color: rgb(0 0 0 / 6%);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
:root:not([data-theme="light"]) .nu-tooltip__content code {
|
|
86
|
+
background-color: rgb(255 255 255 / 8%);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.nu-tooltip__content[popover] {
|
|
90
|
+
inset: unset;
|
|
91
|
+
overflow: visible;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.nu-tooltip__content:popover-open {
|
|
95
|
+
opacity: 1;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.nu-tooltip__content::backdrop {
|
|
99
|
+
display: none;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.nu-tooltip__arrow {
|
|
103
|
+
position: absolute;
|
|
104
|
+
left: 50%;
|
|
105
|
+
width: 8px;
|
|
106
|
+
height: 8px;
|
|
107
|
+
background-color: var(--nu-card-bg);
|
|
108
|
+
border-color: var(--nu-border-color);
|
|
109
|
+
border-style: solid;
|
|
110
|
+
transform: translateX(-50%) rotate(45deg);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.nu-tooltip--top .nu-tooltip__arrow {
|
|
114
|
+
bottom: -5px;
|
|
115
|
+
border-top: none;
|
|
116
|
+
border-right-width: 1px;
|
|
117
|
+
border-bottom-width: 1px;
|
|
118
|
+
border-left: none;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.nu-tooltip--bottom .nu-tooltip__arrow {
|
|
122
|
+
top: -5px;
|
|
123
|
+
border-top-width: 1px;
|
|
124
|
+
border-right: none;
|
|
125
|
+
border-bottom: none;
|
|
126
|
+
border-left-width: 1px;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.nu-tooltip--custom .nu-tooltip__content {
|
|
130
|
+
color: var(--nu-tip-text);
|
|
131
|
+
background-color: var(--nu-tip-bg);
|
|
132
|
+
border-color: var(--nu-tip-border);
|
|
133
|
+
box-shadow: none;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.nu-tooltip--custom .nu-tooltip__arrow {
|
|
137
|
+
background-color: var(--nu-tip-arrow);
|
|
138
|
+
border-color: var(--nu-tip-border);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.nu-tooltip__trigger:focus-visible {
|
|
142
|
+
outline: 2px solid var(--nu-focus-ring);
|
|
143
|
+
outline-offset: 2px;
|
|
144
|
+
}
|
|
145
|
+
}
|
package/src/styles/content.css
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/* ==========================================================================
|
|
2
|
-
Content —
|
|
2
|
+
Content — Links, Lists, Figures, Horizontal Rules, Badges, Asides, Buttons
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
Core markdown prose styling. Component-scoped styles (tables, blockquotes,
|
|
5
|
+
footnotes, cards, code, tabs, steps) live in their own files under
|
|
6
|
+
src/styles/components/.
|
|
6
7
|
========================================================================== */
|
|
7
8
|
|
|
8
9
|
@layer northwestern {
|
|
9
|
-
.sl-markdown-content a:not(.anchor-link, [role="tab"], .not-content) {
|
|
10
|
+
.sl-markdown-content a:not(.anchor-link, [role="tab"], .not-content, [data-footnote-ref], [data-footnote-backref]) {
|
|
10
11
|
padding-bottom: 2px;
|
|
11
12
|
font-weight: 700;
|
|
12
13
|
color: var(--sl-color-accent);
|
|
@@ -15,7 +16,8 @@
|
|
|
15
16
|
transition: all var(--nu-transition-default);
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
.sl-markdown-content
|
|
19
|
+
.sl-markdown-content
|
|
20
|
+
a:not(.anchor-link, [role="tab"], .not-content, [data-footnote-ref], [data-footnote-backref]):hover {
|
|
19
21
|
text-decoration: none;
|
|
20
22
|
border-bottom-style: solid;
|
|
21
23
|
}
|
|
@@ -55,48 +57,12 @@
|
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
.sl-markdown-content hr:not(:where(.not-content *)) {
|
|
58
|
-
height:
|
|
60
|
+
height: 1px;
|
|
59
61
|
margin: 2.5rem 0;
|
|
60
|
-
background: var(--nu-
|
|
62
|
+
background: var(--nu-border-color);
|
|
61
63
|
border: 0;
|
|
62
64
|
}
|
|
63
65
|
|
|
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
66
|
.sl-markdown-content figure:not(:where(.not-content *)) {
|
|
101
67
|
margin: 2rem 0;
|
|
102
68
|
}
|
|
@@ -269,57 +235,6 @@
|
|
|
269
235
|
background-color: rgb(239 85 63 / 8%) !important;
|
|
270
236
|
}
|
|
271
237
|
|
|
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
238
|
.sl-link-button {
|
|
324
239
|
transition:
|
|
325
240
|
background-color var(--nu-transition-fast),
|
package/src/styles/layers.css
CHANGED
|
@@ -1,8 +1 @@
|
|
|
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
1
|
@layer starlight, northwestern;
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
/* ==========================================================================
|
|
2
2
|
Mermaid Toolbar — Diagram Interaction Layer
|
|
3
|
-
|
|
4
|
-
Encapsulates hover actions, fullscreen overlay controls, and the pan/zoom
|
|
5
|
-
viewport used by the Mermaid diagram interaction layer.
|
|
6
3
|
========================================================================== */
|
|
7
4
|
|
|
8
5
|
@layer northwestern {
|
|
9
6
|
.nu-mermaid-toolbar {
|
|
10
7
|
position: absolute;
|
|
11
|
-
top: 0
|
|
12
|
-
right:
|
|
8
|
+
top: 0;
|
|
9
|
+
right: 1rem;
|
|
13
10
|
z-index: 2;
|
|
14
11
|
display: flex;
|
|
15
12
|
gap: 1px;
|
|
@@ -31,7 +28,6 @@
|
|
|
31
28
|
opacity: 1;
|
|
32
29
|
}
|
|
33
30
|
|
|
34
|
-
/* Touch devices can't hover — keep toolbar visible */
|
|
35
31
|
@media (hover: none) {
|
|
36
32
|
.nu-mermaid-toolbar {
|
|
37
33
|
opacity: 0.8;
|
|
@@ -75,8 +71,8 @@
|
|
|
75
71
|
}
|
|
76
72
|
|
|
77
73
|
.nu-mermaid-btn:focus-visible {
|
|
78
|
-
outline:
|
|
79
|
-
|
|
74
|
+
outline: 2px solid var(--sl-color-accent);
|
|
75
|
+
outline-offset: -2px;
|
|
80
76
|
}
|
|
81
77
|
|
|
82
78
|
.nu-mermaid-btn:hover {
|
|
@@ -110,6 +106,7 @@
|
|
|
110
106
|
z-index: 9999;
|
|
111
107
|
display: flex;
|
|
112
108
|
flex-direction: column;
|
|
109
|
+
outline: none;
|
|
113
110
|
background: #f3f5f7;
|
|
114
111
|
transition: opacity 200ms ease;
|
|
115
112
|
}
|
|
@@ -124,8 +121,8 @@
|
|
|
124
121
|
flex-shrink: 0;
|
|
125
122
|
gap: 0.25rem;
|
|
126
123
|
align-items: center;
|
|
127
|
-
height: var(--sl-nav-height);
|
|
128
|
-
padding: 0 1.5rem;
|
|
124
|
+
min-height: var(--sl-nav-height);
|
|
125
|
+
padding: 0.5rem var(--sl-nav-pad-x, 1.5rem);
|
|
129
126
|
background: var(--nu-topbar-bg);
|
|
130
127
|
border-bottom: 1px solid var(--nu-border-color);
|
|
131
128
|
}
|
|
@@ -144,6 +141,11 @@
|
|
|
144
141
|
height: 16px;
|
|
145
142
|
}
|
|
146
143
|
|
|
144
|
+
.nu-mermaid-overlay-controls .nu-mermaid-btn:focus-visible {
|
|
145
|
+
outline: none;
|
|
146
|
+
box-shadow: 0 0 0 2px rgb(255 255 255 / 60%);
|
|
147
|
+
}
|
|
148
|
+
|
|
147
149
|
.nu-mermaid-overlay-controls .nu-mermaid-btn:hover {
|
|
148
150
|
color: #fff;
|
|
149
151
|
background: rgb(255 255 255 / 25%);
|
|
@@ -166,13 +168,27 @@
|
|
|
166
168
|
|
|
167
169
|
.nu-mermaid-overlay-controls .nu-mermaid-close {
|
|
168
170
|
color: #fff;
|
|
169
|
-
background: rgb(255 255 255 /
|
|
170
|
-
border-color: rgb(255 255 255 /
|
|
171
|
+
background: rgb(255 255 255 / 15%);
|
|
172
|
+
border-color: rgb(255 255 255 / 25%);
|
|
171
173
|
}
|
|
172
174
|
|
|
173
175
|
.nu-mermaid-overlay-controls .nu-mermaid-close:hover {
|
|
174
|
-
background: rgb(255 255 255 /
|
|
175
|
-
|
|
176
|
+
background: rgb(255 255 255 / 25%);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
@media (width < 50rem) {
|
|
180
|
+
.nu-mermaid-overlay-controls [data-action="zoom-in"],
|
|
181
|
+
.nu-mermaid-overlay-controls [data-action="zoom-out"],
|
|
182
|
+
.nu-mermaid-overlay-controls [data-action="zoom-reset"],
|
|
183
|
+
.nu-mermaid-overlay-controls .nu-mermaid-separator {
|
|
184
|
+
display: none;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.nu-mermaid-overlay-controls .nu-mermaid-close {
|
|
188
|
+
width: var(--sl-menu-button-size, 2rem);
|
|
189
|
+
height: var(--sl-menu-button-size, 2rem);
|
|
190
|
+
padding: 0;
|
|
191
|
+
}
|
|
176
192
|
}
|
|
177
193
|
|
|
178
194
|
.nu-mermaid-viewport {
|
|
@@ -183,6 +199,12 @@
|
|
|
183
199
|
overflow: hidden;
|
|
184
200
|
touch-action: none;
|
|
185
201
|
cursor: grab;
|
|
202
|
+
background-image: radial-gradient(circle, rgb(0 0 0 / 5%) 0.75px, transparent 0.75px);
|
|
203
|
+
background-size: 28px 28px;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
:root:not([data-theme="light"]) .nu-mermaid-viewport {
|
|
207
|
+
background-image: radial-gradient(circle, rgb(255 255 255 / 5%) 0.75px, transparent 0.75px);
|
|
186
208
|
}
|
|
187
209
|
|
|
188
210
|
.nu-mermaid-viewport:active {
|
|
@@ -199,4 +221,59 @@
|
|
|
199
221
|
background: transparent !important;
|
|
200
222
|
border: none !important;
|
|
201
223
|
}
|
|
224
|
+
|
|
225
|
+
.nu-mermaid-zoom-badge {
|
|
226
|
+
position: absolute;
|
|
227
|
+
right: 1rem;
|
|
228
|
+
bottom: 1rem;
|
|
229
|
+
padding: 0.2rem 0.5rem;
|
|
230
|
+
font-family: var(--nu-font-mono, ui-monospace, monospace);
|
|
231
|
+
font-size: 0.75rem;
|
|
232
|
+
line-height: 1;
|
|
233
|
+
color: rgb(255 255 255 / 70%);
|
|
234
|
+
pointer-events: none;
|
|
235
|
+
background: rgb(0 0 0 / 35%);
|
|
236
|
+
|
|
237
|
+
/* stylelint-disable-next-line property-no-vendor-prefix -- Safari requires prefix */
|
|
238
|
+
-webkit-backdrop-filter: blur(6px);
|
|
239
|
+
backdrop-filter: blur(6px);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
:root[data-theme="light"] .nu-mermaid-zoom-badge {
|
|
243
|
+
color: rgb(0 0 0 / 55%);
|
|
244
|
+
background: rgb(255 255 255 / 50%);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.nu-mermaid-toast {
|
|
248
|
+
position: absolute;
|
|
249
|
+
right: 1rem;
|
|
250
|
+
bottom: 3rem;
|
|
251
|
+
z-index: 1;
|
|
252
|
+
padding: 0.5rem 0.875rem;
|
|
253
|
+
font-family: var(--nu-font-body, sans-serif);
|
|
254
|
+
font-size: 0.8125rem;
|
|
255
|
+
font-weight: 600;
|
|
256
|
+
color: #fff;
|
|
257
|
+
pointer-events: none;
|
|
258
|
+
background: color-mix(in srgb, var(--nu-color-success) 85%, #fff);
|
|
259
|
+
opacity: 0;
|
|
260
|
+
transform: translateY(4px);
|
|
261
|
+
transition:
|
|
262
|
+
opacity 200ms ease,
|
|
263
|
+
transform 200ms ease;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.nu-mermaid-toast-visible {
|
|
267
|
+
opacity: 1;
|
|
268
|
+
transform: translateY(0);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
@media (width < 50rem) {
|
|
272
|
+
.nu-mermaid-toast {
|
|
273
|
+
right: 1rem;
|
|
274
|
+
bottom: 4rem;
|
|
275
|
+
left: 1rem;
|
|
276
|
+
text-align: center;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
202
279
|
}
|
|
@@ -9,22 +9,25 @@
|
|
|
9
9
|
.site-title,
|
|
10
10
|
.header > a,
|
|
11
11
|
.header > nav a,
|
|
12
|
-
.social-icons a,
|
|
13
|
-
starlight-theme-select,
|
|
14
|
-
starlight-theme-select label,
|
|
15
|
-
starlight-theme-select select,
|
|
16
|
-
starlight-theme-select svg,
|
|
17
|
-
northwestern-theme-toggle,
|
|
18
|
-
northwestern-theme-toggle button,
|
|
19
|
-
northwestern-theme-toggle svg,
|
|
12
|
+
.header .social-icons a,
|
|
20
13
|
starlight-menu-button,
|
|
21
14
|
starlight-menu-button button {
|
|
22
15
|
color: var(--nu-topbar-text) !important;
|
|
23
16
|
fill: var(--nu-topbar-text) !important;
|
|
24
17
|
}
|
|
25
18
|
|
|
19
|
+
.header northwestern-theme-toggle,
|
|
20
|
+
.header northwestern-theme-toggle button,
|
|
21
|
+
.header northwestern-theme-toggle svg,
|
|
22
|
+
.header starlight-theme-select,
|
|
23
|
+
.header starlight-theme-select label,
|
|
24
|
+
.header starlight-theme-select select,
|
|
25
|
+
.header starlight-theme-select svg {
|
|
26
|
+
color: var(--nu-topbar-text) !important;
|
|
27
|
+
fill: var(--nu-topbar-text) !important;
|
|
28
|
+
}
|
|
29
|
+
|
|
26
30
|
starlight-menu-button button,
|
|
27
|
-
northwestern-theme-toggle button,
|
|
28
31
|
.header northwestern-theme-toggle button {
|
|
29
32
|
background: rgb(255 255 255 / 15%) !important;
|
|
30
33
|
border: 1px solid rgb(255 255 255 / 25%) !important;
|
|
@@ -33,11 +36,57 @@
|
|
|
33
36
|
}
|
|
34
37
|
|
|
35
38
|
starlight-menu-button button:hover,
|
|
36
|
-
northwestern-theme-toggle button:hover,
|
|
37
39
|
.header northwestern-theme-toggle button:hover {
|
|
38
40
|
background: rgb(255 255 255 / 25%) !important;
|
|
39
41
|
}
|
|
40
42
|
|
|
43
|
+
starlight-menu-button button:focus-visible,
|
|
44
|
+
.header northwestern-theme-toggle button:focus-visible {
|
|
45
|
+
outline: none !important;
|
|
46
|
+
box-shadow: 0 0 0 2px rgb(255 255 255 / 60%) !important;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@media (width < 50rem) {
|
|
50
|
+
.sidebar-pane .actions {
|
|
51
|
+
align-items: center;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.sidebar-pane northwestern-theme-toggle button {
|
|
55
|
+
width: 2.5rem;
|
|
56
|
+
height: 2.5rem;
|
|
57
|
+
color: var(--nu-color-text) !important;
|
|
58
|
+
background: var(--nu-hover-bg) !important;
|
|
59
|
+
border: 1px solid var(--nu-border-color) !important;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.sidebar-pane northwestern-theme-toggle svg {
|
|
63
|
+
fill: var(--nu-color-text) !important;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.sidebar-pane .social-icons {
|
|
67
|
+
align-items: center;
|
|
68
|
+
padding: 0 !important;
|
|
69
|
+
margin: 0 !important;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.sidebar-pane .social-icons a {
|
|
73
|
+
display: inline-flex;
|
|
74
|
+
align-items: center;
|
|
75
|
+
justify-content: center;
|
|
76
|
+
width: 2.5rem;
|
|
77
|
+
height: 2.5rem;
|
|
78
|
+
padding: 0 !important;
|
|
79
|
+
margin: 0 !important;
|
|
80
|
+
color: var(--nu-color-text) !important;
|
|
81
|
+
background: var(--nu-hover-bg);
|
|
82
|
+
border: 1px solid var(--nu-border-color);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.sidebar-pane .social-icons svg {
|
|
86
|
+
fill: var(--nu-color-text) !important;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
41
90
|
@media (width < 50rem) {
|
|
42
91
|
site-search button {
|
|
43
92
|
color: var(--nu-topbar-text) !important;
|
|
@@ -102,27 +151,29 @@
|
|
|
102
151
|
border-color: var(--nu-black-20) !important;
|
|
103
152
|
}
|
|
104
153
|
|
|
105
|
-
/* Starlight owns these borders; force them onto the shared theme token. */
|
|
106
154
|
.header,
|
|
107
155
|
.sidebar-pane {
|
|
108
156
|
border-color: var(--nu-border-color) !important;
|
|
109
157
|
}
|
|
110
158
|
|
|
159
|
+
nav.sidebar a {
|
|
160
|
+
border-left: 3px solid transparent;
|
|
161
|
+
}
|
|
162
|
+
|
|
111
163
|
nav.sidebar a:hover {
|
|
112
164
|
background-color: var(--nu-purple-surface) !important;
|
|
113
165
|
}
|
|
114
166
|
|
|
115
167
|
nav.sidebar a[aria-current="page"] {
|
|
116
|
-
padding-left: 0.8rem;
|
|
117
168
|
font-weight: 700;
|
|
118
169
|
color: var(--nu-color-link) !important;
|
|
119
170
|
background-color: var(--nu-purple-surface) !important;
|
|
120
|
-
border-left:
|
|
171
|
+
border-left-color: var(--nu-color-link);
|
|
121
172
|
}
|
|
122
173
|
|
|
123
174
|
nav.sidebar a[aria-current="true"] {
|
|
124
175
|
font-weight: 600;
|
|
125
|
-
border-left:
|
|
176
|
+
border-left-color: var(--nu-color-link);
|
|
126
177
|
}
|
|
127
178
|
|
|
128
179
|
:root:not([data-theme="light"]) nav.sidebar a:hover {
|
|
@@ -139,7 +190,6 @@
|
|
|
139
190
|
border-left: 3px solid transparent;
|
|
140
191
|
transition:
|
|
141
192
|
border-color var(--nu-transition-fast),
|
|
142
|
-
padding-left var(--nu-transition-fast),
|
|
143
193
|
font-weight var(--nu-transition-fast);
|
|
144
194
|
}
|
|
145
195
|
|
|
@@ -148,7 +198,6 @@
|
|
|
148
198
|
}
|
|
149
199
|
|
|
150
200
|
.right-sidebar-panel a[aria-current="true"] {
|
|
151
|
-
padding-left: 0.8rem;
|
|
152
201
|
font-weight: 600;
|
|
153
202
|
border-left-color: var(--sl-color-accent);
|
|
154
203
|
}
|
|
@@ -206,4 +255,11 @@
|
|
|
206
255
|
.sidebar-content a[href="/changelog/"]:hover span {
|
|
207
256
|
opacity: 1;
|
|
208
257
|
}
|
|
258
|
+
|
|
259
|
+
dialog button:focus-visible,
|
|
260
|
+
dialog input:focus-visible,
|
|
261
|
+
dialog a:focus-visible {
|
|
262
|
+
outline: 2px solid var(--nu-focus-ring) !important;
|
|
263
|
+
outline-offset: 2px;
|
|
264
|
+
}
|
|
209
265
|
}
|
package/src/styles/openapi.css
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
/* ==========================================================================
|
|
2
2
|
OpenAPI — Scoped overrides for starlight-openapi plugin
|
|
3
|
-
|
|
4
|
-
Encapsulates method badges plus OpenAPI content panels, rows, fields,
|
|
5
|
-
and controls rendered inside markdown content.
|
|
6
3
|
========================================================================== */
|
|
7
4
|
|
|
8
5
|
/* stylelint-disable selector-class-pattern */
|
package/src/styles/theme.css
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
/* ==========================================================================
|
|
2
2
|
Theme — Starlight Variable Mapping
|
|
3
|
-
|
|
4
|
-
Encapsulates the mapping from Northwestern design tokens onto Starlight's
|
|
5
|
-
theme variables, plus global paint and border-radius overrides.
|
|
6
3
|
========================================================================== */
|
|
7
4
|
|
|
8
|
-
/* Unlayered — paints immediately to prevent white flash on load */
|
|
9
5
|
html {
|
|
10
6
|
background-color: #18181b;
|
|
11
7
|
}
|
package/src/styles/variables.css
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
/* ==========================================================================
|
|
2
2
|
Variables — Northwestern Design Tokens
|
|
3
|
-
|
|
4
|
-
Encapsulates the shared design-token source of truth for color, typography,
|
|
5
|
-
motion, surface, focus, and light/dark layout values.
|
|
6
3
|
========================================================================== */
|
|
7
4
|
|
|
8
5
|
@layer northwestern {
|
package/src/virtual.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
var __nuPropertySlugs:
|
|
3
|
+
| {
|
|
4
|
+
page: string;
|
|
5
|
+
counts: Map<string, number>;
|
|
6
|
+
}
|
|
7
|
+
| undefined;
|
|
8
|
+
}
|
|
9
|
+
|
|
1
10
|
declare module "virtual:northwestern-theme/config" {
|
|
2
11
|
const config: {
|
|
3
12
|
homepage: {
|
|
@@ -8,3 +17,5 @@ declare module "virtual:northwestern-theme/config" {
|
|
|
8
17
|
};
|
|
9
18
|
export default config;
|
|
10
19
|
}
|
|
20
|
+
|
|
21
|
+
export {};
|