docusaurus-plugin-glossary 3.0.2 → 3.2.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 (50) hide show
  1. package/dist/chunk-4CUFUKUA.js +109 -0
  2. package/dist/chunk-4CUFUKUA.js.map +1 -0
  3. package/dist/chunk-PEB4Y6RI.js +311 -0
  4. package/dist/chunk-PEB4Y6RI.js.map +1 -0
  5. package/dist/chunk-SNP37IVL.js +212 -0
  6. package/dist/chunk-SNP37IVL.js.map +1 -0
  7. package/dist/client/index.cjs +55 -0
  8. package/dist/client/index.cjs.map +1 -0
  9. package/dist/client/index.js +10 -21
  10. package/dist/client/index.js.map +1 -0
  11. package/dist/components/GlossaryPage.cjs +130 -0
  12. package/dist/components/GlossaryPage.cjs.map +1 -0
  13. package/dist/components/GlossaryPage.js +74 -113
  14. package/dist/components/GlossaryPage.js.map +1 -0
  15. package/dist/index.cjs +659 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.cts +173 -0
  18. package/dist/index.d.ts +83 -11
  19. package/dist/index.js +23 -173
  20. package/dist/index.js.map +1 -0
  21. package/dist/preset.cjs +710 -0
  22. package/dist/preset.cjs.map +1 -0
  23. package/dist/preset.d.cts +98 -0
  24. package/dist/preset.d.ts +8 -7
  25. package/dist/preset.js +79 -143
  26. package/dist/preset.js.map +1 -0
  27. package/dist/remark/glossary-terms.cjs +345 -0
  28. package/dist/remark/glossary-terms.cjs.map +1 -0
  29. package/dist/remark/glossary-terms.js +9 -440
  30. package/dist/remark/glossary-terms.js.map +1 -0
  31. package/dist/theme/GlossaryTerm/index.cjs +138 -0
  32. package/dist/theme/GlossaryTerm/index.cjs.map +1 -0
  33. package/dist/theme/GlossaryTerm/index.js +56 -90
  34. package/dist/theme/GlossaryTerm/index.js.map +1 -0
  35. package/dist/validation.cjs +238 -0
  36. package/dist/validation.cjs.map +1 -0
  37. package/dist/validation.d.cts +2 -0
  38. package/dist/validation.d.ts +2 -44
  39. package/dist/validation.js +11 -246
  40. package/dist/validation.js.map +1 -0
  41. package/package.json +25 -30
  42. package/dist/components/GlossaryPage.test.js +0 -205
  43. package/dist/index.d.ts.map +0 -1
  44. package/dist/preset.d.ts.map +0 -1
  45. package/dist/remark/glossary-terms.d.ts +0 -28
  46. package/dist/remark/glossary-terms.d.ts.map +0 -1
  47. package/dist/theme/GlossaryTerm/index.test.js +0 -143
  48. package/dist/validation.d.ts.map +0 -1
  49. /package/dist/{components/GlossaryPage.module.css → GlossaryPage.module-M4DEUP4X.module.css} +0 -0
  50. /package/dist/{theme/GlossaryTerm/styles.module.css → styles.module-N7ME3MWS.module.css} +0 -0
