diff --git a/.changeset/sixty-lights-try.md b/.changeset/sixty-lights-try.md new file mode 100644 index 00000000..36511e25 --- /dev/null +++ b/.changeset/sixty-lights-try.md @@ -0,0 +1,14 @@ +--- +"@docsearch/react": patch +"@docsearch/css": patch +"@docsearch/js": patch +--- + +feat(v5): add customizable footer action + +- New `footerAction` prop renders a custom action in the modal footer, + before the Algolia logo, inside `.DocSearch-Footer-Action` +- `@docsearch/js` supports `footerAction` via template patterns (html helper, + JSX, or function-based) +- Fixes typing differences between `@docsearch/react` and `@docsearch/js` +- Restyle the footer with a `.DocSearch-Footer-Actions` wrapper diff --git a/bun.lock b/bun.lock index 99dc9523..a7632619 100644 --- a/bun.lock +++ b/bun.lock @@ -31,7 +31,7 @@ }, "adapters/docusaurus-theme-search-algolia": { "name": "@docsearch/docusaurus-adapter", - "version": "5.0.0-beta.1", + "version": "5.0.0-beta.2", "dependencies": { "@algolia/autocomplete-core": "1.19.2", "@docsearch/core": "workspace:*", @@ -115,7 +115,7 @@ }, "packages/docsearch-core": { "name": "@docsearch/core", - "version": "5.0.0-beta.1", + "version": "5.0.0-beta.2", "devDependencies": { "@testing-library/jest-dom": "6.6.3", "@testing-library/react": "16.2.0", @@ -137,7 +137,7 @@ }, "packages/docsearch-css": { "name": "@docsearch/css", - "version": "5.0.0-beta.1", + "version": "5.0.0-beta.2", "devDependencies": { "browserslist": "4.28.2", "lightningcss": "1.32.0", @@ -146,7 +146,7 @@ }, "packages/docsearch-js": { "name": "@docsearch/js", - "version": "5.0.0-beta.1", + "version": "5.0.0-beta.2", "dependencies": { "@docsearch/core": "4.6.0", "@docsearch/react": "4.6.0", @@ -160,7 +160,7 @@ }, "packages/docsearch-modal": { "name": "@docsearch/modal", - "version": "5.0.0-beta.1", + "version": "5.0.0-beta.2", "dependencies": { "@docsearch/core": "4.6.0", "@docsearch/react": "4.6.0", @@ -185,13 +185,13 @@ }, "packages/docsearch-react": { "name": "@docsearch/react", - "version": "5.0.0-beta.1", + "version": "5.0.0-beta.2", "dependencies": { "@ai-sdk/react": "^2.0.30", "@algolia/autocomplete-core": "1.19.2", "@base-ui/react": "^1.5.0", - "@docsearch/core": "5.0.0-beta.1", - "@docsearch/css": "5.0.0-beta.1", + "@docsearch/core": "5.0.0-beta.2", + "@docsearch/css": "5.0.0-beta.2", "ai": "^5.0.30", "algoliasearch": "^5.28.0", "marked": "^16.3.0", @@ -199,7 +199,7 @@ }, "devDependencies": { "@algolia/autocomplete-core": "1.19.2", - "@docsearch/core": "5.0.0-beta.1", + "@docsearch/core": "5.0.0-beta.2", "@testing-library/jest-dom": "6.6.3", "@testing-library/react": "16.2.0", "preact": "11.0.0-beta.0", @@ -222,7 +222,7 @@ }, "packages/docsearch-sidepanel": { "name": "@docsearch/sidepanel", - "version": "5.0.0-beta.1", + "version": "5.0.0-beta.2", "dependencies": { "@docsearch/core": "4.6.0", "@docsearch/css": "4.6.0", @@ -248,7 +248,7 @@ }, "packages/docsearch-sidepanel-js": { "name": "@docsearch/sidepanel-js", - "version": "5.0.0-beta.1", + "version": "5.0.0-beta.2", "dependencies": { "@docsearch/core": "4.6.0", "@docsearch/react": "4.6.0", diff --git a/examples/demo-js/package.json b/examples/demo-js/package.json index 0b622f14..fc753742 100644 --- a/examples/demo-js/package.json +++ b/examples/demo-js/package.json @@ -10,9 +10,9 @@ "preview": "vite preview" }, "dependencies": { - "@docsearch/css": "5.0.0-beta.2", - "@docsearch/js": "5.0.0-beta.2", - "@docsearch/sidepanel-js": "5.0.0-beta.2" + "@docsearch/css": "workspace:*", + "@docsearch/js": "workspace:*", + "@docsearch/sidepanel-js": "workspace:*" }, "devDependencies": { "vite": "^6.0.7" diff --git a/examples/demo-js/src/main.ts b/examples/demo-js/src/main.ts index 0d59115a..d2bba01c 100644 --- a/examples/demo-js/src/main.ts +++ b/examples/demo-js/src/main.ts @@ -1,7 +1,4 @@ -import docsearch, { - type DocSearchInstance, - type TemplateHelpers, -} from '@docsearch/js'; +import docsearch, { type DocSearchInstance } from '@docsearch/js'; import sidepanel, { type SidepanelInstance } from '@docsearch/sidepanel-js'; import './app.css'; @@ -91,10 +88,7 @@ docsearchInstance = docsearch({ // eslint-disable-next-line no-console console.log('[demo-js] docsearch onClose()'); }, - resultsFooterComponent: ({ state }, helpers?: TemplateHelpers) => { - const { html } = helpers || {}; - if (!html) return null; - + resultsFooterComponent: ({ state }, { html }) => { return html`