Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .yarn/install-state.gz
Binary file not shown.
2 changes: 1 addition & 1 deletion contributing/customisations.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ We have a customised `DocItem\Footer` component which is the component used to d

### Plugin Directory

The plugin directory is a forked version of the Docusaurus.io showcase plugin. It has been modified to better suit displaying information on Docusaurus plugins. It is currently fed from a static list of plugins in `src/data/plugins.tsx`. This is changing to use a `YAML` file per plugin pulled from `data/plugins` in the future. This will make maintaining the plugin directory easier.
The plugin directory is powered by [`@homotechsual/docusaurus-plugin-showcase`](https://github.com/homotechsual/docusaurus-plugin-showcase). Each plugin is defined as a YAML file in `data/plugins/`. See [Adding a Plugin](/contributing/plugins/) for how to submit a new entry.

## Custom Frontmatter

Expand Down
62 changes: 62 additions & 0 deletions contributing/plugins.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
title: Adding a Plugin
description: How to submit a new plugin or theme to the Docusaurus Community Plugin Directory.
sidebar_position: 1
---

The plugin directory is powered by [`@homotechsual/docusaurus-plugin-showcase`](https://github.com/homotechsual/docusaurus-plugin-showcase). Each entry is a small YAML file in [`data/plugins/`](https://github.com/DocusaurusCommunity/website/tree/main/data/plugins) — one file per plugin.

## Before you submit

- The plugin must be **open source** with a publicly accessible source repository.
- The plugin must work with a current or recent stable release of Docusaurus.
- One entry per npm package (or logical plugin unit).

## Create your YAML file

Add a new file to `data/plugins/` named `<author>.<plugin-short-name>.yaml`. Use lowercase letters, numbers, and hyphens only.

```yaml
# yaml-language-server: $schema=https://docusaurus.community/schema/plugin/1.0.0.json
id: yourname.plugin-short-name
name: Your Plugin Name
description: A one-sentence description of what your plugin does.
preview: null
website: https://github.com/yourname/your-plugin
source: https://github.com/yourname/your-plugin
author: yourname
tags:
- utility
minimumVersion: null
status: maintained
npmPackages:
- your-npm-package-name
```

### Fields

| Field | Required | Notes |
|-------|----------|-------|
| `id` | Yes | `author.plugin-name` — must be unique |
| `name` | Yes | Display name shown in the directory |
| `description` | Yes | Short, one-sentence description |
| `preview` | Yes | URL to a preview image, or `null` to auto-generate |
| `website` | Yes | Public website or repository URL |
| `source` | No | Source code URL (required for acceptance) |
| `author` | No | Your GitHub username or organisation name |
| `tags` | No | See [available tags](#tags) below |
| `minimumVersion` | No | Minimum Docusaurus version, e.g. `3.0.0`, or `null` |
| `status` | No | `maintained`, `unmaintained`, or `unknown` |
| `npmPackages` | No | One or more npm package names |

### Tags

`search` · `api` · `utility` · `content` · `theme` · `markdown` · `analytics` · `integration` · `seo` · `editing` · `docusaurus`

## Submit a pull request

1. Fork [`DocusaurusCommunity/website`](https://github.com/DocusaurusCommunity/website) on GitHub.
2. Add your YAML file to `data/plugins/`.
3. Open a pull request against the `main` branch.

The CI build will validate your file against the schema. If validation fails, the build output will tell you which field is invalid.
3 changes: 2 additions & 1 deletion docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,8 @@ const config: Config = {
...pluginsPreset,
dataDir: 'data/plugins',
routeBasePath: 'plugindirectory',
submitUrl: 'https://github.com/homotechsual/docusaurus.community/discussions/3',
submitUrl: '/contributing/plugins/',
submitLabel: 'Add a plugin',
} satisfies ShowcasePresetOptions,
],
[
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
"@fortawesome/free-solid-svg-icons": "^7.2.0",
"@fortawesome/react-fontawesome": "^3.3.1",
"@homotechsual/docusaurus-plugin-plausible": "^1.1.1",
"@homotechsual/docusaurus-plugin-showcase": "^1.0.1",
"@homotechsual/docusaurus-plugin-showcase": "1.1.0",
"@iconify/react": "^6.0.2",
"@mdx-js/react": "^3.1.1",
"@popperjs/core": "^2.11.8",
Expand Down Expand Up @@ -58,7 +58,7 @@
"@docusaurus/tsconfig": "^3.10.1",
"@docusaurus/types": "^3.10.1",
"@types/jest": "^30.0.0",
"@types/node": "^26.0.0",
"@types/node": "^26.0.1",
"@types/react": "^19.2.17",
"jest": "^30.4.2",
"prettier": "3.8.4",
Expand Down
20 changes: 10 additions & 10 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4446,9 +4446,9 @@ __metadata:
languageName: node
linkType: hard

"@homotechsual/docusaurus-plugin-showcase@npm:^1.0.1":
version: 1.0.1
resolution: "@homotechsual/docusaurus-plugin-showcase@npm:1.0.1"
"@homotechsual/docusaurus-plugin-showcase@npm:1.1.0":
version: 1.1.0
resolution: "@homotechsual/docusaurus-plugin-showcase@npm:1.1.0"
dependencies:
"@docusaurus/faster": "npm:^3.10.1"
"@popperjs/core": "npm:^2.11.8"
Expand All @@ -4462,7 +4462,7 @@ __metadata:
"@docusaurus/core": ">=3.0.0 <5.0.0"
react: ~19.2.7
react-dom: ~19.2.7
checksum: 10c0/a5978758080be7eec9037460fdc2f390545ed150eab7f14971b87cc8afb37b09136ab9f6e57ece99d145ec0aea4a514211ce9f28dca0f011163191e23ecd9fca
checksum: 10c0/fd445e77530327298d39a040d6a95ec78879ee1fc1cf2ebbf27277929754a2b3e9447d22ea75c35b9050d8385d984dde12cce744fb5b21d55037fc9ab7038252
languageName: node
linkType: hard

Expand Down Expand Up @@ -6868,12 +6868,12 @@ __metadata:
languageName: node
linkType: hard

"@types/node@npm:^26.0.0":
version: 26.0.0
resolution: "@types/node@npm:26.0.0"
"@types/node@npm:^26.0.1":
version: 26.0.1
resolution: "@types/node@npm:26.0.1"
dependencies:
undici-types: "npm:~8.3.0"
checksum: 10c0/f36e21634fd8e8ded162ca486508bd8bb229d398a8d5541f6d8c1255968d4464e53327a77f403b216ef98e3b6f6956882eef83e4857d4bc2be9569dd55d37aae
checksum: 10c0/31d204333c70124da6bcac7d1f27d8980149fe3f95a8419bfcd19c3e5823705c0e370d71ac34399352e1263b2d5fc41c87af964ec81e5a05a32224d65d8d224e
languageName: node
linkType: hard

Expand Down Expand Up @@ -9836,13 +9836,13 @@ __metadata:
"@fortawesome/free-solid-svg-icons": "npm:^7.2.0"
"@fortawesome/react-fontawesome": "npm:^3.3.1"
"@homotechsual/docusaurus-plugin-plausible": "npm:^1.1.1"
"@homotechsual/docusaurus-plugin-showcase": "npm:^1.0.1"
"@homotechsual/docusaurus-plugin-showcase": "npm:1.1.0"
"@iconify/react": "npm:^6.0.2"
"@mdx-js/react": "npm:^3.1.1"
"@popperjs/core": "npm:^2.11.8"
"@swc/core": "npm:^1.15.43"
"@types/jest": "npm:^30.0.0"
"@types/node": "npm:^26.0.0"
"@types/node": "npm:^26.0.1"
"@types/react": "npm:^19.2.17"
"@types/react-dom": "npm:^19.2.3"
clsx: "npm:^2.1.1"
Expand Down