feat: search
Some checks are pending
Deploy triz-docs to 150 / build-and-deploy (push) Waiting to run

This commit is contained in:
Othmane Ataallah 2026-04-29 14:30:42 +01:00
parent 23ca95bc4c
commit 84be05d6bf
5 changed files with 530 additions and 0 deletions

View File

@ -11,6 +11,10 @@ const config = {
v4: true,
},
clientModules: [
require.resolve('./src/clientModules/searchFocus.js'),
],
url: 'https://150.triztech.pro',
baseUrl: '/docs/',
@ -101,6 +105,19 @@ const config = {
additionalLanguages: ['java', 'properties', 'bash'],
},
}),
plugins: [
[
require.resolve('@cmfcmf/docusaurus-search-local'),
{
language: 'en',
indexDocs: true,
indexBlog: false,
indexPages: true,
maxSearchResults: 8,
},
],
],
};
export default config;

421
package-lock.json generated
View File

@ -8,6 +8,7 @@
"name": "triz-docs",
"version": "0.0.0",
"dependencies": {
"@cmfcmf/docusaurus-search-local": "^2.0.1",
"@docusaurus/core": "3.10.0",
"@docusaurus/faster": "3.10.0",
"@docusaurus/preset-classic": "3.10.0",
@ -50,6 +51,23 @@
"@algolia/autocomplete-shared": "1.19.8"
}
},
"node_modules/@algolia/autocomplete-js": {
"version": "1.19.8",
"resolved": "https://registry.npmjs.org/@algolia/autocomplete-js/-/autocomplete-js-1.19.8.tgz",
"integrity": "sha512-9Sfr9Un3vObdtnj6IqzxoD9XisjFJxA9WAyVxmOkwTD9aVluyNwDeEWeGLy12xhRyILjA5C7byto159cZcdEEA==",
"license": "MIT",
"dependencies": {
"@algolia/autocomplete-core": "1.19.8",
"@algolia/autocomplete-preset-algolia": "1.19.8",
"@algolia/autocomplete-shared": "1.19.8",
"htm": "^3.1.1",
"preact": "^10.13.2"
},
"peerDependencies": {
"@algolia/client-search": ">= 4.5.1 < 6",
"algoliasearch": ">= 4.9.1 < 6"
}
},
"node_modules/@algolia/autocomplete-plugin-algolia-insights": {
"version": "1.19.8",
"resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.8.tgz",
@ -62,6 +80,19 @@
"search-insights": ">= 1 < 3"
}
},
"node_modules/@algolia/autocomplete-preset-algolia": {
"version": "1.19.8",
"resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.19.8.tgz",
"integrity": "sha512-5XhJe5uXXLrt+C1MjIv1/BfGNHZyD1xkAYMVANTjdY+PXwO4o+3YIK2XGU0MxHTGryy70G6+xVO9TB7xA+3hGQ==",
"license": "MIT",
"dependencies": {
"@algolia/autocomplete-shared": "1.19.8"
},
"peerDependencies": {
"@algolia/client-search": ">= 4.9.1 < 6",
"algoliasearch": ">= 4.9.1 < 6"
}
},
"node_modules/@algolia/autocomplete-shared": {
"version": "1.19.8",
"resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz",
@ -72,6 +103,36 @@
"algoliasearch": ">= 4.9.1 < 6"
}
},
"node_modules/@algolia/autocomplete-theme-classic": {
"version": "1.19.8",
"resolved": "https://registry.npmjs.org/@algolia/autocomplete-theme-classic/-/autocomplete-theme-classic-1.19.8.tgz",
"integrity": "sha512-FYmpeOyL5Wy444ZGp1IW57fevpMSBMewN37j+0WULMTJZGobnvTgVEKjYIgtv5Ku4/RNNp54rtEx2/OU6l8GYA==",
"license": "MIT"
},
"node_modules/@algolia/cache-browser-local-storage": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.27.0.tgz",
"integrity": "sha512-YGog2s57sO20lvpa+hv5XLAAmiTI1kHsCMRtPVfiaOdIQnvRla21lfH08onqEbZihOPVI8GULwt79zQB2ymKzg==",
"license": "MIT",
"dependencies": {
"@algolia/cache-common": "4.27.0"
}
},
"node_modules/@algolia/cache-common": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.27.0.tgz",
"integrity": "sha512-Sr8zjNXj82p6lO4W9CdzfF0m0/9h/H6VAdSHOTtimm/cTzXIYXRI2IZq7+Nt2ljJ7Ukx+7dIFcxQjE57eQSPsw==",
"license": "MIT"
},
"node_modules/@algolia/cache-in-memory": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.27.0.tgz",
"integrity": "sha512-abgMRTcVD0IllNvMM9JFhxtyLn1v6Ey7mQ7+BGS3JCzvkCX7KZqlS0BIuVUDgx9sPIfOeNsG/awGzMmP50TwZw==",
"license": "MIT",
"dependencies": {
"@algolia/cache-common": "4.27.0"
}
},
"node_modules/@algolia/client-abtesting": {
"version": "5.51.0",
"resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.51.0.tgz",
@ -87,6 +148,38 @@
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-account": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.27.0.tgz",
"integrity": "sha512-sSHxwrKTKJrwfoR/LcQJZfmiWJcM5d9Rp7afMChxOcdGdkSdIwrNBC8SCcHRenA3GsZ6mg+j6px7KWYxJ34btA==",
"license": "MIT",
"dependencies": {
"@algolia/client-common": "4.27.0",
"@algolia/client-search": "4.27.0",
"@algolia/transporter": "4.27.0"
}
},
"node_modules/@algolia/client-account/node_modules/@algolia/client-common": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz",
"integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==",
"license": "MIT",
"dependencies": {
"@algolia/requester-common": "4.27.0",
"@algolia/transporter": "4.27.0"
}
},
"node_modules/@algolia/client-account/node_modules/@algolia/client-search": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz",
"integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==",
"license": "MIT",
"dependencies": {
"@algolia/client-common": "4.27.0",
"@algolia/requester-common": "4.27.0",
"@algolia/transporter": "4.27.0"
}
},
"node_modules/@algolia/client-analytics": {
"version": "5.51.0",
"resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.51.0.tgz",
@ -192,6 +285,21 @@
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/logger-common": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.27.0.tgz",
"integrity": "sha512-pIrmQRXtDV+zTMVXKtKCosC2rWhn0F0TdUeb9etA6RiAz6jY6bY6f0+JX7YekDK09SnmZMLIyUa7Jci+Ied9bw==",
"license": "MIT"
},
"node_modules/@algolia/logger-console": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.27.0.tgz",
"integrity": "sha512-UWvta8BxsR/u5z9eI088mOSLQaGtmoCtXeN3DYJurlxAdJwPuKtEb5+433kxA6/E9f2/JgoW89KZ1vNP9pcHBQ==",
"license": "MIT",
"dependencies": {
"@algolia/logger-common": "4.27.0"
}
},
"node_modules/@algolia/monitoring": {
"version": "1.51.0",
"resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.51.0.tgz",
@ -234,6 +342,12 @@
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/requester-common": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.27.0.tgz",
"integrity": "sha512-VC3prAQVgWTubMStb3mJz6i61Hqbtagi2LeIbgNtoFJFff3XZDcAaO1D5r0GYl2+DrB2VzUHnQXbkiuI+HHYyg==",
"license": "MIT"
},
"node_modules/@algolia/requester-fetch": {
"version": "5.51.0",
"resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.51.0.tgz",
@ -258,6 +372,17 @@
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/transporter": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.27.0.tgz",
"integrity": "sha512-PvSbELU4VjN3xSX79ki+zIdOGhTxyJXWvRDzkUjfTx2iNfPWDdTjzKbP1o+268coJztxrkuBwJz90Urek7o1Kw==",
"license": "MIT",
"dependencies": {
"@algolia/cache-common": "4.27.0",
"@algolia/logger-common": "4.27.0",
"@algolia/requester-common": "4.27.0"
}
},
"node_modules/@babel/code-frame": {
"version": "7.29.0",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
@ -1959,6 +2084,194 @@
"node": ">=6.9.0"
}
},
"node_modules/@cmfcmf/docusaurus-search-local": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@cmfcmf/docusaurus-search-local/-/docusaurus-search-local-2.0.1.tgz",
"integrity": "sha512-4Gk313a+9HGetIFB9f087Qrmba5svx0zY9xZ10QKd79Nic0IsY0/JktDqFMZ51IDuL+9yIMOsdeKb313ce2mnw==",
"license": "MIT",
"dependencies": {
"@algolia/autocomplete-js": "^1.8.2",
"@algolia/autocomplete-theme-classic": "^1.8.2",
"@algolia/client-search": "^4.12.0",
"algoliasearch": "^4.12.0",
"cheerio": "^1.0.0",
"clsx": "^2.0.0",
"lunr-languages": "^1.4.0",
"mark.js": "^8.11.1",
"tslib": "^2.6.3"
},
"peerDependencies": {
"@docusaurus/core": "^3.0.0",
"nodejieba": "^2.5.0 || ^3.0.0",
"react": "^18 || ^19",
"react-dom": "^18 || ^19"
},
"peerDependenciesMeta": {
"nodejieba": {
"optional": true
}
}
},
"node_modules/@cmfcmf/docusaurus-search-local/node_modules/@algolia/client-analytics": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.27.0.tgz",
"integrity": "sha512-MqIDyxODljn9ZC4oqjQD0kez2a4zjIJ9ywA/b7cIiUiK/tDjZNTVjYd9WXMKQlXnWUwfrfXJZClVVqN1iCXS+Q==",
"license": "MIT",
"dependencies": {
"@algolia/client-common": "4.27.0",
"@algolia/client-search": "4.27.0",
"@algolia/requester-common": "4.27.0",
"@algolia/transporter": "4.27.0"
}
},
"node_modules/@cmfcmf/docusaurus-search-local/node_modules/@algolia/client-common": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz",
"integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==",
"license": "MIT",
"dependencies": {
"@algolia/requester-common": "4.27.0",
"@algolia/transporter": "4.27.0"
}
},
"node_modules/@cmfcmf/docusaurus-search-local/node_modules/@algolia/client-personalization": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.27.0.tgz",
"integrity": "sha512-OZqaFFVm+10hAlmxpiTWi/o2n+YKBESbSqSy2yXAumPH/kaK4moJHFblbh8IkV3KZR0lLm4hzPtn8Q2nWNiDUA==",
"license": "MIT",
"dependencies": {
"@algolia/client-common": "4.27.0",
"@algolia/requester-common": "4.27.0",
"@algolia/transporter": "4.27.0"
}
},
"node_modules/@cmfcmf/docusaurus-search-local/node_modules/@algolia/client-search": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz",
"integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==",
"license": "MIT",
"dependencies": {
"@algolia/client-common": "4.27.0",
"@algolia/requester-common": "4.27.0",
"@algolia/transporter": "4.27.0"
}
},
"node_modules/@cmfcmf/docusaurus-search-local/node_modules/@algolia/recommend": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.27.0.tgz",
"integrity": "sha512-CFy54xDjrsazPi3KN04yPmLRDT72AKokc3RLOdWQvG0/uEUjj7dhWqe9qenxpL4ydsjO7S1eY5YqmX+uMGonlg==",
"license": "MIT",
"dependencies": {
"@algolia/cache-browser-local-storage": "4.27.0",
"@algolia/cache-common": "4.27.0",
"@algolia/cache-in-memory": "4.27.0",
"@algolia/client-common": "4.27.0",
"@algolia/client-search": "4.27.0",
"@algolia/logger-common": "4.27.0",
"@algolia/logger-console": "4.27.0",
"@algolia/requester-browser-xhr": "4.27.0",
"@algolia/requester-common": "4.27.0",
"@algolia/requester-node-http": "4.27.0",
"@algolia/transporter": "4.27.0"
}
},
"node_modules/@cmfcmf/docusaurus-search-local/node_modules/@algolia/requester-browser-xhr": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.27.0.tgz",
"integrity": "sha512-dTenMBIIpyp5o3C2ZnfbsuSlD/lL9jPkk6T+2+qm38fyw2nf49ANbcHFE79NgiGrnmw7QrYveCs9NIP3Wk4v6g==",
"license": "MIT",
"dependencies": {
"@algolia/requester-common": "4.27.0"
}
},
"node_modules/@cmfcmf/docusaurus-search-local/node_modules/@algolia/requester-node-http": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.27.0.tgz",
"integrity": "sha512-y8nUqaUQeSOQ5oaNo0b2QPznyBFW9LoIwljyUphJ+gUZpU6O/j2/C8ovoqDpIe6J0etqHg5RCcBizrCFZuLpyw==",
"license": "MIT",
"dependencies": {
"@algolia/requester-common": "4.27.0"
}
},
"node_modules/@cmfcmf/docusaurus-search-local/node_modules/algoliasearch": {
"version": "4.27.0",
"resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.27.0.tgz",
"integrity": "sha512-C88C5grLa5VOCp9eYZJt+q99ik7yNdm92l7Q9+4XK0Md8kL05Lg8l2v9ZVX0uMW3mH9pAFxMMXlLOvqNumA4lw==",
"license": "MIT",
"dependencies": {
"@algolia/cache-browser-local-storage": "4.27.0",
"@algolia/cache-common": "4.27.0",
"@algolia/cache-in-memory": "4.27.0",
"@algolia/client-account": "4.27.0",
"@algolia/client-analytics": "4.27.0",
"@algolia/client-common": "4.27.0",
"@algolia/client-personalization": "4.27.0",
"@algolia/client-search": "4.27.0",
"@algolia/logger-common": "4.27.0",
"@algolia/logger-console": "4.27.0",
"@algolia/recommend": "4.27.0",
"@algolia/requester-browser-xhr": "4.27.0",
"@algolia/requester-common": "4.27.0",
"@algolia/requester-node-http": "4.27.0",
"@algolia/transporter": "4.27.0"
}
},
"node_modules/@cmfcmf/docusaurus-search-local/node_modules/cheerio": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",
"integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==",
"license": "MIT",
"dependencies": {
"cheerio-select": "^2.1.0",
"dom-serializer": "^2.0.0",
"domhandler": "^5.0.3",
"domutils": "^3.2.2",
"encoding-sniffer": "^0.2.1",
"htmlparser2": "^10.1.0",
"parse5": "^7.3.0",
"parse5-htmlparser2-tree-adapter": "^7.1.0",
"parse5-parser-stream": "^7.1.2",
"undici": "^7.19.0",
"whatwg-mimetype": "^4.0.0"
},
"engines": {
"node": ">=20.18.1"
},
"funding": {
"url": "https://github.com/cheeriojs/cheerio?sponsor=1"
}
},
"node_modules/@cmfcmf/docusaurus-search-local/node_modules/entities": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
"integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/@cmfcmf/docusaurus-search-local/node_modules/htmlparser2": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
"integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
],
"license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3",
"domutils": "^3.2.2",
"entities": "^7.0.1"
}
},
"node_modules/@colors/colors": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@ -8887,6 +9200,31 @@
"node": ">= 0.8"
}
},
"node_modules/encoding-sniffer": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
"integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
"license": "MIT",
"dependencies": {
"iconv-lite": "^0.6.3",
"whatwg-encoding": "^3.1.1"
},
"funding": {
"url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
}
},
"node_modules/encoding-sniffer/node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/enhanced-resolve": {
"version": "5.21.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz",
@ -10298,6 +10636,12 @@
"safe-buffer": "~5.1.0"
}
},
"node_modules/htm": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/htm/-/htm-3.1.1.tgz",
"integrity": "sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==",
"license": "Apache-2.0"
},
"node_modules/html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
@ -11615,6 +11959,18 @@
"yallist": "^3.0.2"
}
},
"node_modules/lunr-languages": {
"version": "1.14.0",
"resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.14.0.tgz",
"integrity": "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==",
"license": "MPL-1.1"
},
"node_modules/mark.js": {
"version": "8.11.1",
"resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz",
"integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==",
"license": "MIT"
},
"node_modules/markdown-extensions": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz",
@ -14575,6 +14931,18 @@
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
"node_modules/parse5-parser-stream": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
"integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
"license": "MIT",
"dependencies": {
"parse5": "^7.0.0"
},
"funding": {
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
"node_modules/parse5/node_modules/entities": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
@ -16167,6 +16535,16 @@
"postcss": "^8.4.31"
}
},
"node_modules/preact": {
"version": "10.29.1",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.29.1.tgz",
"integrity": "sha512-gQCLc/vWroE8lIpleXtdJhTFDogTdZG9AjMUpVkDf2iTCNwYNWA+u16dL41TqUDJO4gm2IgrcMv3uTpjd4Pwmg==",
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
}
},
"node_modules/pretty-error": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
@ -18383,6 +18761,15 @@
"is-typedarray": "^1.0.0"
}
},
"node_modules/undici": {
"version": "7.25.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.25.0.tgz",
"integrity": "sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==",
"license": "MIT",
"engines": {
"node": ">=20.18.1"
}
},
"node_modules/undici-types": {
"version": "7.19.2",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz",
@ -19289,6 +19676,40 @@
"node": ">=0.8.0"
}
},
"node_modules/whatwg-encoding": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
"integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
"deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation",
"license": "MIT",
"dependencies": {
"iconv-lite": "0.6.3"
},
"engines": {
"node": ">=18"
}
},
"node_modules/whatwg-encoding/node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/whatwg-mimetype": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
"integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
"license": "MIT",
"engines": {
"node": ">=18"
}
},
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",

