From 857fe1521d2c3ebcb1f2f3eccd2afefe5fede833 Mon Sep 17 00:00:00 2001 From: Thang Vu Date: Tue, 28 Jan 2025 09:07:06 +0700 Subject: [PATCH 1/8] docs: use DocSearch instead of own component (#12553) --- docs/components/DocSearch/hit.tsx | 62 ---- docs/components/DocSearch/searchInput.tsx | 105 ------ docs/components/DocSearch/wrapper.tsx | 115 +----- docs/package.json | 5 +- pnpm-lock.yaml | 420 +++++++++++++--------- 5 files changed, 266 insertions(+), 441 deletions(-) delete mode 100644 docs/components/DocSearch/hit.tsx delete mode 100644 docs/components/DocSearch/searchInput.tsx diff --git a/docs/components/DocSearch/hit.tsx b/docs/components/DocSearch/hit.tsx deleted file mode 100644 index 8e94e1f863..0000000000 --- a/docs/components/DocSearch/hit.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { Highlight, useInstantSearch } from "react-instantsearch" -import Link from "next/link" - -export default function Hit({ hit }) { - const { setIndexUiState } = useInstantSearch() - const hierarchy = Object.values(hit.hierarchy)?.filter(Boolean) - const path = new URL(hit.url_without_anchor).pathname - - const onClick = () => { - setIndexUiState((prevIndexUiState) => ({ - ...prevIndexUiState, - query: "", - })) - } - - return ( - -

- {hierarchy.map((label: string, idx: number) => ( - <> - {label} - {idx < hierarchy.length - 1 ? : null} - - ))} -

- -

{path}

- - ) -} - -function CaretRight() { - return ( - - - - - ) -} diff --git a/docs/components/DocSearch/searchInput.tsx b/docs/components/DocSearch/searchInput.tsx deleted file mode 100644 index 91a26addab..0000000000 --- a/docs/components/DocSearch/searchInput.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { useState, useRef } from "react" -import { - useInstantSearch, - useSearchBox, - UseSearchBoxProps, -} from "react-instantsearch" - -export function CustomSearchBox(props: UseSearchBoxProps) { - const { query, refine } = useSearchBox(props) - const { status } = useInstantSearch() - const [inputValue, setInputValue] = useState(query) - const inputRef = useRef(null) - - const isSearchStalled = status === "stalled" - - function setQuery(newQuery: string) { - setInputValue(newQuery) - refine(newQuery) - } - - return ( -
{ - event.preventDefault() - event.stopPropagation() - - if (inputRef.current) { - inputRef.current.blur() - } - }} - onReset={(event) => { - event.preventDefault() - event.stopPropagation() - - setQuery("") - - if (inputRef.current) { - inputRef.current.focus() - } - }} - className="relative" - > - { - setQuery(event.currentTarget.value) - }} - className="w-48 appearance-none rounded-lg bg-black/[.05] px-3 py-1.5 pr-2 text-base leading-tight transition-colors placeholder:text-gray-500 focus:!bg-transparent md:text-sm dark:bg-gray-50/10 dark:placeholder:text-gray-400 [aside_&]:w-full" - /> -
- {inputValue.length ? ( - - ) : ( - - CTRL K - - )} -
- -
- ) -} diff --git a/docs/components/DocSearch/wrapper.tsx b/docs/components/DocSearch/wrapper.tsx index cb87ef3585..8b06b94b9b 100644 --- a/docs/components/DocSearch/wrapper.tsx +++ b/docs/components/DocSearch/wrapper.tsx @@ -1,112 +1,15 @@ -import { useEffect, useRef, useState } from "react" -import algoliasearch from "algoliasearch/lite" -import { InstantSearch, Hits, useInstantSearch } from "react-instantsearch" -//import { InstantSearchNext } from "react-instantsearch-nextjs" -import { CustomSearchBox } from "./searchInput" -import Hit from "./hit" +import { DocSearch } from "@docsearch/react" -const algoliaClient = algoliasearch( - process.env.NEXT_PUBLIC_ALGOLIA_APP_ID!, - process.env.NEXT_PUBLIC_ALGOLIA_KEY! -) - -const searchClient = { - ...algoliaClient, - search(requests: any) { - if (requests.every(({ params }) => !params.query)) { - return Promise.resolve({ - results: requests.map(() => ({ - hits: [], - nbHits: 0, - nbPages: 0, - page: 0, - processingTimeMS: 0, - hitsPerPage: 0, - exhaustiveNbHits: false, - query: "", - params: "", - })), - }) - } - return algoliaClient.search(requests) - }, -} - -export default function Wrapper() { - const docSearchRef = useRef(null) - const [isSearchHitsVisible, setIsSearchHitsVisible] = useState(false) - - useEffect(() => { - function ctrlKHandler(e: KeyboardEvent) { - if (e.repeat || e.target instanceof HTMLInputElement) return - if (e.ctrlKey && e.key === "k") { - e.preventDefault() - document - .querySelector('input[type="search"]') - ?.focus() - } - } - - function clickSearchBoxOutsideHandler(event: MouseEvent) { - setIsSearchHitsVisible( - Boolean( - event.target instanceof Node && - docSearchRef.current?.contains(event.target) - ) - ) - } - - window.addEventListener("keydown", ctrlKHandler) - window.addEventListener("mousedown", clickSearchBoxOutsideHandler) - - return () => { - window.removeEventListener("keydown", ctrlKHandler) - window.removeEventListener("mousedown", clickSearchBoxOutsideHandler) - } - }, []) +import "@docsearch/css" +function App() { return ( -
- - - {isSearchHitsVisible && ( - - - - )} - -
+ ) } -function NoResultsBoundary({ children }) { - const { indexUiState, results } = useInstantSearch() - - if ( - indexUiState.query !== undefined && - !results.__isArtificial && - results.nbHits === 0 - ) { - return ( -
- No Results -
- ) - } - - if (indexUiState.query === undefined) { - return null - } - - return children -} +export default App diff --git a/docs/package.json b/docs/package.json index 0234a23823..2a104a746a 100644 --- a/docs/package.json +++ b/docs/package.json @@ -25,6 +25,7 @@ "homepage": "https://authjs.dev", "dependencies": { "@ariakit/react": "^0.4.13", + "@docsearch/react": "3", "@inkeep/widgets": "^0.2.289", "@next/third-parties": "^14.2.15", "@radix-ui/react-accordion": "^1.2.1", @@ -39,9 +40,7 @@ "nextra": "3.0.15", "nextra-theme-docs": "3.0.15", "react": "18.3.1", - "react-dom": "18.3.1", - "react-instantsearch": "^7.13.3", - "react-instantsearch-nextjs": "^0.2.5" + "react-dom": "18.3.1" }, "devDependencies": { "@types/node": "20.12.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fda3540259..df2a2c1d41 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -244,9 +244,12 @@ importers: '@ariakit/react': specifier: ^0.4.13 version: 0.4.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docsearch/react': + specifier: '3' + version: 3.8.3(@algolia/client-search@5.20.0)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.2) '@inkeep/widgets': specifier: ^0.2.289 - version: 0.2.289(@internationalized/date@3.5.2)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + version: 0.2.289(@internationalized/date@3.5.6)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@next/third-parties': specifier: ^14.2.15 version: 14.2.15(next@14.2.21(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react@18.3.1) @@ -289,12 +292,6 @@ importers: react-dom: specifier: 18.3.1 version: 18.3.1(react@18.3.1) - react-instantsearch: - specifier: ^7.13.3 - version: 7.13.3(algoliasearch@4.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-instantsearch-nextjs: - specifier: ^0.2.5 - version: 0.2.5(next@14.2.21(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-instantsearch@7.13.3(algoliasearch@4.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) devDependencies: '@types/node': specifier: 20.12.7 @@ -906,6 +903,26 @@ packages: '@actions/http-client@2.2.0': resolution: {integrity: sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==} + '@algolia/autocomplete-core@1.17.9': + resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==} + + '@algolia/autocomplete-plugin-algolia-insights@1.17.9': + resolution: {integrity: sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==} + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-preset-algolia@1.17.9': + resolution: {integrity: sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/autocomplete-shared@1.17.9': + resolution: {integrity: sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + '@algolia/cache-browser-local-storage@4.24.0': resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==} @@ -915,23 +932,52 @@ packages: '@algolia/cache-in-memory@4.24.0': resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} + '@algolia/client-abtesting@5.20.0': + resolution: {integrity: sha512-YaEoNc1Xf2Yk6oCfXXkZ4+dIPLulCx8Ivqj0OsdkHWnsI3aOJChY5qsfyHhDBNSOhqn2ilgHWxSfyZrjxBcAww==} + engines: {node: '>= 14.0.0'} + '@algolia/client-account@4.24.0': resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==} '@algolia/client-analytics@4.24.0': resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} + '@algolia/client-analytics@5.20.0': + resolution: {integrity: sha512-CIT9ni0+5sYwqehw+t5cesjho3ugKQjPVy/iPiJvtJX4g8Cdb6je6SPt2uX72cf2ISiXCAX9U3cY0nN0efnRDw==} + engines: {node: '>= 14.0.0'} + '@algolia/client-common@4.24.0': resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} + '@algolia/client-common@5.20.0': + resolution: {integrity: sha512-iSTFT3IU8KNpbAHcBUJw2HUrPnMXeXLyGajmCL7gIzWOsYM4GabZDHXOFx93WGiXMti1dymz8k8R+bfHv1YZmA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-insights@5.20.0': + resolution: {integrity: sha512-w9RIojD45z1csvW1vZmAko82fqE/Dm+Ovsy2ElTsjFDB0HMAiLh2FO86hMHbEXDPz6GhHKgGNmBRiRP8dDPgJg==} + engines: {node: '>= 14.0.0'} + '@algolia/client-personalization@4.24.0': resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} + '@algolia/client-personalization@5.20.0': + resolution: {integrity: sha512-p/hftHhrbiHaEcxubYOzqVV4gUqYWLpTwK+nl2xN3eTrSW9SNuFlAvUBFqPXSVBqc6J5XL9dNKn3y8OA1KElSQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-query-suggestions@5.20.0': + resolution: {integrity: sha512-m4aAuis5vZi7P4gTfiEs6YPrk/9hNTESj3gEmGFgfJw3hO2ubdS4jSId1URd6dGdt0ax2QuapXufcrN58hPUcw==} + engines: {node: '>= 14.0.0'} + '@algolia/client-search@4.24.0': resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} - '@algolia/events@4.0.1': - resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} + '@algolia/client-search@5.20.0': + resolution: {integrity: sha512-KL1zWTzrlN4MSiaK1ea560iCA/UewMbS4ZsLQRPoDTWyrbDKVbztkPwwv764LAqgXk0fvkNZvJ3IelcK7DqhjQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/ingestion@1.20.0': + resolution: {integrity: sha512-shj2lTdzl9un4XJblrgqg54DoK6JeKFO8K8qInMu4XhE2JuB8De6PUuXAQwiRigZupbI0xq8aM0LKdc9+qiLQA==} + engines: {node: '>= 14.0.0'} '@algolia/logger-common@4.24.0': resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==} @@ -939,18 +985,38 @@ packages: '@algolia/logger-console@4.24.0': resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} + '@algolia/monitoring@1.20.0': + resolution: {integrity: sha512-aF9blPwOhKtWvkjyyXh9P5peqmhCA1XxLBRgItT+K6pbT0q4hBDQrCid+pQZJYy4HFUKjB/NDDwyzFhj/rwKhw==} + engines: {node: '>= 14.0.0'} + '@algolia/recommend@4.24.0': resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} + '@algolia/recommend@5.20.0': + resolution: {integrity: sha512-T6B/WPdZR3b89/F9Vvk6QCbt/wrLAtrGoL8z4qPXDFApQ8MuTFWbleN/4rHn6APWO3ps+BUePIEbue2rY5MlRw==} + engines: {node: '>= 14.0.0'} + '@algolia/requester-browser-xhr@4.24.0': resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} + '@algolia/requester-browser-xhr@5.20.0': + resolution: {integrity: sha512-t6//lXsq8E85JMenHrI6mhViipUT5riNhEfCcvtRsTV+KIBpC6Od18eK864dmBhoc5MubM0f+sGpKOqJIlBSCg==} + engines: {node: '>= 14.0.0'} + '@algolia/requester-common@4.24.0': resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} + '@algolia/requester-fetch@5.20.0': + resolution: {integrity: sha512-FHxYGqRY+6bgjKsK4aUsTAg6xMs2S21elPe4Y50GB0Y041ihvw41Vlwy2QS6K9ldoftX4JvXodbKTcmuQxywdQ==} + engines: {node: '>= 14.0.0'} + '@algolia/requester-node-http@4.24.0': resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} + '@algolia/requester-node-http@5.20.0': + resolution: {integrity: sha512-kmtQClq/w3vtPteDSPvaW9SPZL/xrIgMrxZyAgsFwrJk0vJxqyC5/hwHmrCraDnStnGSADnLpBf4SpZnwnkwWw==} + engines: {node: '>= 14.0.0'} + '@algolia/transporter@4.24.0': resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} @@ -1991,6 +2057,26 @@ packages: peerDependencies: postcss-selector-parser: ^6.0.13 + '@docsearch/css@3.8.3': + resolution: {integrity: sha512-1nELpMV40JDLJ6rpVVFX48R1jsBFIQ6RnEQDsLFGmzOjPWTOMlZqUcXcvRx8VmYV/TqnS1l784Ofz+ZEb+wEOQ==} + + '@docsearch/react@3.8.3': + resolution: {integrity: sha512-6UNrg88K7lJWmuS6zFPL/xgL+n326qXqZ7Ybyy4E8P/6Rcblk3GE8RXxeol4Pd5pFpKMhOhBhzABKKwHtbJCIg==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + '@emnapi/runtime@1.2.0': resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} @@ -5040,9 +5126,6 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/dom-speech-recognition@0.0.1': - resolution: {integrity: sha512-udCxb8DvjcDKfk1WTBzDsxFbLgYxmQGKrE/ricoMqHRNjSlSUCcamVTA5lIQqzY10mY5qCY0QDwBfFEwhfoDPw==} - '@types/eslint@8.56.10': resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} @@ -5058,18 +5141,12 @@ packages: '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - '@types/google.maps@3.58.1': - resolution: {integrity: sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==} - '@types/hast@2.3.10': resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - '@types/hogan.js@3.0.5': - resolution: {integrity: sha512-/uRaY3HGPWyLqOyhgvW9Aa43BNnLZrNeQxl2p8wqId4UHMfPKolSB+U7BlZyO1ng7MkLnyEAItsBzCG0SDhqrA==} - '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} @@ -5235,9 +5312,6 @@ packages: '@types/qs@6.9.11': resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} - '@types/qs@6.9.16': - resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} - '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} @@ -6056,14 +6130,13 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - algoliasearch-helper@3.22.5: - resolution: {integrity: sha512-lWvhdnc+aKOKx8jyA3bsdEgHzm/sglC4cYdMG4xSQyRiPLJVJtH/IVYZG3Hp6PkTEhQqhyVYkeP9z2IlcHJsWw==} - peerDependencies: - algoliasearch: '>= 3.1 < 6' - algoliasearch@4.24.0: resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} + algoliasearch@5.20.0: + resolution: {integrity: sha512-groO71Fvi5SWpxjI9Ia+chy0QBwT61mg6yxJV27f5YFf+Mw+STT75K6SHySpP8Co5LsCrtsbCH5dJZSRtkSKaQ==} + engines: {node: '>= 14.0.0'} + ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -8500,10 +8573,6 @@ packages: highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} - hogan.js@3.0.2: - resolution: {integrity: sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==} - hasBin: true - hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} @@ -8517,9 +8586,6 @@ packages: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} - htm@3.1.1: - resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} - html-dom-parser@3.1.7: resolution: {integrity: sha512-cDgNF4YgF6J3H+d9mcldGL19p0GzVdS3iGuDNzYWQpU47q3+IRM85X3Xo07E+nntF4ek4s78A9V24EwxlPTjig==} @@ -8700,14 +8766,6 @@ packages: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} - instantsearch-ui-components@0.9.0: - resolution: {integrity: sha512-ugQ+XdPx3i3Sxu+woRo6tPE0Fz/kWd4KblTUfZD1TZZBsm/8qFvcbg5dVBDvXX9v7ntoyugXCzC/XCZMzrSkig==} - - instantsearch.js@4.75.0: - resolution: {integrity: sha512-sP2bCNORXb2Bu7IPZdUXmvSOA7JMzZ3iRl1sFsaBu0qP+vs7SclKs9GjkRBxHmJ8GeMfJGGjHuFEIAaiTwEVOA==} - peerDependencies: - algoliasearch: '>= 3.1 < 6' - internal-slot@1.0.6: resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} engines: {node: '>= 0.4'} @@ -10052,10 +10110,6 @@ packages: mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - mkdirp@0.3.0: - resolution: {integrity: sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==} - deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) - mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -10366,10 +10420,6 @@ packages: resolution: {integrity: sha512-cfrYUk16e67Ks051i4CntM9kshRYei1/o/Gi8K1d+R34OIs21xdFnW7Pt7EucmVKA0LKtqUGNcjMZ7ehjl49mQ==} engines: {node: '>=6.0.0'} - nopt@1.0.10: - resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} - hasBin: true - nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -11267,10 +11317,6 @@ packages: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} - qs@6.9.7: - resolution: {integrity: sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==} - engines: {node: '>=0.6'} - querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -11336,25 +11382,6 @@ packages: peerDependencies: react: '*' - react-instantsearch-core@7.13.3: - resolution: {integrity: sha512-eljDLrdHMw8Wbwpqc/5Sj77o+P6NWqlFuBSL0MMbBccXpbt4UfEw5Gf64AtwpO+oYF4L0BKOQpVEm6+poLd9Kw==} - peerDependencies: - algoliasearch: '>= 3.1 < 6' - react: '>= 16.8.0 < 19' - - react-instantsearch-nextjs@0.2.5: - resolution: {integrity: sha512-1NO/Us64tM6pWEQL4Qgisk/SnXDrrZ3+nNTe7USRT/KXQW9dkRXikeFb9vwjrqadYOBciWzBcf2T6ygqVV3Eiw==} - peerDependencies: - next: '>= 13.4 && < 15' - react-instantsearch: '>= 7.1.0 && < 8' - - react-instantsearch@7.13.3: - resolution: {integrity: sha512-an3nuqBELpXQb2fs016YgcosjmAfg24aR5eRxZjYDH+Sa3H/GnhzkYqyaLUpEVwGu5uDJvauHIBGZZKrrQ/lvw==} - peerDependencies: - algoliasearch: '>= 3.1 < 6' - react: '>= 16.8.0 < 19' - react-dom: '>= 16.8.0 < 19' - react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -13704,6 +13731,34 @@ snapshots: tunnel: 0.0.6 undici: 5.28.2 + '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.20.0)(algoliasearch@5.20.0)(search-insights@2.17.2)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.20.0)(algoliasearch@5.20.0)(search-insights@2.17.2) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.20.0)(algoliasearch@5.20.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.20.0)(algoliasearch@5.20.0)(search-insights@2.17.2)': + dependencies: + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.20.0)(algoliasearch@5.20.0) + search-insights: 2.17.2 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.20.0)(algoliasearch@5.20.0)': + dependencies: + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.20.0)(algoliasearch@5.20.0) + '@algolia/client-search': 5.20.0 + algoliasearch: 5.20.0 + + '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.20.0)(algoliasearch@5.20.0)': + dependencies: + '@algolia/client-search': 5.20.0 + algoliasearch: 5.20.0 + '@algolia/cache-browser-local-storage@4.24.0': dependencies: '@algolia/cache-common': 4.24.0 @@ -13714,6 +13769,13 @@ snapshots: dependencies: '@algolia/cache-common': 4.24.0 + '@algolia/client-abtesting@5.20.0': + dependencies: + '@algolia/client-common': 5.20.0 + '@algolia/requester-browser-xhr': 5.20.0 + '@algolia/requester-fetch': 5.20.0 + '@algolia/requester-node-http': 5.20.0 + '@algolia/client-account@4.24.0': dependencies: '@algolia/client-common': 4.24.0 @@ -13727,24 +13789,66 @@ snapshots: '@algolia/requester-common': 4.24.0 '@algolia/transporter': 4.24.0 + '@algolia/client-analytics@5.20.0': + dependencies: + '@algolia/client-common': 5.20.0 + '@algolia/requester-browser-xhr': 5.20.0 + '@algolia/requester-fetch': 5.20.0 + '@algolia/requester-node-http': 5.20.0 + '@algolia/client-common@4.24.0': dependencies: '@algolia/requester-common': 4.24.0 '@algolia/transporter': 4.24.0 + '@algolia/client-common@5.20.0': {} + + '@algolia/client-insights@5.20.0': + dependencies: + '@algolia/client-common': 5.20.0 + '@algolia/requester-browser-xhr': 5.20.0 + '@algolia/requester-fetch': 5.20.0 + '@algolia/requester-node-http': 5.20.0 + '@algolia/client-personalization@4.24.0': dependencies: '@algolia/client-common': 4.24.0 '@algolia/requester-common': 4.24.0 '@algolia/transporter': 4.24.0 + '@algolia/client-personalization@5.20.0': + dependencies: + '@algolia/client-common': 5.20.0 + '@algolia/requester-browser-xhr': 5.20.0 + '@algolia/requester-fetch': 5.20.0 + '@algolia/requester-node-http': 5.20.0 + + '@algolia/client-query-suggestions@5.20.0': + dependencies: + '@algolia/client-common': 5.20.0 + '@algolia/requester-browser-xhr': 5.20.0 + '@algolia/requester-fetch': 5.20.0 + '@algolia/requester-node-http': 5.20.0 + '@algolia/client-search@4.24.0': dependencies: '@algolia/client-common': 4.24.0 '@algolia/requester-common': 4.24.0 '@algolia/transporter': 4.24.0 - '@algolia/events@4.0.1': {} + '@algolia/client-search@5.20.0': + dependencies: + '@algolia/client-common': 5.20.0 + '@algolia/requester-browser-xhr': 5.20.0 + '@algolia/requester-fetch': 5.20.0 + '@algolia/requester-node-http': 5.20.0 + + '@algolia/ingestion@1.20.0': + dependencies: + '@algolia/client-common': 5.20.0 + '@algolia/requester-browser-xhr': 5.20.0 + '@algolia/requester-fetch': 5.20.0 + '@algolia/requester-node-http': 5.20.0 '@algolia/logger-common@4.24.0': {} @@ -13752,6 +13856,13 @@ snapshots: dependencies: '@algolia/logger-common': 4.24.0 + '@algolia/monitoring@1.20.0': + dependencies: + '@algolia/client-common': 5.20.0 + '@algolia/requester-browser-xhr': 5.20.0 + '@algolia/requester-fetch': 5.20.0 + '@algolia/requester-node-http': 5.20.0 + '@algolia/recommend@4.24.0': dependencies: '@algolia/cache-browser-local-storage': 4.24.0 @@ -13766,16 +13877,35 @@ snapshots: '@algolia/requester-node-http': 4.24.0 '@algolia/transporter': 4.24.0 + '@algolia/recommend@5.20.0': + dependencies: + '@algolia/client-common': 5.20.0 + '@algolia/requester-browser-xhr': 5.20.0 + '@algolia/requester-fetch': 5.20.0 + '@algolia/requester-node-http': 5.20.0 + '@algolia/requester-browser-xhr@4.24.0': dependencies: '@algolia/requester-common': 4.24.0 + '@algolia/requester-browser-xhr@5.20.0': + dependencies: + '@algolia/client-common': 5.20.0 + '@algolia/requester-common@4.24.0': {} + '@algolia/requester-fetch@5.20.0': + dependencies: + '@algolia/client-common': 5.20.0 + '@algolia/requester-node-http@4.24.0': dependencies: '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http@5.20.0': + dependencies: + '@algolia/client-common': 5.20.0 + '@algolia/transporter@4.24.0': dependencies: '@algolia/cache-common': 4.24.0 @@ -13866,7 +13996,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@ark-ui/anatomy@0.1.0(@internationalized/date@3.5.2)': + '@ark-ui/anatomy@0.1.0(@internationalized/date@3.5.6)': dependencies: '@zag-js/accordion': 0.20.0 '@zag-js/anatomy': 0.20.0 @@ -13877,7 +14007,7 @@ snapshots: '@zag-js/color-utils': 0.20.0 '@zag-js/combobox': 0.20.0 '@zag-js/date-picker': 0.20.0 - '@zag-js/date-utils': 0.20.0(@internationalized/date@3.5.2) + '@zag-js/date-utils': 0.20.0(@internationalized/date@3.5.6) '@zag-js/dialog': 0.20.0 '@zag-js/editable': 0.20.0 '@zag-js/hover-card': 0.20.0 @@ -13903,7 +14033,7 @@ snapshots: transitivePeerDependencies: - '@internationalized/date' - '@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@zag-js/accordion': 0.19.1 '@zag-js/anatomy': 0.19.1 @@ -13915,7 +14045,7 @@ snapshots: '@zag-js/combobox': 0.19.1 '@zag-js/core': 0.19.1 '@zag-js/date-picker': 0.19.1 - '@zag-js/date-utils': 0.19.1(@internationalized/date@3.5.2) + '@zag-js/date-utils': 0.19.1(@internationalized/date@3.5.6) '@zag-js/dialog': 0.19.1 '@zag-js/editable': 0.19.1 '@zag-js/hover-card': 0.19.1 @@ -15551,6 +15681,22 @@ snapshots: dependencies: postcss-selector-parser: 6.1.2 + '@docsearch/css@3.8.3': {} + + '@docsearch/react@3.8.3(@algolia/client-search@5.20.0)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.2)': + dependencies: + '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.20.0)(algoliasearch@5.20.0)(search-insights@2.17.2) + '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.20.0)(algoliasearch@5.20.0) + '@docsearch/css': 3.8.3 + algoliasearch: 5.20.0 + optionalDependencies: + '@types/react': 18.2.78 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + search-insights: 2.17.2 + transitivePeerDependencies: + - '@algolia/client-search' + '@emnapi/runtime@1.2.0': dependencies: tslib: 2.7.0 @@ -16689,11 +16835,11 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@inkeep/components@0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@inkeep/components@0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@ark-ui/react': 0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@inkeep/preset': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) - '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) + '@ark-ui/react': 0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@inkeep/preset': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) + '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) '@inkeep/shared': 0.0.25 '@inkeep/styled-system': 0.0.44 '@pandacss/dev': 0.22.1(typescript@5.6.3) @@ -16705,9 +16851,9 @@ snapshots: - jsdom - typescript - '@inkeep/preset-chakra@0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)': + '@inkeep/preset-chakra@0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)': dependencies: - '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.2) + '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.6) '@inkeep/shared': 0.0.25 '@pandacss/dev': 0.22.1(typescript@5.6.3) transitivePeerDependencies: @@ -16715,10 +16861,10 @@ snapshots: - jsdom - typescript - '@inkeep/preset@0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)': + '@inkeep/preset@0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)': dependencies: - '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.2) - '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) + '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.6) + '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) '@inkeep/shared': 0.0.25 '@pandacss/dev': 0.22.1(typescript@5.6.3) colorjs.io: 0.4.5 @@ -16733,14 +16879,14 @@ snapshots: '@inkeep/styled-system@0.0.46': {} - '@inkeep/widgets@0.2.289(@internationalized/date@3.5.2)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@inkeep/widgets@0.2.289(@internationalized/date@3.5.6)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: '@apollo/client': 3.9.5(@types/react@18.2.78)(graphql-ws@5.14.3(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@ark-ui/react': 0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ark-ui/react': 0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@inkeep/color-mode': 0.0.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@inkeep/components': 0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@inkeep/preset': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) - '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) + '@inkeep/components': 0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@inkeep/preset': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) + '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) '@inkeep/shared': 0.0.25 '@inkeep/styled-system': 0.0.46 '@types/lodash.isequal': 4.5.8 @@ -19066,8 +19212,6 @@ snapshots: dependencies: '@types/ms': 0.7.34 - '@types/dom-speech-recognition@0.0.1': {} - '@types/eslint@8.56.10': dependencies: '@types/estree': 1.0.5 @@ -19093,8 +19237,6 @@ snapshots: '@types/qs': 6.9.11 '@types/serve-static': 1.15.5 - '@types/google.maps@3.58.1': {} - '@types/hast@2.3.10': dependencies: '@types/unist': 2.0.10 @@ -19103,8 +19245,6 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/hogan.js@3.0.5': {} - '@types/http-errors@2.0.4': {} '@types/istanbul-lib-coverage@2.0.6': {} @@ -19309,8 +19449,6 @@ snapshots: '@types/qs@6.9.11': {} - '@types/qs@6.9.16': {} - '@types/range-parser@1.2.7': {} '@types/react-dom@18.2.18': @@ -20074,9 +20212,9 @@ snapshots: dependencies: '@internationalized/date': 3.5.2 - '@zag-js/date-utils@0.20.0(@internationalized/date@3.5.2)': + '@zag-js/date-utils@0.19.1(@internationalized/date@3.5.6)': dependencies: - '@internationalized/date': 3.5.2 + '@internationalized/date': 3.5.6 '@zag-js/date-utils@0.20.0(@internationalized/date@3.5.6)': dependencies: @@ -20805,11 +20943,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - algoliasearch-helper@3.22.5(algoliasearch@4.24.0): - dependencies: - '@algolia/events': 4.0.1 - algoliasearch: 4.24.0 - algoliasearch@4.24.0: dependencies: '@algolia/cache-browser-local-storage': 4.24.0 @@ -20828,6 +20961,22 @@ snapshots: '@algolia/requester-node-http': 4.24.0 '@algolia/transporter': 4.24.0 + algoliasearch@5.20.0: + dependencies: + '@algolia/client-abtesting': 5.20.0 + '@algolia/client-analytics': 5.20.0 + '@algolia/client-common': 5.20.0 + '@algolia/client-insights': 5.20.0 + '@algolia/client-personalization': 5.20.0 + '@algolia/client-query-suggestions': 5.20.0 + '@algolia/client-search': 5.20.0 + '@algolia/ingestion': 1.20.0 + '@algolia/monitoring': 1.20.0 + '@algolia/recommend': 5.20.0 + '@algolia/requester-browser-xhr': 5.20.0 + '@algolia/requester-fetch': 5.20.0 + '@algolia/requester-node-http': 5.20.0 + ansi-align@3.0.1: dependencies: string-width: 4.2.3 @@ -23885,11 +24034,6 @@ snapshots: highlight.js@10.7.3: {} - hogan.js@3.0.2: - dependencies: - mkdirp: 0.3.0 - nopt: 1.0.10 - hoist-non-react-statics@3.3.2: dependencies: react-is: 16.13.1 @@ -23902,8 +24046,6 @@ snapshots: dependencies: lru-cache: 6.0.0 - htm@3.1.1: {} - html-dom-parser@3.1.7: dependencies: domhandler: 5.0.3 @@ -24101,26 +24243,6 @@ snapshots: through: 2.3.8 wrap-ansi: 6.2.0 - instantsearch-ui-components@0.9.0: - dependencies: - '@babel/runtime': 7.23.9 - - instantsearch.js@4.75.0(algoliasearch@4.24.0): - dependencies: - '@algolia/events': 4.0.1 - '@types/dom-speech-recognition': 0.0.1 - '@types/google.maps': 3.58.1 - '@types/hogan.js': 3.0.5 - '@types/qs': 6.9.16 - algoliasearch: 4.24.0 - algoliasearch-helper: 3.22.5(algoliasearch@4.24.0) - hogan.js: 3.0.2 - htm: 3.1.1 - instantsearch-ui-components: 0.9.0 - preact: 10.24.3 - qs: 6.9.7 - search-insights: 2.17.2 - internal-slot@1.0.6: dependencies: get-intrinsic: 1.2.4 @@ -25924,8 +26046,6 @@ snapshots: mkdirp-classic@0.5.3: {} - mkdirp@0.3.0: {} - mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -26311,10 +26431,6 @@ snapshots: nodemailer@6.9.8: {} - nopt@1.0.10: - dependencies: - abbrev: 1.1.1 - nopt@5.0.0: dependencies: abbrev: 1.1.1 @@ -27318,8 +27434,6 @@ snapshots: dependencies: side-channel: 1.0.6 - qs@6.9.7: {} - querystringify@2.2.0: {} queue-microtask@1.2.3: {} @@ -27380,30 +27494,6 @@ snapshots: dependencies: react: 18.3.1 - react-instantsearch-core@7.13.3(algoliasearch@4.24.0)(react@18.3.1): - dependencies: - '@babel/runtime': 7.23.9 - algoliasearch: 4.24.0 - algoliasearch-helper: 3.22.5(algoliasearch@4.24.0) - instantsearch.js: 4.75.0(algoliasearch@4.24.0) - react: 18.3.1 - use-sync-external-store: 1.2.2(react@18.3.1) - - react-instantsearch-nextjs@0.2.5(next@14.2.21(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-instantsearch@7.13.3(algoliasearch@4.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): - dependencies: - next: 14.2.21(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) - react-instantsearch: 7.13.3(algoliasearch@4.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - - react-instantsearch@7.13.3(algoliasearch@4.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@babel/runtime': 7.23.9 - algoliasearch: 4.24.0 - instantsearch-ui-components: 0.9.0 - instantsearch.js: 4.75.0(algoliasearch@4.24.0) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-instantsearch-core: 7.13.3(algoliasearch@4.24.0)(react@18.3.1) - react-is@16.13.1: {} react-is@18.2.0: {} From dcaaf1ab86e658302656f70388c46f61b3b185c3 Mon Sep 17 00:00:00 2001 From: wangsijie Date: Wed, 29 Jan 2025 01:48:47 +0800 Subject: [PATCH 2/8] feat(provider): add Logto provider (#12534) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(provider): add Logto provider * simplify provider, update docs * update getting-started * remove logto from .env.local example * update docs pages manifest * Update logto.ts --------- Co-authored-by: Falco Winkler <8613031+falcowinkler@users.noreply.github.com> Co-authored-by: Balázs Orbán --- .github/ISSUE_TEMPLATE/2_bug_provider.yml | 1 + docs/pages/data/manifest.json | 2 + .../pages/getting-started/providers/logto.mdx | 79 ++++++++++++ docs/public/img/providers/logto.svg | 23 ++++ packages/core/src/providers/logto.ts | 122 ++++++++++++++++++ 5 files changed, 227 insertions(+) create mode 100644 docs/pages/getting-started/providers/logto.mdx create mode 100644 docs/public/img/providers/logto.svg create mode 100644 packages/core/src/providers/logto.ts diff --git a/.github/ISSUE_TEMPLATE/2_bug_provider.yml b/.github/ISSUE_TEMPLATE/2_bug_provider.yml index 4545ebbf3e..4f4585b3d2 100644 --- a/.github/ISSUE_TEMPLATE/2_bug_provider.yml +++ b/.github/ISSUE_TEMPLATE/2_bug_provider.yml @@ -63,6 +63,7 @@ body: - "Kinde" - "Line" - "LinkedIn" + - "Logto" - "Loops" - "Mailchimp" - "Mail.ru" diff --git a/docs/pages/data/manifest.json b/docs/pages/data/manifest.json index 50fb339f1c..3369f99ae3 100644 --- a/docs/pages/data/manifest.json +++ b/docs/pages/data/manifest.json @@ -84,6 +84,7 @@ "kinde": "Kinde", "line": "LINE", "linkedin": "LinkedIn", + "logto": "Logto", "mailchimp": "Mailchimp", "mailru": "Mail.ru", "mastodon": "Mastodon", @@ -141,6 +142,7 @@ "identity-server4", "keycloak", "kinde", + "logto", "mastodon", "mattermost", "nextcloud", diff --git a/docs/pages/getting-started/providers/logto.mdx b/docs/pages/getting-started/providers/logto.mdx new file mode 100644 index 0000000000..d22140e163 --- /dev/null +++ b/docs/pages/getting-started/providers/logto.mdx @@ -0,0 +1,79 @@ +import { Callout } from "nextra/components" +import { Code } from "@/components/Code" + + + +# Logto Provider + +## Resources + +- [Logto Auth.js quickstart](https://docs.logto.io/quick-starts/next-auth) +- [Integrate Logto in your application](https://docs.logto.io/integrate-logto/integrate-logto-into-your-application) + +## Setup + +### Callback URL + + + + + ```bash + https://example.com/api/auth/callback/logto + ``` + + + + + ```bash + https://example.com/auth/callback/logto + ``` + + + + +### Environment Variables + +``` +AUTH_LOGTO_ID +AUTH_LOGTO_SECRET +AUTH_LOGTO_ISSUER +``` + +### Configuration + + + + +```ts filename="/auth.ts" +import NextAuth from "next-auth" +import Logto from "next-auth/providers/logto" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [Logto], +}) +``` + + + + +```ts filename="/src/auth.ts" +import { SvelteKitAuth } from "@auth/sveltekit" +import Logto from "@auth/sveltekit/providers/logto" + +export const { handle, signIn, signOut } = SvelteKitAuth({ + providers: [Logto], +}) +``` + + + + +```ts filename="/src/app.ts" +import { ExpressAuth } from "@auth/express" +import Logto from "@auth/express/providers/logto" + +app.use("/auth/*", ExpressAuth({ providers: [Logto] })) +``` + + + diff --git a/docs/public/img/providers/logto.svg b/docs/public/img/providers/logto.svg new file mode 100644 index 0000000000..4e603b99df --- /dev/null +++ b/docs/public/img/providers/logto.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + diff --git a/packages/core/src/providers/logto.ts b/packages/core/src/providers/logto.ts new file mode 100644 index 0000000000..ed65f3f2dd --- /dev/null +++ b/packages/core/src/providers/logto.ts @@ -0,0 +1,122 @@ +/** + *
+ * + * Built-in sign in with Logto integration. + * + * + * + * + *
+ * + * @module providers/logto + */ + +import type { OIDCConfig, OIDCUserConfig } from "./index.js" + +/** The returned user profile from Logto when using the profile callback. [Reference](https://docs.logto.io/quick-starts/next-auth#scopes-and-claims). */ +export interface LogtoProfile { + /** The user's unique ID */ + sub: string + /** The user's name */ + name: string + /** The user's username */ + username: string + /** The user's picture */ + picture: string + /** The user's email */ + email: string + /** A boolean indicating if the user's email is verified */ + email_verified: boolean + /** The user's phone number */ + phone_number: string + /** A boolean indicating if the user's phone number is verified */ + phone_number_verified: boolean + /** The user's address */ + address: string + /** Custom fields */ + custom_data: object + /** The linked identities of the user */ + identities: object + /** The linked SSO identities of the user */ + sso_identities: object[] + /** The organization IDs the user belongs to */ + organizations: string[] + /** The organization data the user belongs to */ + organization_data: object[] + /** The organization roles the user belongs to with the format of : */ + organization_roles: string[] + /** The user's custom attributes */ + [claim: string]: unknown +} + +/** + * + * ### Setup + * + * #### Callback URL + * ``` + * https://example.com/api/auth/callback/logto + * ``` + * + * #### Configuration + * ```ts + * import { Auth } from "@auth/core" + * import Logto from "@auth/core/providers/logto" + * + * const request = new Request(origin) + * const response = await Auth(request, { + * providers: [ + * Logto({ + * clientId: LOGTO_ID, + * clientSecret: LOGTO_SECRET, + * issuer: LOGTO_ISSUER + * }), + * ], + * }) + * ``` + * + * + * ### Resources + * + * - [Logto Auth.js quickstart](https://docs.logto.io/quick-starts/next-auth) + * - [Integrate Logto in your application](https://docs.logto.io/integrate-logto/integrate-logto-into-your-application) + * + * ### Notes + * + * The Logto provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/logto.ts). To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers). + * + * :::info + * By default, Auth.js assumes that the Logto provider is based on the [OIDC](https://openid.net/specs/openid-connect-core-1_0.html) spec + * ::: + * + * ## Help + * + * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue). + * + * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from + * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec, + * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions). + */ +export default function Logto( + options: OIDCUserConfig +): OIDCConfig { + return { + id: "logto", + name: "Logto", + type: "oidc", + authorization: { + params: { + scope: "offline_access openid email profile", + }, + }, + profile(profile) { + return { + id: profile.sub, + name: profile.name ?? profile.username, + email: profile.email, + image: profile.picture, + } + }, + options, + } +} From 14dfaf36c08cdb7fbdd47428e902a146afe8790a Mon Sep 17 00:00:00 2001 From: Hernan Alvarado Date: Tue, 28 Jan 2025 17:49:33 +0000 Subject: [PATCH 3/8] feat(provider): add Figma provider (#12529) * feat(provider): add Figma provider * chore: update environment variables * fix docs referencing bitbucket * simplify provider * simplify state generation --------- Co-authored-by: Falco Winkler <8613031+falcowinkler@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/2_bug_provider.yml | 1 + docs/pages/data/manifest.json | 1 + .../pages/getting-started/providers/figma.mdx | 134 ++++++++++++++++++ docs/public/img/providers/figma.svg | 7 + packages/core/src/providers/figma.ts | 105 ++++++++++++++ 5 files changed, 248 insertions(+) create mode 100644 docs/pages/getting-started/providers/figma.mdx create mode 100644 docs/public/img/providers/figma.svg create mode 100644 packages/core/src/providers/figma.ts diff --git a/.github/ISSUE_TEMPLATE/2_bug_provider.yml b/.github/ISSUE_TEMPLATE/2_bug_provider.yml index 4f4585b3d2..d129a423c8 100644 --- a/.github/ISSUE_TEMPLATE/2_bug_provider.yml +++ b/.github/ISSUE_TEMPLATE/2_bug_provider.yml @@ -49,6 +49,7 @@ body: - "EVE Online" - "Facebook" - "FACEIT" + - "Figma" - "Foursquare" - "Freshbooks" - "FusionAuth" diff --git a/docs/pages/data/manifest.json b/docs/pages/data/manifest.json index 3369f99ae3..9c1d79a662 100644 --- a/docs/pages/data/manifest.json +++ b/docs/pages/data/manifest.json @@ -73,6 +73,7 @@ "duende-identityserver-6": "DuendeIdentityServer6", "eveonline": "EVE Online", "faceit": "FACEIT", + "figma": "Figma", "foursquare": "Foursquare", "freshbooks": "Freshbooks", "fusionauth": "FusionAuth", diff --git a/docs/pages/getting-started/providers/figma.mdx b/docs/pages/getting-started/providers/figma.mdx new file mode 100644 index 0000000000..160e3e3b38 --- /dev/null +++ b/docs/pages/getting-started/providers/figma.mdx @@ -0,0 +1,134 @@ +import { Code } from "@/components/Code" +import { Callout } from "nextra/components" + + + +# Figma Provider + +## Resources + +- [Using OAuth 2 on Figma](https://www.figma.com/developers/api#oauth2) +- [User Type](https://www.figma.com/developers/api#users-types) +- [Scopes](https://www.figma.com/developers/api#authentication-scopes) +- [Migrate](https://www.figma.com/developers/api#oauth_migration_guide) + +## Setup + +### Callback URL + + + + +```bash +https://example.com/api/auth/callback/figma +``` + + + + +```bash +https://example.com/auth/callback/figma +``` + + + + +```bash +https://example.com/auth/callback/figma +``` + + + + +### Environment Variables + + + + +```bash filename=".env.local" +AUTH_FIGMA_ID +AUTH_FIGMA_SECRET +``` + + + + +```bash filename=".env" +AUTH_FIGMA_ID +AUTH_FIGMA_SECRET +``` + + + + +```bash filename=".env" +AUTH_FIGMA_ID +AUTH_FIGMA_SECRET +``` + + + + +```bash filename=".env" +AUTH_FIGMA_ID +AUTH_FIGMA_SECRET +``` + + + + +### Configuration + + + + +```ts filename="@/auth.ts" +import NextAuth from "next-auth" +import Figma from "next-auth/providers/figma" +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [Figma], +}) +``` + + + + +```ts filename="/src/routes/plugin@auth.ts" +import { QwikAuth$ } from "@auth/qwik" +import Figma from "@auth/qwik/providers/figma" +export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$( + () => ({ + providers: [Figma], + }) +) +``` + + + + +```ts filename="/src/auth.ts" +import { SvelteKitAuth } from "@auth/sveltekit" +import Figma from "@auth/sveltekit/providers/figma" +export const { handle, signIn, signOut } = SvelteKitAuth({ + providers: [Figma], +}) +``` + + + + +```ts filename="/src/app.ts" +import { ExpressAuth } from "@auth/express" +import Figma from "@auth/express/providers/figma" +app.use("/auth/*", ExpressAuth({ providers: [Figma] })) +``` + + + + + + The URL must be accessed via the user's browser and not an embedded webview + inside your application. Webview access to the Figma OAuth flow is not + supported and may stop working for some or all users without an API version + update. + diff --git a/docs/public/img/providers/figma.svg b/docs/public/img/providers/figma.svg new file mode 100644 index 0000000000..bd81186e9b --- /dev/null +++ b/docs/public/img/providers/figma.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/packages/core/src/providers/figma.ts b/packages/core/src/providers/figma.ts new file mode 100644 index 0000000000..29afe9b32b --- /dev/null +++ b/packages/core/src/providers/figma.ts @@ -0,0 +1,105 @@ +/** + *
+ * Built-in Figma integration. + * + * + * + *
+ * + * @module providers/figma + */ +import { OAuth2Config, OAuthUserConfig } from "./index.js" + +/** + * @see https://www.figma.com/developers/api#users-types + */ +interface FigmaProfile { + id: string + email: string + handle: string + img_url: string +} + +/** + * ### Setup + * + * #### Callback URL + * + * ```ts + * https://example.com/api/auth/callback/figma + * ``` + * + * #### Configuration + * + * ```ts + * import { Auth } from "@auth/core" + * import Figma from "@auth/core/providers/figma" + * + * const request = new Request(origin) + * const response = await Auth(request, { + * providers: [ + * Figma({ + * clientId: process.env.AUTH_FIGMA_ID, + * clientSecret: process.env.AUTH_FIGMA_SECRET + * }) + * ], + * }) + * ``` + * + * ### Resources + * + * - [Using OAuth 2 on Figma](https://www.figma.com/developers/api#oauth2) + * - [Scopes](https://www.figma.com/developers/api#authentication-scopes) + * + * #### Notes + * + * By default, Auth.js assumes that the Figma provider is based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification. + * + * :::tip + * + * The Figma provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/figma.ts). + * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers). + * + * ::: + * + * :::info **Disclaimer** + * + * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue). + * + * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from + * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec, + * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions). + * + * ::: + */ +export default function Figma( + options: OAuthUserConfig +): OAuth2Config { + return { + id: "figma", + name: "Figma", + type: "oauth", + authorization: { + url: "https://www.figma.com/oauth", + params: { + scope: "files:read", + }, + }, + checks: ["state"], + token: "https://api.figma.com/v1/oauth/token", + userinfo: "https://api.figma.com/v1/me", + profile(profile) { + return { + name: profile.handle, + email: profile.email, + id: profile.id, + image: profile.img_url, + } + }, + style: { + text: "#fff", + bg: "#ff7237", + }, + options, + } +} From dfe7e8f64744277b4e3493cc4ccc1f212c863f15 Mon Sep 17 00:00:00 2001 From: Thang Vu Date: Wed, 29 Jan 2025 16:45:56 +0700 Subject: [PATCH 4/8] docs: dark mode for DocSearch (#12564) --- docs/components/DocSearch/index.tsx | 8 -------- docs/components/DocSearch/wrapper.tsx | 11 +++++++++++ docs/pages/global.css | 6 ++++++ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/docs/components/DocSearch/index.tsx b/docs/components/DocSearch/index.tsx index ea4c8eb20f..b351cdd26c 100644 --- a/docs/components/DocSearch/index.tsx +++ b/docs/components/DocSearch/index.tsx @@ -4,14 +4,6 @@ const DocSearch = dynamic( () => import("./wrapper").then((mod) => mod.default), { ssr: false, - loading: () => ( -
- Search... - - CTRL K - -
- ), } ) diff --git a/docs/components/DocSearch/wrapper.tsx b/docs/components/DocSearch/wrapper.tsx index 8b06b94b9b..8cf99acbc2 100644 --- a/docs/components/DocSearch/wrapper.tsx +++ b/docs/components/DocSearch/wrapper.tsx @@ -1,8 +1,19 @@ import { DocSearch } from "@docsearch/react" +import { useTheme } from "nextra-theme-docs" +import { useEffect } from "react" import "@docsearch/css" function App() { + const { resolvedTheme } = useTheme() + + useEffect(() => { + if (resolvedTheme) { + // hack to get DocSearch to use dark mode colors if applicable + document.documentElement.setAttribute("data-theme", resolvedTheme) + } + }, [resolvedTheme]) + return ( head:has(meta[content*="reference/core/providers"]) + body .provider { font-size: 1rem; color: #000 !important; } + +.nextra-sidebar-container { + .DocSearch-Button { + @apply hidden; + } +} From e350d49e6aeeee772dd10a221664281cb673d088 Mon Sep 17 00:00:00 2001 From: Mauro Brandoni Date: Wed, 29 Jan 2025 11:22:21 -0300 Subject: [PATCH 5/8] docs: Fix incorrect URL in error page documentation comment (#12502) --- packages/core/src/lib/pages/error.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/lib/pages/error.tsx b/packages/core/src/lib/pages/error.tsx index afbbfe9545..ac8f847a7f 100644 --- a/packages/core/src/lib/pages/error.tsx +++ b/packages/core/src/lib/pages/error.tsx @@ -3,7 +3,7 @@ import type { ErrorPageParam, Theme } from "../../types.js" /** * The following errors are passed as error query parameters to the default or overridden error page. * - * [Documentation](https://authjs.dev/guides/basics/pages#error-page) + * [Documentation](https://authjs.dev/guides/pages/error) */ export interface ErrorProps { From f167550fac506315d5c4dcc9eccefae8a24495b9 Mon Sep 17 00:00:00 2001 From: Nico Domino Date: Wed, 29 Jan 2025 22:47:31 +0000 Subject: [PATCH 6/8] chore(docs): add opencollective recommended refund disclaimer to `/sponsors` (#12575) --- docs/pages/sponsors.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/pages/sponsors.mdx b/docs/pages/sponsors.mdx index 4d8e0f4f4b..96d95f73a1 100644 --- a/docs/pages/sponsors.mdx +++ b/docs/pages/sponsors.mdx @@ -181,3 +181,5 @@ Auth.js is a set of libraries that make it easy to add authentication to any app If you or your company enjoys Auth.js, please consider [sponsoring via OpenCollective](https://opencollective.com/nextauth) too. Choose a higher tier to appear on this page. Sponsors are listed in alphabetical order in their respective group. + +> This is a donation. No goods or services are expected in return. Any requests for refunds for those purposes will be rejected. From 7969823b5340475a6735f99840ace83140fe626f Mon Sep 17 00:00:00 2001 From: Nico Domino Date: Sat, 1 Feb 2025 18:37:58 +0000 Subject: [PATCH 7/8] chore: stale bot issues only (#12593) * chore: stale bot issues only * Update stale.yml --- .github/stale.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/stale.yml b/.github/stale.yml index 30e2e721c7..a30f33e57b 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -10,6 +10,7 @@ exemptLabels: - triage - accepted staleLabel: stale +only: issues markComment: > It looks like this issue did not receive any activity for 60 days. It will be closed in 7 days if no further activity occurs. If you think your issue From 63fdab15d80db00a91f2323a05ae4576d00947e2 Mon Sep 17 00:00:00 2001 From: Sarthak Kumar Shailendra <69191344+sarthak-kumar-shailendra@users.noreply.github.com> Date: Sun, 2 Feb 2025 13:47:59 +0530 Subject: [PATCH 8/8] chore: update twitter icon (#12091) * updated twitter to x * Updated twitter to x icon * removing height and width --- docs/public/img/providers/twitter.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/public/img/providers/twitter.svg b/docs/public/img/providers/twitter.svg index 788eb5e507..6fca2c28c2 100644 --- a/docs/public/img/providers/twitter.svg +++ b/docs/public/img/providers/twitter.svg @@ -1 +1 @@ - \ No newline at end of file +