diff --git a/packages/docs-new/build.ts b/packages/docs-new/build.ts
index 6e97ee7..97a1ec5 100644
--- a/packages/docs-new/build.ts
+++ b/packages/docs-new/build.ts
@@ -2,14 +2,7 @@ import { resolve } from "node:path"
import { build } from "vite"
await build({
- build: {
- outDir: "dist/client",
- lib: {
- entry: resolve("src/entry.client.tsx"),
- fileName: () => "entry.client.js",
- formats: ["es"],
- },
- },
+ build: { outDir: "dist/client" },
})
await build({
diff --git a/packages/docs-new/index.html b/packages/docs-new/index.html
new file mode 100644
index 0000000..6358701
--- /dev/null
+++ b/packages/docs-new/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/docs-new/package.json b/packages/docs-new/package.json
index d80d607..9bfcca1 100644
--- a/packages/docs-new/package.json
+++ b/packages/docs-new/package.json
@@ -14,7 +14,12 @@
"react-dom": "^18.0.0-rc.0",
"react-head": "^3.4.0",
"react-router": "^6.2.1",
- "react-router-dom": "^6.2.1"
+ "react-router-dom": "^6.2.1",
+ "@heroicons/react": "^1.0.5",
+ "@reach/rect": "^0.16.0",
+ "clsx": "^1.1.1",
+ "gray-matter": "^4.0.3",
+ "react-focus-on": "^3.5.4"
},
"devDependencies": {
"@mapbox/rehype-prism": "^0.8.0",
diff --git a/packages/docs-new/server.ts b/packages/docs-new/server.ts
index 34c2c51..16df0ff 100644
--- a/packages/docs-new/server.ts
+++ b/packages/docs-new/server.ts
@@ -1,6 +1,7 @@
import compression from "compression"
import express, { Router } from "express"
-import { resolve } from "node:path"
+import { readFile } from "node:fs/promises"
+import { join, resolve } from "node:path"
import { createServer as createViteServer } from "vite"
import type * as entryModule from "./src/entry.server"
@@ -19,7 +20,15 @@ async function createDevelopmentRouter() {
"/src/entry.server.tsx",
)) as typeof entryModule
- const html = await vite.transformIndexHtml(url, await render(url))
+ const htmlTemplate = await readFile(
+ join(vite.config.root, "index.html"),
+ "utf8",
+ )
+
+ const html = await vite.transformIndexHtml(
+ url,
+ render(url, htmlTemplate),
+ )
res.status(200).set({ "Content-Type": "text/html" }).end(html)
} catch (error: any) {
@@ -33,17 +42,19 @@ async function createDevelopmentRouter() {
function createProductionRouter() {
return Router()
.use(compression())
- .use(express.static(resolve("dist/client")))
+ .use(express.static(resolve("dist/client"), { index: false }))
.use("*", async (req, res) => {
try {
const { render }: typeof entryModule = await import(
"./dist/server/entry.server"
)
+ const htmlTemplate = await readFile("dist/client/index.html", "utf8")
+
res
.status(200)
.set({ "Content-Type": "text/html" })
- .end(await render(req.originalUrl))
+ .end(render(req.originalUrl, htmlTemplate))
} catch (error: any) {
console.error(error)
res.status(500).end(error.stack || error.message)
diff --git a/packages/docs-new/src/app.tsx b/packages/docs-new/src/app.tsx
index 4e3456b..5bf804a 100644
--- a/packages/docs-new/src/app.tsx
+++ b/packages/docs-new/src/app.tsx
@@ -1,43 +1,35 @@
import { description } from "reacord/package.json"
import { lazy, Suspense } from "react"
import { Meta, Title } from "react-head"
-import { Link, Route, Routes } from "react-router-dom"
-import { lazyNamed } from "./helpers/lazy-named"
+import { Route, Routes } from "react-router-dom"
+import { GuidePageLayout } from "./components/guide-page-layout"
+import { LandingPage } from "./pages/landing-page"
export function App() {
return (
<>
Reacord
-
- >}>
-
- } />
- }>
- {docs.map(({ route, component: Component }) => (
- } />
- ))}
-
-
-
+
+ } />
+ }>
+ {docs.map(({ route, component: Component }) => (
+ >}>
+
+
+ }
+ />
+ ))}
+
+
>
)
}
-const LandingPage = lazyNamed(
- "LandingPage",
- () => import("./pages/landing-page"),
-)
-
-const DocumentPageLayout = lazyNamed(
- "DocumentPage",
- () => import("./pages/document-page"),
-)
-
const docs = Object.entries(import.meta.glob("./docs/*.md")).map(
([path, loadModule]) => ({
route: path.replace("./docs/", "").replace(/\.md$/, ""),
diff --git a/packages/docs-new/src/components/app-link.tsx b/packages/docs-new/src/components/app-link.tsx
new file mode 100644
index 0000000..6045973
--- /dev/null
+++ b/packages/docs-new/src/components/app-link.tsx
@@ -0,0 +1,34 @@
+import { Link } from "react-router-dom"
+import { ExternalLink } from "./external-link"
+
+export type AppLinkProps = {
+ type: "router" | "internal" | "external"
+ label: React.ReactNode
+ to: string
+ className?: string
+}
+
+export function AppLink(props: AppLinkProps) {
+ switch (props.type) {
+ case "router":
+ return (
+
+ {props.label}
+
+ )
+
+ case "internal":
+ return (
+
+ {props.label}
+
+ )
+
+ case "external":
+ return (
+
+ {props.label}
+
+ )
+ }
+}
diff --git a/packages/docs-new/src/components/external-link.tsx b/packages/docs-new/src/components/external-link.tsx
new file mode 100644
index 0000000..bfe13a6
--- /dev/null
+++ b/packages/docs-new/src/components/external-link.tsx
@@ -0,0 +1,9 @@
+import type { ComponentPropsWithoutRef } from "react"
+
+export function ExternalLink(props: ComponentPropsWithoutRef<"a">) {
+ return (
+
+ {props.children}
+
+ )
+}
diff --git a/packages/docs-new/src/components/guide-page-layout.tsx b/packages/docs-new/src/components/guide-page-layout.tsx
new file mode 100644
index 0000000..217c048
--- /dev/null
+++ b/packages/docs-new/src/components/guide-page-layout.tsx
@@ -0,0 +1,49 @@
+import clsx from "clsx"
+import { Outlet } from "react-router"
+import { guideLinks } from "../data/guide-links"
+import { useScrolled } from "../hooks/dom/use-scrolled"
+import {
+ docsProseClass,
+ linkClass,
+ maxWidthContainer,
+} from "../styles/components"
+import { AppLink } from "./app-link"
+import { MainNavigation } from "./main-navigation"
+
+export function GuidePageLayout() {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ >
+ )
+}
+
+function HeaderPanel({ children }: { children: React.ReactNode }) {
+ const isScrolled = useScrolled()
+
+ const className = clsx(
+ isScrolled ? "bg-slate-700/30" : "bg-slate-800",
+ "shadow sticky top-0 backdrop-blur-sm transition z-10 flex",
+ )
+
+ return
+}
diff --git a/packages/docs-new/src/components/landing-example.md b/packages/docs-new/src/components/landing-example.md
new file mode 100644
index 0000000..ec0112a
--- /dev/null
+++ b/packages/docs-new/src/components/landing-example.md
@@ -0,0 +1,19 @@
+
+```tsx
+import * as React from "react"
+import { Embed, Button } from "reacord"
+
+function Counter() {
+ const [count, setCount] = React.useState(0)
+ return (
+ <>
+
+
+ >
+ )
+}
+```
diff --git a/packages/docs-new/src/components/main-navigation.tsx b/packages/docs-new/src/components/main-navigation.tsx
new file mode 100644
index 0000000..31e94db
--- /dev/null
+++ b/packages/docs-new/src/components/main-navigation.tsx
@@ -0,0 +1,40 @@
+import { Link } from "react-router-dom"
+import { AppLink } from "../components/app-link"
+import { guideLinks } from "../data/guide-links"
+import { mainLinks } from "../data/main-links"
+import { linkClass } from "../styles/components"
+import { PopoverMenu } from "./popover-menu"
+
+export function MainNavigation() {
+ return (
+
+ )
+}
diff --git a/packages/docs-new/src/components/popover-menu.tsx b/packages/docs-new/src/components/popover-menu.tsx
new file mode 100644
index 0000000..6548d85
--- /dev/null
+++ b/packages/docs-new/src/components/popover-menu.tsx
@@ -0,0 +1,67 @@
+import { MenuAlt4Icon } from "@heroicons/react/outline"
+import { useRect } from "@reach/rect"
+import clsx from "clsx"
+import { useRef, useState } from "react"
+import { FocusOn } from "react-focus-on"
+import { linkClass } from "../styles/components"
+
+// todo: remove useRect usage and rely on css absolute positioning instead
+export function PopoverMenu({ children }: { children: React.ReactNode }) {
+ const [visible, setVisible] = useState(false)
+
+ const buttonRef = useRef(null)
+ const buttonRect = useRect(buttonRef)
+
+ const panelRef = useRef(null)
+ const panelRect = useRect(panelRef)
+
+ /* eslint-disable jsx-a11y/no-static-element-interactions */
+ /* eslint-disable jsx-a11y/click-events-have-key-events */
+ return (
+ <>
+
+
+ setVisible(false)}
+ onEscapeKey={() => setVisible(false)}
+ >
+ setVisible(false)}
+ >
+
+
+
+ >
+ )
+}
+
+PopoverMenu.itemClass = clsx`
+ px-3 py-2 transition text-left font-medium block
+ opacity-50 hover:opacity-100 hover:bg-black/30
+`
diff --git a/packages/docs-new/src/data/guide-links.tsx b/packages/docs-new/src/data/guide-links.tsx
new file mode 100644
index 0000000..c1c20a3
--- /dev/null
+++ b/packages/docs-new/src/data/guide-links.tsx
@@ -0,0 +1,3 @@
+import type { AppLinkProps } from "../components/app-link"
+
+export const guideLinks: AppLinkProps[] = []
diff --git a/packages/docs-new/src/data/main-links.tsx b/packages/docs-new/src/data/main-links.tsx
new file mode 100644
index 0000000..220d45a
--- /dev/null
+++ b/packages/docs-new/src/data/main-links.tsx
@@ -0,0 +1,37 @@
+import {
+ CodeIcon,
+ DocumentTextIcon,
+ ExternalLinkIcon,
+} from "@heroicons/react/solid"
+import type { AppLinkProps } from "../components/app-link"
+import { inlineIconClass } from "../styles/components"
+
+export const mainLinks: AppLinkProps[] = [
+ {
+ type: "router",
+ to: "/docs/getting-started",
+ label: (
+ <>
+ Guides
+ >
+ ),
+ },
+ {
+ type: "internal",
+ to: "/docs/api",
+ label: (
+ <>
+ API Reference
+ >
+ ),
+ },
+ {
+ type: "external",
+ to: "https://github.com/itsMapleLeaf/reacord",
+ label: (
+ <>
+ GitHub
+ >
+ ),
+ },
+]
diff --git a/packages/docs-new/src/entry.server.tsx b/packages/docs-new/src/entry.server.tsx
index cbc17e2..fac8aa5 100644
--- a/packages/docs-new/src/entry.server.tsx
+++ b/packages/docs-new/src/entry.server.tsx
@@ -3,7 +3,7 @@ import { HeadProvider } from "react-head"
import { StaticRouter } from "react-router-dom/server"
import { App } from "./app"
-export async function render(url: string) {
+export function render(url: string, htmlTemplate: string) {
const headTags: React.ReactElement[] = []
const app = (
@@ -20,23 +20,15 @@ export async function render(url: string) {
? "/entry.client.js"
: "/src/entry.client.tsx"
- return /* HTML */ `
-
-
-
-
-
-
-
-
- ${renderToString(<>{headTags}>)}
-
-
-
- ${appHtml}
-
- `
+ return htmlTemplate
+ .replace(
+ "",
+ renderToString(
+ <>
+ {headTags}
+
+ >,
+ ),
+ )
+ .replace("", appHtml)
}
diff --git a/packages/docs-new/src/hooks/dom/use-scrolled.ts b/packages/docs-new/src/hooks/dom/use-scrolled.ts
new file mode 100644
index 0000000..c0faf18
--- /dev/null
+++ b/packages/docs-new/src/hooks/dom/use-scrolled.ts
@@ -0,0 +1,8 @@
+import { useState } from "react"
+import { useWindowEvent } from "./use-window-event"
+
+export function useScrolled() {
+ const [scrolled, setScrolled] = useState(false)
+ useWindowEvent("scroll", () => setScrolled(window.scrollY > 0))
+ return scrolled
+}
diff --git a/packages/docs-new/src/hooks/dom/use-window-event.ts b/packages/docs-new/src/hooks/dom/use-window-event.ts
new file mode 100644
index 0000000..a76294b
--- /dev/null
+++ b/packages/docs-new/src/hooks/dom/use-window-event.ts
@@ -0,0 +1,11 @@
+import { useEffect } from "react"
+
+export function useWindowEvent(
+ type: EventType,
+ handler: (event: WindowEventMap[EventType]) => void,
+) {
+ useEffect(() => {
+ window.addEventListener(type, handler)
+ return () => window.removeEventListener(type, handler)
+ })
+}
diff --git a/packages/docs-new/src/html.ts b/packages/docs-new/src/html.ts
new file mode 100644
index 0000000..601d3d4
--- /dev/null
+++ b/packages/docs-new/src/html.ts
@@ -0,0 +1,36 @@
+export function html({
+ head,
+ body,
+ scriptSource,
+}: {
+ head: string
+ body: string
+ scriptSource: string
+}): string {
+ return /* HTML */ `
+
+
+
+
+
+
+
+
+
+
+ ${head}
+
+
+
+ ${body}
+
+
+ `
+}
diff --git a/packages/docs-new/src/pages/document-page.tsx b/packages/docs-new/src/pages/document-page.tsx
deleted file mode 100644
index 48b9936..0000000
--- a/packages/docs-new/src/pages/document-page.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { Suspense } from "react"
-import { Outlet } from "react-router"
-
-export function DocumentPage() {
- return (
- <>
- Docs
- Loading...}>
-
-
- >
- )
-}
diff --git a/packages/docs-new/src/pages/landing-page.tsx b/packages/docs-new/src/pages/landing-page.tsx
index 82ef0ff..c6e7ceb 100644
--- a/packages/docs-new/src/pages/landing-page.tsx
+++ b/packages/docs-new/src/pages/landing-page.tsx
@@ -1,7 +1,30 @@
+import packageJson from "reacord/package.json"
+import { Link } from "react-router-dom"
+import LandingExample from "../components/landing-example.md"
+import { MainNavigation } from "../components/main-navigation"
+import { maxWidthContainer } from "../styles/components"
+
export function LandingPage() {
return (
- <>
- Landing
- >
+
+
+
+
+ reacord
+
+ {packageJson.description}
+
+ Get Started
+
+
+
+
)
}
diff --git a/packages/docs-new/src/styles/components.ts b/packages/docs-new/src/styles/components.ts
new file mode 100644
index 0000000..76ad495
--- /dev/null
+++ b/packages/docs-new/src/styles/components.ts
@@ -0,0 +1,24 @@
+import clsx from "clsx"
+
+export const maxWidthContainer = clsx`mx-auto w-full max-w-screen-lg px-4`
+
+export const inlineIconClass = clsx`inline w-5 align-sub`
+
+export const linkClass = clsx`
+ font-medium inline-block relative
+ opacity-60 hover:opacity-100 transition-opacity
+ after:absolute after:block after:w-full after:h-px after:bg-white/50 after:translate-y-[3px] after:opacity-0 after:transition
+ hover:after:translate-y-[-1px] hover:after:opacity-100
+`
+
+export const docsProseClass = clsx`
+ prose prose-invert
+ prose-h1:font-light prose-h1:mb-4 prose-h1:text-3xl lg:prose-h1:text-4xl
+ prose-h2:font-light
+ prose-h3:font-light
+ prose-p:my-4
+ prose-a:font-medium prose-a:text-emerald-400 hover:prose-a:no-underline
+ prose-strong:font-medium prose-strong:text-emerald-400
+ prose-pre:font-monospace prose-pre:overflow-x-auto
+ max-w-none
+`
diff --git a/packages/docs-new/src/styles/prism-theme.css b/packages/docs-new/src/styles/prism-theme.css
new file mode 100644
index 0000000..45b8096
--- /dev/null
+++ b/packages/docs-new/src/styles/prism-theme.css
@@ -0,0 +1,133 @@
+/**
+ * Nord Theme Originally by Arctic Ice Studio
+ * https://nordtheme.com
+ *
+ * Ported for PrismJS by Zane Hitchcoxc (@zwhitchcox) and Gabriel Ramos (@gabrieluizramos)
+ */
+
+code[class*="language-"],
+pre[class*="language-"] {
+ color: #f8f8f2;
+ background: none;
+ /* font-family: "Fira Code", Consolas, Monaco, "Andale Mono", "Ubuntu Mono",
+ monospace; */
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ line-height: 1.7;
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+ padding: 1em;
+ margin: 0.5em 0;
+ overflow: auto;
+ border-radius: 0.3em;
+}
+
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+ /* background: #2e3440; */
+ background: rgba(0, 0, 0, 0.3);
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+ padding: 0.1em;
+ border-radius: 0.3em;
+ white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: #636f88;
+}
+
+.token.punctuation {
+ color: #81a1c1;
+}
+
+.namespace {
+ opacity: 0.7;
+}
+
+.token.property,
+.token.tag,
+.token.constant,
+.token.symbol,
+.token.deleted {
+ color: #81a1c1;
+}
+
+.token.number {
+ color: #b48ead;
+}
+
+.token.boolean {
+ color: #81a1c1;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+ color: #a3be8c;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string,
+.token.variable {
+ color: #81a1c1;
+}
+
+.token.atrule,
+.token.attr-value,
+.token.function,
+.token.class-name {
+ color: #88c0d0;
+}
+
+.token.keyword {
+ color: #81a1c1;
+}
+
+.token.regex,
+.token.important {
+ color: #ebcb8b;
+}
+
+.token.important,
+.token.bold {
+ font-weight: bold;
+}
+
+.token.italic {
+ font-style: italic;
+}
+
+.token.entity {
+ cursor: help;
+}
+
+.code-line.highlight-line {
+ background-color: rgba(255, 255, 255, 0.08);
+ padding: 0 1rem;
+ margin: 0 -1rem;
+ display: block;
+}
diff --git a/packages/docs-new/src/tailwind.css b/packages/docs-new/src/styles/tailwind.css
similarity index 100%
rename from packages/docs-new/src/tailwind.css
rename to packages/docs-new/src/styles/tailwind.css
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index aed7f82..4f82836 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -112,7 +112,9 @@ importers:
packages/docs-new:
specifiers:
+ '@heroicons/react': ^1.0.5
'@mapbox/rehype-prism': ^0.8.0
+ '@reach/rect': ^0.16.0
'@tailwindcss/typography': ^0.5.0
'@types/compression': ^1.7.2
'@types/express': ^4.17.13
@@ -121,13 +123,16 @@ importers:
'@types/react-dom': ^17.0.9
'@vitejs/plugin-react': ^1.1.3
autoprefixer: ^10.4.1
+ clsx: ^1.1.1
compression: ^1.7.4
esno: ^0.13.0
express: ^4.17.2
+ gray-matter: ^4.0.3
postcss: ^8.4.5
reacord: workspace:*
react: ^18.0.0-rc.0
react-dom: ^18.0.0-rc.0
+ react-focus-on: ^3.5.4
react-head: ^3.4.0
react-router: ^6.2.1
react-router-dom: ^6.2.1
@@ -138,10 +143,15 @@ importers:
vite: ^2.7.10
xdm: ^3.3.1
dependencies:
+ '@heroicons/react': 1.0.5_react@18.0.0-rc.0
+ '@reach/rect': 0.16.0_757a802188413a36d4f24237d13b8e90
+ clsx: 1.1.1
express: 4.17.2
+ gray-matter: 4.0.3
reacord: link:../reacord
react: 18.0.0-rc.0
react-dom: 18.0.0-rc.0_react@18.0.0-rc.0
+ react-focus-on: 3.5.4_2fa291bfae6e56080648438396754a97
react-head: 3.4.0_757a802188413a36d4f24237d13b8e90
react-router: 6.2.1_react@18.0.0-rc.0
react-router-dom: 6.2.1_757a802188413a36d4f24237d13b8e90
@@ -727,6 +737,14 @@ packages:
react: 17.0.2
dev: false
+ /@heroicons/react/1.0.5_react@18.0.0-rc.0:
+ resolution: {integrity: sha512-UDMyLM2KavIu2vlWfMspapw9yii7aoLwzI2Hudx4fyoPwfKfxU8r3cL8dEBXOjcLG0/oOONZzbT14M1HoNtEcg==}
+ peerDependencies:
+ react: '>= 16'
+ dependencies:
+ react: 18.0.0-rc.0
+ dev: false
+
/@humanwhocodes/config-array/0.9.2:
resolution: {integrity: sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==}
engines: {node: '>=10.10.0'}
@@ -1059,6 +1077,21 @@ packages:
resolution: {integrity: sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==}
dev: false
+ /@reach/rect/0.16.0_757a802188413a36d4f24237d13b8e90:
+ resolution: {integrity: sha512-/qO9jQDzpOCdrSxVPR6l674mRHNTqfEjkaxZHluwJ/2qGUtYsA0GSZiF/+wX/yOWeBif1ycxJDa6HusAMJZC5Q==}
+ peerDependencies:
+ react: ^16.8.0 || 17.x
+ react-dom: ^16.8.0 || 17.x
+ dependencies:
+ '@reach/observe-rect': 1.2.0
+ '@reach/utils': 0.16.0_757a802188413a36d4f24237d13b8e90
+ prop-types: 15.8.0
+ react: 18.0.0-rc.0
+ react-dom: 18.0.0-rc.0_react@18.0.0-rc.0
+ tiny-warning: 1.0.3
+ tslib: 2.3.1
+ dev: false
+
/@reach/rect/0.16.0_react-dom@17.0.2+react@17.0.2:
resolution: {integrity: sha512-/qO9jQDzpOCdrSxVPR6l674mRHNTqfEjkaxZHluwJ/2qGUtYsA0GSZiF/+wX/yOWeBif1ycxJDa6HusAMJZC5Q==}
peerDependencies:
@@ -1074,6 +1107,18 @@ packages:
tslib: 2.3.1
dev: false
+ /@reach/utils/0.16.0_757a802188413a36d4f24237d13b8e90:
+ resolution: {integrity: sha512-PCggBet3qaQmwFNcmQ/GqHSefadAFyNCUekq9RrWoaU9hh/S4iaFgf2MBMdM47eQj5i/Bk0Mm07cP/XPFlkN+Q==}
+ peerDependencies:
+ react: ^16.8.0 || 17.x
+ react-dom: ^16.8.0 || 17.x
+ dependencies:
+ react: 18.0.0-rc.0
+ react-dom: 18.0.0-rc.0_react@18.0.0-rc.0
+ tiny-warning: 1.0.3
+ tslib: 2.3.1
+ dev: false
+
/@reach/utils/0.16.0_react-dom@17.0.2+react@17.0.2:
resolution: {integrity: sha512-PCggBet3qaQmwFNcmQ/GqHSefadAFyNCUekq9RrWoaU9hh/S4iaFgf2MBMdM47eQj5i/Bk0Mm07cP/XPFlkN+Q==}
peerDependencies:
@@ -8098,6 +8143,15 @@ packages:
react: 17.0.2
dev: false
+ /react-clientside-effect/1.2.5_react@18.0.0-rc.0:
+ resolution: {integrity: sha512-2bL8qFW1TGBHozGGbVeyvnggRpMjibeZM2536AKNENLECutp2yfs44IL8Hmpn8qjFQ2K7A9PnYf3vc7aQq/cPA==}
+ peerDependencies:
+ react: ^15.3.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ '@babel/runtime': 7.16.5
+ react: 18.0.0-rc.0
+ dev: false
+
/react-dom/17.0.2_react@17.0.2:
resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==}
peerDependencies:
@@ -8120,6 +8174,22 @@ packages:
scheduler: 0.21.0-rc.0-next-f2a59df48-20211208
dev: false
+ /react-focus-lock/2.7.1_2fa291bfae6e56080648438396754a97:
+ resolution: {integrity: sha512-ImSeVmcrLKNMqzUsIdqOkXwTVltj79OPu43oT8tVun7eIckA4VdM7UmYUFo3H/UC2nRVgagMZGFnAOQEDiDYcA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@babel/runtime': 7.16.5
+ focus-lock: 0.10.1
+ prop-types: 15.8.0
+ react: 18.0.0-rc.0
+ react-clientside-effect: 1.2.5_react@18.0.0-rc.0
+ use-callback-ref: 1.2.5_2fa291bfae6e56080648438396754a97
+ use-sidecar: 1.0.5_react@18.0.0-rc.0
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
/react-focus-lock/2.7.1_b08e3c15324cbe90a6ff8fcd416c932c:
resolution: {integrity: sha512-ImSeVmcrLKNMqzUsIdqOkXwTVltj79OPu43oT8tVun7eIckA4VdM7UmYUFo3H/UC2nRVgagMZGFnAOQEDiDYcA==}
peerDependencies:
@@ -8136,6 +8206,27 @@ packages:
- '@types/react'
dev: false
+ /react-focus-on/3.5.4_2fa291bfae6e56080648438396754a97:
+ resolution: {integrity: sha512-HnU0YGKhNSUsC4k6K8L+2wk8mC/qdg+CsS7A1bWLMgK7UuBphdECs2esnS6cLmBoVNjsFnCm/vMypeezKOdK3A==}
+ engines: {node: '>=8.5.0'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 17.0.38
+ aria-hidden: 1.1.3
+ react: 18.0.0-rc.0
+ react-focus-lock: 2.7.1_2fa291bfae6e56080648438396754a97
+ react-remove-scroll: 2.4.3_2fa291bfae6e56080648438396754a97
+ react-style-singleton: 2.1.1_2fa291bfae6e56080648438396754a97
+ tslib: 2.3.1
+ use-callback-ref: 1.2.5_2fa291bfae6e56080648438396754a97
+ use-sidecar: 1.0.5_react@18.0.0-rc.0
+ dev: false
+
/react-focus-on/3.5.4_b08e3c15324cbe90a6ff8fcd416c932c:
resolution: {integrity: sha512-HnU0YGKhNSUsC4k6K8L+2wk8mC/qdg+CsS7A1bWLMgK7UuBphdECs2esnS6cLmBoVNjsFnCm/vMypeezKOdK3A==}
engines: {node: '>=8.5.0'}
@@ -8192,6 +8283,22 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /react-remove-scroll-bar/2.2.0_2fa291bfae6e56080648438396754a97:
+ resolution: {integrity: sha512-UU9ZBP1wdMR8qoUs7owiVcpaPwsQxUDC2lypP6mmixaGlARZa7ZIBx1jcuObLdhMOvCsnZcvetOho0wzPa9PYg==}
+ engines: {node: '>=8.5.0'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0
+ react: ^16.8.0 || ^17.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 17.0.38
+ react: 18.0.0-rc.0
+ react-style-singleton: 2.1.1_2fa291bfae6e56080648438396754a97
+ tslib: 1.14.1
+ dev: false
+
/react-remove-scroll-bar/2.2.0_b08e3c15324cbe90a6ff8fcd416c932c:
resolution: {integrity: sha512-UU9ZBP1wdMR8qoUs7owiVcpaPwsQxUDC2lypP6mmixaGlARZa7ZIBx1jcuObLdhMOvCsnZcvetOho0wzPa9PYg==}
engines: {node: '>=8.5.0'}
@@ -8208,6 +8315,25 @@ packages:
tslib: 1.14.1
dev: false
+ /react-remove-scroll/2.4.3_2fa291bfae6e56080648438396754a97:
+ resolution: {integrity: sha512-lGWYXfV6jykJwbFpsuPdexKKzp96f3RbvGapDSIdcyGvHb7/eqyn46C7/6h+rUzYar1j5mdU+XECITHXCKBk9Q==}
+ engines: {node: '>=8.5.0'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0
+ react: ^16.8.0 || ^17.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 17.0.38
+ react: 18.0.0-rc.0
+ react-remove-scroll-bar: 2.2.0_2fa291bfae6e56080648438396754a97
+ react-style-singleton: 2.1.1_2fa291bfae6e56080648438396754a97
+ tslib: 1.14.1
+ use-callback-ref: 1.2.5_2fa291bfae6e56080648438396754a97
+ use-sidecar: 1.0.5_react@18.0.0-rc.0
+ dev: false
+
/react-remove-scroll/2.4.3_b08e3c15324cbe90a6ff8fcd416c932c:
resolution: {integrity: sha512-lGWYXfV6jykJwbFpsuPdexKKzp96f3RbvGapDSIdcyGvHb7/eqyn46C7/6h+rUzYar1j5mdU+XECITHXCKBk9Q==}
engines: {node: '>=8.5.0'}
@@ -8269,6 +8395,23 @@ packages:
react: 18.0.0-rc.0
dev: false
+ /react-style-singleton/2.1.1_2fa291bfae6e56080648438396754a97:
+ resolution: {integrity: sha512-jNRp07Jza6CBqdRKNgGhT3u9umWvils1xsuMOjZlghBDH2MU0PL2WZor4PGYjXpnRCa9DQSlHMs/xnABWOwYbA==}
+ engines: {node: '>=8.5.0'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0
+ react: ^16.8.0 || ^17.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 17.0.38
+ get-nonce: 1.0.1
+ invariant: 2.2.4
+ react: 18.0.0-rc.0
+ tslib: 1.14.1
+ dev: false
+
/react-style-singleton/2.1.1_b08e3c15324cbe90a6ff8fcd416c932c:
resolution: {integrity: sha512-jNRp07Jza6CBqdRKNgGhT3u9umWvils1xsuMOjZlghBDH2MU0PL2WZor4PGYjXpnRCa9DQSlHMs/xnABWOwYbA==}
engines: {node: '>=8.5.0'}
@@ -9910,6 +10053,20 @@ packages:
prepend-http: 2.0.0
dev: true
+ /use-callback-ref/1.2.5_2fa291bfae6e56080648438396754a97:
+ resolution: {integrity: sha512-gN3vgMISAgacF7sqsLPByqoePooY3n2emTH59Ur5d/M8eg4WTWu1xp8i8DHjohftIyEx0S08RiYxbffr4j8Peg==}
+ engines: {node: '>=8.5.0'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0
+ react: ^16.8.0 || ^17.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 17.0.38
+ react: 18.0.0-rc.0
+ dev: false
+
/use-callback-ref/1.2.5_b08e3c15324cbe90a6ff8fcd416c932c:
resolution: {integrity: sha512-gN3vgMISAgacF7sqsLPByqoePooY3n2emTH59Ur5d/M8eg4WTWu1xp8i8DHjohftIyEx0S08RiYxbffr4j8Peg==}
engines: {node: '>=8.5.0'}
@@ -9935,6 +10092,17 @@ packages:
tslib: 1.14.1
dev: false
+ /use-sidecar/1.0.5_react@18.0.0-rc.0:
+ resolution: {integrity: sha512-k9jnrjYNwN6xYLj1iaGhonDghfvmeTmYjAiGvOr7clwKfPjMXJf4/HOr7oT5tJwYafgp2tG2l3eZEOfoELiMcA==}
+ engines: {node: '>=8.5.0'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0
+ dependencies:
+ detect-node-es: 1.1.0
+ react: 18.0.0-rc.0
+ tslib: 1.14.1
+ dev: false
+
/use/3.1.1:
resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
engines: {node: '>=0.10.0'}