@homotechsual/docusaurus-plugin-showcase 0.1.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.
Files changed (105) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSE +13 -0
  3. package/README.md +93 -0
  4. package/lib/core/module-generator.d.ts +3 -0
  5. package/lib/core/module-generator.d.ts.map +1 -0
  6. package/lib/core/module-generator.js +14 -0
  7. package/lib/core/module-generator.js.map +1 -0
  8. package/lib/core/types.d.ts +43 -0
  9. package/lib/core/types.d.ts.map +1 -0
  10. package/lib/core/types.js +2 -0
  11. package/lib/core/types.js.map +1 -0
  12. package/lib/core/utils.d.ts +3 -0
  13. package/lib/core/utils.d.ts.map +1 -0
  14. package/lib/core/utils.js +22 -0
  15. package/lib/core/utils.js.map +1 -0
  16. package/lib/icons/CircleCheck.d.ts +7 -0
  17. package/lib/icons/CircleCheck.d.ts.map +1 -0
  18. package/lib/icons/CircleCheck.js +5 -0
  19. package/lib/icons/CircleCheck.js.map +1 -0
  20. package/lib/icons/CircleMinus.d.ts +7 -0
  21. package/lib/icons/CircleMinus.d.ts.map +1 -0
  22. package/lib/icons/CircleMinus.js +5 -0
  23. package/lib/icons/CircleMinus.js.map +1 -0
  24. package/lib/icons/CircleX.d.ts +7 -0
  25. package/lib/icons/CircleX.d.ts.map +1 -0
  26. package/lib/icons/CircleX.js +5 -0
  27. package/lib/icons/CircleX.js.map +1 -0
  28. package/lib/icons/Docusaurus.d.ts +7 -0
  29. package/lib/icons/Docusaurus.d.ts.map +1 -0
  30. package/lib/icons/Docusaurus.js +5 -0
  31. package/lib/icons/Docusaurus.js.map +1 -0
  32. package/lib/icons/Heart.d.ts +7 -0
  33. package/lib/icons/Heart.d.ts.map +1 -0
  34. package/lib/icons/Heart.js +5 -0
  35. package/lib/icons/Heart.js.map +1 -0
  36. package/lib/icons/PlusSquare.d.ts +7 -0
  37. package/lib/icons/PlusSquare.d.ts.map +1 -0
  38. package/lib/icons/PlusSquare.js +5 -0
  39. package/lib/icons/PlusSquare.js.map +1 -0
  40. package/lib/index.d.ts +3 -0
  41. package/lib/index.d.ts.map +1 -0
  42. package/lib/index.js +2 -0
  43. package/lib/index.js.map +1 -0
  44. package/lib/loaders/yaml.d.ts +7 -0
  45. package/lib/loaders/yaml.d.ts.map +1 -0
  46. package/lib/loaders/yaml.js +73 -0
  47. package/lib/loaders/yaml.js.map +1 -0
  48. package/lib/plugin.d.ts +6 -0
  49. package/lib/plugin.d.ts.map +1 -0
  50. package/lib/plugin.js +45 -0
  51. package/lib/plugin.js.map +1 -0
  52. package/lib/presets/index.d.ts +3 -0
  53. package/lib/presets/index.d.ts.map +1 -0
  54. package/lib/presets/index.js +3 -0
  55. package/lib/presets/index.js.map +1 -0
  56. package/lib/presets/plugins.d.ts +3 -0
  57. package/lib/presets/plugins.d.ts.map +1 -0
  58. package/lib/presets/plugins.js +93 -0
  59. package/lib/presets/plugins.js.map +1 -0
  60. package/lib/presets/sites.d.ts +3 -0
  61. package/lib/presets/sites.d.ts.map +1 -0
  62. package/lib/presets/sites.js +63 -0
  63. package/lib/presets/sites.js.map +1 -0
  64. package/lib/theme/ShowcaseCard/index.d.ts +9 -0
  65. package/lib/theme/ShowcaseCard/index.d.ts.map +1 -0
  66. package/lib/theme/ShowcaseCard/index.js +29 -0
  67. package/lib/theme/ShowcaseCard/index.js.map +1 -0
  68. package/lib/theme/ShowcaseCard/styles.module.css +118 -0
  69. package/lib/theme/ShowcaseFilterToggle/index.d.ts +5 -0
  70. package/lib/theme/ShowcaseFilterToggle/index.d.ts.map +1 -0
  71. package/lib/theme/ShowcaseFilterToggle/index.js +24 -0
  72. package/lib/theme/ShowcaseFilterToggle/index.js.map +1 -0
  73. package/lib/theme/ShowcaseFilterToggle/styles.module.css +62 -0
  74. package/lib/theme/ShowcaseFilters/index.d.ts +13 -0
  75. package/lib/theme/ShowcaseFilters/index.d.ts.map +1 -0
  76. package/lib/theme/ShowcaseFilters/index.js +86 -0
  77. package/lib/theme/ShowcaseFilters/index.js.map +1 -0
  78. package/lib/theme/ShowcaseFilters/styles.module.css +62 -0
  79. package/lib/theme/ShowcasePage/index.d.ts +8 -0
  80. package/lib/theme/ShowcasePage/index.d.ts.map +1 -0
  81. package/lib/theme/ShowcasePage/index.js +30 -0
  82. package/lib/theme/ShowcasePage/index.js.map +1 -0
  83. package/lib/theme/ShowcasePage/styles.module.css +38 -0
  84. package/lib/theme/ShowcaseStatusSelect/index.d.ts +11 -0
  85. package/lib/theme/ShowcaseStatusSelect/index.d.ts.map +1 -0
  86. package/lib/theme/ShowcaseStatusSelect/index.js +23 -0
  87. package/lib/theme/ShowcaseStatusSelect/index.js.map +1 -0
  88. package/lib/theme/ShowcaseStatusSelect/styles.module.css +44 -0
  89. package/lib/theme/ShowcaseTagSelect/index.d.ts +11 -0
  90. package/lib/theme/ShowcaseTagSelect/index.d.ts.map +1 -0
  91. package/lib/theme/ShowcaseTagSelect/index.js +23 -0
  92. package/lib/theme/ShowcaseTagSelect/index.js.map +1 -0
  93. package/lib/theme/ShowcaseTagSelect/styles.module.css +44 -0
  94. package/lib/theme/ShowcaseTooltip/index.d.ts +10 -0
  95. package/lib/theme/ShowcaseTooltip/index.d.ts.map +1 -0
  96. package/lib/theme/ShowcaseTooltip/index.js +23 -0
  97. package/lib/theme/ShowcaseTooltip/index.js.map +1 -0
  98. package/lib/theme/icons.d.ts +9 -0
  99. package/lib/theme/icons.d.ts.map +1 -0
  100. package/lib/theme/icons.js +20 -0
  101. package/lib/theme/icons.js.map +1 -0
  102. package/package.json +91 -0
  103. package/schema/plugins-preset/1.0.0.json +43 -0
  104. package/schema/showcase/1.0.0.json +58 -0
  105. package/schema/sites-preset/1.0.0.json +42 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
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
package/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2024 Mikey O'Toole
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
package/README.md ADDED
@@ -0,0 +1,93 @@
1
+ # @homotechsual/docusaurus-plugin-showcase
2
+
3
+ A Docusaurus plugin for building swizzleable showcase / directory pages from YAML data files.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @homotechsual/docusaurus-plugin-showcase
9
+ ```
10
+
11
+ ## Quick start (plugins directory preset)
12
+
13
+ ```ts
14
+ // docusaurus.config.ts
15
+ import { pluginsPreset } from '@homotechsual/docusaurus-plugin-showcase/presets'
16
+
17
+ export default {
18
+ plugins: [
19
+ ['@homotechsual/docusaurus-plugin-showcase', {
20
+ ...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',
24
+ }],
25
+ ],
26
+ }
27
+ ```
28
+
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.
90
+
91
+ ## Licence
92
+
93
+ Apache-2.0
@@ -0,0 +1,3 @@
1
+ import type { ShowcasePageData } from './types.js';
2
+ export declare function generateShowcaseModule(data: ShowcasePageData): string;
3
+ //# sourceMappingURL=module-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-generator.d.ts","sourceRoot":"","sources":["../../src/core/module-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAWhE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAMrE"}
@@ -0,0 +1,14 @@
1
+ function serializeItem(item) {
2
+ const { _localImagePath, preview, ...rest } = item;
3
+ const previewJs = _localImagePath
4
+ ? `(function(m){return typeof m==='string'?m:(m&&m.default)||m})(require(${JSON.stringify(_localImagePath.replace(/\\/g, '/'))}))`
5
+ : JSON.stringify(preview ?? null);
6
+ const inner = JSON.stringify(rest).slice(1, -1);
7
+ return inner ? `{"preview":${previewJs},${inner}}` : `{"preview":${previewJs}}`;
8
+ }
9
+ export function generateShowcaseModule(data) {
10
+ const itemsJs = data.items.map(serializeItem).join(',');
11
+ return (`// @generated by @homotechsual/docusaurus-plugin-showcase\n` +
12
+ `module.exports = {"items":[${itemsJs}],"options":${JSON.stringify(data.options)}};\n`);
13
+ }
14
+ //# sourceMappingURL=module-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-generator.js","sourceRoot":"","sources":["../../src/core/module-generator.ts"],"names":[],"mappings":"AAEA,SAAS,aAAa,CAAC,IAAkB;IACvC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAmD,CAAA;IACjG,MAAM,SAAS,GAAG,eAAe;QAC/B,CAAC,CAAC,yEAAyE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI;QAClI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,CAAA;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/C,OAAO,KAAK,CAAC,CAAC,CAAC,cAAc,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,cAAc,SAAS,GAAG,CAAA;AACjF,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAsB;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACvD,OAAO,CACL,6DAA6D;QAC7D,8BAA8B,OAAO,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CACvF,CAAA;AACH,CAAC"}
@@ -0,0 +1,43 @@
1
+ export type TagDef = {
2
+ label: string;
3
+ description: string;
4
+ color: string;
5
+ icon?: string | null;
6
+ };
7
+ export type StatusDef = {
8
+ label: string;
9
+ description: string;
10
+ color?: string | null;
11
+ icon?: string | null;
12
+ };
13
+ export type ShowcaseItem = {
14
+ id: string;
15
+ name: string;
16
+ description: string;
17
+ website: string;
18
+ source?: string | null;
19
+ preview?: string | null;
20
+ author?: string | null;
21
+ tags: string[];
22
+ status?: string | null;
23
+ npmPackages?: string[] | null;
24
+ minimumVersion?: string | null;
25
+ [key: string]: unknown;
26
+ };
27
+ export type PluginOptions = {
28
+ id?: string;
29
+ dataDir: string;
30
+ routeBasePath: string;
31
+ tags: Record<string, TagDef>;
32
+ statuses: Record<string, StatusDef>;
33
+ favouriteTag?: string | null;
34
+ pageTitle?: string | null;
35
+ pageDescription?: string | null;
36
+ submitUrl?: string | null;
37
+ schemaPath?: string | null;
38
+ };
39
+ export type ShowcasePageData = {
40
+ items: ShowcaseItem[];
41
+ options: PluginOptions;
42
+ };
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare function sortBy<T>(array: T[], getter: (item: T) => string | number | boolean): T[];
2
+ export declare function toggleListItem<T>(list: T[], item: T): T[];
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,22 @@
1
+ export function sortBy(array, getter) {
2
+ const copy = [...array];
3
+ copy.sort((a, b) => {
4
+ const va = getter(a);
5
+ const vb = getter(b);
6
+ if (va > vb)
7
+ return 1;
8
+ if (vb > va)
9
+ return -1;
10
+ return 0;
11
+ });
12
+ return copy;
13
+ }
14
+ export function toggleListItem(list, item) {
15
+ const index = list.indexOf(item);
16
+ if (index === -1)
17
+ return [...list, item];
18
+ const copy = [...list];
19
+ copy.splice(index, 1);
20
+ return copy;
21
+ }
22
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +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"}
@@ -0,0 +1,7 @@
1
+ type IconProps = {
2
+ className?: string;
3
+ size?: number;
4
+ };
5
+ export default function CircleCheck({ className, size }: IconProps): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=CircleCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CircleCheck.d.ts","sourceRoot":"","sources":["../../src/icons/CircleCheck.tsx"],"names":[],"mappings":"AACA,KAAK,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,+BAkBtE"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export default function CircleCheck({ className, size = 24 }) {
3
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: size, height: size, className: className, "aria-hidden": "true", children: _jsx("path", { fillRule: "evenodd", d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm13.36-1.814a.75.75 0 10-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 00-1.06 1.06l2.25 2.25a.75.75 0 001.14-.094l3.75-5.25z", clipRule: "evenodd" }) }));
4
+ }
5
+ //# sourceMappingURL=CircleCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CircleCheck.js","sourceRoot":"","sources":["../../src/icons/CircleCheck.tsx"],"names":[],"mappings":";AAGA,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAa;IACrE,OAAO,CACL,cACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,EACnB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,SAAS,EAAE,SAAS,iBACR,MAAM,YAElB,eACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,+NAA+N,EACjO,QAAQ,EAAC,SAAS,GAClB,GACE,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ type IconProps = {
2
+ className?: string;
3
+ size?: number;
4
+ };
5
+ export default function CircleMinus({ className, size }: IconProps): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=CircleMinus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CircleMinus.d.ts","sourceRoot":"","sources":["../../src/icons/CircleMinus.tsx"],"names":[],"mappings":"AACA,KAAK,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,+BAkBtE"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export default function CircleMinus({ className, size = 24 }) {
3
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: size, height: size, className: className, "aria-hidden": "true", children: _jsx("path", { fillRule: "evenodd", d: "M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25zm3 10.5a.75.75 0 000-1.5H9a.75.75 0 000 1.5h6z", clipRule: "evenodd" }) }));
4
+ }
5
+ //# sourceMappingURL=CircleMinus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CircleMinus.js","sourceRoot":"","sources":["../../src/icons/CircleMinus.tsx"],"names":[],"mappings":";AAGA,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAa;IACrE,OAAO,CACL,cACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,EACnB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,SAAS,EAAE,SAAS,iBACR,MAAM,YAElB,eACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,qJAAqJ,EACvJ,QAAQ,EAAC,SAAS,GAClB,GACE,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ type IconProps = {
2
+ className?: string;
3
+ size?: number;
4
+ };
5
+ export default function CircleX({ className, size }: IconProps): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=CircleX.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CircleX.d.ts","sourceRoot":"","sources":["../../src/icons/CircleX.tsx"],"names":[],"mappings":"AACA,KAAK,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,+BAkBlE"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export default function CircleX({ className, size = 24 }) {
3
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: size, height: size, className: className, "aria-hidden": "true", children: _jsx("path", { fillRule: "evenodd", d: "M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25zm-1.72 6.97a.75.75 0 10-1.06 1.06L10.94 12l-1.72 1.72a.75.75 0 101.06 1.06L12 13.06l1.72 1.72a.75.75 0 101.06-1.06L13.06 12l1.72-1.72a.75.75 0 10-1.06-1.06L12 10.94l-1.72-1.72z", clipRule: "evenodd" }) }));
4
+ }
5
+ //# sourceMappingURL=CircleX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CircleX.js","sourceRoot":"","sources":["../../src/icons/CircleX.tsx"],"names":[],"mappings":";AAGA,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAa;IACjE,OAAO,CACL,cACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,EACnB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,SAAS,EAAE,SAAS,iBACR,MAAM,YAElB,eACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,uRAAuR,EACzR,QAAQ,EAAC,SAAS,GAClB,GACE,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ type IconProps = {
2
+ className?: string;
3
+ size?: number;
4
+ };
5
+ export default function DocusaurusIcon({ className, size }: IconProps): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=Docusaurus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Docusaurus.d.ts","sourceRoot":"","sources":["../../src/icons/Docusaurus.tsx"],"names":[],"mappings":"AACA,KAAK,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,+BAkEzE"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export default function DocusaurusIcon({ className, size = 24 }) {
3
+ return (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 200 200", width: size, height: size, className: className, "aria-hidden": "true", children: [_jsxs("g", { fill: "#3ECC5F", children: [_jsx("path", { d: "M23 163c-7.4 0-14-4-17.3-10A20 20 0 003 163c0 11 9 20 20 20h20v-20H23zm141 20h9v-4h-8z" }), _jsx("path", { d: "M183 53V43c0-11-9-20-20-20H73c-4-8-6-8-10 0-4-8-6-8-10 0-4-8-6-8-10 0-7-9-9-5-10.3 2.3-9-3-10.3-1.7-7.3 7.3-9 2-10 3-2.4 10.4-8 4-8 6 0 10-8 4-8 6 0 10-8 4-8 6 0 10-8 4-8 6 0 10-8 4-8 6 0 10-8 4-8 6 0 10-8 4-8 6 0 10-8 4-8 6 0 10-8 4-8 6 0 10-8 4-8 6 0 10-8 4-8 6 0 10 0 11 9 20 20 20h120c11 0 20-9 20-20" })] }), _jsx("path", { fill: "#FFF", d: "M183 83l-70-4.3c-13.3-1.5-13.3-19.8 0-21.3l70-4.4" }), _jsxs("g", { fill: "#44D860", transform: "translate(60, 0)", children: [_jsx("circle", { cx: "123", cy: "113", r: "10" }), _jsx("circle", { cx: "128", cy: "104.3", r: "2.4" }), _jsx("circle", { cx: "131.7", cy: "108", r: "2.4" }), _jsx("circle", { cx: "133", cy: "113", r: "2.4" }), _jsx("circle", { cx: "131.7", cy: "118", r: "2.4" }), _jsx("circle", { cx: "128", cy: "121.7", r: "2.4" })] }), _jsxs("g", { fill: "#44D860", transform: "translate(50, 0)", children: [_jsx("circle", { cx: "123", cy: "163", r: "20" }), _jsx("circle", { cx: "113", cy: "145.7", r: "5" }), _jsx("circle", { cx: "123", cy: "143", r: "5" }), _jsx("circle", { cx: "133", cy: "145.7", r: "5" }), _jsx("circle", { cx: "140.3", cy: "153", r: "5" }), _jsx("circle", { cx: "143", cy: "163", r: "5" })] }), _jsx("path", { d: "M103 183h60c11 0 20-9 20-20V93h-60c-11 0-20 9-20 20v70z", fill: "#FFFF50" }), _jsxs("g", { fill: "none", stroke: "#000", strokeWidth: "2", strokeLinecap: "round", children: [_jsx("path", { d: "M63 53a1 1 0 10-20 0", strokeWidth: "5" }), _jsx("path", { d: "M183 62.6c-5 0-5 10-10 10.7-5 0-5-10-10-10s-5 9-10 9-5-8.5-10-8.5-5 8-10 8-5-7.25-10-7.25-5 6.5-10 6.5", strokeLinecap: "butt" }), _jsx("path", { d: "M168 113h-50m50 10h-50m50 10h-50m50 10h-50m50 10h-50m50 10h-50" })] }), _jsx("circle", { cx: "143", cy: "39.3", r: "2.5" }), _jsx("circle", { cx: "163", cy: "38", r: "2.5" }), _jsx("circle", { cx: "113", cy: "71", r: "1" }), _jsx("path", { d: "M83 123h40v-20H83zm0 60h40v-40H83z", fill: "#3ECC5F" }), _jsxs("g", { fill: "#44D860", children: [_jsx("circle", { cx: "123", cy: "113", r: "10" }), _jsx("circle", { cx: "128", cy: "104.3", r: "2.4" }), _jsx("circle", { cx: "131.7", cy: "108", r: "2.4" }), _jsx("circle", { cx: "133", cy: "113", r: "2.4" }), _jsx("circle", { cx: "131.7", cy: "118", r: "2.4" }), _jsx("circle", { cx: "128", cy: "121.7", r: "2.4" })] }), _jsxs("g", { fill: "#44D860", children: [_jsx("circle", { cx: "123", cy: "163", r: "20" }), _jsx("circle", { cx: "113", cy: "145.7", r: "5" }), _jsx("circle", { cx: "123", cy: "143", r: "5" }), _jsx("circle", { cx: "133", cy: "145.7", r: "5" }), _jsx("circle", { cx: "140.3", cy: "153", r: "5" }), _jsx("circle", { cx: "143", cy: "163", r: "5" })] })] }));
4
+ }
5
+ //# sourceMappingURL=Docusaurus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Docusaurus.js","sourceRoot":"","sources":["../../src/icons/Docusaurus.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ type IconProps = {
2
+ className?: string;
3
+ size?: number;
4
+ };
5
+ export default function Heart({ className, size }: IconProps): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=Heart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heart.d.ts","sourceRoot":"","sources":["../../src/icons/Heart.tsx"],"names":[],"mappings":"AACA,KAAK,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,+BAchE"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export default function Heart({ className, size = 24 }) {
3
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: size, height: size, className: className, "aria-hidden": "true", children: _jsx("path", { d: "M11.645 20.91l-.007-.003-.022-.012a15.247 15.247 0 01-.383-.218 25.18 25.18 0 01-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0112 5.052 5.5 5.5 0 0116.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 01-4.244 3.17 15.247 15.247 0 01-.383.219l-.022.012-.007.004-.003.001a.752.752 0 01-.704 0l-.003-.001z" }) }));
4
+ }
5
+ //# sourceMappingURL=Heart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heart.js","sourceRoot":"","sources":["../../src/icons/Heart.tsx"],"names":[],"mappings":";AAGA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAa;IAC/D,OAAO,CACL,cACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,EACnB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,SAAS,EAAE,SAAS,iBACR,MAAM,YAElB,eAAM,CAAC,EAAC,0XAA0X,GAAG,GACjY,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ type IconProps = {
2
+ className?: string;
3
+ size?: number;
4
+ };
5
+ export default function PlusSquare({ className, size }: IconProps): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=PlusSquare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlusSquare.d.ts","sourceRoot":"","sources":["../../src/icons/PlusSquare.tsx"],"names":[],"mappings":"AACA,KAAK,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,+BAkBrE"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export default function PlusSquare({ className, size = 24 }) {
3
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: size, height: size, className: className, "aria-hidden": "true", children: _jsx("path", { fillRule: "evenodd", d: "M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25zM12.75 9a.75.75 0 00-1.5 0v2.25H9a.75.75 0 000 1.5h2.25V15a.75.75 0 001.5 0v-2.25H15a.75.75 0 000-1.5h-2.25V9z", clipRule: "evenodd" }) }));
4
+ }
5
+ //# sourceMappingURL=PlusSquare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlusSquare.js","sourceRoot":"","sources":["../../src/icons/PlusSquare.tsx"],"names":[],"mappings":";AAGA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAa;IACpE,OAAO,CACL,cACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,EACnB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,SAAS,EAAE,SAAS,iBACR,MAAM,YAElB,eACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,qNAAqN,EACvN,QAAQ,EAAC,SAAS,GAClB,GACE,CACP,CAAA;AACH,CAAC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export { default, validateOptions } from './plugin.js';
2
+ export type { ShowcaseItem, TagDef, StatusDef, PluginOptions, ShowcasePageData } from './core/types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA"}
package/lib/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { default, validateOptions } from './plugin.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { ShowcaseItem, PluginOptions } from '../core/types.js';
2
+ type WarnFn = (message: string) => void;
3
+ export declare function loadShowcaseItems(siteDir: string, options: Pick<PluginOptions, 'dataDir' | 'routeBasePath' | 'tags' | 'statuses'> & {
4
+ schemaPath?: string | null;
5
+ }, warn: WarnFn): Promise<ShowcaseItem[]>;
6
+ export {};
7
+ //# sourceMappingURL=yaml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../src/loaders/yaml.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAMnE,KAAK,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAEvC,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,eAAe,GAAG,MAAM,GAAG,UAAU,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAChH,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,EAAE,CAAC,CAuEzB"}
@@ -0,0 +1,73 @@
1
+ import { readFileSync, existsSync } from 'node:fs';
2
+ import { resolve, join, dirname, basename, extname } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { globSync } from 'glob';
5
+ import yaml from 'js-yaml';
6
+ import { Ajv2020 as Ajv } from 'ajv/dist/2020.js';
7
+ import addFormats from 'ajv-formats';
8
+ // ajv-formats v3 ships as CJS; handle both interop shapes
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ const applyFormats = addFormats.default ?? addFormats;
11
+ export async function loadShowcaseItems(siteDir, options, warn) {
12
+ const dataDir = resolve(siteDir, options.dataDir);
13
+ if (!existsSync(dataDir)) {
14
+ warn(`[docusaurus-plugin-showcase] dataDir "${dataDir}" does not exist — no items loaded.`);
15
+ return [];
16
+ }
17
+ const schemaPath = options.schemaPath ??
18
+ fileURLToPath(new URL('../../schema/showcase/1.0.0.json', import.meta.url));
19
+ const ajv = new Ajv({ allErrors: true, strict: false });
20
+ applyFormats(ajv);
21
+ let validate = null;
22
+ if (existsSync(schemaPath)) {
23
+ try {
24
+ const schema = JSON.parse(readFileSync(schemaPath, 'utf-8'));
25
+ validate = ajv.compile(schema);
26
+ }
27
+ catch (err) {
28
+ warn(`[docusaurus-plugin-showcase] Could not load schema from "${schemaPath}": ${String(err)}`);
29
+ }
30
+ }
31
+ else {
32
+ warn(`[docusaurus-plugin-showcase] Schema file not found at "${schemaPath}" — validation skipped.`);
33
+ }
34
+ const yamlFiles = globSync('**/*.yaml', { cwd: dataDir, absolute: true });
35
+ const items = [];
36
+ for (const filePath of yamlFiles) {
37
+ try {
38
+ const raw = yaml.load(readFileSync(filePath, 'utf-8'));
39
+ if (typeof raw !== 'object' || raw === null) {
40
+ warn(`[docusaurus-plugin-showcase] Expected object in "${filePath}", got ${typeof raw} — item skipped.`);
41
+ continue;
42
+ }
43
+ // title → name alias (compatible with Docusaurus site showcase format)
44
+ const item = raw;
45
+ if (!item.name && item.title) {
46
+ item.name = item.title;
47
+ delete item.title;
48
+ }
49
+ if (validate && !validate(item)) {
50
+ const errors = ajv.errorsText(validate.errors);
51
+ warn(`[docusaurus-plugin-showcase] Validation failed for "${filePath}": ${errors} — item skipped.`);
52
+ continue;
53
+ }
54
+ // Co-located image detection — AFTER validation so _localImagePath
55
+ // doesn't pollute strict schemas with additionalProperties: false
56
+ const base = basename(filePath, extname(filePath));
57
+ const imageExts = ['.png', '.jpg', '.jpeg', '.webp', '.gif', '.svg'];
58
+ for (const ext of imageExts) {
59
+ const imagePath = join(dirname(filePath), `${base}${ext}`);
60
+ if (existsSync(imagePath)) {
61
+ item._localImagePath = imagePath;
62
+ break;
63
+ }
64
+ }
65
+ items.push(item);
66
+ }
67
+ catch (err) {
68
+ warn(`[docusaurus-plugin-showcase] Failed to parse "${filePath}": ${String(err)} — item skipped.`);
69
+ }
70
+ }
71
+ return items;
72
+ }
73
+ //# sourceMappingURL=yaml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../src/loaders/yaml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { LoadContext, OptionValidationContext, Plugin } from '@docusaurus/types';
2
+ import type { PluginOptions, ShowcasePageData } from './core/types.js';
3
+ export declare function validateOptions({ options, }: OptionValidationContext<unknown, PluginOptions>): PluginOptions;
4
+ declare const _default: (context: LoadContext, options: unknown) => Plugin<ShowcasePageData>;
5
+ export default _default;
6
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +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"}
package/lib/plugin.js ADDED
@@ -0,0 +1,45 @@
1
+ import { dirname, join } from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { loadShowcaseItems } from './loaders/yaml.js';
4
+ import { generateShowcaseModule } from './core/module-generator.js';
5
+ function pluginShowcase(context, options) {
6
+ return {
7
+ name: 'docusaurus-plugin-showcase',
8
+ getThemePath() {
9
+ return join(dirname(fileURLToPath(import.meta.url)), 'theme');
10
+ },
11
+ async loadContent() {
12
+ const items = await loadShowcaseItems(context.siteDir, options, (msg) => console.warn(msg));
13
+ return { items, options };
14
+ },
15
+ async contentLoaded({ content, actions }) {
16
+ const { createData, addRoute } = actions;
17
+ const showcaseDataPath = await createData('showcase-data.js', generateShowcaseModule(content));
18
+ addRoute({
19
+ path: `/${options.routeBasePath}`,
20
+ component: '@theme/ShowcasePage',
21
+ modules: { showcase: showcaseDataPath },
22
+ exact: true,
23
+ });
24
+ },
25
+ };
26
+ }
27
+ export function validateOptions({ options, }) {
28
+ const opts = options;
29
+ if (!opts.dataDir) {
30
+ throw new Error('[docusaurus-plugin-showcase] The `dataDir` option is required.');
31
+ }
32
+ if (!opts.tags || Object.keys(opts.tags).length === 0) {
33
+ throw new Error('[docusaurus-plugin-showcase] The `tags` option must define at least one tag.');
34
+ }
35
+ return {
36
+ id: 'default',
37
+ routeBasePath: 'showcase',
38
+ ...opts,
39
+ dataDir: opts.dataDir,
40
+ tags: opts.tags,
41
+ statuses: opts.statuses ?? {},
42
+ };
43
+ }
44
+ export default pluginShowcase;
45
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ export { pluginsPreset } from './plugins.js';
2
+ export { sitesPreset } from './sites.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { pluginsPreset } from './plugins.js';
2
+ export { sitesPreset } from './sites.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { PluginOptions } from '../core/types.js';
2
+ export declare const pluginsPreset: Partial<PluginOptions>;
3
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/presets/plugins.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD,eAAO,MAAM,aAAa,EAAE,OAAO,CAAC,aAAa,CA2FhD,CAAA"}