diff --git a/components/src/asciidoc/TableOfContents.tsx b/components/src/asciidoc/TableOfContents.tsx
index 6afbf75a..30516c8e 100644
--- a/components/src/asciidoc/TableOfContents.tsx
+++ b/components/src/asciidoc/TableOfContents.tsx
@@ -8,7 +8,6 @@
import { DirectionRightIcon } from '@/icons/react'
import type { DocumentSection } from '@oxide/react-asciidoc'
import * as Accordion from '@radix-ui/react-accordion'
-import { Link } from '@remix-run/react'
import cn from 'classnames'
import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react'
@@ -272,8 +271,8 @@ export const DesktopOutline = ({
data-level={item.level}
className={cn('mb-0 list-none text-sans-sm', item.level > 2 && 'hidden')}
>
-
-
+
{item.sections && renderToc(item.sections)}
@@ -316,8 +315,8 @@ export const SmallScreenOutline = ({
data-level={item.level}
className={cn('list-none text-sans-sm', item.level > 2 && 'hidden')}
>
- setValue('')}
className={cn(
'block border-l py-[4px]',
@@ -330,7 +329,7 @@ export const SmallScreenOutline = ({
}}
>
-
+
{item.sections && renderToc(item.sections)}
diff --git a/components/src/asciidoc/use-delegated-links.ts b/components/src/asciidoc/use-delegated-links.ts
index 772feeaf..a8f48305 100644
--- a/components/src/asciidoc/use-delegated-links.ts
+++ b/components/src/asciidoc/use-delegated-links.ts
@@ -15,14 +15,28 @@
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*/
-import { useNavigate } from '@remix-run/react'
import { useEffect } from 'react'
+// copied from React Router, unlikely to change
+// https://github.com/remix-run/react-router/blob/7b041811/packages/react-router/lib/router/history.ts#L32-L50
+interface Path {
+ pathname: string
+ search: string
+ hash: string
+}
+
+// https://github.com/remix-run/react-router/blob/7b041811/packages/react-router/lib/router/history.ts#L101-L105
+type To = string | Partial
+
// Converts regular AsciiDoc a tags and makes them React Routery
// Added key so that this is reloaded when the user routes from one document to another directly
-function useDelegatedReactRouterLinks(nodeRef: React.RefObject, key: string) {
- const navigate = useNavigate()
-
+function useDelegatedReactRouterLinks(
+ // this is to avoid a dependency on remix/react router
+ /** Pass in the result of `useNavigate()` in the calling application. */
+ navigate: (to: To) => void,
+ nodeRef: React.RefObject,
+ key: string,
+) {
useEffect(() => {
const node = nodeRef.current
const handler = (event: MouseEvent) => {
diff --git a/package-lock.json b/package-lock.json
index 75de7354..d5026ecb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -47,7 +47,6 @@
"peerDependencies": {
"@asciidoctor/core": "^3.0.0",
"@oxide/react-asciidoc": "^1.0.0",
- "@remix-run/react": "2.15.2",
"react": "^18.2.0",
"react-dom": "^18.2.0"
}
@@ -2764,80 +2763,6 @@
}
}
},
- "node_modules/@remix-run/react": {
- "version": "2.15.2",
- "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-2.15.2.tgz",
- "integrity": "sha512-NAAMsSgoC/sdOgovUewwRCE/RUm3F+MBxxZKfwu3POCNeHaplY5qGkH/y8PUXvdN1EBG7Z0Ko43dyzCfcEy5PA==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@remix-run/router": "1.21.0",
- "@remix-run/server-runtime": "2.15.2",
- "react-router": "6.28.1",
- "react-router-dom": "6.28.1",
- "turbo-stream": "2.4.0"
- },
- "engines": {
- "node": ">=18.0.0"
- },
- "peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0",
- "typescript": "^5.1.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@remix-run/router": {
- "version": "1.21.0",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.21.0.tgz",
- "integrity": "sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==",
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@remix-run/server-runtime": {
- "version": "2.15.2",
- "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.15.2.tgz",
- "integrity": "sha512-OqiPcvEnnU88B8b1LIWHHkQ3Tz2GDAmQ1RihFNQsbrFKpDsQLkw0lJlnfgKA/uHd0CEEacpfV7C9qqJT3V6Z2g==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@remix-run/router": "1.21.0",
- "@types/cookie": "^0.6.0",
- "@web3-storage/multipart-parser": "^1.0.0",
- "cookie": "^0.6.0",
- "set-cookie-parser": "^2.4.8",
- "source-map": "^0.7.3",
- "turbo-stream": "2.4.0"
- },
- "engines": {
- "node": ">=18.0.0"
- },
- "peerDependencies": {
- "typescript": "^5.1.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@remix-run/server-runtime/node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
- "license": "BSD-3-Clause",
- "peer": true,
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/@resvg/resvg-js": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-2.4.1.tgz",
@@ -3659,13 +3584,6 @@
"integrity": "sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg==",
"dev": true
},
- "node_modules/@types/cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
- "license": "MIT",
- "peer": true
- },
"node_modules/@types/estree": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
@@ -4212,13 +4130,6 @@
"url": "https://opencollective.com/vitest"
}
},
- "node_modules/@web3-storage/multipart-parser": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz",
- "integrity": "sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==",
- "license": "(Apache-2.0 AND MIT)",
- "peer": true
- },
"node_modules/@xmldom/xmldom": {
"version": "0.8.8",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.8.tgz",
@@ -5314,16 +5225,6 @@
"safe-buffer": "~5.1.1"
}
},
- "node_modules/cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
@@ -9793,40 +9694,6 @@
"integrity": "sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug==",
"peer": true
},
- "node_modules/react-router": {
- "version": "6.28.1",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.28.1.tgz",
- "integrity": "sha512-2omQTA3rkMljmrvvo6WtewGdVh45SpL9hGiCI9uUrwGGfNFDIvGK4gYJsKlJoNVi6AQZcopSCballL+QGOm7fA==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@remix-run/router": "1.21.0"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/react-router-dom": {
- "version": "6.28.1",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.28.1.tgz",
- "integrity": "sha512-YraE27C/RdjcZwl5UCqF/ffXnZDxpJdk9Q6jw38SZHjXs7NNdpViq2l2c7fO7+4uWaEfcwfGCv3RSg4e1By/fQ==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@remix-run/router": "1.21.0",
- "react-router": "6.28.1"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8",
- "react-dom": ">=16.8"
- }
- },
"node_modules/read-pkg": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
@@ -10210,13 +10077,6 @@
"upper-case-first": "^2.0.2"
}
},
- "node_modules/set-cookie-parser": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
- "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
- "license": "MIT",
- "peer": true
- },
"node_modules/shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -11823,13 +11683,6 @@
"@esbuild/win32-x64": "0.23.1"
}
},
- "node_modules/turbo-stream": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz",
- "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==",
- "license": "ISC",
- "peer": true
- },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -11872,7 +11725,7 @@
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
"integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
- "devOptional": true,
+ "dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
diff --git a/package.json b/package.json
index 328673f8..12310ca0 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,6 @@
"peerDependencies": {
"@asciidoctor/core": "^3.0.0",
"@oxide/react-asciidoc": "^1.0.0",
- "@remix-run/react": "2.15.2",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},