View File

@ -14,6 +14,7 @@
"write-heading-ids": "docusaurus write-heading-ids"
},
"dependencies": {
"@cmfcmf/docusaurus-search-local": "^2.0.1",
"@docusaurus/core": "3.10.0",
"@docusaurus/faster": "3.10.0",
"@docusaurus/preset-classic": "3.10.0",

View File

@ -0,0 +1,35 @@
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
/**
* TrizTech Search UX Helper (Native Algolia Edition)
* This script ensures the search text is cleared when dismissing the modal,
* strictly using Algolia's native buttons to prevent React state crashes.
*/
if (ExecutionEnvironment.canUseDOM) {
// Use mousedown with capture phase to intercept before Algolia closes the modal
window.addEventListener('mousedown', (e) => {
// 1. Identify what the user is clicking
const isCancelButton = !!e.target.closest('.aa-DetachedCancelButton');
const isOverlay = e.target.classList.contains('aa-DetachedOverlay');
// 2. Apply Desired Behaviors:
// - If clicking "x" (.aa-ClearButton), we do NOTHING. Algolia natively handles this
// by clearing the text and keeping the modal open. (If it was quitting before,
// it was because our previous artificial events crashed the component).
// - If clicking "Cancel" or "Background Overlay", we want to clear the text AND quit.
if (isCancelButton || isOverlay) {
// Find Algolia's native Clear Button (the "x" inside the search input)
const clearButton = document.querySelector('.aa-ClearButton');
// If the clear button exists, it means there is text in the input
if (clearButton) {
// Programmatically click the native clear button to safely reset Algolia's internal React state
clearButton.click();
}
// We don't stop propagation. The event will continue down to the Cancel button
// or Overlay, allowing Algolia to natively close the modal.
}
}, { capture: true });
}

View File

@ -308,6 +308,62 @@ code {
box-shadow: 0 0 0 1px var(--ifm-color-primary);
}
/* ========================================
Search Bar (Local Search)
======================================== */
.navbar__search {
padding-left: 0.5rem;
}
.aa-DetachedSearchButton {
background-color: var(--tt-bg-surface-raised) !important;
border: 1px solid var(--tt-border-color) !important;
border-radius: 0.5rem !important;
padding: 0 0.75rem !important;
font-size: 0.85rem !important;
transition: all 0.2s ease !important;
color: var(--ifm-font-color-base) !important;
width: 12rem !important;
height: 36px !important;
}
.aa-DetachedSearchButton:hover {
border-color: var(--ifm-color-primary) !important;
background-color: var(--ifm-background-surface-color) !important;
}
[data-theme='dark'] .aa-DetachedSearchButton {
background-color: var(--ifm-background-surface-color) !important;
}
.aa-DetachedSearchButtonIcon {
color: var(--ifm-font-color-base) !important;
opacity: 0.6;
}
.aa-DetachedSearchButtonPlaceholder {
color: var(--ifm-font-color-base) !important;
opacity: 0.6;
}
/* Mobile Responsiveness for Search Button */
@media (max-width: 996px) {
.aa-DetachedSearchButton {
width: 36px !important;
padding: 0 !important;
justify-content: center !important;
}
.aa-DetachedSearchButtonPlaceholder {
display: none !important;
}
.aa-DetachedSearchButtonIcon {
width: 20px !important;
margin: 0 !important;
}
}
/* ========================================
Search & DocCard (category index pages)
======================================== */