@@ -1,138 +1,99 @@
1
- import React, { useState, useMemo } from 'react';
2
- import Layout from '@theme/Layout';
3
- import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
4
- import styles from './GlossaryPage.module.css';
5
-
6
- /**
7
- * Groups glossary terms by their first letter
8
- */
1
+ // src/components/GlossaryPage.js
2
+ import React, { useState, useMemo } from "react";
3
+ import Layout from "@theme/Layout";
4
+ import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
5
+ import styles from "../GlossaryPage.module-M4DEUP4X.module.css";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
9
7
  function groupTermsByLetter(terms) {
10
8
  const grouped = {};
11
-
12
- terms.forEach(term => {
9
+ terms.forEach((term) => {
13
10
  const firstLetter = term.term.charAt(0).toUpperCase();
14
11
  if (!grouped[firstLetter]) {
15
12
  grouped[firstLetter] = [];
16
13
  }
17
14
  grouped[firstLetter].push(term);
18
15
  });
19
-
20
- // Sort each group alphabetically
21
- Object.keys(grouped).forEach(letter => {
16
+ Object.keys(grouped).forEach((letter) => {
22
17
  grouped[letter].sort((a, b) => a.term.localeCompare(b.term));
23
18
  });
24
-
25
19
  return grouped;
26
20
  }
27
-
28
- /**
29
- * GlossaryPage component - displays all glossary terms
30
- */
31
- export default function GlossaryPage({ glossaryData }) {
21
+ function GlossaryPage({ glossaryData }) {
32
22
  useDocusaurusContext();
33
- const [searchTerm, setSearchTerm] = useState('');
34
-
23
+ const [searchTerm, setSearchTerm] = useState("");
35
24
  const terms = useMemo(() => glossaryData?.terms || [], [glossaryData?.terms]);
36
-
37
- // Filter terms based on search
38
25
  const filteredTerms = useMemo(() => {
39
26
  if (!searchTerm) return terms;
40
-
41
27
  const lowerSearch = searchTerm.toLowerCase();
42
28
  return terms.filter(
43
- term =>
44
- term.term.toLowerCase().includes(lowerSearch) ||
45
- term.definition.toLowerCase().includes(lowerSearch)
29
+ (term) => term.term.toLowerCase().includes(lowerSearch) || term.definition.toLowerCase().includes(lowerSearch)
46
30
  );
47
31
  }, [terms, searchTerm]);
48
-
49
- // Group terms by first letter
50
32
  const groupedTerms = useMemo(() => {
51
33
  return groupTermsByLetter(filteredTerms);
52
34
  }, [filteredTerms]);
53
-
54
35
  const letters = Object.keys(groupedTerms).sort();
55
-
56
- return (
57
- <Layout title="Glossary" description="A glossary of terms and definitions">
58
- <div className={styles.glossaryContainer}>
59
- <header className={styles.glossaryHeader}>
60
- <h1>Glossary</h1>
61
- <p className={styles.glossaryDescription}>
62
- {glossaryData?.description || 'A collection of terms and their definitions'}
63
- </p>
64
-
65
- <div className={styles.searchContainer}>
66
- <input
67
- type="text"
68
- placeholder="Search terms..."
69
- className={styles.searchInput}
70
- value={searchTerm}
71
- onChange={e => setSearchTerm(e.target.value)}
72
- />
73
- </div>
74
- </header>
75
-
76
- {filteredTerms.length === 0 ? (
77
- <div className={styles.noResults}>
78
- <p>No terms found matching "{searchTerm}"</p>
79
- </div>
80
- ) : (
81
- <div className={styles.glossaryContent}>
82
- {/* Letter navigation */}
83
- <nav className={styles.letterNav}>
84
- {letters.map(letter => (
85
- <a key={letter} href={`#letter-${letter}`} className={styles.letterLink}>
86
- {letter}
87
- </a>
88
- ))}
89
- </nav>
90
-
91
- {/* Terms grouped by letter */}
92
- {letters.map(letter => (
93
- <section key={letter} id={`letter-${letter}`} className={styles.letterSection}>
94
- <h2 className={styles.letterHeading}>{letter}</h2>
95
- <dl className={styles.termList}>
96
- {groupedTerms[letter].map((term, index) => (
97
- <div
98
- key={`${letter}-${index}`}
99
- className={styles.termItem}
100
- id={term.id || term.term.toLowerCase().replace(/\s+/g, '-')}
101
- >
102
- <dt className={styles.termName}>
103
- {term.term}
104
- {term.abbreviation && (
105
- <span className={styles.abbreviation}> ({term.abbreviation})</span>
106
- )}
107
- </dt>
108
- <dd className={styles.termDefinition}>
109
- {term.definition}
110
- {term.relatedTerms && term.relatedTerms.length > 0 && (
111
- <div className={styles.relatedTerms}>
112
- <strong>Related terms:</strong>{' '}
113
- {term.relatedTerms.map((related, idx) => (
114
- <React.Fragment key={idx}>
115
- {idx > 0 && ', '}
116
- <a href={`#${related.toLowerCase().replace(/\s+/g, '-')}`}>
117
- {related}
118
- </a>
119
- </React.Fragment>
120
- ))}
121
- </div>
122
- )}
123
- </dd>
124
- </div>
125
- ))}
126
- </dl>
127
- </section>
128
- ))}
129
- </div>
130
- )}
131
-
132
- <footer className={styles.glossaryFooter}>
133
- <p>Total terms: {terms.length}</p>
134
- </footer>
135
- </div>
136
- </Layout>
137
- );
36
+ return /* @__PURE__ */ jsx(Layout, { title: "Glossary", description: "A glossary of terms and definitions", children: /* @__PURE__ */ jsxs("div", { className: styles.glossaryContainer, children: [
37
+ /* @__PURE__ */ jsxs("header", { className: styles.glossaryHeader, children: [
38
+ /* @__PURE__ */ jsx("h1", { children: "Glossary" }),
39
+ /* @__PURE__ */ jsx("p", { className: styles.glossaryDescription, children: glossaryData?.description || "A collection of terms and their definitions" }),
40
+ /* @__PURE__ */ jsx("div", { className: styles.searchContainer, children: /* @__PURE__ */ jsx(
41
+ "input",
42
+ {
43
+ type: "text",
44
+ placeholder: "Search terms...",
45
+ className: styles.searchInput,
46
+ value: searchTerm,
47
+ onChange: (e) => setSearchTerm(e.target.value)
48
+ }
49
+ ) })
50
+ ] }),
51
+ filteredTerms.length === 0 ? /* @__PURE__ */ jsx("div", { className: styles.noResults, children: /* @__PURE__ */ jsxs("p", { children: [
52
+ 'No terms found matching "',
53
+ searchTerm,
54
+ '"'
55
+ ] }) }) : /* @__PURE__ */ jsxs("div", { className: styles.glossaryContent, children: [
56
+ /* @__PURE__ */ jsx("nav", { className: styles.letterNav, children: letters.map((letter) => /* @__PURE__ */ jsx("a", { href: `#letter-${letter}`, className: styles.letterLink, children: letter }, letter)) }),
57
+ letters.map((letter) => /* @__PURE__ */ jsxs("section", { id: `letter-${letter}`, className: styles.letterSection, children: [
58
+ /* @__PURE__ */ jsx("h2", { className: styles.letterHeading, children: letter }),
59
+ /* @__PURE__ */ jsx("dl", { className: styles.termList, children: groupedTerms[letter].map((term, index) => /* @__PURE__ */ jsxs(
60
+ "div",
61
+ {
62
+ className: styles.termItem,
63
+ id: term.id || term.term.toLowerCase().replace(/\s+/g, "-"),
64
+ children: [
65
+ /* @__PURE__ */ jsxs("dt", { className: styles.termName, children: [
66
+ term.term,
67
+ term.abbreviation && /* @__PURE__ */ jsxs("span", { className: styles.abbreviation, children: [
68
+ " (",
69
+ term.abbreviation,
70
+ ")"
71
+ ] })
72
+ ] }),
73
+ /* @__PURE__ */ jsxs("dd", { className: styles.termDefinition, children: [
74
+ term.definition,
75
+ term.relatedTerms && term.relatedTerms.length > 0 && /* @__PURE__ */ jsxs("div", { className: styles.relatedTerms, children: [
76
+ /* @__PURE__ */ jsx("strong", { children: "Related terms:" }),
77
+ " ",
78
+ term.relatedTerms.map((related, idx) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
79
+ idx > 0 && ", ",
80
+ /* @__PURE__ */ jsx("a", { href: `#${related.toLowerCase().replace(/\s+/g, "-")}`, children: related })
81
+ ] }, idx))
82
+ ] })
83
+ ] })
84
+ ]
85
+ },
86
+ `${letter}-${index}`
87
+ )) })
88
+ ] }, letter))
89
+ ] }),
90
+ /* @__PURE__ */ jsx("footer", { className: styles.glossaryFooter, children: /* @__PURE__ */ jsxs("p", { children: [
91
+ "Total terms: ",
92
+ terms.length
93
+ ] }) })
94
+ ] }) });
138
95
  }
96
+ export {
97
+ GlossaryPage as default
98
+ };
99
+ //# sourceMappingURL=GlossaryPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/GlossaryPage.js"],"sourcesContent":["import React, { useState, useMemo } from 'react';\nimport Layout from '@theme/Layout';\nimport useDocusaurusContext from '@docusaurus/useDocusaurusContext';\nimport styles from './GlossaryPage.module.css';\n\n/**\n * Groups glossary terms by their first letter\n */\nfunction groupTermsByLetter(terms) {\n const grouped = {};\n\n terms.forEach(term => {\n const firstLetter = term.term.charAt(0).toUpperCase();\n if (!grouped[firstLetter]) {\n grouped[firstLetter] = [];\n }\n grouped[firstLetter].push(term);\n });\n\n // Sort each group alphabetically\n Object.keys(grouped).forEach(letter => {\n grouped[letter].sort((a, b) => a.term.localeCompare(b.term));\n });\n\n return grouped;\n}\n\n/**\n * GlossaryPage component - displays all glossary terms\n */\nexport default function GlossaryPage({ glossaryData }) {\n useDocusaurusContext();\n const [searchTerm, setSearchTerm] = useState('');\n\n const terms = useMemo(() => glossaryData?.terms || [], [glossaryData?.terms]);\n\n // Filter terms based on search\n const filteredTerms = useMemo(() => {\n if (!searchTerm) return terms;\n\n const lowerSearch = searchTerm.toLowerCase();\n return terms.filter(\n term =>\n term.term.toLowerCase().includes(lowerSearch) ||\n term.definition.toLowerCase().includes(lowerSearch)\n );\n }, [terms, searchTerm]);\n\n // Group terms by first letter\n const groupedTerms = useMemo(() => {\n return groupTermsByLetter(filteredTerms);\n }, [filteredTerms]);\n\n const letters = Object.keys(groupedTerms).sort();\n\n return (\n <Layout title=\"Glossary\" description=\"A glossary of terms and definitions\">\n <div className={styles.glossaryContainer}>\n <header className={styles.glossaryHeader}>\n <h1>Glossary</h1>\n <p className={styles.glossaryDescription}>\n {glossaryData?.description || 'A collection of terms and their definitions'}\n </p>\n\n <div className={styles.searchContainer}>\n <input\n type=\"text\"\n placeholder=\"Search terms...\"\n className={styles.searchInput}\n value={searchTerm}\n onChange={e => setSearchTerm(e.target.value)}\n />\n </div>\n </header>\n\n {filteredTerms.length === 0 ? (\n <div className={styles.noResults}>\n <p>No terms found matching \"{searchTerm}\"</p>\n </div>\n ) : (\n <div className={styles.glossaryContent}>\n {/* Letter navigation */}\n <nav className={styles.letterNav}>\n {letters.map(letter => (\n <a key={letter} href={`#letter-${letter}`} className={styles.letterLink}>\n {letter}\n </a>\n ))}\n </nav>\n\n {/* Terms grouped by letter */}\n {letters.map(letter => (\n <section key={letter} id={`letter-${letter}`} className={styles.letterSection}>\n <h2 className={styles.letterHeading}>{letter}</h2>\n <dl className={styles.termList}>\n {groupedTerms[letter].map((term, index) => (\n <div\n key={`${letter}-${index}`}\n className={styles.termItem}\n id={term.id || term.term.toLowerCase().replace(/\\s+/g, '-')}\n >\n <dt className={styles.termName}>\n {term.term}\n {term.abbreviation && (\n <span className={styles.abbreviation}> ({term.abbreviation})</span>\n )}\n </dt>\n <dd className={styles.termDefinition}>\n {term.definition}\n {term.relatedTerms && term.relatedTerms.length > 0 && (\n <div className={styles.relatedTerms}>\n <strong>Related terms:</strong>{' '}\n {term.relatedTerms.map((related, idx) => (\n <React.Fragment key={idx}>\n {idx > 0 && ', '}\n <a href={`#${related.toLowerCase().replace(/\\s+/g, '-')}`}>\n {related}\n </a>\n </React.Fragment>\n ))}\n </div>\n )}\n </dd>\n </div>\n ))}\n </dl>\n </section>\n ))}\n </div>\n )}\n\n <footer className={styles.glossaryFooter}>\n <p>Total terms: {terms.length}</p>\n </footer>\n </div>\n </Layout>\n );\n}\n"],"mappings":"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","names":[]}