@nu-appdev/northwestern-starlight-theme 1.2.0 → 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 +53 -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 +4 -160
- package/src/styles/layers.css +0 -7
- package/src/styles/mermaid-toolbar.css +62 -13
- package/src/styles/navigation.css +66 -17
- 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 -659
|
@@ -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,8 +1,9 @@
|
|
|
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 {
|
|
@@ -21,80 +22,6 @@
|
|
|
21
22
|
border-bottom-style: solid;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
/* Footnote references — superscript markers with brackets */
|
|
25
|
-
.sl-markdown-content a[data-footnote-ref] {
|
|
26
|
-
font-weight: 600;
|
|
27
|
-
line-height: 1;
|
|
28
|
-
vertical-align: super;
|
|
29
|
-
color: var(--sl-color-accent);
|
|
30
|
-
text-decoration: none;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.sl-markdown-content a[data-footnote-ref]::before {
|
|
34
|
-
content: "[";
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.sl-markdown-content a[data-footnote-ref]::after {
|
|
38
|
-
content: "]";
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.sl-markdown-content a[data-footnote-ref]:hover {
|
|
42
|
-
text-decoration: underline;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/* Footnotes section */
|
|
46
|
-
.sl-markdown-content section[data-footnotes] {
|
|
47
|
-
padding-top: 1.5rem;
|
|
48
|
-
margin-top: 2.5rem;
|
|
49
|
-
font-size: 0.875rem;
|
|
50
|
-
color: var(--nu-color-text-muted);
|
|
51
|
-
border-top: 1px solid var(--nu-border-color);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/* Hide the default <hr> that remark-gfm inserts before footnotes */
|
|
55
|
-
.sl-markdown-content section[data-footnotes] > :first-child:is(hr) {
|
|
56
|
-
display: none;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/* Collapse the heading wrapper around the sr-only "Footnotes" label */
|
|
60
|
-
.sl-markdown-content section[data-footnotes] > .sl-heading-wrapper {
|
|
61
|
-
position: absolute;
|
|
62
|
-
width: 1px;
|
|
63
|
-
height: 1px;
|
|
64
|
-
padding: 0;
|
|
65
|
-
margin: -1px;
|
|
66
|
-
overflow: hidden;
|
|
67
|
-
white-space: nowrap;
|
|
68
|
-
border: 0;
|
|
69
|
-
clip-path: inset(50%);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
.sl-markdown-content section[data-footnotes] ol {
|
|
73
|
-
padding-left: 1.5rem;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
.sl-markdown-content section[data-footnotes] li {
|
|
77
|
-
padding-left: 0.25rem;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
.sl-markdown-content section[data-footnotes] li + li {
|
|
81
|
-
margin-top: 0.5rem;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
.sl-markdown-content section[data-footnotes] a[data-footnote-backref] {
|
|
85
|
-
margin-left: 0.25em;
|
|
86
|
-
font-family: "Segoe UI Symbol", "Noto Sans Symbols 2", sans-serif;
|
|
87
|
-
font-size: 1em;
|
|
88
|
-
font-weight: 700;
|
|
89
|
-
color: var(--sl-color-accent);
|
|
90
|
-
text-decoration: none;
|
|
91
|
-
font-variant-emoji: text;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
.sl-markdown-content section[data-footnotes] a[data-footnote-backref]:hover {
|
|
95
|
-
border-bottom: 1px solid var(--sl-color-accent);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
25
|
.sl-markdown-content ul:not(:where(.not-content *)) {
|
|
99
26
|
padding-left: 1.25rem;
|
|
100
27
|
list-style: none;
|
|
@@ -136,38 +63,6 @@
|
|
|
136
63
|
border: 0;
|
|
137
64
|
}
|
|
138
65
|
|
|
139
|
-
.sl-markdown-content blockquote:not(:where(.not-content *)) {
|
|
140
|
-
padding: 1rem 1.5rem;
|
|
141
|
-
margin: 2rem 0;
|
|
142
|
-
color: var(--nu-color-text);
|
|
143
|
-
background: rgb(228 224 238 / 42%);
|
|
144
|
-
border-inline-start: 10px solid var(--nu-purple-100);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
.sl-markdown-content blockquote:not(:where(.not-content *)) p:last-child {
|
|
148
|
-
margin-bottom: 0;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
.sl-markdown-content blockquote:not(:where(.not-content *)) cite,
|
|
152
|
-
.sl-markdown-content blockquote:not(:where(.not-content *)) footer {
|
|
153
|
-
display: block;
|
|
154
|
-
margin-top: 0.75rem;
|
|
155
|
-
font-size: var(--sl-text-sm);
|
|
156
|
-
font-style: normal;
|
|
157
|
-
font-weight: 700;
|
|
158
|
-
color: var(--nu-color-link);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
:root:not([data-theme="light"]) .sl-markdown-content blockquote:not(:where(.not-content *)) {
|
|
162
|
-
background: rgb(48 16 78 / 35%);
|
|
163
|
-
border-inline-start-color: var(--nu-purple-40);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
:root:not([data-theme="light"]) .sl-markdown-content blockquote:not(:where(.not-content *)) cite,
|
|
167
|
-
:root:not([data-theme="light"]) .sl-markdown-content blockquote:not(:where(.not-content *)) footer {
|
|
168
|
-
color: var(--nu-purple-30);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
66
|
.sl-markdown-content figure:not(:where(.not-content *)) {
|
|
172
67
|
margin: 2rem 0;
|
|
173
68
|
}
|
|
@@ -340,57 +235,6 @@
|
|
|
340
235
|
background-color: rgb(239 85 63 / 8%) !important;
|
|
341
236
|
}
|
|
342
237
|
|
|
343
|
-
.sl-markdown-content table:not(:where(.not-content *)) {
|
|
344
|
-
display: table;
|
|
345
|
-
width: 100%;
|
|
346
|
-
text-indent: 0;
|
|
347
|
-
border-collapse: collapse;
|
|
348
|
-
border-color: var(--nu-border-color);
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
.sl-markdown-content table:not(:where(.not-content *)) > thead > tr > th {
|
|
352
|
-
padding: 0.5rem 1rem;
|
|
353
|
-
font-family: var(--nu-font-heading);
|
|
354
|
-
font-weight: 600;
|
|
355
|
-
color: var(--nu-black-80);
|
|
356
|
-
text-align: left;
|
|
357
|
-
background-color: var(--nu-purple-surface);
|
|
358
|
-
border: 1px solid var(--nu-border-color);
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
:root:not([data-theme="light"]) .sl-markdown-content table:not(:where(.not-content *)) > thead > tr > th {
|
|
362
|
-
color: var(--nu-color-text);
|
|
363
|
-
background-color: rgb(78 42 132 / 14%);
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
.sl-markdown-content table:not(:where(.not-content *)) > tbody > tr > td {
|
|
367
|
-
padding: 0.5rem 1rem;
|
|
368
|
-
text-align: left;
|
|
369
|
-
border: 1px solid var(--nu-border-color);
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
.sl-markdown-content table:not(:where(.not-content *)) > thead > tr > th[align="right"],
|
|
373
|
-
.sl-markdown-content table:not(:where(.not-content *)) > tbody > tr > td[align="right"] {
|
|
374
|
-
text-align: right;
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
.sl-markdown-content table:not(:where(.not-content *)) > thead > tr > th[align="center"],
|
|
378
|
-
.sl-markdown-content table:not(:where(.not-content *)) > tbody > tr > td[align="center"] {
|
|
379
|
-
text-align: center;
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
.sl-markdown-content table:not(:where(.not-content *)) > tbody > tr:nth-child(even) {
|
|
383
|
-
background-color: #f3f4f6;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
:root:not([data-theme="light"])
|
|
387
|
-
.sl-markdown-content
|
|
388
|
-
table:not(:where(.not-content *))
|
|
389
|
-
> tbody
|
|
390
|
-
> tr:nth-child(even) {
|
|
391
|
-
background-color: #1e1e1e;
|
|
392
|
-
}
|
|
393
|
-
|
|
394
238
|
.sl-link-button {
|
|
395
239
|
transition:
|
|
396
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;
|
|
@@ -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
|
}
|
|
@@ -171,13 +168,27 @@
|
|
|
171
168
|
|
|
172
169
|
.nu-mermaid-overlay-controls .nu-mermaid-close {
|
|
173
170
|
color: #fff;
|
|
174
|
-
background: rgb(255 255 255 /
|
|
175
|
-
border-color: rgb(255 255 255 /
|
|
171
|
+
background: rgb(255 255 255 / 15%);
|
|
172
|
+
border-color: rgb(255 255 255 / 25%);
|
|
176
173
|
}
|
|
177
174
|
|
|
178
175
|
.nu-mermaid-overlay-controls .nu-mermaid-close:hover {
|
|
179
|
-
background: rgb(255 255 255 /
|
|
180
|
-
|
|
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
|
+
}
|
|
181
192
|
}
|
|
182
193
|
|
|
183
194
|
.nu-mermaid-viewport {
|
|
@@ -188,6 +199,12 @@
|
|
|
188
199
|
overflow: hidden;
|
|
189
200
|
touch-action: none;
|
|
190
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);
|
|
191
208
|
}
|
|
192
209
|
|
|
193
210
|
.nu-mermaid-viewport:active {
|
|
@@ -216,7 +233,6 @@
|
|
|
216
233
|
color: rgb(255 255 255 / 70%);
|
|
217
234
|
pointer-events: none;
|
|
218
235
|
background: rgb(0 0 0 / 35%);
|
|
219
|
-
border-radius: 0.25rem;
|
|
220
236
|
|
|
221
237
|
/* stylelint-disable-next-line property-no-vendor-prefix -- Safari requires prefix */
|
|
222
238
|
-webkit-backdrop-filter: blur(6px);
|
|
@@ -227,4 +243,37 @@
|
|
|
227
243
|
color: rgb(0 0 0 / 55%);
|
|
228
244
|
background: rgb(255 255 255 / 50%);
|
|
229
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
|
+
}
|
|
230
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,18 +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
|
|
|
41
43
|
starlight-menu-button button:focus-visible,
|
|
42
|
-
northwestern-theme-toggle button:focus-visible,
|
|
43
44
|
.header northwestern-theme-toggle button:focus-visible {
|
|
44
45
|
outline: none !important;
|
|
45
46
|
box-shadow: 0 0 0 2px rgb(255 255 255 / 60%) !important;
|
|
46
47
|
}
|
|
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
|
+
|
|
48
90
|
@media (width < 50rem) {
|
|
49
91
|
site-search button {
|
|
50
92
|
color: var(--nu-topbar-text) !important;
|
|
@@ -109,27 +151,29 @@
|
|
|
109
151
|
border-color: var(--nu-black-20) !important;
|
|
110
152
|
}
|
|
111
153
|
|
|
112
|
-
/* Starlight owns these borders; force them onto the shared theme token. */
|
|
113
154
|
.header,
|
|
114
155
|
.sidebar-pane {
|
|
115
156
|
border-color: var(--nu-border-color) !important;
|
|
116
157
|
}
|
|
117
158
|
|
|
159
|
+
nav.sidebar a {
|
|
160
|
+
border-left: 3px solid transparent;
|
|
161
|
+
}
|
|
162
|
+
|
|
118
163
|
nav.sidebar a:hover {
|
|
119
164
|
background-color: var(--nu-purple-surface) !important;
|
|
120
165
|
}
|
|
121
166
|
|
|
122
167
|
nav.sidebar a[aria-current="page"] {
|
|
123
|
-
padding-left: 0.8rem;
|
|
124
168
|
font-weight: 700;
|
|
125
169
|
color: var(--nu-color-link) !important;
|
|
126
170
|
background-color: var(--nu-purple-surface) !important;
|
|
127
|
-
border-left:
|
|
171
|
+
border-left-color: var(--nu-color-link);
|
|
128
172
|
}
|
|
129
173
|
|
|
130
174
|
nav.sidebar a[aria-current="true"] {
|
|
131
175
|
font-weight: 600;
|
|
132
|
-
border-left:
|
|
176
|
+
border-left-color: var(--nu-color-link);
|
|
133
177
|
}
|
|
134
178
|
|
|
135
179
|
:root:not([data-theme="light"]) nav.sidebar a:hover {
|
|
@@ -146,7 +190,6 @@
|
|
|
146
190
|
border-left: 3px solid transparent;
|
|
147
191
|
transition:
|
|
148
192
|
border-color var(--nu-transition-fast),
|
|
149
|
-
padding-left var(--nu-transition-fast),
|
|
150
193
|
font-weight var(--nu-transition-fast);
|
|
151
194
|
}
|
|
152
195
|
|
|
@@ -155,7 +198,6 @@
|
|
|
155
198
|
}
|
|
156
199
|
|
|
157
200
|
.right-sidebar-panel a[aria-current="true"] {
|
|
158
|
-
padding-left: 0.8rem;
|
|
159
201
|
font-weight: 600;
|
|
160
202
|
border-left-color: var(--sl-color-accent);
|
|
161
203
|
}
|
|
@@ -213,4 +255,11 @@
|
|
|
213
255
|
.sidebar-content a[href="/changelog/"]:hover span {
|
|
214
256
|
opacity: 1;
|
|
215
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
|
+
}
|
|
216
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 {};
|