diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index 2296848..de1c368 100644 Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ diff --git a/contributing/customisations.mdx b/contributing/customisations.mdx index a9df6c4..fff4769 100644 --- a/contributing/customisations.mdx +++ b/contributing/customisations.mdx @@ -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 diff --git a/contributing/plugins.mdx b/contributing/plugins.mdx new file mode 100644 index 0000000..2c70392 --- /dev/null +++ b/contributing/plugins.mdx @@ -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 `..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. diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 138eebf..7d04c19 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -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, ], [ diff --git a/package.json b/package.json index aeaee8f..0ac702a 100644 --- a/package.json +++ b/package.json @@ -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", @@ -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", diff --git a/yarn.lock b/yarn.lock index 06d0632..7fd04d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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" @@ -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 @@ -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 @@ -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"