@goauthentik/docusaurus-config 1.0.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/css/badges.css +56 -0
- package/css/buttons.css +21 -0
- package/css/fonts.css +93 -0
- package/css/header.css +44 -0
- package/css/homepage.css +40 -0
- package/css/markdown.css +36 -0
- package/css/menu.css +22 -0
- package/css/navbar.css +191 -0
- package/css/root.css +19 -0
- package/css/sidebar.css +20 -0
- package/index.js +6 -0
- package/lib/common.js +70 -0
- package/lib/theme.js +85 -0
- package/package.json +40 -0
- package/tsconfig.json +8 -0
package/css/badges.css
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
.anchor > .badge {
|
|
2
|
+
font-size: 0.75rem;
|
|
3
|
+
vertical-align: middle;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.anchor > .badge {
|
|
7
|
+
margin-left: 0.5rem;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.badge {
|
|
11
|
+
--ifm-font-weight-bold: 900;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.badge--support-vendor {
|
|
15
|
+
--ifm-badge-background-color: var(--ifm-color-warning-contrast-background);
|
|
16
|
+
--ifm-badge-color: var(--ifm-color-warning-contrast-foreground);
|
|
17
|
+
--ifm-badge-border-color: var(--ifm-color-warning-contrast-foreground);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.badge--support-community {
|
|
21
|
+
--ifm-badge-background-color: var(
|
|
22
|
+
--ifm-color-secondary-contrast-foreground
|
|
23
|
+
);
|
|
24
|
+
--ifm-badge-border-color: var(--ifm-color-secondary-dark);
|
|
25
|
+
--ifm-badge-color: var(--ifm-color-secondary-contrast-background);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.badge--support-deprecated {
|
|
29
|
+
--ifm-badge-background-color: var(--ifm-color-danger);
|
|
30
|
+
--ifm-badge-border-color: var(--ifm-color-danger-contrast-background);
|
|
31
|
+
--ifm-badge-color: var(--ifm-color-danger-contrast-foreground);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.badge--support-authentik {
|
|
35
|
+
--ifm-badge-background-color: var(--ifm-color-primary);
|
|
36
|
+
--ifm-badge-border-color: var(--ifm-color-secondary);
|
|
37
|
+
--ifm-badge-color: var(--ifm-color-secondary);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.badge--version {
|
|
41
|
+
--ifm-badge-background-color: var(--ifm-color-primary-contrast-background);
|
|
42
|
+
--ifm-badge-border-color: var(--ifm-color-primary-contrast-foreground);
|
|
43
|
+
--ifm-badge-color: var(--ifm-color-primary-contrast-foreground);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.badge--preview {
|
|
47
|
+
--ifm-badge-background-color: rgb(115, 188, 247);
|
|
48
|
+
--ifm-badge-border-color: var(--ifm-badge-background-color);
|
|
49
|
+
--ifm-badge-color: var(--ifm-color-primary-contrast-foreground);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.badge-group {
|
|
53
|
+
display: flex;
|
|
54
|
+
flex-wrap: wrap;
|
|
55
|
+
gap: 1rem;
|
|
56
|
+
}
|
package/css/buttons.css
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--ifm-button-color: var(--white);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.button-row {
|
|
6
|
+
gap: var(--ifm-global-spacing);
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
align-items: center;
|
|
11
|
+
flex-wrap: wrap;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.button--outline {
|
|
15
|
+
--ifm-button-color: var(--white);
|
|
16
|
+
--ifm-button-border-color: var(--white);
|
|
17
|
+
|
|
18
|
+
&:hover {
|
|
19
|
+
--ifm-button-color: var(--ifm-color-primary);
|
|
20
|
+
}
|
|
21
|
+
}
|
package/css/fonts.css
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--ifm-font-family-base:
|
|
3
|
+
RedHatVF, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell,
|
|
4
|
+
Noto Sans, sans-serif, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial,
|
|
5
|
+
sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
|
6
|
+
|
|
7
|
+
--ifm-font-family-monospace:
|
|
8
|
+
RedHatMonoVF, SFMono-Regular, Menlo, Monaco, Consolas,
|
|
9
|
+
"Liberation Mono", "Courier New", monospace;
|
|
10
|
+
|
|
11
|
+
--ifm-heading-font-family: RedHatDisplayVF, var(--ifm-font-family-base);
|
|
12
|
+
|
|
13
|
+
--ifm-h5-font-size: 0.88rem;
|
|
14
|
+
--ifm-code-font-size: 100%;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@font-face {
|
|
18
|
+
font-family: "RedHatDisplayVF";
|
|
19
|
+
font-style: normal;
|
|
20
|
+
font-weight: 300 900;
|
|
21
|
+
font-display: fallback;
|
|
22
|
+
src:
|
|
23
|
+
local("Red Hat Display"),
|
|
24
|
+
url("/fonts/RedHatFont-updated/modified/RedHatDisplayVFModified-updated.woff2")
|
|
25
|
+
format("woff2-variations"),
|
|
26
|
+
url("https://goauthentik.io/fonts/RedHatFont-updated/modified/RedHatDisplayVFModified-updated.woff2")
|
|
27
|
+
format("woff2-variations");
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@font-face {
|
|
31
|
+
font-family: "RedHatDisplayVF";
|
|
32
|
+
font-style: italic;
|
|
33
|
+
font-weight: 300 900;
|
|
34
|
+
font-display: fallback;
|
|
35
|
+
src:
|
|
36
|
+
local("Red Hat Display"),
|
|
37
|
+
url("/fonts/RedHatFont-updated/modified/RedHatDisplayVF-updated-ItalicModified.woff2")
|
|
38
|
+
format("woff2-variations"),
|
|
39
|
+
url("https://goauthentik.io/fonts/RedHatFont-updated/modified/RedHatDisplayVF-updated-ItalicModified.woff2")
|
|
40
|
+
format("woff2-variations");
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@font-face {
|
|
44
|
+
font-family: "RedHatTextVF";
|
|
45
|
+
font-style: normal;
|
|
46
|
+
font-weight: 400 500;
|
|
47
|
+
font-display: fallback;
|
|
48
|
+
src:
|
|
49
|
+
local("Red Hat Display"),
|
|
50
|
+
url("/fonts/RedHatFont-updated/modified/RedHatTextVFModified-updated.woff2")
|
|
51
|
+
format("woff2-variations"),
|
|
52
|
+
url("https://goauthentik.io/fonts/RedHatFont-updated/modified/RedHatTextVFModified-updated.woff2")
|
|
53
|
+
format("woff2-variations");
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@font-face {
|
|
57
|
+
font-family: "RedHatTextVF";
|
|
58
|
+
font-style: italic;
|
|
59
|
+
font-weight: 400 500;
|
|
60
|
+
font-display: fallback;
|
|
61
|
+
src:
|
|
62
|
+
local("Red Hat Display"),
|
|
63
|
+
url("/fonts/RedHatFont-updated/modified/RedHatTextVF-updated-ItalicModified.woff2")
|
|
64
|
+
format("woff2-variations")
|
|
65
|
+
url("https://goauthentik.io/fonts/RedHatFont-updated/modified/RedHatTextVF-updated-ItalicModified.woff2")
|
|
66
|
+
format("woff2-variations");
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@font-face {
|
|
70
|
+
font-family: "RedHatMonoVF";
|
|
71
|
+
font-style: normal;
|
|
72
|
+
font-weight: 300 700;
|
|
73
|
+
font-display: fallback;
|
|
74
|
+
src:
|
|
75
|
+
local("Red Hat Mono"),
|
|
76
|
+
url("/fonts/RedHatFont-updated/RedHatMono/RedHatMonoVF-updated.woff2")
|
|
77
|
+
format("woff2-variations"),
|
|
78
|
+
url("https://goauthentik.io/fonts/RedHatFont-updated/RedHatMono/RedHatMonoVF-updated.woff2")
|
|
79
|
+
format("woff2-variations");
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@font-face {
|
|
83
|
+
font-family: "RedHatMonoVF";
|
|
84
|
+
font-style: italic;
|
|
85
|
+
font-weight: 300 700;
|
|
86
|
+
font-display: fallback;
|
|
87
|
+
src:
|
|
88
|
+
local("Red Hat Mono"),
|
|
89
|
+
url("/fonts/RedHatFont-updated/RedHatMono/RedHatMonoVF-updated-Italic.woff2")
|
|
90
|
+
format("woff2-variations"),
|
|
91
|
+
url("https://goauthentik.io/fonts/RedHatFont-updated/RedHatMono/RedHatMonoVF-updated-Italic.woff2")
|
|
92
|
+
format("woff2-variations");
|
|
93
|
+
}
|
package/css/header.css
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
a[data-icon] {
|
|
2
|
+
display: flex;
|
|
3
|
+
gap: 0.5em;
|
|
4
|
+
align-items: center;
|
|
5
|
+
border-radius: var(--ifm-badge-border-radius);
|
|
6
|
+
|
|
7
|
+
&:hover {
|
|
8
|
+
background-color: var(--ifm-hover-overlay);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
a[data-icon]::before {
|
|
13
|
+
display: block;
|
|
14
|
+
content: "";
|
|
15
|
+
width: 1.5rem;
|
|
16
|
+
height: 1.5rem;
|
|
17
|
+
background-repeat: no-repeat;
|
|
18
|
+
background-position: center;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
a[data-icon]::after {
|
|
22
|
+
display: block;
|
|
23
|
+
content: attr(aria-label);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@media (max-width: 1300px) {
|
|
27
|
+
.navbar--fixed-top .navbar__items a[data-icon]::after {
|
|
28
|
+
display: none;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@media (max-width: 998px) {
|
|
33
|
+
.navbar--fixed-top .navbar__items a[data-icon] {
|
|
34
|
+
display: none;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
a[data-icon="github"]::before {
|
|
39
|
+
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E");
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
a[data-icon="discord"]::before {
|
|
43
|
+
background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20127.14%2096.36%22%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill%3A%23fff%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22%E5%9B%BE%E5%B1%82_2%22%20data-name%3D%22%E5%9B%BE%E5%B1%82%202%22%3E%3Cg%20id%3D%22Discord_Logos%22%20data-name%3D%22Discord%20Logos%22%3E%3Cg%20id%3D%22Discord_Logo_-_Large_-_White%22%20data-name%3D%22Discord%20Logo%20-%20Large%20-%20White%22%3E%3Cpath%20class%3D%22cls-1%22%20d%3D%22M107.7%2C8.07A105.15%2C105.15%2C0%2C0%2C0%2C81.47%2C0a72.06%2C72.06%2C0%2C0%2C0-3.36%2C6.83A97.68%2C97.68%2C0%2C0%2C0%2C49%2C6.83%2C72.37%2C72.37%2C0%2C0%2C0%2C45.64%2C0%2C105.89%2C105.89%2C0%2C0%2C0%2C19.39%2C8.09C2.79%2C32.65-1.71%2C56.6.54%2C80.21h0A105.73%2C105.73%2C0%2C0%2C0%2C32.71%2C96.36%2C77.7%2C77.7%2C0%2C0%2C0%2C39.6%2C85.25a68.42%2C68.42%2C0%2C0%2C1-10.85-5.18c.91-.66%2C1.8-1.34%2C2.66-2a75.57%2C75.57%2C0%2C0%2C0%2C64.32%2C0c.87.71%2C1.76%2C1.39%2C2.66%2C2a68.68%2C68.68%2C0%2C0%2C1-10.87%2C5.19%2C77%2C77%2C0%2C0%2C0%2C6.89%2C11.1A105.25%2C105.25%2C0%2C0%2C0%2C126.6%2C80.22h0C129.24%2C52.84%2C122.09%2C29.11%2C107.7%2C8.07ZM42.45%2C65.69C36.18%2C65.69%2C31%2C60%2C31%2C53s5-12.74%2C11.43-12.74S54%2C46%2C53.89%2C53%2C48.84%2C65.69%2C42.45%2C65.69Zm42.24%2C0C78.41%2C65.69%2C73.25%2C60%2C73.25%2C53s5-12.74%2C11.44-12.74S96.23%2C46%2C96.12%2C53%2C91.08%2C65.69%2C84.69%2C65.69Z%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
|
|
44
|
+
}
|
package/css/homepage.css
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/* TODO: Determine just how global these styles are. */
|
|
2
|
+
|
|
3
|
+
/* The parent div centers, but the inner paragraph needs its own centering while its size changes. */
|
|
4
|
+
.homepage_hero__subtitle {
|
|
5
|
+
display: flex;
|
|
6
|
+
justify-content: center;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.homepage_hero__subtitle p {
|
|
10
|
+
font-size: clamp(
|
|
11
|
+
1.125rem,
|
|
12
|
+
0.9946rem + 0.6522vi,
|
|
13
|
+
1.5rem
|
|
14
|
+
); /* Adjust font as page scales */
|
|
15
|
+
max-width: 28ch; /* Apply a maximum to keep everything in the box */
|
|
16
|
+
text-wrap: balance; /* Prevent widows, orphans, and runts. Doesn't work in Safari */
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.hero--primary {
|
|
20
|
+
background: radial-gradient(
|
|
21
|
+
at right bottom,
|
|
22
|
+
rgba(47, 6, 75, 1) 0%,
|
|
23
|
+
var(--ifm-color-primary) 50%
|
|
24
|
+
);
|
|
25
|
+
padding-bottom: 5.3rem !important;
|
|
26
|
+
/* fix aliasing at the edge */
|
|
27
|
+
-webkit-backface-visibility: hidden;
|
|
28
|
+
backface-visibility: hidden;
|
|
29
|
+
-webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 calc(100% - 3vw));
|
|
30
|
+
clip-path: polygon(0 0, 100% 0, 100% 100%, 0 calc(100% - 3vw));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.hero-banner {
|
|
34
|
+
padding: 4rem 0;
|
|
35
|
+
text-align: center;
|
|
36
|
+
position: relative;
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
overflow-wrap: normal;
|
|
39
|
+
color: var(--white);
|
|
40
|
+
}
|
package/css/markdown.css
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
.docusaurus-mermaid-container {
|
|
2
|
+
/* Improve contrast. */
|
|
3
|
+
& .messageText {
|
|
4
|
+
stroke: var(--ifm-background-color) !important;
|
|
5
|
+
stroke-width: 4;
|
|
6
|
+
fill: var(--ifm-color-content) !important;
|
|
7
|
+
paint-order: stroke;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/* #endregion */
|
|
11
|
+
|
|
12
|
+
.markdown {
|
|
13
|
+
/* Remove empty table headers. */
|
|
14
|
+
& table > thead:has(> tr > th:empty):not(:has(> tr > th:not(:empty))) {
|
|
15
|
+
display: none;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.contains-task-list {
|
|
20
|
+
input[type="checkbox"] {
|
|
21
|
+
appearance: none;
|
|
22
|
+
}
|
|
23
|
+
input[type="checkbox"]::after {
|
|
24
|
+
content: "✓";
|
|
25
|
+
color: var(--ifm-color-success-dark);
|
|
26
|
+
display: inline-block;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* #region Code Blocks */
|
|
31
|
+
|
|
32
|
+
.theme-code-block pre code {
|
|
33
|
+
font-weight: 500;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* #endregion */
|
package/css/menu.css
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--ifm-menu-link-padding-vertical: 1em;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.menu__list-item {
|
|
6
|
+
font-family: var(--ifm-heading-font-family);
|
|
7
|
+
font-weight: 400;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.navbar-sidebar__items:not(.navbar-sidebar__items--show-secondary) {
|
|
11
|
+
--ifm-menu-color: var(--white);
|
|
12
|
+
--ifm-menu-color-active: var(--white);
|
|
13
|
+
|
|
14
|
+
.menu__list-item {
|
|
15
|
+
font-size: var(--ifm-h3-font-size);
|
|
16
|
+
filter: drop-shadow(0px -1px var(--ifm-color-primary-darker));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.breadcrumbs__link {
|
|
21
|
+
font-weight: 400;
|
|
22
|
+
}
|
package/css/navbar.css
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--ifm-navbar-item-padding-horizontal: 0.5rem;
|
|
3
|
+
--ifm-navbar-link-color: var(--white);
|
|
4
|
+
--ifm-navbar-link-hover-color: var(--white);
|
|
5
|
+
|
|
6
|
+
--ifm-navbar-link-color: var(--white);
|
|
7
|
+
--ifm-navbar-link-hover-color: var(--white);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.navbar--fixed-top {
|
|
11
|
+
background-color: var(--ifm-color-primary);
|
|
12
|
+
box-shadow: none;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.navbar .navbar__inner {
|
|
16
|
+
margin: 0 auto;
|
|
17
|
+
max-width: 1600px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* Nav header background color on mobile */
|
|
21
|
+
.navbar-sidebar__brand,
|
|
22
|
+
.navbar-sidebar__items {
|
|
23
|
+
background-color: var(--ifm-color-primary);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.navbar__toggle,
|
|
27
|
+
.navbar-sidebar__brand .clean-btn,
|
|
28
|
+
.navbar__items--right .clean-btn {
|
|
29
|
+
color: var(--white);
|
|
30
|
+
|
|
31
|
+
&:hover {
|
|
32
|
+
background-color: var(--ifm-hover-overlay);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.navbar-sidebar__brand .navbar-sidebar__close {
|
|
37
|
+
--ifm-color-emphasis-600: var(--white);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.navbar__item.navbar__link {
|
|
41
|
+
user-select: none;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.navbar__items:not(.navbar__items--right) {
|
|
45
|
+
.navbar__item.navbar__link {
|
|
46
|
+
margin-block-start: 0.1em;
|
|
47
|
+
border-radius: var(--ifm-badge-border-radius);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.navbar__item.navbar__link.navbar__link--active {
|
|
51
|
+
background: #fff;
|
|
52
|
+
color: var(--ifm-color-primary);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.navbar__item.navbar__link:not(.navbar__link--active):hover {
|
|
56
|
+
background: var(--ifm-hover-overlay);
|
|
57
|
+
color: #fff;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.navbar__item.navbar__link + .navbar__item.navbar__link {
|
|
61
|
+
margin-inline-start: calc(var(--ifm-navbar-padding-horizontal) / 2);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.navbar__item.navbar__link {
|
|
66
|
+
font-weight: 600;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.navbar--fixed-top .navbar__inner .navbar__item {
|
|
70
|
+
filter: drop-shadow(0px -1px var(--ifm-color-primary-darker));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@media (min-width: 1120px) {
|
|
74
|
+
.navbar--fixed-top .navbar__items:not(.navbar__items--right) {
|
|
75
|
+
--ifm-navbar-item-padding-horizontal: 1rem;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.docs-wrapper .navbar {
|
|
79
|
+
margin: 0;
|
|
80
|
+
padding-inline-start: 0;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.navbar__brand {
|
|
84
|
+
justify-content: center;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.docs-wrapper .navbar__brand {
|
|
88
|
+
width: var(--doc-sidebar-width);
|
|
89
|
+
margin: 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.navbar__item.navbar__link {
|
|
93
|
+
font-size: 1.1rem;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.navbar__logo {
|
|
98
|
+
margin: 0 0.75rem 0.2rem 0;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.navbar__items--right {
|
|
102
|
+
display: grid;
|
|
103
|
+
|
|
104
|
+
--ifm-hover-overlay: hsl(0deg 0% 100% / 25%);
|
|
105
|
+
--ifm-navbar-item-padding-horizontal: 0.75rem;
|
|
106
|
+
|
|
107
|
+
.navbar__item.navbar__link {
|
|
108
|
+
grid-row: 1;
|
|
109
|
+
|
|
110
|
+
&:first-child {
|
|
111
|
+
grid-column: 1 / span 1;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
&:nth-child(2) {
|
|
115
|
+
grid-column: 2 / span 1;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
div:has(.DocSearch) {
|
|
120
|
+
grid-column: 5 / span 1;
|
|
121
|
+
grid-row: 1;
|
|
122
|
+
|
|
123
|
+
@media (min-width: 999px) {
|
|
124
|
+
border-inline-start: 1px solid var(--ifm-hover-overlay);
|
|
125
|
+
margin-inline-start: calc(
|
|
126
|
+
var(--ifm-navbar-item-padding-horizontal) / 2
|
|
127
|
+
);
|
|
128
|
+
padding-inline-start: calc(
|
|
129
|
+
var(--ifm-navbar-item-padding-horizontal) / 2
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
div:has(.clean-btn) {
|
|
135
|
+
grid-column: 6 / span 1;
|
|
136
|
+
grid-row: 1;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.DocSearch-Button {
|
|
141
|
+
--docsearch-primary-color: var(--ifm-color-primary-darkest);
|
|
142
|
+
--docsearch-text-color: var(--ifm-navbar-link-color);
|
|
143
|
+
--docsearch-searchbox-shadow: unset;
|
|
144
|
+
--docsearch-searchbox-background: transparent;
|
|
145
|
+
--docsearch-searchbox-focus-background: var(--ifm-hover-overlay);
|
|
146
|
+
|
|
147
|
+
--docsearch-muted-color: hsl(0 0% 85% / 1);
|
|
148
|
+
--docsearch-key-gradient: linear-gradient(
|
|
149
|
+
-26.5deg,
|
|
150
|
+
hsl(236.47deg 43.59% 77.06%),
|
|
151
|
+
hsl(236.84deg 34.55% 10.78%)
|
|
152
|
+
);
|
|
153
|
+
--docsearch-key-shadow:
|
|
154
|
+
inset 0 -2px 0 0 hsl(233.33deg 36% 24.51%),
|
|
155
|
+
inset 0 0 1px 1px hsl(232.11deg 34.86% 57.25%),
|
|
156
|
+
0 2px 2px 0 rgba(3, 4, 9, 0.3);
|
|
157
|
+
--docsearch-key-pressed-shadow:
|
|
158
|
+
inset 0 -2px 0 0 #282d55,
|
|
159
|
+
inset 0 0 1px 1px hsl(231.82deg 21.36% 40.39%),
|
|
160
|
+
0 1px 1px 0 hsl(230deg 50% 2.35% / 30.2%);
|
|
161
|
+
|
|
162
|
+
padding: var(--ifm-navbar-item-padding-vertical)
|
|
163
|
+
var(--ifm-navbar-item-padding-horizontal) !important;
|
|
164
|
+
padding-inline-end: calc(
|
|
165
|
+
var(--ifm-navbar-item-padding-horizontal) * 1.25
|
|
166
|
+
) !important;
|
|
167
|
+
|
|
168
|
+
.DocSearch-Button-Placeholder {
|
|
169
|
+
font-family: var(--ifm-heading-font-family);
|
|
170
|
+
color: var(--ifm-navbar-link-color);
|
|
171
|
+
font-weight: 600;
|
|
172
|
+
font-size: 1.1rem;
|
|
173
|
+
padding: 0;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.DocSearch-Button-Container {
|
|
177
|
+
gap: 0.5em;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.DocSearch-Search-Icon {
|
|
181
|
+
stroke-width: 1.75;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.DocSearch-Button-Keys {
|
|
185
|
+
display: none;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.DocSearch-Button-Key {
|
|
190
|
+
font-weight: 500;
|
|
191
|
+
}
|
package/css/root.css
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--white: hsl(0deg 0% 95%);
|
|
3
|
+
|
|
4
|
+
--ifm-color-primary: #fd4b2d;
|
|
5
|
+
--ifm-color-primary-dark: #fd320f;
|
|
6
|
+
--ifm-color-primary-darker: #fb2602;
|
|
7
|
+
--ifm-color-primary-darkest: #cf1f02;
|
|
8
|
+
--ifm-color-primary-light: #fd644b;
|
|
9
|
+
--ifm-color-primary-lighter: #fd7159;
|
|
10
|
+
--ifm-color-primary-lightest: #fe9786;
|
|
11
|
+
|
|
12
|
+
--ifm-hover-overlay: hsl(0deg 0% 100% / 25%);
|
|
13
|
+
|
|
14
|
+
--ifm-color-content: hsl(216 35% 3%);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
body {
|
|
18
|
+
overscroll-behavior-x: none;
|
|
19
|
+
}
|
package/css/sidebar.css
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
.theme-doc-sidebar-menu .dropdown {
|
|
2
|
+
display: block;
|
|
3
|
+
padding: 0;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.theme-doc-sidebar-menu .navbar__link {
|
|
7
|
+
color: var(--ifm-menu-color);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.theme-doc-sidebar-menu .dropdown__menu {
|
|
11
|
+
left: 0;
|
|
12
|
+
}
|
|
13
|
+
.theme-doc-sidebar-menu hr {
|
|
14
|
+
margin-top: calc(var(--ifm-hr-margin-vertical) / 2);
|
|
15
|
+
margin-right: -0.5rem;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.clean-list {
|
|
19
|
+
font-weight: 500;
|
|
20
|
+
}
|
package/index.js
ADDED
package/lib/common.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Common Docusaurus configuration utilities.
|
|
3
|
+
*
|
|
4
|
+
* @import { Config as DocusaurusConfig } from "@docusaurus/types"
|
|
5
|
+
* @import { UserThemeConfig } from "./theme.js"
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { deepmerge } from "deepmerge-ts";
|
|
9
|
+
import { createThemeConfig } from "./theme.js";
|
|
10
|
+
|
|
11
|
+
//#region Types
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @typedef {Omit<DocusaurusConfig, 'themeConfig'>} DocusaurusConfigBase
|
|
15
|
+
*
|
|
16
|
+
* Represents the base configuration for Docusaurus, excluding the theme configuration.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @typedef DocusaurusConfigBaseTheme
|
|
21
|
+
* @property {UserThemeConfig} themeConfig The theme configuration.
|
|
22
|
+
*
|
|
23
|
+
* Represents a configuration object, only including the theme configuration.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @typedef {Partial<DocusaurusConfigBase & DocusaurusConfigBaseTheme>} DocusaurusConfigInit
|
|
28
|
+
*
|
|
29
|
+
* The initial configuration for Docusaurus.
|
|
30
|
+
*
|
|
31
|
+
* @remarks
|
|
32
|
+
* This type is the result of Docusaurs's less than ideal type definitions.
|
|
33
|
+
* Much of the configuration is not strictly typed, however, this type
|
|
34
|
+
* is a good starting point.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
//#endregion
|
|
38
|
+
|
|
39
|
+
//#region Functions
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Create a Docusaurus configuration.
|
|
43
|
+
*
|
|
44
|
+
* @param {DocusaurusConfigInit} [overrides] The options to override.
|
|
45
|
+
* @returns {DocusaurusConfig}
|
|
46
|
+
*/
|
|
47
|
+
export function createDocusaurusConfig({ themeConfig, ...overrides } = {}) {
|
|
48
|
+
/**
|
|
49
|
+
* @type {DocusaurusConfig}
|
|
50
|
+
*/
|
|
51
|
+
const config = {
|
|
52
|
+
title: "authentik",
|
|
53
|
+
tagline: "Bring all of your authentication into a unified platform.",
|
|
54
|
+
url: "https://docs.goauthentik.io",
|
|
55
|
+
baseUrl: "/",
|
|
56
|
+
onBrokenLinks: "throw",
|
|
57
|
+
onBrokenAnchors: "throw",
|
|
58
|
+
favicon: "img/icon.png",
|
|
59
|
+
organizationName: "Authentik Security Inc.",
|
|
60
|
+
projectName: "authentik",
|
|
61
|
+
markdown: {
|
|
62
|
+
mermaid: true,
|
|
63
|
+
},
|
|
64
|
+
themeConfig: createThemeConfig(themeConfig),
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
return deepmerge(config, overrides);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//#endregion
|
package/lib/theme.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Docusaurus theme configuration for the authentik website.
|
|
3
|
+
*
|
|
4
|
+
* @import { UserThemeConfig as UserThemeConfigCommon } from "@docusaurus/theme-common";
|
|
5
|
+
* @import { UserThemeConfig as UserThemeConfigAlgolia } from "@docusaurus/theme-search-algolia";
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { deepmerge } from "deepmerge-ts";
|
|
9
|
+
import { themes as prismThemes } from "prism-react-renderer";
|
|
10
|
+
|
|
11
|
+
//#region Types
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Combined theme configuration for Docusaurus and Algolia.
|
|
15
|
+
*
|
|
16
|
+
* @typedef {UserThemeConfigCommon & UserThemeConfigAlgolia} UserThemeConfig
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
|
|
21
|
+
//#region Functions
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @returns {string} The copyright string.
|
|
25
|
+
*/
|
|
26
|
+
export function formatCopyright() {
|
|
27
|
+
return `Copyright © ${new Date().getFullYear()} Authentik Security Inc. Built with Docusaurus.`;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Creates a Prisma configuration for Docusaurus.
|
|
32
|
+
*
|
|
33
|
+
* @param {Partial<UserThemeConfigCommon['prism']>} overrides - Overrides for the default Prisma configuration.
|
|
34
|
+
* @returns {UserThemeConfigCommon['prism']}
|
|
35
|
+
*/
|
|
36
|
+
export function createPrismConfig(overrides = {}) {
|
|
37
|
+
/**
|
|
38
|
+
* @type {UserThemeConfigCommon['prism']}
|
|
39
|
+
*/
|
|
40
|
+
const prismConfig = {
|
|
41
|
+
theme: prismThemes.oneLight,
|
|
42
|
+
darkTheme: prismThemes.oneDark,
|
|
43
|
+
additionalLanguages: [
|
|
44
|
+
// ---
|
|
45
|
+
"apacheconf",
|
|
46
|
+
"diff",
|
|
47
|
+
"http",
|
|
48
|
+
"json",
|
|
49
|
+
"nginx",
|
|
50
|
+
"python",
|
|
51
|
+
"bash",
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
return deepmerge(prismConfig, overrides);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Creates a theme configuration for Docusaurus.
|
|
60
|
+
*
|
|
61
|
+
* @param {Partial<UserThemeConfig>} overrides - Overrides for the default theme configuration.
|
|
62
|
+
* @returns {UserThemeConfig}
|
|
63
|
+
*/
|
|
64
|
+
export function createThemeConfig({ prism, ...overrides } = {}) {
|
|
65
|
+
/**
|
|
66
|
+
* @type {UserThemeConfig}
|
|
67
|
+
*/
|
|
68
|
+
const themeConfig = {
|
|
69
|
+
image: "img/social.png",
|
|
70
|
+
tableOfContents: {
|
|
71
|
+
minHeadingLevel: 2,
|
|
72
|
+
maxHeadingLevel: 3,
|
|
73
|
+
},
|
|
74
|
+
colorMode: {
|
|
75
|
+
respectPrefersColorScheme: true,
|
|
76
|
+
},
|
|
77
|
+
algolia: {
|
|
78
|
+
appId: "36ROD0O0FV",
|
|
79
|
+
apiKey: "727db511300ca9aec5425645bbbddfb5",
|
|
80
|
+
},
|
|
81
|
+
prism: createPrismConfig(prism),
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
return deepmerge(themeConfig, overrides);
|
|
85
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@goauthentik/docusaurus-config",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "authentik's Docusaurus config",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"exports": {
|
|
8
|
+
"./package.json": "./package.json",
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./index.js",
|
|
11
|
+
"types": "./out/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./css/**/*": "./css/**/*"
|
|
14
|
+
},
|
|
15
|
+
"types": "./out/index.d.ts",
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"prism-react-renderer": "^2.4.1",
|
|
18
|
+
"deepmerge-ts": "^7.1.5"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@goauthentik/tsconfig": "^1.0.1",
|
|
22
|
+
"@docusaurus/core": "^3.7.0",
|
|
23
|
+
"@docusaurus/preset-classic": "^3.7.0",
|
|
24
|
+
"@docusaurus/theme-common": "^3.7.0",
|
|
25
|
+
"@docusaurus/theme-mermaid": "^3.7.0"
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"@docusaurus/core": "^3.7.0",
|
|
29
|
+
"@docusaurus/preset-classic": "^3.7.0",
|
|
30
|
+
"@docusaurus/theme-common": "^3.7.0",
|
|
31
|
+
"@docusaurus/theme-mermaid": "^3.7.0"
|
|
32
|
+
},
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=20.11"
|
|
35
|
+
},
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public"
|
|
38
|
+
},
|
|
39
|
+
"prettier": "@goauthentik/prettier-config"
|
|
40
|
+
}
|