@homotechsual/docusaurus-plugin-showcase 0.1.0 → 1.0.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/README.md CHANGED
@@ -1,14 +1,29 @@
1
- # @homotechsual/docusaurus-plugin-showcase
1
+ # Showcase for Docusaurus
2
+
3
+ [![NPM Version](https://img.shields.io/npm/v/%40homotechsual%2Fdocusaurus-plugin-showcase?style=for-the-badge)
4
+ ](https://www.npmjs.com/package/@homotechsual/docusaurus-plugin-showcase)
5
+ [![NPM Last Update](https://img.shields.io/npm/last-update/%40homotechsual%2Fdocusaurus-plugin-showcase?style=for-the-badge)](https://www.npmjs.com/package/@homotechsual/docusaurus-plugin-showcase)
6
+ [![NPM Downloads](https://img.shields.io/npm/dy/%40homotechsual%2Fdocusaurus-plugin-showcase?style=for-the-badge)
7
+ ](https://www.npmjs.com/package/@homotechsual/docusaurus-plugin-showcase)
2
8
 
3
9
  A Docusaurus plugin for building swizzleable showcase / directory pages from YAML data files.
4
10
 
11
+ **[Full documentation →](https://showcase.docusaurus.homotechsual.dev)**
12
+
5
13
  ## Installation
6
14
 
7
15
  ```bash
8
16
  npm install @homotechsual/docusaurus-plugin-showcase
17
+ # or
18
+ yarn add @homotechsual/docusaurus-plugin-showcase
9
19
  ```
10
20
 
11
- ## Quick start (plugins directory preset)
21
+ ## Quick start
22
+
23
+ Two built-in presets cover the most common use cases:
24
+
25
+ - **`pluginsPreset`** — a Docusaurus plugin directory with 12 category tags and 3 maintenance statuses.
26
+ - **`sitesPreset`** — mirrors the tag set from [docusaurus.io/showcase](https://docusaurus.io/showcase).
12
27
 
13
28
  ```ts
14
29
  // docusaurus.config.ts
@@ -18,75 +33,14 @@ export default {
18
33
  plugins: [
19
34
  ['@homotechsual/docusaurus-plugin-showcase', {
20
35
  ...pluginsPreset,
21
- dataDir: 'data/plugins', // directory of .yaml files relative to site root
22
- routeBasePath: 'plugins', // page available at /plugins
23
- submitUrl: 'https://github.com/your-org/your-repo/discussions/1',
36
+ dataDir: 'data/plugins',
37
+ routeBasePath: 'plugins',
24
38
  }],
25
39
  ],
26
40
  }
27
41
  ```
28
42
 
29
- ## YAML file format (plugins preset)
30
-
31
- Each plugin is a separate `.yaml` file. Add the language-server comment for autocomplete:
32
-
33
- ```yaml
34
- # yaml-language-server: $schema=../../../node_modules/@homotechsual/docusaurus-plugin-showcase/schema/plugins-preset/1.0.0.json
35
- id: author.plugin-name
36
- name: My Plugin
37
- description: A useful Docusaurus plugin.
38
- website: https://github.com/author/plugin-name
39
- source: https://github.com/author/plugin-name
40
- author: author
41
- tags:
42
- - utility
43
- status: maintained
44
- npmPackages:
45
- - plugin-name
46
- ```
47
-
48
- ## Custom configuration
49
-
50
- Use core types to define your own tags and statuses for any showcase use case:
51
-
52
- ```ts
53
- import type { PluginOptions } from '@homotechsual/docusaurus-plugin-showcase'
54
-
55
- const options: PluginOptions = {
56
- dataDir: 'data/showcase',
57
- routeBasePath: 'showcase',
58
- pageTitle: 'Community Showcase',
59
- pageDescription: 'Sites built with our framework.',
60
- tags: {
61
- featured: { label: 'Featured', description: 'Hand-picked featured sites.', color: '#e9669e' },
62
- community: { label: 'Community', description: 'Built by the community.', color: '#3ecc5f' },
63
- },
64
- statuses: {
65
- active: { label: 'Active', description: 'Actively maintained.', icon: 'circle-check' },
66
- },
67
- favouriteTag: 'featured',
68
- }
69
- ```
70
-
71
- ## Swizzling components
72
-
73
- All theme components are swizzleable:
74
-
75
- ```bash
76
- npx docusaurus swizzle @homotechsual/docusaurus-plugin-showcase ShowcaseCard
77
- ```
78
-
79
- Swizzleable components: `ShowcasePage` (unsafe/wrap), `ShowcaseCard` (safe), `ShowcaseFilters` (safe), `ShowcaseFilterToggle` (safe), `ShowcaseTagSelect` (unsafe/wrap), `ShowcaseStatusSelect` (unsafe/wrap), `ShowcaseTooltip` (safe).
80
-
81
- ## Initial publish
82
-
83
- Before OIDC trusted publishing works, publish once manually to claim the package name:
84
-
85
- ```bash
86
- npm publish --access public
87
- ```
88
-
89
- Then configure the trust policy on npmjs.org: package → Settings → Publishing → Granular access tokens → add the GitHub repo + `npm` environment.
43
+ For custom tags, statuses, JSON Schema validation, co-located images, swizzling, and all configuration options, see the [docs](https://showcase.docusaurus.homotechsual.dev).
90
44
 
91
45
  ## Licence
92
46
 
@@ -35,6 +35,7 @@ export type PluginOptions = {
35
35
  pageDescription?: string | null;
36
36
  submitUrl?: string | null;
37
37
  schemaPath?: string | null;
38
+ screenshotUrl?: string | null;
38
39
  };
39
40
  export type ShowcasePageData = {
40
41
  items: ShowcaseItem[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACnC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,OAAO,EAAE,aAAa,CAAA;CACvB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACnC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,OAAO,EAAE,aAAa,CAAA;CACvB,CAAA"}
@@ -1,3 +1,4 @@
1
1
  export declare function sortBy<T>(array: T[], getter: (item: T) => string | number | boolean): T[];
2
2
  export declare function toggleListItem<T>(list: T[], item: T): T[];
3
+ export declare function resolveScreenshotUrl(template: string, website: string): string;
3
4
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,CAAC,EACtB,KAAK,EAAE,CAAC,EAAE,EACV,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,GAC7C,CAAC,EAAE,CAUL;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAMzD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,CAAC,EACtB,KAAK,EAAE,CAAC,EAAE,EACV,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,GAC7C,CAAC,EAAE,CAUL;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAMzD;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAI9E"}
package/lib/core/utils.js CHANGED
@@ -19,4 +19,9 @@ export function toggleListItem(list, item) {
19
19
  copy.splice(index, 1);
20
20
  return copy;
21
21
  }
22
+ export function resolveScreenshotUrl(template, website) {
23
+ return template
24
+ .replace('{url}', encodeURIComponent(website))
25
+ .replace('{rawUrl}', website);
26
+ }
22
27
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CACpB,KAAU,EACV,MAA8C;IAE9C,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;IACvB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAA;QACrB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC,CAAA;QACtB,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAI,IAAS,EAAE,IAAO;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAA;IACxC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACtB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACrB,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CACpB,KAAU,EACV,MAA8C;IAE9C,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;IACvB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAA;QACrB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC,CAAA;QACtB,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAI,IAAS,EAAE,IAAO;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAA;IACxC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACtB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACrB,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,OAAe;IACpE,OAAO,QAAQ;SACZ,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;SAC7C,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AA0CtE,wBAAgB,eAAe,CAAC,EAC9B,OAAO,GACR,EAAE,uBAAuB,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,aAAa,CAkBjE;wBAE2C,CAC1C,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,KACb,MAAM,CAAC,gBAAgB,CAAC;AAH7B,wBAG6B"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AA0CtE,wBAAgB,eAAe,CAAC,EAC9B,OAAO,GACR,EAAE,uBAAuB,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,aAAa,CAmBjE;wBAE2C,CAC1C,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,KACb,MAAM,CAAC,gBAAgB,CAAC;AAH7B,wBAG6B"}
package/lib/plugin.js CHANGED
@@ -39,6 +39,7 @@ export function validateOptions({ options, }) {
39
39
  dataDir: opts.dataDir,
40
40
  tags: opts.tags,
41
41
  statuses: opts.statuses ?? {},
42
+ screenshotUrl: opts.screenshotUrl ?? null,
42
43
  };
43
44
  }
44
45
  export default pluginShowcase;
package/lib/plugin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,SAAS,cAAc,CACrB,OAAoB,EACpB,OAAsB;IAEtB,OAAO;QACL,IAAI,EAAE,4BAA4B;QAElC,YAAY;YACV,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC/D,CAAC;QAED,KAAK,CAAC,WAAW;YACf,MAAM,KAAK,GAAG,MAAM,iBAAiB,CACnC,OAAO,CAAC,OAAO,EACf,OAAO,EACP,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAC3B,CAAA;YACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;QAC3B,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;YACtC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;YAExC,MAAM,gBAAgB,GAAG,MAAM,UAAU,CACvC,kBAAkB,EAClB,sBAAsB,CAAC,OAAO,CAAC,CAChC,CAAA;YAED,QAAQ,CAAC;gBACP,IAAI,EAAE,IAAI,OAAO,CAAC,aAAa,EAAE;gBACjC,SAAS,EAAE,qBAAqB;gBAChC,OAAO,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE;gBACvC,KAAK,EAAE,IAAI;aACZ,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,GACyC;IAChD,MAAM,IAAI,GAAG,OAAiC,CAAA;IAE9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IACnF,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACjG,CAAC;IAED,OAAO;QACL,EAAE,EAAE,SAAS;QACb,aAAa,EAAE,UAAU;QACzB,GAAG,IAAI;QACP,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;KAC9B,CAAA;AACH,CAAC;AAED,eAAe,cAGc,CAAA"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,SAAS,cAAc,CACrB,OAAoB,EACpB,OAAsB;IAEtB,OAAO;QACL,IAAI,EAAE,4BAA4B;QAElC,YAAY;YACV,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC/D,CAAC;QAED,KAAK,CAAC,WAAW;YACf,MAAM,KAAK,GAAG,MAAM,iBAAiB,CACnC,OAAO,CAAC,OAAO,EACf,OAAO,EACP,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAC3B,CAAA;YACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;QAC3B,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;YACtC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;YAExC,MAAM,gBAAgB,GAAG,MAAM,UAAU,CACvC,kBAAkB,EAClB,sBAAsB,CAAC,OAAO,CAAC,CAChC,CAAA;YAED,QAAQ,CAAC;gBACP,IAAI,EAAE,IAAI,OAAO,CAAC,aAAa,EAAE;gBACjC,SAAS,EAAE,qBAAqB;gBAChC,OAAO,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE;gBACvC,KAAK,EAAE,IAAI;aACZ,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,GACyC;IAChD,MAAM,IAAI,GAAG,OAAiC,CAAA;IAE9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IACnF,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACjG,CAAC;IAED,OAAO;QACL,EAAE,EAAE,SAAS;QACb,aAAa,EAAE,UAAU;QACzB,GAAG,IAAI;QACP,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;QAC7B,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;KAC1C,CAAA;AACH,CAAC;AAED,eAAe,cAGc,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/ShowcaseCard/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAItE,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,EAAE,aAAa,CAAA;CACvB,CAAA;AASD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuEhF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/ShowcaseCard/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAItE,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,EAAE,aAAa,CAAA;CACvB,CAAA;AAQD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAyEhF"}
@@ -2,22 +2,25 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import clsx from 'clsx';
3
3
  import Link from '@docusaurus/Link';
4
4
  import Translate from '@docusaurus/Translate';
5
- import { sortBy } from '../../core/utils.js';
5
+ import { sortBy, resolveScreenshotUrl } from '../../core/utils.js';
6
6
  import { getIcon } from '../icons.js';
7
7
  import ShowcaseTooltip from '../ShowcaseTooltip/index.js';
8
8
  import styles from './styles.module.css';
9
- function getCardImage(item) {
10
- return (item.preview ??
11
- `https://slorber-api-screenshot.netlify.app/${encodeURIComponent(item.website)}/showcase`);
9
+ function getCardImage(item, screenshotUrl) {
10
+ if (item.preview)
11
+ return item.preview;
12
+ if (screenshotUrl)
13
+ return resolveScreenshotUrl(screenshotUrl, item.website);
14
+ return null;
12
15
  }
13
16
  export default function ShowcaseCard({ item, options }) {
14
- const image = getCardImage(item);
17
+ const image = getCardImage(item, options.screenshotUrl ?? null);
15
18
  const isFavourite = options.favouriteTag ? item.tags.includes(options.favouriteTag) : false;
16
19
  const sortedTags = sortBy(item.tags.filter((t) => t in options.tags), (t) => Object.keys(options.tags).indexOf(t));
17
20
  const statusDef = item.status ? options.statuses[item.status] : null;
18
21
  const StatusIcon = statusDef?.icon ? getIcon(statusDef.icon) : null;
19
22
  const FavIcon = getIcon('heart');
20
- return (_jsxs("li", { className: clsx('card shadow--md', styles.card), children: [_jsx("div", { className: clsx('card__image', styles.cardImage), children: _jsx("img", { src: image, alt: item.name, loading: "lazy" }) }), _jsxs("div", { className: "card__body", children: [_jsxs("div", { className: styles.cardHeader, children: [_jsx("h4", { className: styles.cardTitle, children: _jsx(Link, { href: item.website, className: styles.cardLink, children: item.name }) }), isFavourite && FavIcon && (_jsx(FavIcon, { size: 14, className: styles.favouriteIcon })), item.source && (_jsx(Link, { href: item.source, className: clsx('button button--secondary button--sm', styles.sourceBtn), children: _jsx(Translate, { id: "showcase.card.sourceLink", children: "source" }) }))] }), _jsx("p", { className: styles.cardBody, children: item.description }), item.author && (_jsxs("p", { className: styles.cardAuthor, children: [_jsx("span", { className: styles.authorLabel, children: "Author:" }), _jsx("span", { children: item.author })] })), statusDef && (_jsxs("p", { className: styles.statusRow, children: [_jsx("span", { className: styles.statusLabel, children: "Status:" }), _jsx("span", { children: statusDef.label }), StatusIcon && _jsx(StatusIcon, { size: 14 })] }))] }), _jsx("ul", { className: clsx('card__footer', styles.cardFooter), children: sortedTags.map((tagKey) => {
23
+ return (_jsxs("li", { className: clsx('card shadow--md', styles.card), children: [image && (_jsx("div", { className: clsx('card__image', styles.cardImage), children: _jsx("img", { src: image, alt: item.name, loading: "lazy" }) })), _jsxs("div", { className: "card__body", children: [_jsxs("div", { className: styles.cardHeader, children: [_jsx("h4", { className: styles.cardTitle, children: _jsx(Link, { href: item.website, className: styles.cardLink, children: item.name }) }), isFavourite && FavIcon && (_jsx(FavIcon, { size: 14, className: styles.favouriteIcon })), item.source && (_jsx(Link, { href: item.source, className: clsx('button button--secondary button--sm', styles.sourceBtn), children: _jsx(Translate, { id: "showcase.card.sourceLink", children: "source" }) }))] }), _jsx("p", { className: styles.cardBody, children: item.description }), item.author && (_jsxs("p", { className: styles.cardAuthor, children: [_jsx("span", { className: styles.authorLabel, children: "Author:" }), _jsx("span", { children: item.author })] })), statusDef && (_jsxs("p", { className: styles.statusRow, children: [_jsx("span", { className: styles.statusLabel, children: "Status:" }), _jsx("span", { children: statusDef.label }), StatusIcon && _jsx(StatusIcon, { size: 14 })] }))] }), _jsx("ul", { className: clsx('card__footer', styles.cardFooter), children: sortedTags.map((tagKey) => {
21
24
  const tagDef = options.tags[tagKey];
22
25
  if (!tagDef)
23
26
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/ShowcaseCard/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/ShowcaseCard/index.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,IAAI,MAAM,kBAAkB,CAAA;AACnC,OAAO,SAAS,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,eAAe,MAAM,6BAA6B,CAAA;AACzD,OAAO,MAAM,MAAM,qBAAqB,CAAA;AAOxC,SAAS,YAAY,CAAC,IAAkB,EAAE,aAA4B;IACpE,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC,OAAO,CAAA;IACrC,IAAI,aAAa;QAAE,OAAO,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3E,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAS;IAC3D,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,CAAA;IAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAE3F,MAAM,UAAU,GAAG,MAAM,CACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,EAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAC5C,CAAA;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACpE,MAAM,UAAU,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACnE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAEhC,OAAO,CACL,cAAI,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,aAChD,KAAK,IAAI,CACR,cAAK,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,YACnD,cAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAC,MAAM,GAAG,GAC9C,CACP,EACD,eAAK,SAAS,EAAC,YAAY,aACzB,eAAK,SAAS,EAAE,MAAM,CAAC,UAAU,aAC/B,aAAI,SAAS,EAAE,MAAM,CAAC,SAAS,YAC7B,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,YACjD,IAAI,CAAC,IAAI,GACL,GACJ,EACJ,WAAW,IAAI,OAAO,IAAI,CACzB,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,aAAa,GAAI,CACvD,EACA,IAAI,CAAC,MAAM,IAAI,CACd,KAAC,IAAI,IACH,IAAI,EAAE,IAAI,CAAC,MAAM,EACjB,SAAS,EAAE,IAAI,CAAC,qCAAqC,EAAE,MAAM,CAAC,SAAS,CAAC,YAExE,KAAC,SAAS,IAAC,EAAE,EAAC,0BAA0B,uBAAmB,GACtD,CACR,IACG,EACN,YAAG,SAAS,EAAE,MAAM,CAAC,QAAQ,YAAG,IAAI,CAAC,WAAW,GAAK,EACpD,IAAI,CAAC,MAAM,IAAI,CACd,aAAG,SAAS,EAAE,MAAM,CAAC,UAAU,aAC7B,eAAM,SAAS,EAAE,MAAM,CAAC,WAAW,wBAAgB,EACnD,yBAAO,IAAI,CAAC,MAAM,GAAQ,IACxB,CACL,EACA,SAAS,IAAI,CACZ,aAAG,SAAS,EAAE,MAAM,CAAC,SAAS,aAC5B,eAAM,SAAS,EAAE,MAAM,CAAC,WAAW,wBAAgB,EACnD,yBAAO,SAAS,CAAC,KAAK,GAAQ,EAC7B,UAAU,IAAI,KAAC,UAAU,IAAC,IAAI,EAAE,EAAE,GAAI,IACrC,CACL,IACG,EACN,aAAI,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,YACnD,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBACzB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBACnC,IAAI,CAAC,MAAM;wBAAE,OAAO,IAAI,CAAA;oBACxB,MAAM,SAAS,GAAG,YAAY,IAAI,CAAC,EAAE,IAAI,MAAM,EAAE,CAAA;oBACjD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;oBACzD,OAAO,CACL,KAAC,eAAe,IAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAC,eAAe,YAC7F,cAAI,SAAS,EAAE,MAAM,CAAC,GAAG,aACvB,eAAM,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,GAAI,EAC7E,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,EAC1B,OAAO,IAAI,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,GAAI,IAC9B,IALe,MAAM,CAMV,CACnB,CAAA;gBACH,CAAC,CAAC,GACC,IACF,CACN,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homotechsual/docusaurus-plugin-showcase",
3
- "version": "0.1.0",
3
+ "version": "1.0.0",
4
4
  "description": "A Docusaurus plugin for building swizzleable showcase / directory pages from YAML data",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -88,4 +88,4 @@
88
88
  "publishConfig": {
89
89
  "access": "public"
90
90
  }
91
- }
91
+ }
@@ -1,43 +1,43 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://github.com/homotechsual/docusaurus-plugin-showcase/schema/plugins-preset/1.0.0.json",
4
- "title": "PluginsPresetItem",
5
- "type": "object",
6
- "required": ["id", "name", "description", "website"],
7
- "additionalProperties": false,
8
- "properties": {
9
- "id": { "type": "string" },
10
- "name": { "type": "string" },
11
- "description": { "type": "string" },
12
- "website": { "type": "string", "format": "uri" },
13
- "source": { "type": ["string", "null"], "format": "uri" },
14
- "preview": { "type": ["string", "null"] },
15
- "author": { "type": ["string", "null"] },
16
- "tags": {
17
- "type": "array",
18
- "items": {
19
- "type": "string",
20
- "enum": [
21
- "favourite",
22
- "docusaurus",
23
- "search",
24
- "api",
25
- "utility",
26
- "content",
27
- "theme",
28
- "markdown",
29
- "analytics",
30
- "integration",
31
- "seo",
32
- "editing"
33
- ]
34
- }
35
- },
36
- "status": {
37
- "type": ["string", "null"],
38
- "enum": ["maintained", "unmaintained", "unknown", null]
39
- },
40
- "npmPackages": { "type": ["array", "null"], "items": { "type": "string" } },
41
- "minimumVersion": { "type": ["string", "null"] }
42
- }
43
- }
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/homotechsual/docusaurus-plugin-showcase/schema/plugins-preset/1.0.0.json",
4
+ "title": "PluginsPresetItem",
5
+ "type": "object",
6
+ "required": ["id", "name", "description", "website"],
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "id": { "type": "string" },
10
+ "name": { "type": "string" },
11
+ "description": { "type": "string" },
12
+ "website": { "type": "string", "format": "uri" },
13
+ "source": { "type": ["string", "null"], "format": "uri" },
14
+ "preview": { "type": ["string", "null"] },
15
+ "author": { "type": ["string", "null"] },
16
+ "tags": {
17
+ "type": "array",
18
+ "items": {
19
+ "type": "string",
20
+ "enum": [
21
+ "favourite",
22
+ "docusaurus",
23
+ "search",
24
+ "api",
25
+ "utility",
26
+ "content",
27
+ "theme",
28
+ "markdown",
29
+ "analytics",
30
+ "integration",
31
+ "seo",
32
+ "editing"
33
+ ]
34
+ }
35
+ },
36
+ "status": {
37
+ "type": ["string", "null"],
38
+ "enum": ["maintained", "unmaintained", "unknown", null]
39
+ },
40
+ "npmPackages": { "type": ["array", "null"], "items": { "type": "string" } },
41
+ "minimumVersion": { "type": ["string", "null"] }
42
+ }
43
+ }
@@ -1,58 +1,58 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://github.com/homotechsual/docusaurus-plugin-showcase/schema/showcase/1.0.0.json",
4
- "title": "ShowcaseItem",
5
- "type": "object",
6
- "required": ["id", "name", "description", "website"],
7
- "additionalProperties": true,
8
- "properties": {
9
- "id": {
10
- "type": "string",
11
- "description": "Unique identifier for this item (e.g. 'author.plugin-name')"
12
- },
13
- "name": {
14
- "type": "string",
15
- "description": "Display name"
16
- },
17
- "description": {
18
- "type": "string",
19
- "description": "Short description"
20
- },
21
- "website": {
22
- "type": "string",
23
- "format": "uri",
24
- "description": "Primary URL (docs site, GitHub page, npm page, etc.)"
25
- },
26
- "source": {
27
- "type": ["string", "null"],
28
- "format": "uri",
29
- "description": "Source code URL"
30
- },
31
- "preview": {
32
- "type": ["string", "null"],
33
- "description": "Preview image URL. null = use screenshot service"
34
- },
35
- "author": {
36
- "type": ["string", "null"],
37
- "description": "Author handle or name"
38
- },
39
- "tags": {
40
- "type": "array",
41
- "items": { "type": "string" },
42
- "description": "Tag keys defined in plugin options"
43
- },
44
- "status": {
45
- "type": ["string", "null"],
46
- "description": "Status key defined in plugin options"
47
- },
48
- "npmPackages": {
49
- "type": ["array", "null"],
50
- "items": { "type": "string" },
51
- "description": "npm package name(s)"
52
- },
53
- "minimumVersion": {
54
- "type": ["string", "null"],
55
- "description": "Minimum Docusaurus version required"
56
- }
57
- }
58
- }
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/homotechsual/docusaurus-plugin-showcase/schema/showcase/1.0.0.json",
4
+ "title": "ShowcaseItem",
5
+ "type": "object",
6
+ "required": ["id", "name", "description", "website"],
7
+ "additionalProperties": true,
8
+ "properties": {
9
+ "id": {
10
+ "type": "string",
11
+ "description": "Unique identifier for this item (e.g. 'author.plugin-name')"
12
+ },
13
+ "name": {
14
+ "type": "string",
15
+ "description": "Display name"
16
+ },
17
+ "description": {
18
+ "type": "string",
19
+ "description": "Short description"
20
+ },
21
+ "website": {
22
+ "type": "string",
23
+ "format": "uri",
24
+ "description": "Primary URL (docs site, GitHub page, npm page, etc.)"
25
+ },
26
+ "source": {
27
+ "type": ["string", "null"],
28
+ "format": "uri",
29
+ "description": "Source code URL"
30
+ },
31
+ "preview": {
32
+ "type": ["string", "null"],
33
+ "description": "Preview image URL. null = use screenshot service"
34
+ },
35
+ "author": {
36
+ "type": ["string", "null"],
37
+ "description": "Author handle or name"
38
+ },
39
+ "tags": {
40
+ "type": "array",
41
+ "items": { "type": "string" },
42
+ "description": "Tag keys defined in plugin options"
43
+ },
44
+ "status": {
45
+ "type": ["string", "null"],
46
+ "description": "Status key defined in plugin options"
47
+ },
48
+ "npmPackages": {
49
+ "type": ["array", "null"],
50
+ "items": { "type": "string" },
51
+ "description": "npm package name(s)"
52
+ },
53
+ "minimumVersion": {
54
+ "type": ["string", "null"],
55
+ "description": "Minimum Docusaurus version required"
56
+ }
57
+ }
58
+ }
@@ -39,4 +39,4 @@
39
39
  "items": { "type": "string" }
40
40
  }
41
41
  }
42
- }
42
+ }
package/CHANGELOG.md DELETED
@@ -1,13 +0,0 @@
1
- # Changelog
2
-
3
- ## [0.1.0] - 2026-06-09
4
-
5
- ### Added
6
-
7
- - Initial release
8
- - `loadContent` YAML loader with AJV schema validation
9
- - Swizzleable theme components: `ShowcasePage`, `ShowcaseCard`, `ShowcaseFilters`, `ShowcaseFilterToggle`, `ShowcaseTagSelect`, `ShowcaseStatusSelect`, `ShowcaseTooltip`
10
- - Bundled Heroicons (MIT) SVG icon components
11
- - `pluginsPreset` for the Docusaurus community plugin directory use-case
12
- - JSON schemas for core `ShowcaseItem` and plugins preset items
13
- - GitHub Actions CI and trusted npm + GitHub Packages publish workflows