website/docs: Update deps. (#14397)

* website/docs: Update deps.

* website/docs: Port partial monorepo fixes. Fix build warnings.

* website/docs: Update Prettier.

* website/docs: Format. Update deps.

* website/docs: Remove empty entry.
This commit is contained in:
Teffen Ellis
2025-05-05 18:59:49 +02:00
committed by GitHub
parent d048f1ecbd
commit 264f59775c
25 changed files with 2224 additions and 1106 deletions

2
website/.gitignore vendored
View File

@ -3,6 +3,7 @@
# Production
/build
/out
/help
# Generated files
@ -25,4 +26,5 @@ yarn-error.log*
static/docker-compose.yml
static/schema.yml
static/releases.gen.json
docs/developer-docs/api/reference/**

View File

@ -1,7 +1,11 @@
# Ignore artifacts:
build
out
coverage
.docusaurus
node_modules
help
static
# TODO: Enable after monorepo formatting is cleaned up.
**/*.md
**/*.mdx

View File

@ -1 +0,0 @@
{}

View File

@ -0,0 +1,82 @@
import styles from "./styles.module.css";
const RADIUSProtocols = [
"PAP",
"CHAP",
"Digest",
"MS-CHAP",
"PEAP",
"MS-CHAPv2",
"Cisco LEAP",
"EAP-GTC",
"EAP-MD5",
"EAP-PWD",
] as const satisfies string[];
type RADIUSProtocol = (typeof RADIUSProtocols)[number];
const HashKinds = [
"Cleartext",
"NT",
"MD5",
"Salted MD5",
"SHA1",
"Salted SHA1",
"Unix Crypt",
] as const satisfies string[];
type HashKind = (typeof HashKinds)[number];
const supportMatrix: Record<HashKind, RADIUSProtocol[]> = {
"Cleartext": [
"PAP",
"CHAP",
"Digest",
"MS-CHAP",
"PEAP",
"MS-CHAPv2",
"Cisco LEAP",
"EAP-GTC",
"EAP-MD5",
"EAP-PWD",
],
"NT": ["PAP", "MS-CHAP", "PEAP", "MS-CHAPv2", "Cisco LEAP", "EAP-GTC"],
"MD5": ["PAP", "EAP-GTC"],
"Salted MD5": ["PAP", "EAP-GTC"],
"SHA1": ["PAP", "EAP-GTC"],
"Salted SHA1": ["PAP", "EAP-GTC", "EAP-PWD"],
"Unix Crypt": ["PAP", "EAP-GTC", "EAP-PWD"],
};
export const HashSupport: React.FC = () => {
return (
<table className={styles.table}>
<thead>
<tr>
<th></th>
{HashKinds.map((hashKind, i) => (
<th key={i}>{hashKind}</th>
))}
</tr>
</thead>
<tbody>
{RADIUSProtocols.map((radiusProtocol, i) => (
<tr key={i}>
<td>{radiusProtocol}</td>
{HashKinds.map((hashKind) => {
const protocols = supportMatrix[hashKind];
const supported = protocols.includes(radiusProtocol);
return (
<td data-supported={supported} key={hashKind}>
{supported ? "✓" : "✗"}
</td>
);
})}
</tr>
))}
</tbody>
</table>
);
};

View File

@ -2,7 +2,7 @@
title: RADIUS Provider
---
import { Check, X, AlertTriangle } from "react-feather";
import { HashSupport } from "./HashSupport";
You can configure a Radius provider for applications that don't support any other protocols or that require Radius.
@ -56,15 +56,4 @@ After creation, make sure to select the RADIUS property mapping in the RADIUS pr
The RADIUS provider only supports the [PAP](https://en.wikipedia.org/wiki/Password_Authentication_Protocol) (Password Authentication Protocol) protocol:
| | Clear-text | NT hash | MD5 hash | Salted MD5 hash | SHA1 hash | Salted SHA1 hash | Unix Crypt |
| ------------ | --------------- | --------------- | --------------- | --------------- | --------------- | ---------------- | --------------- |
| PAP | <Check></Check> | <Check></Check> | <Check></Check> | <Check></Check> | <Check></Check> | <Check></Check> | <Check></Check> |
| CHAP | <Check></Check> | <X></X> | <X></X> | <X></X> | <X></X> | <X></X> | <X></X> |
| Digest | <Check></Check> | <X></X> | <X></X> | <X></X> | <X></X> | <X></X> | <X></X> |
| MS-CHAP | <Check></Check> | <Check></Check> | <X></X> | <X></X> | <X></X> | <X></X> | <X></X> |
| PEAP | <Check></Check> | <Check></Check> | <X></X> | <X></X> | <X></X> | <X></X> | <X></X> |
| EAP-MSCHAPv2 | <Check></Check> | <Check></Check> | <X></X> | <X></X> | <X></X> | <X></X> | <X></X> |
| Cisco LEAP | <Check></Check> | <Check></Check> | <X></X> | <X></X> | <X></X> | <X></X> | <X></X> |
| EAP-GTC | <Check></Check> | <Check></Check> | <Check></Check> | <Check></Check> | <Check></Check> | <Check></Check> | <Check></Check> |
| EAP-MD5 | <Check></Check> | <X></X> | <X></X> | <X></X> | <X></X> | <X></X> | <X></X> |
| EAP-PWD | <Check></Check> | <X></X> | <X></X> | <X></X> | <X></X> | <Check></Check> | <Check></Check> |
<HashSupport />

View File

@ -0,0 +1,20 @@
.table td {
text-align: center;
font-weight: bold;
&:first-child {
text-align: right;
width: 13ch;
}
&:not(:first-child) {
width: 10ch;
}
&[data-supported="true"] {
color: var(--ifm-color-success-dark);
}
&[data-supported="false"] {
color: var(--ifm-color-danger-dark);
}
}

View File

@ -148,7 +148,6 @@ We'll be publishing a security Issue (CVE-2022-xxxxx) and accompanying fix on _d
<details>
<summary>Mailing list template</summary>
<p>
Subject: `Release of authentik Security releases 2022.10.3 and 2022.11.3`
@ -158,12 +157,10 @@ The security advisory for CVE-2022-xxxxx has been published: https://github.com/
Releases 2022.10.3 and 2022.11.3 with fixes included are available here: https://github.com/goauthentik/authentik/releases
```
</p>
</details>
<details>
<summary>Discord template</summary>
<p>
```markdown
[...existing announcement...]
@ -175,5 +172,4 @@ Advisory for for CVE-2022-xxxxx has been published here https://github.com/goaut
The fixed versions 2022.10.3 and 2022.11.3 are available here: https://github.com/goauthentik/authentik/releases
```
</p>
</details>

View File

@ -1,13 +1,14 @@
import type { Config } from "@docusaurus/types";
import type * as Preset from "@docusaurus/preset-classic";
import { themes as prismThemes } from "prism-react-renderer";
import type { Config } from "@docusaurus/types";
import type * as OpenApiPlugin from "docusaurus-plugin-openapi-docs";
import { themes as prismThemes } from "prism-react-renderer";
import remarkDirective from "remark-directive";
import remarkGithub, { BuildUrlValues } from "remark-github";
import { defaultBuildUrl } from "remark-github";
import remarkDirective from "remark-directive";
import remarkVersionDirective from "./remark/version-directive.js";
import remarkPreviewDirective from "./remark/preview-directive.js";
import remarkSupportDirective from "./remark/support-directive.js";
import remarkVersionDirective from "./remark/version-directive.js";
const createConfig = (): Config => {
return {
@ -59,16 +60,16 @@ const createConfig = (): Config => {
target: "_self",
},
{
href: "https://github.com/goauthentik/authentik",
"href": "https://github.com/goauthentik/authentik",
"data-icon": "github",
"aria-label": "GitHub",
position: "right",
"position": "right",
},
{
href: "https://goauthentik.io/discord",
"href": "https://goauthentik.io/discord",
"data-icon": "discord",
"aria-label": "Discord",
position: "right",
"position": "right",
},
],
},
@ -111,8 +112,7 @@ const createConfig = (): Config => {
id: "docs",
sidebarPath: "./sidebars.js",
showLastUpdateTime: false,
editUrl:
"https://github.com/goauthentik/authentik/edit/main/website/",
editUrl: "https://github.com/goauthentik/authentik/edit/main/website/",
docItemComponent: "@theme/ApiItem",
beforeDefaultRemarkPlugins: [
@ -128,8 +128,7 @@ const createConfig = (): Config => {
repository: "goauthentik/authentik",
// Only replace issues and PR links
buildUrl: (values: BuildUrlValues) => {
return values.type === "issue" ||
values.type === "mention"
return values.type === "issue" || values.type === "mention"
? defaultBuildUrl(values)
: false;
},
@ -138,9 +137,7 @@ const createConfig = (): Config => {
],
},
theme: {
customCss: require.resolve(
"@goauthentik/docusaurus-config/css/index.css",
),
customCss: require.resolve("@goauthentik/docusaurus-config/css/index.css"),
},
} satisfies Preset.Options,
],
@ -153,8 +150,7 @@ const createConfig = (): Config => {
path: "integrations",
routeBasePath: "integrations",
sidebarPath: "./sidebarsIntegrations.js",
editUrl:
"https://github.com/goauthentik/authentik/edit/main/website/",
editUrl: "https://github.com/goauthentik/authentik/edit/main/website/",
},
],
[

2873
website/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,25 @@
{
"name": "@goauthentik/website-docs",
"name": "@goauthentik/docs",
"version": "0.0.0",
"private": true,
"license": "MIT",
"private": true,
"scripts": {
"build": "cp ../docker-compose.yml static/docker-compose.yml && cp ../schema.yml static/schema.yml && docusaurus gen-api-docs all && cross-env NODE_OPTIONS='--max_old_space_size=65536' docusaurus build",
"build-bundled": "cp ../schema.yml static/schema.yml && docusaurus gen-api-docs all && cross-env NODE_OPTIONS='--max_old_space_size=65536' docusaurus build",
"build": "run-s build:docker build:schema build:api build:docusaurus",
"build-bundled": "run-s build:schema build:api build:docusaurus",
"build:api": "docusaurus gen-api-docs all",
"build:docker": "cp ../docker-compose.yml ./static/docker-compose.yml",
"build:docusaurus": "cross-env NODE_OPTIONS='--max_old_space_size=65536' docusaurus build",
"build:schema": "cp -f ../schema.yml ./static/schema.yml",
"deploy": "docusaurus deploy",
"docusaurus": "docusaurus",
"lint:lockfile": "wireit",
"lint:lockfile": "echo 'Skipping lockfile linting'",
"prettier": "prettier --write .",
"prettier-check": "prettier --check .",
"serve": "docusaurus serve",
"start": "docusaurus start",
"swizzle": "docusaurus swizzle",
"test": "node --test",
"watch": "cp -f ../schema.yml ./static/schema.yml && docusaurus gen-api-docs all && docusaurus start"
"watch": "run-s build:schema build:api start"
},
"dependencies": {
"@docusaurus/core": "^3.7.0",
@ -24,45 +29,35 @@
"@docusaurus/preset-classic": "^3.7.0",
"@docusaurus/theme-common": "^3.7.0",
"@docusaurus/theme-mermaid": "^3.7.0",
"@goauthentik/docusaurus-config": "^1.0.4",
"@goauthentik/docusaurus-config": "^1.0.6",
"@goauthentik/tsconfig": "^1.0.4",
"@mdx-js/react": "^3.1.0",
"clsx": "^2.1.1",
"disqus-react": "^1.1.6",
"docusaurus-plugin-openapi-docs": "4.3.4",
"docusaurus-theme-openapi-docs": "4.3.4",
"docusaurus-plugin-openapi-docs": "^4.4.0",
"docusaurus-theme-openapi-docs": "^4.4.0",
"postcss": "^8.5.3",
"prism-react-renderer": "^2.4.1",
"react": "^18.3.1",
"react-before-after-slider-component": "^1.1.8",
"react-dom": "^18.3.1",
"react-feather": "^2.0.10",
"react-toggle": "^4.1.3",
"remark-directive": "^4.0.0",
"remark-github": "^12.0.0",
"semver": "^7.7.1"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@docusaurus/module-type-aliases": "^3.3.2",
"@docusaurus/module-type-aliases": "^3.7.0",
"@docusaurus/tsconfig": "^3.7.0",
"@docusaurus/types": "^3.3.2",
"@docusaurus/types": "^3.7.0",
"@goauthentik/prettier-config": "^1.0.4",
"@types/lodash": "^4.17.16",
"@types/postman-collection": "^3.5.10",
"@types/react": "^18.3.13",
"@types/semver": "^7.7.0",
"cross-env": "^7.0.3",
"prettier": "3.5.3",
"typescript": "~5.8.3",
"wireit": "^0.14.12"
"fast-glob": "^3.3.3",
"npm-run-all": "^4.1.5",
"prettier": "^3.5.3",
"typescript": "~5.8.2"
},
"optionalDependencies": {
"@rspack/binding-darwin-arm64": "1.3.8",
@ -78,14 +73,31 @@
"lightningcss-linux-arm64-gnu": "1.29.3",
"lightningcss-linux-x64-gnu": "1.29.3"
},
"wireit": {
"lint:lockfile": {
"__comment": "The lockfile-lint package does not have an option to ensure resolved hashes are set everywhere",
"shell": true,
"command": "[ -z \"$(jq -r '.packages | to_entries[] | select((.key | contains(\"node_modules\")) and (.value | has(\"resolved\") | not)) | .key' < package-lock.json)\" ]"
}
},
"engines": {
"node": ">=20"
"node": ">=22.14.0"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"prettier": "@goauthentik/prettier-config",
"overrides": {
"fork-ts-checker-webpack-plugin": {
"glob": "^11.0.1"
},
"postman-collection": {
"@faker-js/faker": "^6.3.1"
},
"webpack-dev-server": {
"rimraf": "6.0.1"
}
}
}

View File

@ -1,9 +1,8 @@
import "mdast-util-to-hast";
import "mdast-util-directive";
import { h } from "hastscript";
import { Root } from "mdast";
import { visit, SKIP } from "unist-util-visit";
import "mdast-util-directive";
import "mdast-util-to-hast";
import { SKIP, visit } from "unist-util-visit";
/**
* MDAST plugin to transform `ak-preview` directives into preview badges.
@ -17,10 +16,10 @@ function remarkPreviewDirective() {
const hast = h("span", {
...node.attributes,
className: "badge badge--preview",
title: `This feature is in preview and may change in the future.`,
"className": "badge badge--preview",
"title": `This feature is in preview and may change in the future.`,
"aria-description": "Preview badge",
role: "img",
"role": "img",
});
data.hName = hast.tagName;

View File

@ -1,10 +1,9 @@
import "mdast-util-to-hast";
import "mdast-util-directive";
import { h } from "hastscript";
import { Root } from "mdast";
import { visit, SKIP } from "unist-util-visit";
import "mdast-util-directive";
import "mdast-util-to-hast";
import { coerce } from "semver";
import { SKIP, visit } from "unist-util-visit";
/**
* Support levels for authentik.
@ -52,10 +51,10 @@ function remarkSupportDirective() {
const hast = h("span", {
...node.attributes,
className: `badge badge--support-${level}`,
title: `This feature is supported at the ${label} level.`,
"className": `badge badge--support-${level}`,
"title": `This feature is supported at the ${label} level.`,
"aria-description": "Support level badge",
role: "img",
"role": "img",
});
data.hName = hast.tagName;

View File

@ -1,10 +1,9 @@
import "mdast-util-to-hast";
import "mdast-util-directive";
import { h } from "hastscript";
import { Root } from "mdast";
import { visit, SKIP } from "unist-util-visit";
import "mdast-util-directive";
import "mdast-util-to-hast";
import { coerce } from "semver";
import { SKIP, visit } from "unist-util-visit";
/**
* MDAST plugin to transform `ak-version` directives into version badges.
@ -40,19 +39,17 @@ function remarkVersionDirective() {
const yearCutoff = new Date().getFullYear() - 2;
if (parsed.major <= yearCutoff) {
throw new Error(
`Semver version <= ${yearCutoff} is not supported: ${semver}`,
);
throw new Error(`Semver version <= ${yearCutoff} is not supported: ${semver}`);
}
const data = node.data || (node.data = {});
const hast = h("span", {
...node.attributes,
className: "badge badge--version",
title: `Available in authentik ${parsed.format()} and later`,
"className": "badge badge--version",
"title": `Available in authentik ${parsed.format()} and later`,
"aria-description": "Version badge",
role: "img",
"role": "img",
});
data.hName = hast.tagName;

View File

@ -1,5 +1,5 @@
import { generateVersionDropdown } from "./src/utils.js";
import apiReference from "./docs/developer-docs/api/reference/sidebar";
import { generateVersionDropdown } from "./src/utils.js";
const releases = [
"releases/2025/v2025.4",
@ -148,10 +148,7 @@ export default {
type: "doc",
id: "add-secure-apps/providers/property-mappings/index",
},
items: [
"add-secure-apps/providers/property-mappings/expression",
,
],
items: ["add-secure-apps/providers/property-mappings/expression"],
},
{
type: "category",
@ -172,9 +169,7 @@ export default {
type: "doc",
id: "add-secure-apps/providers/ldap/index",
},
items: [
"add-secure-apps/providers/ldap/generic_setup",
],
items: ["add-secure-apps/providers/ldap/generic_setup"],
},
{
type: "category",
@ -248,9 +243,7 @@ export default {
type: "doc",
id: "add-secure-apps/providers/ssf/index",
},
items: [
"add-secure-apps/providers/ssf/create-ssf-provider",
],
items: ["add-secure-apps/providers/ssf/create-ssf-provider"],
},
],
},
@ -328,9 +321,7 @@ export default {
type: "doc",
id: "add-secure-apps/flows-stages/bindings/index",
},
items: [
"add-secure-apps/flows-stages/bindings/work_with_bindings",
],
items: ["add-secure-apps/flows-stages/bindings/work_with_bindings"],
},
],
},
@ -473,10 +464,7 @@ export default {
type: "doc",
id: "users-sources/groups/index",
},
items: [
"users-sources/groups/manage_groups",
"users-sources/groups/group_ref",
],
items: ["users-sources/groups/manage_groups", "users-sources/groups/group_ref"],
},
{
type: "category",
@ -521,9 +509,7 @@ export default {
type: "doc",
id: "users-sources/sources/protocols/kerberos/index",
},
items: [
"users-sources/sources/protocols/kerberos/browser",
],
items: ["users-sources/sources/protocols/kerberos/browser"],
},
"users-sources/sources/protocols/ldap/index",
"users-sources/sources/protocols/oauth/index",
@ -538,9 +524,7 @@ export default {
type: "doc",
id: "users-sources/sources/property-mappings/index",
},
items: [
"users-sources/sources/property-mappings/expressions",
],
items: ["users-sources/sources/property-mappings/expressions"],
},
{
type: "category",
@ -610,10 +594,7 @@ export default {
type: "doc",
id: "sys-mgmt/events/index",
},
items: [
"sys-mgmt/events/notifications",
"sys-mgmt/events/transports",
],
items: ["sys-mgmt/events/notifications", "sys-mgmt/events/transports"],
},
"sys-mgmt/certificates",
"sys-mgmt/settings",

View File

@ -1,8 +1,5 @@
import { SupportLevelToLabel, isSupportLevel } from "@site/remark/support-directive";
import React from "react";
import {
isSupportLevel,
SupportLevelToLabel,
} from "@site/remark/support-directive";
export interface SupportBadgeProps {
level: string;

View File

@ -18,9 +18,7 @@ export const VersionBadge: React.FC<AuthentikVersionProps> = ({ semver }) => {
const yearCutoff = new Date().getFullYear() - 2;
if (parsed.major <= yearCutoff) {
throw new Error(
`Semver version <= ${yearCutoff} is not supported: ${semver}`,
);
throw new Error(`Semver version <= ${yearCutoff} is not supported: ${semver}`);
}
return (

View File

@ -14,8 +14,7 @@ import { useDoc } from "@docusaurus/plugin-content-docs/client";
*/
export function useSyntheticTitle(): string | null {
const { metadata, frontMatter, contentTitle } = useDoc();
const shouldRender =
!frontMatter.hide_title && typeof contentTitle === "undefined";
const shouldRender = !frontMatter.hide_title && typeof contentTitle === "undefined";
if (!shouldRender) {
return null;
}

View File

@ -1,5 +1,5 @@
import React from "react";
import { Redirect } from "@docusaurus/router";
import React from "react";
function Home() {
return <Redirect to="/docs" />;

View File

@ -7,21 +7,17 @@
* the content of a documentation page. However, it also adds support for
* support badges, and Authentik version badges.
*/
import React from "react";
import clsx from "clsx";
import { ThemeClassNames } from "@docusaurus/theme-common";
import {
DocContextValue,
useDoc,
} from "@docusaurus/plugin-content-docs/client";
import Heading from "@theme/Heading";
import MDXContent from "@theme/MDXContent";
import type { Props } from "@theme/DocItem/Content";
import { DocFrontMatter } from "@docusaurus/plugin-content-docs";
import { useSyntheticTitle } from "@site/src/hooks/title";
import { DocContextValue, useDoc } from "@docusaurus/plugin-content-docs/client";
import { ThemeClassNames } from "@docusaurus/theme-common";
import { SupportBadge } from "@site/src/components/SupportBadge";
import { VersionBadge } from "@site/src/components/VersionBadge";
import { useSyntheticTitle } from "@site/src/hooks/title";
import type { Props } from "@theme/DocItem/Content";
import Heading from "@theme/Heading";
import MDXContent from "@theme/MDXContent";
import clsx from "clsx";
import React from "react";
interface SwizzledDocFrontMatter extends DocFrontMatter {
support_level?: string;
@ -37,12 +33,8 @@ interface SwizzledDocContextValue extends DocContextValue {
const DocItemContent: React.FC<Props> = ({ children }) => {
const syntheticTitle = useSyntheticTitle();
const { frontMatter } = useDoc() as SwizzledDocContextValue;
const {
support_level,
authentik_version,
authentik_enterprise,
authentik_preview,
} = frontMatter;
const { support_level, authentik_version, authentik_enterprise, authentik_preview } =
frontMatter;
const badges: JSX.Element[] = [];
@ -71,9 +63,7 @@ const DocItemContent: React.FC<Props> = ({ children }) => {
{badges.length ? (
<p className="badge-group">
{badges.map((badge, index) => (
<React.Fragment key={index}>
{badge}
</React.Fragment>
<React.Fragment key={index}>{badge}</React.Fragment>
))}
</p>
) : null}

View File

@ -1,13 +1,13 @@
import React, { type ReactNode } from "react";
import clsx from "clsx";
import EditThisPage from "@theme/EditThisPage";
import type { Props } from "@theme/EditMetaRow";
import LastUpdated from "@theme/LastUpdated";
import Admonition from "@theme/Admonition";
import styles from "./styles.module.css";
import Translate from "@docusaurus/Translate";
import Admonition from "@theme/Admonition";
import IconNote from "@theme/Admonition/Icon/Note";
import type { Props } from "@theme/EditMetaRow";
import EditThisPage from "@theme/EditThisPage";
import LastUpdated from "@theme/LastUpdated";
import clsx from "clsx";
import React, { type ReactNode } from "react";
import styles from "./styles.module.css";
const EditMetaRow: React.FC<Props> = ({
className,
@ -40,11 +40,9 @@ const EditMetaRow: React.FC<Props> = ({
id="theme.common.contributor.footerDescription1"
description="The description for the contribution footer"
>
We welcome your knowledge and expertise. If you see
areas of the documentation that you can improve (fix a
typo, correct a technical detail, add additional
context, etc.) we would really appreciate your
contribution.
We welcome your knowledge and expertise. If you see areas of the
documentation that you can improve (fix a typo, correct a technical detail,
add additional context, etc.) we would really appreciate your contribution.
</Translate>
</p>
@ -109,10 +107,7 @@ const EditMetaRow: React.FC<Props> = ({
<div className="row">
<div className={clsx("col", styles.lastUpdated)}>
{(lastUpdatedAt || lastUpdatedBy) && (
<LastUpdated
lastUpdatedAt={lastUpdatedAt}
lastUpdatedBy={lastUpdatedBy}
/>
<LastUpdated lastUpdatedAt={lastUpdatedAt} lastUpdatedBy={lastUpdatedBy} />
)}
</div>
</div>

View File

@ -52,8 +52,7 @@ html[data-theme="dark"] {
display: flex;
gap: var(--ifm-spacing-horizontal);
justify-content: center;
margin: calc(var(--ifm-spacing-horizontal) * 2) 0
var(--ifm-spacing-horizontal);
margin: calc(var(--ifm-spacing-horizontal) * 2) 0 var(--ifm-spacing-horizontal);
padding: 0;
}

View File

@ -1,8 +1,8 @@
import React, { type ReactNode } from "react";
import Link from "@docusaurus/Link";
import Translate from "@docusaurus/Translate";
import { ThemeClassNames } from "@docusaurus/theme-common";
import Link from "@docusaurus/Link";
import type { Props } from "@theme/EditThisPage";
import React, { type ReactNode } from "react";
export default function EditThisPage({ editUrl }: Props): ReactNode {
return (

View File

@ -1,7 +1,5 @@
export function generateVersionDropdown(allReleases) {
const releases = allReleases.filter(
(release) => typeof release === "string",
);
const releases = allReleases.filter((release) => typeof release === "string");
const latest = releases[0].replace(/releases\/\d+\/v/, "");
return `<div class="navbar__item dropdown dropdown--hoverable dropdown--right">
<div aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link menu__link">

View File

@ -1,7 +1,8 @@
import test from "node:test";
import FastGlob from "fast-glob";
import assert from "node:assert";
import test from "node:test";
import sidebar from "../sidebarsIntegrations.js";
import glob from "glob";
const getSidebarItems = () => {
const allItems = [];
@ -27,8 +28,7 @@ test("ensure all services have a sidebar entry", (t) => {
.filter((entry) => entry.startsWith("services/"))
.map((entry) => entry.replace("/index", ""))
.map((entry) => entry.replace("services/", ""));
const servicesFiles = glob
.sync("integrations/**/*.+(md|mdx)")
const servicesFiles = FastGlob.sync("integrations/**/*.+(md|mdx)")
.filter((entry) => entry.startsWith("integrations/services/"))
.map((entry) => entry.replace("integrations/services/", ""))
.map((entry) => entry.replace(/\/index\.mdx?/, ""))
@ -45,8 +45,7 @@ test("ensure all sources have a sidebar entry", (t) => {
.filter((entry) => entry.startsWith("sources/"))
.map((entry) => entry.replace("/index", ""))
.map((entry) => entry.replace("sources/", ""));
const sourceFiles = glob
.sync("integrations/**/*.+(md|mdx)")
const sourceFiles = FastGlob.sync("integrations/**/*.+(md|mdx)")
.filter((entry) => entry.startsWith("integrations/sources/"))
.map((entry) => entry.replace("integrations/sources/", ""))
.map((entry) => entry.replace(/\/index\.mdx?/, ""))

View File

@ -1,8 +1,32 @@
// @file TSConfig used by the docs package during development.
//
// @remarks
// While this configuration will influence the IDE experience,
// Docusaurus will instead use an internal configuration to build the site.
//
// @see https://docusaurus.io/docs/typescript-support
{
// This file is not used in compilation. It is here just for a nice editor experience.
"extends": "@docusaurus/tsconfig",
"extends": "@goauthentik/tsconfig",
"compilerOptions": {
"baseUrl": "."
"noEmit": true,
"checkJs": true,
"allowJs": true,
"composite": false,
"esModuleInterop": true,
"moduleResolution": "bundler",
"module": "esnext",
"jsx": "preserve",
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"baseUrl": ".",
"paths": {
"@site/*": ["./*"]
}
},
"exclude": [".docusaurus", "build", "node_modules"]
"exclude": [
// ---
"./out/**/*",
"./dist/**/*",
".docusaurus",
"build"
]
}