From c9e6693de490239e62d0f5a0b7abf711e3a0e0e7 Mon Sep 17 00:00:00 2001 From: Navin Moorthy Date: Tue, 18 Jan 2022 20:51:05 +0530 Subject: [PATCH] =?UTF-8?q?feat(updates):=20=E2=9C=A8=20update=20nextra=20?= =?UTF-8?q?&=20nextra=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dist/index.js | 1692 ++++++++--------- .../dist/types/config.d.ts | 4 + .../dist/types/footer.d.ts | 12 + .../dist/types/head.d.ts | 8 + .../dist/types/icons/arrow-right.d.ts | 3 + .../dist/types/icons/check.d.ts | 2 + .../dist/types/icons/discord.d.ts | 5 + .../dist/types/icons/github.d.ts | 5 + .../dist/types/icons/globe.d.ts | 2 + .../dist/types/icons/moon.d.ts | 2 + .../dist/types/icons/sun.d.ts | 2 + .../dist/types/index.d.ts | 7 + .../dist/types/locale-switch.d.ts | 7 + .../dist/types/misc/active-anchor.d.ts | 10 + .../dist/types/misc/default.config.d.ts | 18 + .../dist/types/misc/theme.d.ts | 7 + .../dist/types/navbar.d.ts | 9 + .../dist/types/polyfill.d.ts | 0 .../dist/types/search.d.ts | 7 + .../dist/types/select.d.ts | 12 + .../dist/types/sidebar.d.ts | 13 + .../dist/types/theme-switch.d.ts | 4 + .../dist/types/toc.d.ts | 6 + .../dist/types/types.d.ts | 47 + .../dist/types/utils/flatten.d.ts | 1 + .../dist/types/utils/get-fs-route.d.ts | 1 + .../dist/types/utils/get-heading-text.d.ts | 2 + .../dist/types/utils/menu-context.d.ts | 9 + .../dist/types/utils/normalize-pages.d.ts | 35 + .../dist/types/utils/render-component.d.ts | 3 + .../dist/types/utils/use-mounted.d.ts | 2 + .../package.json | 8 +- .../nextra-renderlesskit-theme-docs/style.css | 535 +++--- .../nextra-renderlesskit-theme-docs/yalc.sig | 2 +- .yalc/nextra/dist/filter-route-locale.d.ts | 2 + .yalc/nextra/dist/index.js | 181 +- .yalc/nextra/dist/loader.mjs | 354 ++-- .yalc/nextra/dist/page-map.d.ts | 5 + .yalc/nextra/dist/plugin.d.ts | 27 + .yalc/nextra/dist/types.d.ts | 2 + .yalc/nextra/dist/utils.d.ts | 5 + .yalc/nextra/package.json | 10 +- .yalc/nextra/yalc.sig | 2 +- components/Callout.tsx | 6 +- next.config.js | 1 + package.json | 1 + postcss.config.js | 2 +- public/.nextra/data-default.json | 67 + tailwind.config.js | 15 + theme.config.js | 6 +- tsconfig.json | 2 +- yalc.lock | 4 +- yarn.lock | 849 +++------ 53 files changed, 2107 insertions(+), 1916 deletions(-) create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/config.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/footer.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/head.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/icons/arrow-right.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/icons/check.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/icons/discord.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/icons/github.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/icons/globe.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/icons/moon.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/icons/sun.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/index.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/locale-switch.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/misc/active-anchor.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/misc/default.config.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/misc/theme.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/navbar.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/polyfill.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/search.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/select.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/sidebar.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/theme-switch.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/toc.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/types.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/utils/flatten.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/utils/get-fs-route.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/utils/get-heading-text.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/utils/menu-context.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/utils/normalize-pages.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/utils/render-component.d.ts create mode 100644 .yalc/nextra-renderlesskit-theme-docs/dist/types/utils/use-mounted.d.ts create mode 100644 .yalc/nextra/dist/filter-route-locale.d.ts create mode 100644 .yalc/nextra/dist/page-map.d.ts create mode 100644 .yalc/nextra/dist/plugin.d.ts create mode 100644 .yalc/nextra/dist/utils.d.ts create mode 100644 public/.nextra/data-default.json diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/index.js b/.yalc/nextra-renderlesskit-theme-docs/dist/index.js index 005ab2c..9478abb 100644 --- a/.yalc/nextra-renderlesskit-theme-docs/dist/index.js +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/index.js @@ -1,7 +1,6 @@ var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; -var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; @@ -30,13 +29,6 @@ var __objRest = (source, exclude) => { } return target; }; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { @@ -58,240 +50,11 @@ var __async = (__this, __arguments, generator) => { }); }; -// src/wasm-loader.js -var wasm_loader_exports = {}; -__export(wasm_loader_exports, { - init: () => init, - wasm_register_index: () => wasm_register_index, - wasm_search: () => wasm_search -}); -function getObject(idx) { - return heap[idx]; -} -function dropObject(idx) { - if (idx < 36) - return; - heap[idx] = heap_next; - heap_next = idx; -} -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} -function getUint8Memory0() { - if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { - cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachegetUint8Memory0; -} -function getStringFromWasm0(ptr, len) { - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} -function passStringToWasm0(arg, malloc, realloc) { - if (typeof arg !== "string") - throw new Error("expected a string argument"); - if (realloc === void 0) { - const buf = cachedTextEncoder.encode(arg); - const ptr2 = malloc(buf.length); - getUint8Memory0().subarray(ptr2, ptr2 + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr2; - } - let len = arg.length; - let ptr = malloc(len); - const mem = getUint8Memory0(); - let offset = 0; - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 127) - break; - mem[ptr + offset] = code; - } - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3); - const view = getUint8Memory0().subarray(ptr + offset, ptr + len); - const ret = encodeString(arg, view); - if (ret.read !== arg.length) - throw new Error("failed to pass whole string"); - offset += ret.written; - } - WASM_VECTOR_LEN = offset; - return ptr; -} -function passArray8ToWasm0(arg, malloc) { - const ptr = malloc(arg.length * 1); - getUint8Memory0().set(arg, ptr / 1); - WASM_VECTOR_LEN = arg.length; - return ptr; -} -function getInt32Memory0() { - if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { - cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); - } - return cachegetInt32Memory0; -} -function wasm_register_index(name, data) { - try { - const retptr = wasm.__wbindgen_export_0.value - 16; - wasm.__wbindgen_export_0.value = retptr; - var ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - var ptr1 = passArray8ToWasm0(data, wasm.__wbindgen_malloc); - var len1 = WASM_VECTOR_LEN; - wasm.wasm_register_index(retptr, ptr0, len0, ptr1, len1); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - return getStringFromWasm0(r0, r1); - } finally { - wasm.__wbindgen_export_0.value += 16; - wasm.__wbindgen_free(r0, r1); - } -} -function wasm_search(name, query) { - try { - const retptr = wasm.__wbindgen_export_0.value - 16; - wasm.__wbindgen_export_0.value = retptr; - var ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - var ptr1 = passStringToWasm0(query, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len1 = WASM_VECTOR_LEN; - wasm.wasm_search(retptr, ptr0, len0, ptr1, len1); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - return getStringFromWasm0(r0, r1); - } finally { - wasm.__wbindgen_export_0.value += 16; - wasm.__wbindgen_free(r0, r1); - } -} -function logError(f) { - return function() { - try { - return f.apply(this, arguments); - } catch (e) { - let error = function() { - try { - return e instanceof Error ? `${e.message} - -Stack: -${e.stack}` : e.toString(); - } catch (_) { - return ""; - } - }(); - console.error("wasm-bindgen: imported JS function that was not marked as `catch` threw an error:", error); - throw e; - } - }; -} -function addHeapObject(obj) { - if (heap_next === heap.length) - heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - if (typeof heap_next !== "number") - throw new Error("corrupt heap"); - heap[idx] = obj; - return idx; -} -function load(module, imports) { - return __async(this, null, function* () { - if (typeof Response === "function" && module instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === "function") { - try { - return yield WebAssembly.instantiateStreaming(module, imports); - } catch (e) { - if (module.headers.get("Content-Type") !== "application/wasm") { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - } else { - throw e; - } - } - } - const bytes = yield module.arrayBuffer(); - return yield WebAssembly.instantiate(bytes, imports); - } else { - const instance = yield WebAssembly.instantiate(module, imports); - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; - } else { - return instance; - } - } - }); -} -function init(input) { - return __async(this, null, function* () { - const imports = {}; - imports.wbg = {}; - imports.wbg.__wbg_error_4bb6c2a97407129a = logError(function(arg0, arg1) { - try { - console.error(getStringFromWasm0(arg0, arg1)); - } finally { - wasm.__wbindgen_free(arg0, arg1); - } - }); - imports.wbg.__wbg_new_59cb74e423758ede = logError(function() { - var ret = new Error(); - return addHeapObject(ret); - }); - imports.wbg.__wbg_stack_558ba5917b466edd = logError(function(arg0, arg1) { - var ret = getObject(arg1).stack; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }); - imports.wbg.__wbindgen_object_drop_ref = function(arg0) { - takeObject(arg0); - }; - imports.wbg.__wbindgen_throw = function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }; - const { instance, module } = yield load(yield fetch(input), imports); - wasm = instance.exports; - init.__wbindgen_wasm_module = module; - return wasm; - }); -} -var wasm, heap, heap_next, cachedTextDecoder, cachegetUint8Memory0, WASM_VECTOR_LEN, cachedTextEncoder, encodeString, cachegetInt32Memory0; -var init_wasm_loader = __esm({ - "src/wasm-loader.js"() { - heap = new Array(32).fill(void 0); - heap.push(void 0, null, true, false); - heap_next = heap.length; - cachedTextDecoder = new TextDecoder("utf-8", { - ignoreBOM: true, - fatal: true - }); - cachedTextDecoder.decode(); - cachegetUint8Memory0 = null; - WASM_VECTOR_LEN = 0; - cachedTextEncoder = new TextEncoder("utf-8"); - encodeString = typeof cachedTextEncoder.encodeInto === "function" ? function(arg, view) { - return cachedTextEncoder.encodeInto(arg, view); - } : function(arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; - }; - cachegetInt32Memory0 = null; - } -}); - // src/index.tsx -import React18, { useMemo as useMemo5, useState as useState6 } from "react"; -import { RenderlesskitProvider } from "@renderlesskit/react-tailwind"; +import React23, { useMemo as useMemo3, useState as useState6 } from "react"; import { SkipNavContent } from "@reach/skip-nav"; import cn8 from "classnames"; -import { useRouter as useRouter7 } from "next/router"; +import { useRouter as useRouter8 } from "next/router"; import { ThemeProvider } from "next-themes"; // src/misc/active-anchor.tsx @@ -312,6 +75,7 @@ var ActiveAnchor = ({ children }) => { // src/misc/default.config.tsx import React2 from "react"; var defaultTheme = { + projectLink: "https://github.com/shuding/nextra", docsRepositoryBase: "https://github.com/shuding/nextra", titleSuffix: " \u2013 Nextra", nextLinks: true, @@ -326,17 +90,11 @@ var defaultTheme = { logo: /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("span", { className: "mr-2 font-extrabold hidden md:inline" }, "Nextra"), /* @__PURE__ */ React2.createElement("span", { - className: "text-oldGray-600 font-normal hidden md:inline" + className: "text-gray-600 font-normal hidden md:inline" }, "The Next Docs Builder")), head: /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("meta", { name: "msapplication-TileColor", content: "#ffffff" - }), /* @__PURE__ */ React2.createElement("meta", { - name: "theme-color", - content: "#ffffff" - }), /* @__PURE__ */ React2.createElement("meta", { - name: "viewport", - content: "width=device-width, initial-scale=1.0" }), /* @__PURE__ */ React2.createElement("meta", { httpEquiv: "Content-Language", content: "en" @@ -363,58 +121,11 @@ var defaultTheme = { var default_config_default = defaultTheme; // src/misc/theme.tsx -import React3, { useContext as useContext2, useEffect, useMemo, useRef } from "react"; -import { LiveEditor, LiveError, LivePreview, LiveProvider } from "react-live"; -import { Button } from "@renderlesskit/react-tailwind"; -import * as Renderlesskit from "@renderlesskit/react-tailwind"; -import { useClipboard } from "@chakra-ui/hooks"; -import { MDXProvider } from "@mdx-js/react"; +import React3, { useEffect, useRef } from "react"; +import innerText from "react-innertext"; import Slugger from "github-slugger"; import Link from "next/link"; -import Highlight, { defaultProps } from "prism-react-renderer"; -import prismTheme from "prism-react-renderer/themes/palenight"; -import { tw } from "twind"; import "intersection-observer"; -var THEME = { - plain: { - backgroundColor: "transparent" - }, - styles: [ - { - types: ["keyword", "builtin"], - style: { - color: "#ff0078", - fontWeight: "bold" - } - }, - { - types: ["comment"], - style: { - color: "#999", - fontStyle: "italic" - } - }, - { - types: ["variable", "language-javascript"], - style: { - color: "#0076ff" - } - }, - { - types: ["attr-name"], - style: { - color: "#d9931e", - fontStyle: "normal" - } - }, - { - types: ["boolean", "regex"], - style: { - color: "#d9931e" - } - } - ] -}; var ob = {}; var obCallback = {}; var createOrGetObserver = (rootMargin) => { @@ -469,7 +180,7 @@ var HeaderLink = (_a) => { ]); const setActiveAnchor = useActiveAnchorSet(); const obRef = useRef(null); - const slug = slugger.slug(children); + const slug = slugger.slug(innerText(children)); const anchor = /* @__PURE__ */ React3.createElement("span", { className: "subheading-anchor", id: slug, @@ -577,72 +288,6 @@ var Pre = (_a) => { value: props }, /* @__PURE__ */ React3.createElement("pre", null, children)); }; -var Code = (props) => { - const { children, className } = props; - const { - highlight, - live = false, - render = false, - noInline = false - } = useContext2(PreContext); - const highlightedRanges = useMemo(() => { - return highlight ? highlight.split(",").map((r) => { - if (r.includes("-")) { - return r.split("-").map((v) => parseInt(v, 10)); - } - return +r; - }) : []; - }, [highlight]); - if (!className) - return /* @__PURE__ */ React3.createElement("code", null, children); - if (typeof children !== "string") - return /* @__PURE__ */ React3.createElement("code", null, children); - const language = className.replace(/language-/, ""); - const scope = __spreadProps(__spreadValues({ React: React3 }, Renderlesskit), { tw }); - if (live) { - return /* @__PURE__ */ React3.createElement(LiveProvider, { - transformCode: (rawCode) => transformer(rawCode, language, noInline), - code: children.trim(), - scope, - language, - theme: prismTheme - }, /* @__PURE__ */ React3.createElement("div", { - className: "relative px-2 py-4" - }, /* @__PURE__ */ React3.createElement(LivePreview, null), /* @__PURE__ */ React3.createElement(CopyButton, { - code: children.trim() - })), /* @__PURE__ */ React3.createElement(LiveEditor, null), /* @__PURE__ */ React3.createElement(LiveError, null)); - } - if (render) { - return /* @__PURE__ */ React3.createElement(LiveProvider, { - transformCode: (rawCode) => transformer(rawCode, language, noInline), - code: children.trim(), - scope, - language, - theme: prismTheme - }, /* @__PURE__ */ React3.createElement(LivePreview, null)); - } - return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(Highlight, __spreadProps(__spreadValues({}, defaultProps), { - code: children.trim(), - language, - theme: THEME - }), ({ className: className2, style, tokens, getLineProps, getTokenProps }) => /* @__PURE__ */ React3.createElement("code", { - className: className2, - style: __spreadValues({}, style) - }, tokens.map((line, i) => /* @__PURE__ */ React3.createElement("div", __spreadProps(__spreadValues({ - key: i - }, getLineProps({ line, key: i })), { - style: highlightedRanges.some((r) => Array.isArray(r) ? r[0] <= i + 1 && i + 1 <= r[1] : r === i + 1) ? { - background: "var(--c-highlight)", - margin: "0 -1rem", - padding: "0 1rem" - } : {} - }), line.map((token, key) => /* @__PURE__ */ React3.createElement("span", __spreadValues({ - key - }, getTokenProps({ token, key })))))))), /* @__PURE__ */ React3.createElement(CopyButton, { - variant: "subtle", - code: children.trim() - })); -}; var Table = ({ children }) => { return /* @__PURE__ */ React3.createElement("div", { className: "table-container" @@ -656,41 +301,27 @@ var getComponents = (args) => ({ h6: H6(args), a: A, pre: Pre, - code: Code, table: Table }); -var MDXTheme = ({ children }) => { +var MDXTheme = ({ + MDXContent +}) => { const slugger = new Slugger(); slugger.index = 0; - return /* @__PURE__ */ React3.createElement(MDXProvider, { + return /* @__PURE__ */ React3.createElement(MDXContent, { components: getComponents({ slugger }) - }, children); -}; -var theme_default = MDXTheme; -var CopyButton = (_a) => { - var _b = _a, { code } = _b, props = __objRest(_b, ["code"]); - const { hasCopied, onCopy } = useClipboard(code); - return /* @__PURE__ */ React3.createElement("span", { - className: "absolute right-0 transform -translate-x-2 translate-y-4 -top-2" - }, /* @__PURE__ */ React3.createElement(Button, __spreadValues({ - size: "sm", - onClick: onCopy - }, props), hasCopied ? "COPIED!" : "COPY")); -}; -var transformer = (rawCode, language, noInline) => { - const code = rawCode.replace(/((^|)import[^;]+[; ]+)+/gi, "").replace(/export default \(\) => {((.|\n)*)};/, "render(() => {$1});").replace(/export default \(\) => \(((.|\n)*)\);/, "render($1);").replace(/export default \(\) => ((.|\n)*);/, "render($1);").replace(/export default ((.|\n)*);/, "render($1);"); - return language === "jsx" && !noInline ? `<>${code}` : code; + }); }; // src/utils/get-fs-route.ts var getFSRoute = (asPath, locale) => { if (!locale) return asPath.replace(new RegExp("/index(/|$)"), "$1"); - return asPath.replace(new RegExp(`.${locale}(/|$)`), "$1").replace(new RegExp("/index(/|$)"), "$1"); + return asPath.replace(new RegExp(`.${locale}(/|$)`), "$1").replace(new RegExp("/index(/|$)"), "$1").split("#")[0] || "/"; }; // src/utils/menu-context.ts -import { createContext as createContext2, useContext as useContext3 } from "react"; +import { createContext as createContext2, useContext as useContext2 } from "react"; var MenuContext = createContext2({ menu: false, setMenu: () => { @@ -698,7 +329,7 @@ var MenuContext = createContext2({ defaultMenuCollapsed: true }); function useMenuContext() { - return useContext3(MenuContext); + return useContext2(MenuContext); } // src/utils/normalize-pages.tsx @@ -885,18 +516,15 @@ var ThemeConfigContext = React4.createContext({}); var useConfig = () => React4.useContext(ThemeConfigContext); // src/footer.tsx -import React7 from "react"; -import cn from "classnames"; +import React14 from "react"; +import cn2 from "classnames"; import Link2 from "next/link"; -import { useRouter } from "next/router"; -import parseGitUrl from "parse-git-url"; +import { useRouter as useRouter2 } from "next/router"; // src/icons/arrow-right.tsx import React5 from "react"; -var ArrowRight = (_a) => { - var _b = _a, { height = 24 } = _b, props = __objRest(_b, ["height"]); +var ArrowRight = (props) => { return /* @__PURE__ */ React5.createElement("svg", __spreadValues({ - height, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" @@ -921,61 +549,189 @@ var renderComponent = (ComponentOrNode, props) => { }; var render_component_default = renderComponent; +// src/locale-switch.tsx +import React10 from "react"; +import { useRouter } from "next/router"; + +// src/icons/globe.tsx +import React7 from "react"; +function Globe() { + return /* @__PURE__ */ React7.createElement("svg", { + viewBox: "0 0 20 20", + width: "1em", + height: "1em", + fill: "currentColor" + }, /* @__PURE__ */ React7.createElement("path", { + fillRule: "evenodd", + d: "M4.083 9h1.946c.089-1.546.383-2.97.837-4.118A6.004 6.004 0 004.083 9zM10 2a8 8 0 100 16 8 8 0 000-16zm0 2c-.076 0-.232.032-.465.262-.238.234-.497.623-.737 1.182-.389.907-.673 2.142-.766 3.556h3.936c-.093-1.414-.377-2.649-.766-3.556-.24-.56-.5-.948-.737-1.182C10.232 4.032 10.076 4 10 4zm3.971 5c-.089-1.546-.383-2.97-.837-4.118A6.004 6.004 0 0115.917 9h-1.946zm-2.003 2H8.032c.093 1.414.377 2.649.766 3.556.24.56.5.948.737 1.182.233.23.389.262.465.262.076 0 .232-.032.465-.262.238-.234.498-.623.737-1.182.389-.907.673-2.142.766-3.556zm1.166 4.118c.454-1.147.748-2.572.837-4.118h1.946a6.004 6.004 0 01-2.783 4.118zm-6.268 0C6.412 13.97 6.118 12.546 6.03 11H4.083a6.004 6.004 0 002.783 4.118z", + clipRule: "evenodd" + })); +} + +// src/select.tsx +import React9 from "react"; +import { Listbox, Transition } from "@headlessui/react"; +import cn from "classnames"; + +// src/icons/check.tsx +import React8 from "react"; +function Check() { + return /* @__PURE__ */ React8.createElement("svg", { + viewBox: "0 0 20 20", + width: "1em", + height: "1em", + fill: "currentColor" + }, /* @__PURE__ */ React8.createElement("path", { + fillRule: "evenodd", + d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", + clipRule: "evenodd" + })); +} + +// src/select.tsx +function Menu({ options, selected, onChange }) { + return /* @__PURE__ */ React9.createElement(Listbox, { + value: selected, + onChange + }, ({ open }) => /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement(Listbox.Button, { + className: cn("rounded-md px-2 w-full text-left font-medium cursor-default text-xs h-7 transition-colors text-gray-600 dark:text-gray-400 focus:outline-none", open ? "bg-gray-200 dark:bg-prime-100 dark:bg-opacity-10 text-gray-900 dark:text-gray-50" : "hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-prime-100 dark:hover:bg-opacity-5 dark:hover:text-gray-50") + }, selected.name), /* @__PURE__ */ React9.createElement(Transition, { + show: open, + as: React9.Fragment, + leave: "transition", + leaveFrom: "opacity-100", + leaveTo: "opacity-0" + }, /* @__PURE__ */ React9.createElement(Listbox.Options, { + className: "menu absolute bottom-[130%] min-w-full z-20 mt-1 bg-white dark:bg-neutral-800 dark:ring-white dark:ring-opacity-20 shadow-lg max-h-64 rounded-md py-1 ring-1 ring-black ring-opacity-5 overflow-auto focus:outline-none text-sm" + }, options.map((option) => /* @__PURE__ */ React9.createElement(Listbox.Option, { + key: option.key, + value: option, + className: ({ active }) => cn(option.key === selected.key ? "" : "", active ? "text-prime-500 bg-prime-50 dark:bg-prime-500 dark:bg-opacity-10" : "text-gray-800 dark:text-gray-100", "cursor-default select-none relative py-1.5 pl-3 pr-9 whitespace-nowrap") + }, option.name, option.key === selected.key ? /* @__PURE__ */ React9.createElement("span", { + className: cn("absolute inset-y-0 right-0 flex items-center pr-3") + }, /* @__PURE__ */ React9.createElement(Check, null)) : null)))))); +} + +// src/locale-switch.tsx +function LocaleSwitch({ options }) { + const router = useRouter(); + const { locale, asPath } = router; + const selected = options.find((l) => locale === l.locale); + return /* @__PURE__ */ React10.createElement(Menu, { + onChange: (option) => { + const date = new Date(Date.now() + 365 * 24 * 60 * 60 * 1e3); + document.cookie = `NEXT_LOCALE=${option.key}; expires=${date.toUTCString()}; path=/`; + router.push(asPath, void 0, { + locale: option.key + }); + }, + selected: { + key: selected.locale, + name: /* @__PURE__ */ React10.createElement("div", { + className: "flex items-center gap-2" + }, /* @__PURE__ */ React10.createElement(Globe, null), /* @__PURE__ */ React10.createElement("span", null, selected.text)) + }, + options: options.map((l) => ({ + key: l.locale, + name: l.text + })) + }); +} + +// src/theme-switch.tsx +import React13 from "react"; +import { useTheme } from "next-themes"; + +// src/icons/moon.tsx +import React11 from "react"; +function Sun() { + return /* @__PURE__ */ React11.createElement("svg", { + viewBox: "0 0 20 20", + width: "1em", + height: "1em", + fill: "currentColor" + }, /* @__PURE__ */ React11.createElement("path", { + d: "M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" + })); +} + +// src/icons/sun.tsx +import React12 from "react"; +function Moon() { + return /* @__PURE__ */ React12.createElement("svg", { + viewBox: "0 0 20 20", + width: "1em", + height: "1em", + fill: "currentColor" + }, /* @__PURE__ */ React12.createElement("path", { + fillRule: "evenodd", + d: "M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z", + clipRule: "evenodd" + })); +} + +// src/theme-switch.tsx +function ThemeSwitch({ lite = true }) { + const { theme, setTheme, systemTheme } = useTheme(); + const renderedTheme = theme === "system" ? systemTheme : theme; + const [mounted, setMounted] = React13.useState(false); + React13.useEffect(() => setMounted(true), []); + return /* @__PURE__ */ React13.createElement(Menu, { + onChange: (option) => { + setTheme(option.key); + }, + selected: { + key: theme || "", + name: mounted ? /* @__PURE__ */ React13.createElement("div", { + className: "flex items-center gap-2 capitalize" + }, renderedTheme === "dark" ? /* @__PURE__ */ React13.createElement(Sun, null) : /* @__PURE__ */ React13.createElement(Moon, null), lite ? "" : /* @__PURE__ */ React13.createElement("span", null, theme)) : "" + }, + options: [ + { + key: "light", + name: "Light" + }, + { + key: "dark", + name: "Dark" + }, + { + key: "system", + name: "System" + } + ] + }); +} + // src/footer.tsx var NextLink = ({ route, title, isRTL }) => { - return /* @__PURE__ */ React7.createElement(Link2, { + return /* @__PURE__ */ React14.createElement(Link2, { href: route - }, /* @__PURE__ */ React7.createElement("a", { - className: cn("text-lg font-medium p-4 -m-4 no-underline text-oldGray-600 hover:text-blue-600 flex items-center", { "ml-2": !isRTL, "mr-2": isRTL }), + }, /* @__PURE__ */ React14.createElement("a", { + className: cn2("text-lg font-medium p-4 -m-4 no-underline transition-colors text-gray-600 dark:text-gray-300 dark:hover:text-prime-500 hover:text-prime-500 flex items-center", { "ml-2": !isRTL, "mr-2": isRTL }), title - }, title, /* @__PURE__ */ React7.createElement(arrow_right_default, { - className: cn("transform inline flex-shrink-0", { + }, title, /* @__PURE__ */ React14.createElement(arrow_right_default, { + height: 24, + className: cn2("transform inline flex-shrink-0", { "rotate-180 mr-1": isRTL, "ml-1": !isRTL }) }))); }; var PrevLink = ({ route, title, isRTL }) => { - return /* @__PURE__ */ React7.createElement(Link2, { + return /* @__PURE__ */ React14.createElement(Link2, { href: route - }, /* @__PURE__ */ React7.createElement("a", { - className: cn("text-lg font-medium p-4 -m-4 no-underline text-oldGray-600 hover:text-blue-600 flex items-center", { "mr-2": !isRTL, "ml-2": isRTL }), + }, /* @__PURE__ */ React14.createElement("a", { + className: cn2("text-lg font-medium p-4 -m-4 no-underline transition-colors text-gray-600 dark:text-gray-300 dark:hover:text-prime-500 hover:text-prime-500 flex items-center", { "mr-2": !isRTL, "ml-2": isRTL }), title - }, /* @__PURE__ */ React7.createElement(arrow_right_default, { - className: cn("transform inline flex-shrink-0", { + }, /* @__PURE__ */ React14.createElement(arrow_right_default, { + height: 24, + className: cn2("transform inline flex-shrink-0", { "rotate-180 mr-1": !isRTL, "ml-1": isRTL }) }), title)); }; -var createEditUrl = (repository, filepath) => { - const repo = parseGitUrl(repository || ""); - if (!repo) - throw new Error("Invalid `docsRepositoryBase` URL!"); - switch (repo.type) { - case "github": - return `https://github.com/${repo.owner}/${repo.name}/blob/${repo.branch || "main"}/${repo.subdir || "pages"}${filepath}`; - case "gitlab": - return `https://gitlab.com/${repo.owner}/${repo.name}/-/blob/${repo.branch || "master"}/${repo.subdir || "pages"}${filepath}`; - } - return "#"; -}; -var EditPageLink = ({ - repository, - text, - filepath -}) => { - const url = createEditUrl(repository, filepath); - const { locale } = useRouter(); - return /* @__PURE__ */ React7.createElement("a", { - className: "text-sm", - href: url, - target: "_blank", - rel: "noreferrer" - }, text ? render_component_default(text, { - locale - }) : "Edit this page"); -}; var NavLinks = ({ flatDirectories, currentIndex, @@ -984,74 +740,102 @@ var NavLinks = ({ const config = useConfig(); let prev = flatDirectories[currentIndex - 1]; let next = flatDirectories[currentIndex + 1]; - return /* @__PURE__ */ React7.createElement("div", { - className: "flex flex-row items-center justify-between" - }, /* @__PURE__ */ React7.createElement("div", null, prev && config.prevLinks ? /* @__PURE__ */ React7.createElement(PrevLink, { + return /* @__PURE__ */ React14.createElement("div", { + className: "mt-16 mb-8 flex flex-row items-center justify-between" + }, /* @__PURE__ */ React14.createElement("div", null, prev && config.prevLinks ? /* @__PURE__ */ React14.createElement(PrevLink, { route: prev.route, title: prev.title, isRTL - }) : null), /* @__PURE__ */ React7.createElement("div", null, config.nextLinks && next ? /* @__PURE__ */ React7.createElement(NextLink, { + }) : null), /* @__PURE__ */ React14.createElement("div", null, config.nextLinks && next ? /* @__PURE__ */ React14.createElement(NextLink, { route: next.route, title: next.title, isRTL }) : null)); }; -var Footer = ({ - filepathWithName, - children -}) => { - const { locale } = useRouter(); +var Footer = ({ menu }) => { + const { locale } = useRouter2(); const config = useConfig(); - return /* @__PURE__ */ React7.createElement("footer", { - className: "mt-24" - }, children, /* @__PURE__ */ React7.createElement("hr", null), config.footer ? /* @__PURE__ */ React7.createElement("div", { - className: "mt-24 flex justify-between flex-col-reverse md:flex-row items-center md:items-end" - }, /* @__PURE__ */ React7.createElement("span", { - className: "text-oldGray-600" - }, render_component_default(config.footerText, { locale })), /* @__PURE__ */ React7.createElement("div", { + return /* @__PURE__ */ React14.createElement("footer", { + className: "bg-gray-100 dark:bg-neutral-900" + }, /* @__PURE__ */ React14.createElement("div", { + className: cn2("py-2 border-b dark:border-neutral-800", menu ? "" : "md:hidden") + }, /* @__PURE__ */ React14.createElement("div", { + className: "max-w-[90rem] mx-auto" + }, /* @__PURE__ */ React14.createElement("div", { + className: "inline-flex px-4" + }, config.i18n ? /* @__PURE__ */ React14.createElement("div", { + className: "flex-1 relative" + }, /* @__PURE__ */ React14.createElement(LocaleSwitch, { + options: config.i18n + })) : null, config.darkMode ? /* @__PURE__ */ React14.createElement("div", { + className: "grow-0 relative" + }, /* @__PURE__ */ React14.createElement(ThemeSwitch, { + lite: false + })) : null))), /* @__PURE__ */ React14.createElement("div", { + className: "max-w-[90rem] mx-auto pl-[max(env(safe-area-inset-left),1.5rem)] pr-[max(env(safe-area-inset-right),1.5rem)] py-12" + }, /* @__PURE__ */ React14.createElement("div", { + className: "flex justify-between flex-col-reverse md:flex-row items-center md:items-end" + }, /* @__PURE__ */ React14.createElement("span", { + className: "text-gray-600 dark:text-gray-400" + }, render_component_default(config.footerText, { locale })), /* @__PURE__ */ React14.createElement("div", { className: "mt-6" - }), config.footerEditLink ? /* @__PURE__ */ React7.createElement(EditPageLink, { - filepath: filepathWithName, - repository: config.docsRepositoryBase, - text: config.footerEditLink - }) : null) : null); + })))); }; var footer_default = Footer; // src/head.tsx -import React8 from "react"; +import React15 from "react"; import NextHead from "next/head"; +import { useTheme as useTheme2 } from "next-themes"; function Head({ title, locale, meta }) { const config = useConfig(); - return /* @__PURE__ */ React8.createElement(NextHead, null, config.font ? /* @__PURE__ */ React8.createElement("link", { + const { theme, systemTheme } = useTheme2(); + const renderedTheme = theme === "system" ? systemTheme : theme; + const [mounted, setMounted] = React15.useState(false); + React15.useEffect(() => setMounted(true), []); + return /* @__PURE__ */ React15.createElement(NextHead, null, config.font ? /* @__PURE__ */ React15.createElement("link", { rel: "stylesheet", href: "https://rsms.me/inter/inter.css" - }) : null, /* @__PURE__ */ React8.createElement("title", null, title, render_component_default(config.titleSuffix, { locale, config, title, meta })), config.font ? /* @__PURE__ */ React8.createElement("style", { + }) : null, /* @__PURE__ */ React15.createElement("title", null, title, render_component_default(config.titleSuffix, { locale, config, title, meta })), config.font ? /* @__PURE__ */ React15.createElement("style", { dangerouslySetInnerHTML: { __html: `html{font-family:Inter,sans-serif}@supports(font-variation-settings:normal){html{font-family:'Inter var',sans-serif}}` } - }) : null, render_component_default(config.head, { locale, config, title, meta }), config.unstable_faviconGlyph ? /* @__PURE__ */ React8.createElement("link", { + }) : null, render_component_default(config.head, { locale, config, title, meta }), config.unstable_faviconGlyph ? /* @__PURE__ */ React15.createElement("link", { rel: "icon", href: `data:image/svg+xml;utf8,${config.unstable_faviconGlyph}` - }) : null); + }) : null, !mounted ? /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement("meta", { + name: "theme-color", + content: "#ffffff", + media: "(prefers-color-scheme: light)" + }), /* @__PURE__ */ React15.createElement("meta", { + name: "theme-color", + content: "#111111", + media: "(prefers-color-scheme: dark)" + })) : /* @__PURE__ */ React15.createElement("meta", { + name: "theme-color", + content: renderedTheme === "dark" ? "#111111" : "#ffffff" + }), /* @__PURE__ */ React15.createElement("meta", { + name: "viewport", + content: "width=device-width, initial-scale=1.0, viewport-fit=cover" + })); } // src/navbar.tsx -import React15 from "react"; +import React20 from "react"; import cn5 from "classnames"; -import Link6 from "next/link"; +import Link5 from "next/link"; import { useRouter as useRouter5 } from "next/router"; // src/icons/discord.tsx -import React9 from "react"; +import React16 from "react"; var DiscordIcon = ({ height = 40 }) => { - return /* @__PURE__ */ React9.createElement("svg", { + return /* @__PURE__ */ React16.createElement("svg", { height, fill: "none", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 146 146", "aria-hidden": "true" - }, /* @__PURE__ */ React9.createElement("title", null, "Discord"), /* @__PURE__ */ React9.createElement("path", { + }, /* @__PURE__ */ React16.createElement("title", null, "Discord"), /* @__PURE__ */ React16.createElement("path", { d: "M107.75 125.001s-4.5-5.375-8.25-10.125c16.375-4.625 22.625-14.875 22.625-14.875-5.125 3.375-10 5.75-14.375 7.375-6.25 2.625-12.25 4.375-18.125 5.375-12 2.25-23 1.625-32.375-.125-7.125-1.375-13.25-3.375-18.375-5.375-2.875-1.125-6-2.5-9.125-4.25-.375-.25-.75-.375-1.125-.625-.25-.125-.375-.25-.5-.375-2.25-1.25-3.5-2.125-3.5-2.125s6 10 21.875 14.75c-3.75 4.75-8.375 10.375-8.375 10.375-27.625-.875-38.125-19-38.125-19 0-40.25 18-72.875 18-72.875 18-13.5 35.125-13.125 35.125-13.125l1.25 1.5c-22.5 6.5-32.875 16.375-32.875 16.375s2.75-1.5 7.375-3.625c13.375-5.875 24-7.5 28.375-7.875.75-.125 1.375-.25 2.125-.25 7.625-1 16.25-1.25 25.25-.25 11.875 1.375 24.625 4.875 37.625 12 0 0-9.875-9.375-31.125-15.875l1.75-2S110 19.626 128 33.126c0 0 18 32.625 18 72.875 0 0-10.625 18.125-38.25 19zM49.625 66.626c-7.125 0-12.75 6.25-12.75 13.875s5.75 13.875 12.75 13.875c7.125 0 12.75-6.25 12.75-13.875.125-7.625-5.625-13.875-12.75-13.875zm45.625 0c-7.125 0-12.75 6.25-12.75 13.875s5.75 13.875 12.75 13.875c7.125 0 12.75-6.25 12.75-13.875s-5.625-13.875-12.75-13.875z", fillRule: "nonzero", fill: "currentColor" @@ -1060,14 +844,14 @@ var DiscordIcon = ({ height = 40 }) => { var discord_default = DiscordIcon; // src/icons/github.tsx -import React10 from "react"; +import React17 from "react"; var Github = ({ height = 40 }) => { - return /* @__PURE__ */ React10.createElement("svg", { + return /* @__PURE__ */ React17.createElement("svg", { height, viewBox: "2 2 20 20", fill: "none", "aria-hidden": "true" - }, /* @__PURE__ */ React10.createElement("path", { + }, /* @__PURE__ */ React17.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z", @@ -1076,130 +860,180 @@ var Github = ({ height = 40 }) => { }; var github_default = Github; -// src/locale-switch.tsx -import React11 from "react"; -import cn2 from "classnames"; -import Link3 from "next/link"; -import { useRouter as useRouter2 } from "next/router"; - -// src/utils/use-mounted.ts -import { useEffect as useEffect2, useState as useState2 } from "react"; -var useMounted = () => { - const [mounted, setMounted] = useState2(false); - useEffect2(() => { - setMounted(true); - }, []); - return mounted; -}; -var use_mounted_default = useMounted; - -// src/locale-switch.tsx -function LocaleSwitch({ options, isRTL }) { - const { locale, asPath } = useRouter2(); - const mounted = use_mounted_default(); - return /* @__PURE__ */ React11.createElement("details", { - className: "locale-switch relative" - }, /* @__PURE__ */ React11.createElement("summary", { - className: "text-current p-2 cursor-pointer outline-none", - tabIndex: 0 - }, /* @__PURE__ */ React11.createElement("svg", { - fill: "none", - viewBox: "0 0 24 24", - width: "24", - height: "24", - stroke: "currentColor", - "aria-hidden": "true" - }, /* @__PURE__ */ React11.createElement("path", { - strokeLinecap: "round", - strokeLinejoin: "round", - strokeWidth: 2, - d: "M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129" - })), /* @__PURE__ */ React11.createElement("span", { - className: "sr-only" - }, "Languages")), mounted ? /* @__PURE__ */ React11.createElement("ul", { - className: cn2("locale-dropdown absolute block bg-white dark:bg-dark border dark:border-oldGray-700 py-1 rounded shadow-lg", { "right-0": !isRTL, "left-0": isRTL }) - }, Array.isArray(options) && options.map((l) => /* @__PURE__ */ React11.createElement("li", { - key: l.locale - }, /* @__PURE__ */ React11.createElement(Link3, { - href: asPath, - locale: l.locale - }, /* @__PURE__ */ React11.createElement("a", { - className: cn2("block no-underline text-current py-2 px-4 hover:bg-oldGray-200 dark:hover:bg-oldGray-800 whitespace-nowrap", { - "font-semibold": locale === l.locale, - "bg-oldGray-100 dark:bg-oldGray-900": locale === l.locale - }) - }, l.text))))) : null); -} - -// src/search.tsx -import React12, { +// src/flexsearch.js +import React18, { + Fragment, + memo, useCallback, - useEffect as useEffect3, - useMemo as useMemo2, + useEffect as useEffect2, useRef as useRef2, - useState as useState3 + useState as useState2 } from "react"; +import { Transition as Transition2 } from "@headlessui/react"; import cn3 from "classnames"; -import { matchSorter } from "match-sorter"; -import Link4 from "next/link"; -import { useRouter as useRouter3 } from "next/router"; -var Item = ({ title, active, href, onMouseOver, search }) => { - const highlight = title.toLowerCase().indexOf(search.toLowerCase()); - return /* @__PURE__ */ React12.createElement(Link4, { +import FlexSearch from "flexsearch"; +import Link3 from "next/link"; +import Router, { useRouter as useRouter3 } from "next/router"; +var Item = ({ page, title, active, href, onMouseOver, excerpt }) => { + return /* @__PURE__ */ React18.createElement(Link3, { href - }, /* @__PURE__ */ React12.createElement("a", { + }, /* @__PURE__ */ React18.createElement("a", { className: "block no-underline", onMouseOver - }, /* @__PURE__ */ React12.createElement("li", { - className: cn3("p-2", { active }) - }, title.substring(0, highlight), /* @__PURE__ */ React12.createElement("span", { - className: "highlight" - }, title.substring(highlight, highlight + search.length)), title.substring(highlight + search.length)))); + }, /* @__PURE__ */ React18.createElement("li", { + className: cn3({ active }) + }, /* @__PURE__ */ React18.createElement("div", { + className: "font-bold uppercase text-xs text-gray-400" + }, page), /* @__PURE__ */ React18.createElement("div", { + className: "font-semibold dark:text-white" + }, title), excerpt ? /* @__PURE__ */ React18.createElement("div", { + className: "excerpt mt-1 text-gray-600 text-sm leading-[1.35rem] dark:text-gray-400" + }, excerpt) : null))); }; -var UP = true; -var DOWN = false; -var Search = ({ directories = [] }) => { +var MemoedStringWithMatchHighlights = memo(function StringWithMatchHighlights({ content, search }) { + const splittedText = content.split(""); + const escappedSearch = search.trim().replace(/[|\\{}()[\]^$+*?.]/g, "\\$&"); + const regexp = RegExp("(" + escappedSearch.split(" ").join("|") + ")", "ig"); + let match; + let id = 0; + let index = 0; + const res = []; + while ((match = regexp.exec(content)) !== null) { + res.push(/* @__PURE__ */ React18.createElement(Fragment, { + key: id++ + }, splittedText.splice(0, match.index - index).join(""))); + res.push(/* @__PURE__ */ React18.createElement("span", { + className: "highlight", + key: id++ + }, splittedText.splice(0, regexp.lastIndex - match.index).join(""))); + index = regexp.lastIndex; + } + res.push(/* @__PURE__ */ React18.createElement(Fragment, { + key: id++ + }, splittedText.join(""))); + return res; +}); +var indexes = {}; +function Search() { const router = useRouter3(); - const [show, setShow] = useState3(false); - const [search, setSearch] = useState3(""); - const [active, setActive] = useState3(0); + const [show, setShow] = useState2(false); + const [search, setSearch] = useState2(""); + const [active, setActive] = useState2(0); + const [results, setResults] = useState2([]); const input = useRef2(null); - const results = useMemo2(() => { + useEffect2(() => { if (!search) - return []; - return matchSorter(directories, search, { keys: ["title"] }); + return; + const localeCode = Router.locale || "default"; + const index = indexes[localeCode]; + if (!index) + return; + const results2 = [].concat(...index.search(search, { enrich: true, limit: 10, suggest: true }).map((r) => r.result)).map((item) => { + return { + route: item.doc.url, + page: item.doc.page, + title: /* @__PURE__ */ React18.createElement(MemoedStringWithMatchHighlights, { + content: item.doc.title, + search + }), + excerpt: item.doc.title !== item.doc.content ? /* @__PURE__ */ React18.createElement(MemoedStringWithMatchHighlights, { + content: item.doc.content.replace(/ _NEXTRA_ .*$/, ""), + search + }) : null + }; + }); + setResults(results2); }, [search]); - const moveActiveItem = (up) => { - const position = active + (up ? -1 : 1); - const { length } = results; - const next = (position + length) % length; - setActive(next); - }; const handleKeyDown = useCallback((e) => { - const { key, ctrlKey } = e; - if (ctrlKey && key === "n" || key === "ArrowDown") { - e.preventDefault(); - moveActiveItem(DOWN); - } - if (ctrlKey && key === "p" || key === "ArrowUp") { - e.preventDefault(); - moveActiveItem(UP); - } - if (key === "Enter" && results && results[active]) { - router.push(results[active].route); + switch (e.key) { + case "ArrowDown": { + e.preventDefault(); + if (active + 1 < results.length) { + setActive(active + 1); + const activeElement = document.querySelector(`.nextra-flexsearch ul > :nth-child(${active + 2})`); + if (activeElement && activeElement.scrollIntoViewIfNeeded) { + activeElement.scrollIntoViewIfNeeded(); + } + } + break; + } + case "ArrowUp": { + e.preventDefault(); + if (active - 1 >= 0) { + setActive(active - 1); + const activeElement = document.querySelector(`.nextra-flexsearch ul > :nth-child(${active})`); + if (activeElement && activeElement.scrollIntoViewIfNeeded) { + activeElement.scrollIntoViewIfNeeded(); + } + } + break; + } + case "Enter": { + router.push(results[active].route); + break; + } + default: + break; } }, [active, results, router]); - useEffect3(() => { + const load = () => __async(this, null, function* () { + const localeCode = Router.locale || "default"; + if (!indexes[localeCode]) { + const data = yield (yield fetch(`/.nextra/data-${localeCode}.json`)).json(); + const index = new FlexSearch.Document({ + cache: 100, + tokenize: "full", + document: { + id: "id", + index: "content", + store: ["title", "content", "url", "page"] + }, + context: { + resolution: 9, + depth: 1, + bidirectional: true + }, + filter: ["_NEXTRA_"] + }); + for (let route in data) { + for (let heading in data[route].data) { + const [hash, text] = heading.split("#"); + const title = text || data[route].title; + const url = route + (hash ? "#" + hash : ""); + const paragraphs = (data[route].data[heading] || "").split("\n").filter(Boolean); + if (!paragraphs.length) { + index.add({ + id: url, + url, + title, + content: title, + page: data[route].title + }); + } + for (let i = 0; i < paragraphs.length; i++) { + index.add({ + id: url + "_" + i, + url, + title, + content: paragraphs[i] + (i === 0 ? " _NEXTRA_ " + title : ""), + page: data[route].title + }); + } + } + } + indexes[localeCode] = index; + } + }); + useEffect2(() => { setActive(0); }, [search]); - useEffect3(() => { + useEffect2(() => { const inputs = ["input", "select", "button", "textarea"]; const down = (e) => { - var _a; if (document.activeElement && inputs.indexOf(document.activeElement.tagName.toLowerCase()) === -1) { if (e.key === "/") { e.preventDefault(); - (_a = input.current) == null ? void 0 : _a.focus(); + input.current.focus(); } else if (e.key === "Escape") { setShow(false); } @@ -1208,175 +1042,118 @@ var Search = ({ directories = [] }) => { window.addEventListener("keydown", down); return () => window.removeEventListener("keydown", down); }, []); - const renderList = show && results.length > 0; - return /* @__PURE__ */ React12.createElement("div", { - className: "relative w-full nextra-search md:w-64" - }, renderList && /* @__PURE__ */ React12.createElement("div", { + const renderList = show && !!search; + return /* @__PURE__ */ React18.createElement("div", { + className: "relative w-full nextra-search nextra-flexsearch md:w-64" + }, renderList && /* @__PURE__ */ React18.createElement("div", { className: "z-10 search-overlay", onClick: () => setShow(false) - }), /* @__PURE__ */ React12.createElement("div", { + }), /* @__PURE__ */ React18.createElement("div", { className: "relative flex items-center" - }, /* @__PURE__ */ React12.createElement("input", { + }, /* @__PURE__ */ React18.createElement("input", { onChange: (e) => { setSearch(e.target.value); setShow(true); }, - className: "block w-full px-3 py-2 leading-tight border rounded appearance-none focus:outline-none focus:ring", + className: "block w-full px-3 py-2 leading-tight rounded-lg appearance-none focus:outline-none focus:ring-1 focus:ring-gray-200 focus:bg-white hover:bg-opacity-5 transition-colors dark:focus:bg-dark dark:focus:ring-gray-100 dark:focus:ring-opacity-20", type: "search", placeholder: "Search documentation...", onKeyDown: handleKeyDown, - onFocus: () => setShow(true), - onBlur: () => setShow(false), + onFocus: () => { + load(); + setShow(true); + }, ref: input, spellCheck: false - }), show ? null : /* @__PURE__ */ React12.createElement("div", { - className: "hidden sm:flex absolute inset-y-0 right-0 py-1.5 pr-1.5" - }, /* @__PURE__ */ React12.createElement("kbd", { - className: "inline-flex items-center px-2 font-sans text-sm font-medium text-oldGray-400 dark:text-oldGray-800 dark:border-oldGray-800 border rounded" - }, "/"))), renderList && /* @__PURE__ */ React12.createElement("ul", { - className: "absolute left-0 z-20 w-full p-0 m-0 mt-1 list-none border divide-y rounded shadow-md md:right-0 top-100 md:w-auto" - }, results.map((res, i) => { - return /* @__PURE__ */ React12.createElement(Item, { + }), renderList ? null : /* @__PURE__ */ React18.createElement("div", { + className: "hidden sm:flex absolute inset-y-0 right-0 py-1.5 pr-1.5 select-none pointer-events-none" + }, /* @__PURE__ */ React18.createElement("kbd", { + className: "inline-flex items-center px-2 font-mono text-sm font-medium bg-white dark:bg-dark dark:bg-opacity-50 text-gray-400 dark:text-gray-500 dark:border-gray-100 dark:border-opacity-20 border rounded" + }, "/"))), /* @__PURE__ */ React18.createElement(Transition2, { + show: renderList, + as: React18.Fragment, + leave: "transition duration-100", + leaveFrom: "opacity-100", + leaveTo: "opacity-0" + }, /* @__PURE__ */ React18.createElement("ul", { + className: "absolute z-20 p-0 m-0 mt-2 top-full" + }, results.length === 0 ? /* @__PURE__ */ React18.createElement("span", { + className: "block p-4 text-center text-gray-400 text-sm select-none" + }, "No results found.") : results.map((res, i) => { + return /* @__PURE__ */ React18.createElement(Item, { key: `search-item-${i}`, + page: res.page, title: res.title, href: res.route, + excerpt: res.excerpt, active: i === active, - search, onMouseOver: () => setActive(i) }); - }))); -}; -var search_default = Search; + })))); +} -// src/stork-search.tsx -import React13, { - Fragment, +// src/search.tsx +import React19, { useCallback as useCallback2, - useEffect as useEffect4, - useMemo as useMemo3, + useEffect as useEffect3, + useMemo, useRef as useRef3, - useState as useState4 + useState as useState3 } from "react"; import cn4 from "classnames"; -import GraphemeSplitter from "grapheme-splitter"; -import Link5 from "next/link"; -import Router, { useRouter as useRouter4 } from "next/router"; -var splitter = new GraphemeSplitter(); -var TextWithHighlights = React13.memo(({ content, ranges }) => { - const splittedText = content ? splitter.splitGraphemes(content) : []; - const res = []; - let id = 0, index = 0; - for (const range of ranges) { - res.push(/* @__PURE__ */ React13.createElement(Fragment, { - key: id++ - }, splittedText.splice(0, range.beginning - index).join(""))); - res.push(/* @__PURE__ */ React13.createElement("span", { - className: "highlight", - key: id++ - }, splittedText.splice(0, range.end - range.beginning).join(""))); - index = range.end; - } - res.push(/* @__PURE__ */ React13.createElement(Fragment, { - key: id++ - }, splittedText.join(""))); - return res; -}); -var Item2 = ({ title, active, href, onMouseOver, excerpt }) => { - return /* @__PURE__ */ React13.createElement(Link5, { +import matchSorter from "match-sorter"; +import Link4 from "next/link"; +import { useRouter as useRouter4 } from "next/router"; +var Item2 = ({ title, active, href, onMouseOver, search }) => { + const highlight = title.toLowerCase().indexOf(search.toLowerCase()); + return /* @__PURE__ */ React19.createElement(Link4, { href - }, /* @__PURE__ */ React13.createElement("a", { + }, /* @__PURE__ */ React19.createElement("a", { className: "block no-underline", onMouseOver - }, /* @__PURE__ */ React13.createElement("li", { - className: cn4("py-2 px-4", { active }) - }, /* @__PURE__ */ React13.createElement("span", { - className: "font-semibold" - }, title), excerpt ? /* @__PURE__ */ React13.createElement("div", { - className: "text-oldGray-600" - }, /* @__PURE__ */ React13.createElement(TextWithHighlights, { - content: excerpt.text, - ranges: excerpt.highlight_ranges - })) : null))); + }, /* @__PURE__ */ React19.createElement("li", { + className: cn4("p-2", { active }) + }, title.substring(0, highlight), /* @__PURE__ */ React19.createElement("span", { + className: "highlight" + }, title.substring(highlight, highlight + search.length)), title.substring(highlight + search.length)))); }; -var stork = {}; -function Search2() { +var UP = true; +var DOWN = false; +var Search2 = ({ directories = [] }) => { const router = useRouter4(); - const [show, setShow] = useState4(false); - const [search, setSearch] = useState4(""); - const [active, setActive] = useState4(0); - const setStork = useState4({})[1]; + const [show, setShow] = useState3(false); + const [search, setSearch] = useState3(""); + const [active, setActive] = useState3(0); const input = useRef3(null); - const results = useMemo3(() => { + const results = useMemo(() => { if (!search) return []; - const localeCode = Router.locale || "default"; - if (!stork[localeCode]) - return []; - try { - const json = stork[localeCode].wasm_search(`index-${localeCode}`, search); - const obj = JSON.parse(json); - if (!obj.results) - return []; - return obj.results.slice(0, 20).map((result) => { - return { - title: result.entry.title, - route: result.entry.url, - excerpt: result.excerpts[0] - }; - }); - } catch (err) { - console.error(err); - return []; - } - }, [search]); + return matchSorter(directories, search, { keys: ["title"] }); + }, [directories, search]); + const moveActiveItem = (up) => { + const position = active + (up ? -1 : 1); + const { length } = results; + const next = (position + length) % length; + setActive(next); + }; const handleKeyDown = useCallback2((e) => { - switch (e.key) { - case "ArrowDown": { - e.preventDefault(); - if (active + 1 < results.length) { - setActive(active + 1); - const activeElement = document.querySelector(`.nextra-stork ul > :nth-child(${active + 2})`); - if (activeElement && activeElement.scrollIntoViewIfNeeded) { - activeElement.scrollIntoViewIfNeeded(); - } - } - break; - } - case "ArrowUp": { - e.preventDefault(); - if (active - 1 >= 0) { - setActive(active - 1); - const activeElement = document.querySelector(`.nextra-stork ul > :nth-child(${active})`); - if (activeElement && activeElement.scrollIntoViewIfNeeded) { - activeElement.scrollIntoViewIfNeeded(); - } - } - break; - } - case "Enter": { - router.push(results[active].route); - break; - } - default: - break; + const { key, ctrlKey } = e; + if (ctrlKey && key === "n" || key === "ArrowDown") { + e.preventDefault(); + moveActiveItem(DOWN); } - }, [active, results, router]); - const load2 = () => __async(this, null, function* () { - const localeCode = Router.locale || "default"; - if (!stork[localeCode]) { - stork[localeCode] = yield Promise.resolve().then(() => (init_wasm_loader(), wasm_loader_exports)); - setStork({}); - const init2 = stork[localeCode].init("/stork.wasm"); - const res = yield fetch(`/index-${localeCode}.st`); - const buf = yield res.arrayBuffer(); - yield init2; - stork[localeCode].wasm_register_index(`index-${localeCode}`, new Uint8Array(buf)); + if (ctrlKey && key === "p" || key === "ArrowUp") { + e.preventDefault(); + moveActiveItem(UP); } - }); - useEffect4(() => { + if (key === "Enter" && results && results[active]) { + router.push(results[active].route); + } + }, [active, results, router]); + useEffect3(() => { setActive(0); }, [search]); - useEffect4(() => { + useEffect3(() => { const inputs = ["input", "select", "button", "textarea"]; const down = (e) => { var _a; @@ -1393,120 +1170,63 @@ function Search2() { return () => window.removeEventListener("keydown", down); }, []); const renderList = show && results.length > 0; - return /* @__PURE__ */ React13.createElement("div", { - className: "relative w-full nextra-search nextra-stork md:w-64" - }, renderList && /* @__PURE__ */ React13.createElement("div", { + return /* @__PURE__ */ React19.createElement("div", { + className: "relative w-full nextra-search md:w-64" + }, renderList && /* @__PURE__ */ React19.createElement("div", { className: "z-10 search-overlay", onClick: () => setShow(false) - }), /* @__PURE__ */ React13.createElement("div", { + }), /* @__PURE__ */ React19.createElement("div", { className: "relative flex items-center" - }, /* @__PURE__ */ React13.createElement("input", { + }, /* @__PURE__ */ React19.createElement("input", { onChange: (e) => { setSearch(e.target.value); setShow(true); }, - className: "block w-full px-3 py-2 leading-tight border rounded appearance-none focus:outline-none focus:ring", + className: "block w-full px-3 py-2 leading-tight bg-black bg-opacity-[.03] rounded-lg appearance-none focus:outline-none focus:ring hover:bg-opacity-5 transition-colors", type: "search", placeholder: "Search documentation...", onKeyDown: handleKeyDown, - onFocus: () => { - load2(); - setShow(true); - }, + onFocus: () => setShow(true), onBlur: () => setShow(false), ref: input, spellCheck: false - }), show ? null : /* @__PURE__ */ React13.createElement("div", { - className: "hidden sm:flex absolute inset-y-0 right-0 py-1.5 pr-1.5" - }, /* @__PURE__ */ React13.createElement("kbd", { - className: "inline-flex items-center px-2 font-sans text-sm font-medium text-oldGray-400 dark:text-oldGray-800 dark:border-oldGray-800 border rounded" - }, "/"))), renderList && /* @__PURE__ */ React13.createElement("ul", { - className: "absolute z-20 p-0 m-0 mt-1 divide-y top-full" + }), show ? null : /* @__PURE__ */ React19.createElement("div", { + className: "hidden sm:flex absolute inset-y-0 right-0 py-1.5 pr-1.5 select-none pointer-events-none" + }, /* @__PURE__ */ React19.createElement("kbd", { + className: "inline-flex items-center px-2 font-mono text-sm font-medium bg-white text-gray-400 dark:text-gray-800 dark:border-gray-400 border rounded" + }, "/"))), renderList && /* @__PURE__ */ React19.createElement("ul", { + className: "absolute left-0 z-20 w-full p-0 m-0 mt-1 list-none border divide-y rounded shadow-md md:right-0 top-100 md:w-auto" }, results.map((res, i) => { - return /* @__PURE__ */ React13.createElement(Item2, { + return /* @__PURE__ */ React19.createElement(Item2, { key: `search-item-${i}`, title: res.title, href: res.route, - excerpt: res.excerpt, active: i === active, + search, onMouseOver: () => setActive(i) }); }))); -} - -// src/theme-switch.tsx -import React14 from "react"; -import { useTheme } from "next-themes"; -function ThemeSwitch() { - const { theme, setTheme } = useTheme(); - const mounted = use_mounted_default(); - const toggleTheme = () => { - setTheme(theme === "dark" ? "light" : "dark"); - }; - return /* @__PURE__ */ React14.createElement("button", { - className: "text-current p-2 cursor-pointer focus:ring outline-none", - onClick: toggleTheme, - "aria-label": "Toggle theme", - onKeyDown: (e) => { - if (e.key === "Enter") - toggleTheme(); - } - }, mounted && theme === "dark" ? /* @__PURE__ */ React14.createElement("svg", { - fill: "none", - viewBox: "0 0 24 24", - width: "24", - height: "24", - stroke: "currentColor", - "aria-hidden": "true" - }, /* @__PURE__ */ React14.createElement("path", { - strokeLinecap: "round", - strokeLinejoin: "round", - strokeWidth: 2, - d: "M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" - })) : mounted && theme === "light" ? /* @__PURE__ */ React14.createElement("svg", { - fill: "none", - viewBox: "0 0 24 24", - width: "24", - height: "24", - stroke: "currentColor", - "aria-hidden": "true" - }, /* @__PURE__ */ React14.createElement("path", { - strokeLinecap: "round", - strokeLinejoin: "round", - strokeWidth: 2, - d: "M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" - })) : /* @__PURE__ */ React14.createElement("svg", { - key: "undefined", - viewBox: "0 0 24 24", - width: "24", - height: "24", - stroke: "currentColor", - strokeWidth: "1.5", - strokeLinecap: "round", - strokeLinejoin: "round", - fill: "none", - shapeRendering: "geometricPrecision", - "aria-hidden": "true" - })); -} +}; +var search_default = Search2; // src/navbar.tsx function Navbar({ - isRTL, flatDirectories, flatPageDirectories }) { const config = useConfig(); const { locale, asPath } = useRouter5(); - const activeRoute = getFSRoute(asPath, locale).split("#")[0]; + const activeRoute = getFSRoute(asPath, locale); const { menu, setMenu } = useMenuContext(); - return /* @__PURE__ */ React15.createElement("nav", { - className: "flex items-center bg-white z-20 fixed top-0 left-0 right-0 h-16 border-b border-oldGray-200 px-6 dark:bg-dark dark:border-oldGray-900 bg-opacity-[.97] dark:bg-opacity-100" - }, /* @__PURE__ */ React15.createElement("div", { + return /* @__PURE__ */ React20.createElement("div", { + className: "nextra-nav-container z-20 sticky top-0 before:bg-white before:bg-opacity-[.85] before:backdrop-blur-md before:absolute before:block before:w-full before:h-full before:z-[-1] dark:before:bg-dark dark:before:bg-opacity-80 dark:before:border-b dark:before:border-white dark:before:border-opacity-10" + }, /* @__PURE__ */ React20.createElement("nav", { + className: "flex max-w-[90rem] mx-auto items-center left-0 right-0 h-16 pl-[max(env(safe-area-inset-left),1.5rem)] pr-[max(env(safe-area-inset-right),1.5rem)]" + }, /* @__PURE__ */ React20.createElement("div", { className: "w-full flex items-center mr-2" - }, /* @__PURE__ */ React15.createElement(Link6, { + }, /* @__PURE__ */ React20.createElement(Link5, { href: "/" - }, /* @__PURE__ */ React15.createElement("a", { + }, /* @__PURE__ */ React20.createElement("a", { className: "no-underline text-current inline-flex items-center hover:opacity-75" }, render_component_default(config.logo, { locale })))), flatPageDirectories ? flatPageDirectories.map((page) => { var _a; @@ -1516,73 +1236,67 @@ function Navbar({ if (page.children) { href = (_a = page.firstChildRoute) != null ? _a : href; } - return /* @__PURE__ */ React15.createElement(Link6, { + const isActive = page.route === activeRoute || activeRoute.startsWith(page.route + "/"); + return /* @__PURE__ */ React20.createElement(Link5, { href, key: page.route - }, /* @__PURE__ */ React15.createElement("a", { - className: cn5("no-underline whitespace-nowrap mr-4 hidden md:inline-block", page.route === activeRoute || activeRoute.startsWith(page.route + "/") ? "text-current" : "text-oldGray-500") + }, /* @__PURE__ */ React20.createElement("a", { + className: cn5("no-underline whitespace-nowrap mr-4 hidden md:inline-block", isActive ? "text-current" : "text-gray-500"), + "aria-selected": isActive }, page.title)); - }) : null, /* @__PURE__ */ React15.createElement("div", { + }) : null, /* @__PURE__ */ React20.createElement("div", { className: "flex-1" - }, /* @__PURE__ */ React15.createElement("div", { + }, /* @__PURE__ */ React20.createElement("div", { className: "hidden md:inline-block mr-2" - }, config.customSearch || (config.search ? config.unstable_stork ? /* @__PURE__ */ React15.createElement(Search2, null) : /* @__PURE__ */ React15.createElement(search_default, { + }, config.customSearch || (config.search ? config.unstable_flexsearch ? /* @__PURE__ */ React20.createElement(Search, null) : /* @__PURE__ */ React20.createElement(search_default, { directories: flatDirectories - }) : null))), config.darkMode ? /* @__PURE__ */ React15.createElement(ThemeSwitch, null) : null, config.i18n ? /* @__PURE__ */ React15.createElement(LocaleSwitch, { - options: config.i18n, - isRTL - }) : null, config.projectLink || config.github ? /* @__PURE__ */ React15.createElement("a", { + }) : null))), config.projectLink || config.github ? /* @__PURE__ */ React20.createElement("a", { className: "text-current p-2", href: config.projectLink || config.github, target: "_blank", rel: "noreferrer" - }, config.projectLinkIcon ? render_component_default(config.projectLinkIcon, { locale }) : /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(github_default, { + }, config.projectLinkIcon ? render_component_default(config.projectLinkIcon, { locale }) : /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement(github_default, { height: 24 - }), /* @__PURE__ */ React15.createElement("span", { + }), /* @__PURE__ */ React20.createElement("span", { className: "sr-only" - }, "GitHub"))) : null, config.projectChatLink ? /* @__PURE__ */ React15.createElement("a", { + }, "GitHub"))) : null, config.projectChatLink ? /* @__PURE__ */ React20.createElement("a", { className: "text-current p-2", href: config.projectChatLink, target: "_blank", rel: "noreferrer" - }, config.projectChatLinkIcon ? render_component_default(config.projectChatLinkIcon, { locale }) : /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(discord_default, { + }, config.projectChatLinkIcon ? render_component_default(config.projectChatLinkIcon, { locale }) : /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement(discord_default, { height: 24 - }), /* @__PURE__ */ React15.createElement("span", { + }), /* @__PURE__ */ React20.createElement("span", { className: "sr-only" - }, "Discord"))) : null, /* @__PURE__ */ React15.createElement("button", { + }, "Discord"))) : null, /* @__PURE__ */ React20.createElement("button", { className: "block md:hidden p-2", onClick: () => setMenu(!menu) - }, /* @__PURE__ */ React15.createElement("svg", { + }, /* @__PURE__ */ React20.createElement("svg", { fill: "none", width: "24", height: "24", viewBox: "0 0 24 24", stroke: "currentColor" - }, /* @__PURE__ */ React15.createElement("path", { + }, /* @__PURE__ */ React20.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" - }))), /* @__PURE__ */ React15.createElement("div", { + }))), /* @__PURE__ */ React20.createElement("div", { className: "-mr-2" - })); + }))); } // src/sidebar.tsx -import React16, { useEffect as useEffect5, useMemo as useMemo4, useState as useState5 } from "react"; +import React21, { useEffect as useEffect4, useMemo as useMemo2, useState as useState4 } from "react"; import cn6 from "classnames"; import Slugger2 from "github-slugger"; -import Link7 from "next/link"; +import Link6 from "next/link"; import { useRouter as useRouter6 } from "next/router"; -// src/utils/getHeadingText.ts +// src/utils/get-heading-text.ts function getHeadingText(heading) { - if (Array.isArray(heading.children) && heading.children.length === 1) { - const content = heading.children[0]; - if (content.type === "text") - return content.value; - } - return ""; + return heading.value || ""; } // src/sidebar.tsx @@ -1595,26 +1309,31 @@ function Folder({ item, anchors }) { const active = route === item.route + "/" || route + "/" === item.route + "/"; const { defaultMenuCollapsed } = useMenuContext(); const open = (_a = TreeState[item.route]) != null ? _a : !defaultMenuCollapsed; - const [_, render] = useState5(false); - useEffect5(() => { + const [_, render] = useState4(false); + useEffect4(() => { if (active) { TreeState[item.route] = true; } - }, [active]); - return /* @__PURE__ */ React16.createElement("li", { + }, [active, item.route]); + return /* @__PURE__ */ React21.createElement("li", { className: open ? "active" : "" - }, /* @__PURE__ */ React16.createElement("button", { + }, /* @__PURE__ */ React21.createElement("button", { onClick: () => { if (active) return; TreeState[item.route] = !open; render((x) => !x); } - }, item.title), /* @__PURE__ */ React16.createElement("div", { + }, /* @__PURE__ */ React21.createElement("span", { + className: "flex items-center justify-between gap-2" + }, item.title, /* @__PURE__ */ React21.createElement(arrow_right_default, { + height: "1em", + className: cn6(open ? "rotate-90" : "", "transition-transform") + }))), /* @__PURE__ */ React21.createElement("div", { style: { display: open ? "initial" : "none" } - }, Array.isArray(item.children) && /* @__PURE__ */ React16.createElement(Menu, { + }, Array.isArray(item.children) && /* @__PURE__ */ React21.createElement(Menu2, { directories: item.children, base: item.route, anchors @@ -1639,49 +1358,49 @@ function File({ item, anchors }) { } return { text, slug }; }); - return /* @__PURE__ */ React16.createElement("li", { + return /* @__PURE__ */ React21.createElement("li", { className: active ? "active" : "" - }, /* @__PURE__ */ React16.createElement(Link7, { + }, /* @__PURE__ */ React21.createElement(Link6, { href: item.route - }, /* @__PURE__ */ React16.createElement("a", null, title)), /* @__PURE__ */ React16.createElement("ul", null, anchors.map((_, i) => { + }, /* @__PURE__ */ React21.createElement("a", null, title)), /* @__PURE__ */ React21.createElement("ul", null, anchors.map((_, i) => { const { slug, text } = anchorInfo[i]; const isActive = i === activeIndex; - return /* @__PURE__ */ React16.createElement("li", { + return /* @__PURE__ */ React21.createElement("li", { key: `a-${slug}` - }, /* @__PURE__ */ React16.createElement("a", { + }, /* @__PURE__ */ React21.createElement("a", { href: "#" + slug, onClick: () => setMenu(false), className: isActive ? "active-anchor" : "" - }, /* @__PURE__ */ React16.createElement("span", { + }, /* @__PURE__ */ React21.createElement("span", { className: "flex text-sm" - }, /* @__PURE__ */ React16.createElement("span", { + }, /* @__PURE__ */ React21.createElement("span", { className: "opacity-25" - }, "#"), /* @__PURE__ */ React16.createElement("span", { + }, "#"), /* @__PURE__ */ React21.createElement("span", { className: "mr-2" - }), /* @__PURE__ */ React16.createElement("span", { + }), /* @__PURE__ */ React21.createElement("span", { className: "inline-block" }, text)))); }))); } } - return /* @__PURE__ */ React16.createElement("li", { + return /* @__PURE__ */ React21.createElement("li", { className: active ? "active" : "" - }, /* @__PURE__ */ React16.createElement(Link7, { + }, /* @__PURE__ */ React21.createElement(Link6, { href: item.route - }, /* @__PURE__ */ React16.createElement("a", { + }, /* @__PURE__ */ React21.createElement("a", { onClick: () => setMenu(false) }, title))); } -function Menu({ directories, anchors }) { - return /* @__PURE__ */ React16.createElement("ul", null, directories.map((item) => { +function Menu2({ directories, anchors }) { + return /* @__PURE__ */ React21.createElement("ul", null, directories.map((item) => { if (item.children) { - return /* @__PURE__ */ React16.createElement(Folder, { + return /* @__PURE__ */ React21.createElement(Folder, { key: item.name, item, anchors }); } - return /* @__PURE__ */ React16.createElement(File, { + return /* @__PURE__ */ React21.createElement(File, { key: item.name, item, anchors @@ -1693,48 +1412,141 @@ function Sidebar({ directories, flatDirectories, fullDirectories, - mdShow = true, + asPopover = false, headings = emptyHeading }) { const config = useConfig(); - const anchors = useMemo4(() => headings.filter((v) => v.children && v.depth === 2 && v.type === "heading").map((v) => getHeadingText(v)).filter(Boolean), [headings]); + const anchors = useMemo2(() => headings.filter((v) => v.children && v.depth === 2 && v.type === "heading").map((v) => getHeadingText(v)).filter(Boolean), [headings]); const { menu } = useMenuContext(); - useEffect5(() => { + useEffect4(() => { if (menu) { - document.body.classList.add("overflow-hidden"); + document.body.classList.add("overflow-hidden", "md:overflow-auto"); } else { - document.body.classList.remove("overflow-hidden"); + document.body.classList.remove("overflow-hidden", "md:overflow-auto"); } }, [menu]); - return /* @__PURE__ */ React16.createElement("aside", { - className: cn6("fixed h-screen bg-white dark:bg-dark flex-shrink-0 w-full md:w-64 md:sticky z-20", menu ? "" : "hidden", mdShow ? "md:block" : ""), + return /* @__PURE__ */ React21.createElement("aside", { + className: cn6("fixed flex-shrink-0 w-full md:w-64 md:sticky z-[15] top-[4rem] self-start overflow-y-auto h-full md:h-auto bg-white dark:bg-dark md:bg-transparent", menu ? "" : "hidden", asPopover ? "md:hidden" : "md:block"), style: { - top: "4rem", - height: "calc(100vh - 4rem)" + height: "calc(var(--vh) - 4rem)" } - }, /* @__PURE__ */ React16.createElement("div", { - className: "sidebar border-oldGray-200 dark:border-oldGray-900 w-full p-4 pb-40 md:pb-16 h-full overflow-y-auto" - }, /* @__PURE__ */ React16.createElement("div", { + }, /* @__PURE__ */ React21.createElement("div", { + className: "sidebar w-full h-full md:h-auto pl-[calc(env(safe-area-inset-left)-1.5rem)]" + }, /* @__PURE__ */ React21.createElement("div", { + className: "p-4", + style: { + minHeight: "calc(var(--vh) - 4rem - 61px)" + } + }, /* @__PURE__ */ React21.createElement("div", { className: "mb-4 block md:hidden" - }, config.customSearch || (config.search ? config.unstable_stork ? /* @__PURE__ */ React16.createElement(Search2, null) : /* @__PURE__ */ React16.createElement(search_default, { + }, config.customSearch || (config.search ? config.unstable_flexsearch ? /* @__PURE__ */ React21.createElement(Search, null) : /* @__PURE__ */ React21.createElement(search_default, { directories: flatDirectories - }) : null)), /* @__PURE__ */ React16.createElement("div", { + }) : null)), /* @__PURE__ */ React21.createElement("div", { className: "hidden md:block" - }, /* @__PURE__ */ React16.createElement(Menu, { + }, /* @__PURE__ */ React21.createElement(Menu2, { directories, anchors: config.floatTOC ? [] : anchors - })), /* @__PURE__ */ React16.createElement("div", { + })), /* @__PURE__ */ React21.createElement("div", { className: "md:hidden" - }, /* @__PURE__ */ React16.createElement(Menu, { + }, /* @__PURE__ */ React21.createElement(Menu2, { directories: fullDirectories, anchors - })))); + }))), /* @__PURE__ */ React21.createElement("div", { + className: "sticky bottom-0 mx-4 border-t dark:border-prime-100 dark:border-opacity-10 shadow-[0_-12px_12px_white] dark:shadow-none" + }, /* @__PURE__ */ React21.createElement("div", { + className: "bg-white dark:bg-dark py-4 flex gap-1", + style: { + paddingBottom: "calc(env(safe-area-inset-bottom) + 1rem)" + } + }, config.i18n ? /* @__PURE__ */ React21.createElement("div", { + className: "flex-1 relative" + }, /* @__PURE__ */ React21.createElement(LocaleSwitch, { + options: config.i18n + })) : null, config.darkMode ? /* @__PURE__ */ React21.createElement("div", { + className: cn6("grow-0 relative", { locale: config.i18n }) + }, /* @__PURE__ */ React21.createElement(ThemeSwitch, null)) : null)))); } // src/toc.tsx -import React17 from "react"; +import React22 from "react"; import cn7 from "classnames"; import Slugger3 from "github-slugger"; +import { useRouter as useRouter7 } from "next/router"; +import parseGitUrl from "parse-git-url"; + +// src/utils/use-mounted.ts +import { useEffect as useEffect5, useState as useState5 } from "react"; +var useMounted = () => { + const [mounted, setMounted] = useState5(false); + useEffect5(() => { + setMounted(true); + }, []); + return mounted; +}; +var use_mounted_default = useMounted; + +// src/toc.tsx +var createEditUrl = (repository, filepath) => { + const repo = parseGitUrl(repository || ""); + if (!repo) + throw new Error("Invalid `docsRepositoryBase` URL!"); + switch (repo.type) { + case "github": + return `https://github.com/${repo.owner}/${repo.name}/blob/${repo.branch || "main"}/${repo.subdir || "pages"}${filepath}`; + case "gitlab": + return `https://gitlab.com/${repo.owner}/${repo.name}/-/blob/${repo.branch || "master"}/${repo.subdir || "pages"}${filepath}`; + } + return "#"; +}; +var createFeedbackUrl = (repository, filepath, labels) => { + const mounted = use_mounted_default(); + if (!mounted) + return "#"; + const repo = parseGitUrl(repository || ""); + if (!repo) + throw new Error("Invalid `docsRepositoryBase` URL!"); + const pageTitle = document.title; + switch (repo.type) { + case "github": + return `https://github.com/${repo.owner}/${repo.name}/issues/new?title=${encodeURIComponent(`Feedback for \u201C${pageTitle}\u201D`)}&labels=${labels || ""}`; + case "gitlab": + return `https://gitlab.com/${repo.owner}/${repo.name}/-/blob/${repo.branch || "master"}/${repo.subdir || "pages"}${filepath}`; + } + return "#"; +}; +var EditPageLink = ({ + repository, + text, + filepath +}) => { + const url = createEditUrl(repository, filepath); + const { locale } = useRouter7(); + return /* @__PURE__ */ React22.createElement("a", { + className: "text-xs font-medium no-underline block text-gray-500 mb-2 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100", + href: url, + target: "_blank", + rel: "noreferrer" + }, text ? render_component_default(text, { + locale + }) : "Edit this page"); +}; +var FeedbackLink = ({ + repository, + text, + filepath, + labels +}) => { + const url = createFeedbackUrl(repository, filepath, labels); + const { locale } = useRouter7(); + return /* @__PURE__ */ React22.createElement("a", { + className: "text-xs font-medium no-underline block text-gray-500 mb-2 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100", + href: url, + target: "_blank", + rel: "noreferrer" + }, text ? render_component_default(text, { + locale + }) : "Feedback"); +}; var indent = (level) => { switch (level) { case 3: @@ -1750,34 +1562,75 @@ var indent = (level) => { }; var emptyHeader = []; function ToC({ - headings = emptyHeader + headings = emptyHeader, + filepathWithName }) { const slugger = new Slugger3(); const activeAnchor = useActiveAnchor(); - return /* @__PURE__ */ React17.createElement("div", { - className: "w-64 hidden xl:block text-sm pl-4" - }, headings ? /* @__PURE__ */ React17.createElement("ul", { - className: "overflow-y-auto sticky max-h-[calc(100vh-4rem)] top-16 pt-8 pb-10 m-0 list-none" - }, headings.filter((heading) => heading.type === "heading" && heading.depth > 1).map((heading) => { + const config = useConfig(); + const hasMetaInfo = config.feedbackLink || config.footerEditLink; + return /* @__PURE__ */ React22.createElement("div", { + className: "w-64 hidden xl:block text-sm px-4" + }, /* @__PURE__ */ React22.createElement("div", { + className: "overflow-y-auto sticky max-h-[calc(var(--vh)-4rem)] top-16 pt-8 pb-10" + }, headings ? /* @__PURE__ */ React22.createElement("ul", { + className: "m-0 list-none" + }, /* @__PURE__ */ React22.createElement("p", { + className: "font-semibold tracking-tight mb-4" + }, "On This Page"), headings.filter((heading) => heading.type === "heading" && heading.depth > 1).map((heading) => { const text = getHeadingText(heading); const slug = slugger.slug(text); const state = activeAnchor[slug]; - return /* @__PURE__ */ React17.createElement("li", { + return /* @__PURE__ */ React22.createElement("li", { key: slug, style: indent(heading.depth) - }, /* @__PURE__ */ React17.createElement("a", { + }, /* @__PURE__ */ React22.createElement("a", { href: `#${slug}`, - className: cn7("no-underline hover:text-oldGray-900 dark:hover:text-oldGray-100", state && state.isActive ? "text-oldGray-900 dark:text-oldGray-100 font-semibold" : "text-oldGray-600") + className: cn7("no-underline inline-block", heading.depth === 2 ? "font-semibold" : "", state && state.isActive ? "text-prime-500 subpixel-antialiased" : "text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-300"), + "aria-selected": state == null ? void 0 : state.isActive }, text)); - })) : null); + })) : null, hasMetaInfo ? /* @__PURE__ */ React22.createElement("hr", { + className: "dark:border-prime-100 dark:border-opacity-10" + }) : null, config.feedbackLink ? /* @__PURE__ */ React22.createElement(FeedbackLink, { + filepath: filepathWithName, + repository: config.docsRepositoryBase, + labels: config.feedbackLabels, + text: config.feedbackLink + }) : null, config.footerEditLink ? /* @__PURE__ */ React22.createElement(EditPageLink, { + filepath: filepathWithName, + repository: config.docsRepositoryBase, + text: config.footerEditLink + }) : null)); } // src/index.tsx import "focus-visible"; + +// src/polyfill.tsx +if (typeof window !== "undefined") { + let onResize; + if (window.visualViewport) { + onResize = () => { + const vh = window.visualViewport.height; + document.documentElement.style.setProperty("--vh", `${vh}px`); + }; + window.visualViewport.addEventListener("resize", onResize); + onResize(); + } else { + onResize = () => { + const vh = window.innerHeight; + document.documentElement.style.setProperty("--vh", `${vh}px`); + }; + window.addEventListener("resize", onResize); + onResize(); + } +} + +// src/index.tsx function useDirectoryInfo(pageMap) { - const { locale, defaultLocale, asPath } = useRouter7(); - return useMemo5(() => { - const fsPath = getFSRoute(asPath, locale).split("#")[0]; + const { locale, defaultLocale, asPath } = useRouter8(); + return useMemo3(() => { + const fsPath = getFSRoute(asPath, locale); return normalizePages({ list: pageMap, locale, @@ -1786,20 +1639,26 @@ function useDirectoryInfo(pageMap) { }); }, [pageMap, locale, defaultLocale, asPath]); } -function Body({ meta, toc, filepathWithName, navLinks, children }) { - return /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(SkipNavContent, null), meta.full ? /* @__PURE__ */ React18.createElement("article", { - className: "relative pt-16 w-full overflow-x-hidden" - }, children) : /* @__PURE__ */ React18.createElement("article", { - className: "docs-container relative pt-16 pb-16 px-6 md:px-8 w-full max-w-full flex min-w-0" - }, /* @__PURE__ */ React18.createElement("main", { - className: "max-w-screen-md mx-auto pt-4 z-10 min-w-0 w-full" - }, /* @__PURE__ */ React18.createElement(theme_default, null, children), /* @__PURE__ */ React18.createElement(footer_default, { - filepathWithName - }, navLinks)), toc)); +function Body({ meta, toc, navLinks, MDXContent }) { + return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(SkipNavContent, null), meta.full ? /* @__PURE__ */ React23.createElement("article", { + className: "relative w-full overflow-x-hidden" + }, /* @__PURE__ */ React23.createElement(MDXContent, null)) : /* @__PURE__ */ React23.createElement("article", { + className: "docs-container relative pb-8 w-full max-w-full flex min-w-0 pr-[calc(env(safe-area-inset-right)-1.5rem)]" + }, /* @__PURE__ */ React23.createElement("main", { + className: "mx-auto max-w-4xl px-6 md:px-8 pt-4 z-10 min-w-0 w-full" + }, /* @__PURE__ */ React23.createElement(MDXTheme, { + MDXContent + }), navLinks), toc)); } -var Layout = (props) => { - const { filename, pageMap, meta, children, titleText, headings } = props; - const { route, locale } = useRouter7(); +var Layout = ({ + filename, + pageMap, + meta, + titleText, + MDXContent, + headings +}) => { + const { route, locale } = useRouter8(); const config = useConfig(); const { activeType, @@ -1813,96 +1672,107 @@ var Layout = (props) => { const filepath = route.slice(0, route.lastIndexOf("/") + 1); const filepathWithName = filepath + filename; const title = meta.title || titleText || "Untitled"; - const isRTL = useMemo5(() => { + const isRTL = useMemo3(() => { if (!config.i18n) - return config.direction === "rtl" || null; + return config.direction === "rtl"; const localeConfig = config.i18n.find((l) => l.locale === locale); return localeConfig && localeConfig.direction === "rtl"; }, [config.i18n, locale]); const [menu, setMenu] = useState6(false); if (activeType === "nav") { - return /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(Head, { + return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(Head, { title, locale, meta - }), /* @__PURE__ */ React18.createElement(MenuContext.Provider, { + }), /* @__PURE__ */ React23.createElement(MenuContext.Provider, { value: { menu, setMenu, defaultMenuCollapsed: !!config.defaultMenuCollapsed } - }, /* @__PURE__ */ React18.createElement("div", { + }, /* @__PURE__ */ React23.createElement("div", { className: cn8("nextra-container main-container flex flex-col", { rtl: isRTL, page: true }) - }, /* @__PURE__ */ React18.createElement(Navbar, { + }, /* @__PURE__ */ React23.createElement(Navbar, { isRTL, flatDirectories, flatPageDirectories - }), /* @__PURE__ */ React18.createElement(ActiveAnchor, null, /* @__PURE__ */ React18.createElement("div", { + }), /* @__PURE__ */ React23.createElement(ActiveAnchor, null, /* @__PURE__ */ React23.createElement("div", { + className: "max-w-[90rem] w-full mx-auto" + }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-1 h-full" - }, /* @__PURE__ */ React18.createElement(Sidebar, { + }, /* @__PURE__ */ React23.createElement(Sidebar, { directories: flatPageDirectories, flatDirectories, fullDirectories: directories, - mdShow: false, - headings - }), /* @__PURE__ */ React18.createElement(Body, { + headings, + isRTL, + asPopover: true + }), /* @__PURE__ */ React23.createElement(Body, { meta, - filepathWithName, - navLinks: null - }, children)))))); + navLinks: null, + MDXContent + })))), config.footer ? /* @__PURE__ */ React23.createElement(footer_default, { + menu: true + }) : null))); } - return /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(Head, { + return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(Head, { title, locale, meta - }), /* @__PURE__ */ React18.createElement(MenuContext.Provider, { + }), /* @__PURE__ */ React23.createElement(MenuContext.Provider, { value: { menu, setMenu, defaultMenuCollapsed: !!config.defaultMenuCollapsed } - }, /* @__PURE__ */ React18.createElement("div", { + }, /* @__PURE__ */ React23.createElement("div", { className: cn8("nextra-container main-container flex flex-col", { rtl: isRTL }) - }, /* @__PURE__ */ React18.createElement(Navbar, { + }, /* @__PURE__ */ React23.createElement(Navbar, { isRTL, flatDirectories, flatPageDirectories - }), /* @__PURE__ */ React18.createElement(ActiveAnchor, null, /* @__PURE__ */ React18.createElement("div", { + }), /* @__PURE__ */ React23.createElement(ActiveAnchor, null, /* @__PURE__ */ React23.createElement("div", { + className: "max-w-[90rem] w-full mx-auto" + }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-1 h-full" - }, /* @__PURE__ */ React18.createElement(Sidebar, { + }, /* @__PURE__ */ React23.createElement(Sidebar, { directories: docsDirectories, flatDirectories, fullDirectories: directories, - headings - }), /* @__PURE__ */ React18.createElement(Body, { + headings, + isRTL + }), /* @__PURE__ */ React23.createElement(Body, { meta, - filepathWithName, - toc: /* @__PURE__ */ React18.createElement(ToC, { - headings: config.floatTOC ? headings : null + toc: /* @__PURE__ */ React23.createElement(ToC, { + headings: config.floatTOC ? headings : null, + filepathWithName }), - navLinks: /* @__PURE__ */ React18.createElement(NavLinks, { + navLinks: /* @__PURE__ */ React23.createElement(NavLinks, { flatDirectories: flatDocsDirectories, currentIndex: activeIndex, isRTL - }) - }, children)))))); + }), + MDXContent + })))), config.footer ? /* @__PURE__ */ React23.createElement(footer_default, { + menu: false + }) : null))); }; -var DocsLayout = (opts, config) => { +var src_default = (opts, config) => { const extendedConfig = Object.assign({}, default_config_default, config); return (props) => { - return /* @__PURE__ */ React18.createElement(ThemeConfigContext.Provider, { + return /* @__PURE__ */ React23.createElement(ThemeConfigContext.Provider, { value: extendedConfig - }, /* @__PURE__ */ React18.createElement(ThemeProvider, { - attribute: "class" - }, /* @__PURE__ */ React18.createElement(RenderlesskitProvider, null, /* @__PURE__ */ React18.createElement(Layout, __spreadValues(__spreadValues({}, opts), props))))); + }, /* @__PURE__ */ React23.createElement(ThemeProvider, { + attribute: "class", + disableTransitionOnChange: true + }, /* @__PURE__ */ React23.createElement(Layout, __spreadValues(__spreadValues({}, opts), props)))); }; }; -var src_default = DocsLayout; export { src_default as default }; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/config.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/config.d.ts new file mode 100644 index 0000000..3eee2b3 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/config.d.ts @@ -0,0 +1,4 @@ +import React from "react"; +import { DocsThemeConfig } from "./types"; +export declare const ThemeConfigContext: React.Context; +export declare const useConfig: () => DocsThemeConfig; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/footer.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/footer.d.ts new file mode 100644 index 0000000..10f166f --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/footer.d.ts @@ -0,0 +1,12 @@ +import React from "react"; +import { Item } from "./utils/normalize-pages"; +interface NavLinkProps { + isRTL?: boolean | null; + currentIndex: number; + flatDirectories: Item[]; +} +export declare const NavLinks: ({ flatDirectories, currentIndex, isRTL, }: NavLinkProps) => JSX.Element; +declare const Footer: React.FC<{ + menu?: boolean; +}>; +export default Footer; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/head.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/head.d.ts new file mode 100644 index 0000000..d3c9fae --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/head.d.ts @@ -0,0 +1,8 @@ +/// +interface HeadProps { + title: string; + locale?: string; + meta: Record; +} +export default function Head({ title, locale, meta }: HeadProps): JSX.Element; +export {}; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/arrow-right.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/arrow-right.d.ts new file mode 100644 index 0000000..df6ddb6 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/arrow-right.d.ts @@ -0,0 +1,3 @@ +/// +declare const ArrowRight: (props: any) => JSX.Element; +export default ArrowRight; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/check.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/check.d.ts new file mode 100644 index 0000000..806c453 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/check.d.ts @@ -0,0 +1,2 @@ +/// +export default function Check(): JSX.Element; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/discord.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/discord.d.ts new file mode 100644 index 0000000..ddb0e91 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/discord.d.ts @@ -0,0 +1,5 @@ +/// +declare const DiscordIcon: ({ height }: { + height?: number | undefined; +}) => JSX.Element; +export default DiscordIcon; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/github.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/github.d.ts new file mode 100644 index 0000000..0b39e60 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/github.d.ts @@ -0,0 +1,5 @@ +/// +declare const Github: ({ height }: { + height?: number | undefined; +}) => JSX.Element; +export default Github; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/globe.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/globe.d.ts new file mode 100644 index 0000000..5c6a512 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/globe.d.ts @@ -0,0 +1,2 @@ +/// +export default function Globe(): JSX.Element; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/moon.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/moon.d.ts new file mode 100644 index 0000000..eff4d1a --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/moon.d.ts @@ -0,0 +1,2 @@ +/// +export default function Sun(): JSX.Element; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/sun.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/sun.d.ts new file mode 100644 index 0000000..c595f72 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/icons/sun.d.ts @@ -0,0 +1,2 @@ +/// +export default function Moon(): JSX.Element; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/index.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/index.d.ts new file mode 100644 index 0000000..9a0e52c --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/index.d.ts @@ -0,0 +1,7 @@ +/// +import { PageOpt } from "nextra"; +import { DocsThemeConfig } from "./types"; +import "focus-visible"; +import "./polyfill"; +declare const _default: (opts: PageOpt, config: DocsThemeConfig) => (props: any) => JSX.Element; +export default _default; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/locale-switch.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/locale-switch.d.ts new file mode 100644 index 0000000..f189212 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/locale-switch.d.ts @@ -0,0 +1,7 @@ +/// +import { DocsThemeConfig } from "./types"; +interface LocaleSwitchProps { + options: NonNullable; +} +export default function LocaleSwitch({ options }: LocaleSwitchProps): JSX.Element; +export {}; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/misc/active-anchor.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/misc/active-anchor.d.ts new file mode 100644 index 0000000..1ba17b8 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/misc/active-anchor.d.ts @@ -0,0 +1,10 @@ +import React from "react"; +export declare type ActiveAnchor = Record; +export declare const useActiveAnchor: () => ActiveAnchor; +export declare const useActiveAnchorSet: () => (value: ActiveAnchor | ((prevState: ActiveAnchor) => ActiveAnchor)) => void; +export declare const ActiveAnchor: React.FC; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/misc/default.config.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/misc/default.config.d.ts new file mode 100644 index 0000000..f60a99c --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/misc/default.config.d.ts @@ -0,0 +1,18 @@ +/// +declare const defaultTheme: { + projectLink: string; + docsRepositoryBase: string; + titleSuffix: string; + nextLinks: boolean; + prevLinks: boolean; + search: boolean; + darkMode: boolean; + defaultMenuCollapsed: boolean; + font: boolean; + footer: boolean; + footerText: string; + footerEditLink: string; + logo: JSX.Element; + head: JSX.Element; +}; +export default defaultTheme; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/misc/theme.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/misc/theme.d.ts new file mode 100644 index 0000000..5ef3f29 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/misc/theme.d.ts @@ -0,0 +1,7 @@ +import React from "react"; +import "intersection-observer"; +export declare const MDXTheme: ({ MDXContent, }: { + MDXContent: React.FC<{ + components?: any; + }>; +}) => JSX.Element; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/navbar.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/navbar.d.ts new file mode 100644 index 0000000..8133165 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/navbar.d.ts @@ -0,0 +1,9 @@ +/// +import { Item, PageItem } from "./utils/normalize-pages"; +interface NavBarProps { + isRTL?: boolean | null; + flatDirectories: Item[]; + flatPageDirectories: PageItem[]; +} +export default function Navbar({ flatDirectories, flatPageDirectories, }: NavBarProps): JSX.Element; +export {}; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/polyfill.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/polyfill.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/search.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/search.d.ts new file mode 100644 index 0000000..4afdb1f --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/search.d.ts @@ -0,0 +1,7 @@ +/// +import type { Item as NormalItem } from "./utils/normalize-pages"; +interface SearchProps { + directories: NormalItem[]; +} +declare const Search: ({ directories }: SearchProps) => JSX.Element; +export default Search; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/select.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/select.d.ts new file mode 100644 index 0000000..6f3c1fa --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/select.d.ts @@ -0,0 +1,12 @@ +import React from "react"; +interface MenuOption { + key: string; + name: React.ReactElement | string; +} +interface MenuProps { + selected: MenuOption; + onChange: (option: MenuOption) => void; + options: MenuOption[]; +} +export default function Menu({ options, selected, onChange }: MenuProps): JSX.Element; +export {}; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/sidebar.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/sidebar.d.ts new file mode 100644 index 0000000..fcd21e4 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/sidebar.d.ts @@ -0,0 +1,13 @@ +/// +import { Heading } from "nextra"; +import { Item, PageItem } from "./utils/normalize-pages"; +interface SideBarProps { + directories: PageItem[]; + flatDirectories: Item[]; + fullDirectories: Item[]; + asPopover?: boolean; + headings?: Heading[]; + isRTL?: boolean; +} +export default function Sidebar({ directories, flatDirectories, fullDirectories, asPopover, headings, }: SideBarProps): JSX.Element; +export {}; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/theme-switch.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/theme-switch.d.ts new file mode 100644 index 0000000..126f4b9 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/theme-switch.d.ts @@ -0,0 +1,4 @@ +/// +export default function ThemeSwitch({ lite }: { + lite?: boolean | undefined; +}): JSX.Element; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/toc.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/toc.d.ts new file mode 100644 index 0000000..b91c796 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/toc.d.ts @@ -0,0 +1,6 @@ +/// +import { Heading } from "nextra"; +export default function ToC({ headings, filepathWithName, }: { + headings: Heading[] | null; + filepathWithName: string; +}): JSX.Element; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/types.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/types.d.ts new file mode 100644 index 0000000..f245e60 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/types.d.ts @@ -0,0 +1,47 @@ +/// +export interface DocsThemeConfig { + docsRepositoryBase?: string; + titleSuffix?: string | React.FC<{ + locale: string; + config: DocsThemeConfig; + title: string; + meta: Record; + }>; + nextLinks?: boolean; + prevLinks?: boolean; + search?: boolean; + darkMode?: boolean; + defaultMenuCollapsed?: boolean; + font?: boolean; + footer?: boolean; + footerText?: string; + footerEditLink?: string; + feedbackLink?: string; + feedbackLabels?: string; + head?: React.ReactNode | React.FC<{ + locale: string; + config: DocsThemeConfig; + title: string; + meta: Record; + }>; + logo?: React.ReactNode; + direction?: string; + i18n?: { + locale: string; + text: string; + direction: string; + }[]; + unstable_faviconGlyph?: string; + customSearch?: boolean; + unstable_flexsearch?: boolean; + projectLink?: string; + github?: string; + projectLinkIcon?: React.FC<{ + locale: string; + }>; + projectChatLink?: string; + projectChatLinkIcon?: React.FC<{ + locale: string; + }>; + floatTOC?: boolean; +} diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/flatten.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/flatten.d.ts new file mode 100644 index 0000000..2f078a7 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/flatten.d.ts @@ -0,0 +1 @@ +export default function flatten(list: T): T; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/get-fs-route.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/get-fs-route.d.ts new file mode 100644 index 0000000..0080fa2 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/get-fs-route.d.ts @@ -0,0 +1 @@ +export declare const getFSRoute: (asPath: string, locale?: string | undefined) => string; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/get-heading-text.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/get-heading-text.d.ts new file mode 100644 index 0000000..170c729 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/get-heading-text.d.ts @@ -0,0 +1,2 @@ +import { Heading } from "nextra"; +export default function getHeadingText(heading: Heading): string; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/menu-context.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/menu-context.d.ts new file mode 100644 index 0000000..60cb693 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/menu-context.d.ts @@ -0,0 +1,9 @@ +/// +interface MenuContextValue { + menu: boolean; + setMenu: (data: boolean) => any; + defaultMenuCollapsed: boolean; +} +export declare const MenuContext: import("react").Context; +export default function useMenuContext(): MenuContextValue; +export {}; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/normalize-pages.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/normalize-pages.d.ts new file mode 100644 index 0000000..5ff58a0 --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/normalize-pages.d.ts @@ -0,0 +1,35 @@ +import { PageMapItem } from "nextra"; +export interface Item extends Omit { + title: string; + type: string; + children?: Item[]; +} +export interface PageItem extends Omit { + title: string; + type: string; + children?: PageItem[]; + firstChildRoute?: string; + hidden?: boolean; +} +export interface DocsItem extends Omit { + title: string; + type: string; + children?: DocsItem[]; + firstChildRoute?: string; +} +export default function normalizePages({ list, locale, defaultLocale, route, docsRoot, }: { + list: PageMapItem[]; + locale?: string; + defaultLocale?: string; + route: string; + docsRoot?: string; +}): { + activeType: undefined; + activeIndex: number; + directories: Item[]; + flatDirectories: Item[]; + docsDirectories: DocsItem[]; + flatDocsDirectories: DocsItem[]; + pageDirectories: PageItem[]; + flatPageDirectories: PageItem[]; +}; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/render-component.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/render-component.d.ts new file mode 100644 index 0000000..f5fd3ac --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/render-component.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +declare const renderComponent: (ComponentOrNode: React.ReactNode | React.FC, props: T) => {} | null; +export default renderComponent; diff --git a/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/use-mounted.d.ts b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/use-mounted.d.ts new file mode 100644 index 0000000..fc5ba7d --- /dev/null +++ b/.yalc/nextra-renderlesskit-theme-docs/dist/types/utils/use-mounted.d.ts @@ -0,0 +1,2 @@ +declare const useMounted: () => boolean; +export default useMounted; diff --git a/.yalc/nextra-renderlesskit-theme-docs/package.json b/.yalc/nextra-renderlesskit-theme-docs/package.json index 597fe6f..6740d0c 100644 --- a/.yalc/nextra-renderlesskit-theme-docs/package.json +++ b/.yalc/nextra-renderlesskit-theme-docs/package.json @@ -66,19 +66,21 @@ }, "dependencies": { "@chakra-ui/hooks": "^1.7.2", + "@headlessui/react": "^1.4.3", "@mdx-js/react": "2.0.0-rc.2", "@reach/skip-nav": "0.16.0", "@renderlesskit/react-tailwind": "^0.0.1-alpha.37", "classnames": "2.3.1", + "flexsearch": "^0.7.21", "focus-visible": "5.2.0", "github-slugger": "1.4.0", - "grapheme-splitter": "1.0.4", "intersection-observer": "0.12.0", "match-sorter": "6.3.1", "next-themes": "0.0.15", "parse-git-url": "1.0.1", "prism-react-renderer": "1.2.1", - "react-live": "^2.3.0", + "react-innertext": "^1.1.5", + "react-live": "^2.4.0", "title": "3.4.3", "twind": "^0.16.16" }, @@ -93,5 +95,5 @@ "emoji": "emoji", "editor": false }, - "yalcSig": "c3783295e317c37bfdce305433552e0b" + "yalcSig": "5c59a22afbd167bc63e999604e286788" } diff --git a/.yalc/nextra-renderlesskit-theme-docs/style.css b/.yalc/nextra-renderlesskit-theme-docs/style.css index 9060379..7c14b16 100644 --- a/.yalc/nextra-renderlesskit-theme-docs/style.css +++ b/.yalc/nextra-renderlesskit-theme-docs/style.css @@ -1,44 +1,20 @@ @tailwind base; -@tailwind components; -@tailwind utilities; html { - @apply subpixel-antialiased; + @apply antialiased; font-size: 16px; font-feature-settings: "rlig" 1, "calt" 1, "ss01" 1; - scroll-behavior: smooth; + -webkit-tap-highlight-color: transparent; } body { @apply bg-white; } .dark body { - @apply bg-dark text-oldGray-100; + @apply bg-dark text-gray-100; } -h1 { - @apply text-4xl font-bold tracking-tight mt-2; -} -h2 { - @apply text-3xl font-semibold tracking-tight mt-10; - @apply pb-1 border-b; -} -.dark h2 { - @apply border-oldGray-900; -} -h3 { - @apply text-2xl font-semibold tracking-tight mt-8; -} -h4 { - @apply text-xl font-semibold tracking-tight mt-8; -} -h5 { - @apply text-lg font-semibold tracking-tight mt-8; -} -h6 { - @apply text-base font-semibold tracking-tight mt-8; -} a { - @apply text-blue-500 underline; + @apply text-prime-500 underline; text-underline-position: under; } p { @@ -49,159 +25,236 @@ blockquote:not(:first-child), .table-container:not(:first-child) { @apply mt-6; } -hr { - @apply my-8; -} -.dark hr { - @apply border-oldGray-900; -} -code { - @apply text-oldGray-800 bg-oldGray-500 bg-opacity-25 rounded; - box-decoration-break: clone; -} -.dark code { - @apply text-oldGray-300 bg-oldGray-800; -} -pre { - @apply p-4 bg-oldGray-200 rounded-lg mt-6 mb-4 overflow-x-auto; - @apply dark:bg-oldGray-800; -} -pre code { - @apply p-0 text-sm text-black bg-transparent rounded-none inline-block min-w-full; -} -a code { - @apply text-current no-underline; -} + +@tailwind components; +@tailwind utilities; .main-container { - min-height: 100vh; + min-height: var(--vh); } .sidebar { - @apply select-none md:border-r; -} -.sidebar ul ul { - @apply ml-5 relative; -} -.sidebar a:focus-visible, -.sidebar button:focus-visible { - @apply ring; -} -.sidebar .active-anchor { - @apply font-semibold text-oldGray-900 dark:text-white; -} -.sidebar li.active > a { - @apply font-semibold text-black bg-oldGray-200; -} -.dark .sidebar li.active > a { - @apply text-white bg-oldGray-800; -} -.sidebar button, -.sidebar a { - @apply block w-full text-left text-base no-underline text-oldGray-600 mt-1 p-2 rounded select-none outline-none; - -webkit-tap-highlight-color: transparent; - -webkit-touch-callout: none; -} -.dark .sidebar button, -.dark .sidebar a { - @apply text-oldGray-500; -} -.sidebar a:hover, -.sidebar button:hover { - @apply text-oldGray-900 bg-oldGray-100; -} -.dark .sidebar a:hover, -.dark .sidebar button:hover { - @apply text-white bg-oldGray-900; -} -article ul { - @apply list-disc ml-6 mt-6; -} -article li { - @apply mt-2; -} -article ol { - @apply list-decimal ml-6 mt-6; -} -article blockquote { - @apply italic pl-6 border-l-2 border-oldGray-300 text-oldGray-700; - @apply dark:border-oldGray-700 dark:text-oldGray-400; + @apply select-none; + ul ul { + @apply ml-5 relative; + } + ul { + a:focus-visible, + button:focus-visible { + @apply ring ring-prime-200; + } + .active-anchor { + @apply font-semibold text-gray-900; + @apply dark:text-white; + } + li.active > a, + li.active > a:hover { + @apply font-bold text-prime-500 bg-prime-50; + @apply dark:text-prime-500 dark:bg-prime-500 dark:bg-opacity-10; + } + button, + summary, + li a { + @apply block w-full text-left text-sm no-underline text-gray-700 mt-1 px-2 py-1.5 rounded select-none outline-none transition-colors; + @apply dark:text-gray-400; + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + &:hover { + @apply text-gray-900 bg-gray-100; + @apply dark:text-gray-50 dark:bg-prime-100 dark:bg-opacity-5; + } + } + } + .locale .menu { + @apply right-0; + } } -.subheading-anchor { - margin-top: -84px; - display: inline-block; - position: absolute; - width: 1px; -} +/* Content Typography */ +article { + h1 { + @apply text-4xl font-bold tracking-tight mt-2; + } + h2 { + @apply text-3xl font-semibold tracking-tight mt-10; + @apply pb-1 border-b; + .dark & { + @apply border-prime-100 border-opacity-10; + } + } + h3 { + @apply text-2xl font-semibold tracking-tight mt-8; + } + h4 { + @apply text-xl font-semibold tracking-tight mt-8; + } + h5 { + @apply text-lg font-semibold tracking-tight mt-8; + } + h6 { + @apply text-base font-semibold tracking-tight mt-8; + } + ul { + @apply list-disc ml-6 mt-6; + } + li { + @apply mt-2; + } + ol { + @apply list-decimal ml-6 mt-6; + } + blockquote { + @apply italic pl-6 border-l-2 border-gray-300 text-gray-700; + @apply dark:border-gray-700 dark:text-gray-400; + } + h2 a { + @apply no-underline; + } + code { + @apply bg-black bg-opacity-5 border border-black border-opacity-5 rounded-md; + font-size: 0.9em; + padding: 2px 0.25em; + box-decoration-break: clone; + font-feature-settings: "rlig" 1, "calt" 1, "ss01" 1; + .dark & { + @apply bg-white bg-opacity-10 border-white border-opacity-10; + } + } + pre { + /* content-visibility: auto; */ + contain: paint; + @apply p-4 bg-slate-100 rounded-xl mt-6 mb-4 overflow-x-auto font-medium subpixel-antialiased; + @apply dark:bg-prime-300 dark:bg-opacity-10; + code { + line-height: 1.25rem !important; + @apply relative p-0 text-sm text-current bg-transparent dark:bg-transparent rounded-none border-none inline-block min-w-full; + .line.highlighted { + @apply before:block before:absolute before:h-5 before:bg-gray-500 before:bg-opacity-10 before:-inset-x-4 before:pointer-events-none before:select-none; + span { + @apply relative; + } + } + } + } + a code { + @apply text-current no-underline; + } + span[data-nextra-code][data-filename] { + @apply block relative; -.subheading-anchor + a:hover .anchor-icon { - opacity: 1; -} -.anchor-icon { - opacity: 0; - @apply ml-2 text-oldGray-500 select-none; -} -.dark .anchor-icon { - @apply text-oldGray-700; -} + &::before { + content: attr(data-filename); + position: absolute; + @apply absolute truncate top-0 z-[1] text-xs py-2 px-4 w-full text-gray-700 bg-slate-200 dark:bg-gray-700 dark:text-gray-200 rounded-t-xl; + } + pre { + @apply pt-12; + } + } + hr { + @apply my-8; + } + .dark & hr { + @apply border-gray-900; + } -h2 a { - @apply no-underline; -} + .subheading-anchor { + margin-top: -84px; + display: inline-block; + position: absolute; + width: 1px; + } -/* Navbar */ -.nextra-container nav { - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.02); -} -.nextra-container nav a:focus, -.nextra-container nav summary:focus { - @apply select-none outline-none; + .subheading-anchor + a:hover .anchor-icon { + opacity: 1; + } + .anchor-icon { + opacity: 0; + @apply ml-2 text-gray-300 select-none; + } + .dark & .anchor-icon { + @apply text-gray-600; + } } -.nextra-container nav a:focus-visible, -.nextra-container nav summary:focus-visible { - @apply ring select-none outline-none; + +.nextra-container { + /* Navbar */ + .nextra-nav-container { + &:before { + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.02), + 0 -1px 0 rgba(0, 0, 0, 0.06) inset; + } + + a:focus, + summary:focus { + @apply select-none outline-none; + } + a:focus-visible, + summary:focus-visible { + @apply ring ring-prime-200 select-none outline-none; + } + } } /* Search */ -.nextra-search input { - @apply border-oldGray-300 text-oldGray-900; -} -.dark .nextra-search input { - @apply bg-dark border-oldGray-800 text-oldGray-100; -} -.nextra-search input::placeholder { - @apply text-oldGray-400; -} -.dark .nextra-search input::placeholder { - @apply text-oldGray-700; -} -.nextra-search ul { - @apply rounded border bg-white text-oldGray-100 border-oldGray-300 divide-oldGray-300 overflow-hidden shadow-lg list-none; -} -.dark .nextra-search ul { - @apply bg-dark text-oldGray-100 border-oldGray-700 divide-oldGray-700; -} -.nextra-search ul li { - @apply text-oldGray-800; -} -.nextra-search ul li.active, -.nextra-search ul a:focus li { - @apply bg-oldGray-200; -} -.dark .nextra-search ul li { - @apply text-oldGray-300; -} -.dark .nextra-search ul li.active, -.dark .nextra-search ul a:focus li { - @apply bg-oldGray-800; -} -.nextra-search ul li .highlight { - @apply bg-yellow-300; +.nextra-search { + input { + @apply text-gray-900 bg-black bg-opacity-[.03]; + @apply dark:text-gray-300 dark:bg-gray-50 dark:bg-opacity-10; + @apply dark:border-gray-800; + } + input::placeholder { + @apply text-gray-400; + @apply dark:text-gray-500; + } + &.nextra-flexsearch ul { + @apply overflow-auto left-0 md:-left-80 md:right-0; + max-height: min(calc(var(--vh) - 12.5rem), 600px); + max-width: min(calc(100vw - 2rem), calc(100% + 20rem)); + transition: max-height 0.2s ease; + width: 100vw; + } + ul { + @apply rounded-xl backdrop-blur-lg bg-white bg-opacity-[.7] text-gray-100 ring-1 ring-black ring-opacity-5 py-2.5 overflow-hidden overscroll-contain shadow-xl list-none; + li { + @apply text-gray-800 break-words mx-2.5 p-2.5 rounded-md; + .highlight { + @apply underline decoration-prime-400 text-prime-500; + } + } + li.active, + a:focus li { + @apply text-prime-500 bg-prime-400 bg-opacity-[.1]; + } + } + .dark & { + ul { + @apply bg-neutral-800 backdrop-blur-xl bg-opacity-60 text-gray-100 ring-white ring-opacity-10 divide-gray-200/10; + li { + @apply text-gray-300; + .highlight { + @apply underline decoration-prime-400 text-prime-500; + } + } + li.active, + a:focus li { + @apply text-prime-500 bg-prime-500 bg-opacity-[.1]; + } + } + } } -.dark .nextra-search ul li .highlight { - @apply bg-yellow-700; + +@media screen and (max-width: 768px) { + .nextra-search .excerpt { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 1; + line-clamp: 1; + -webkit-box-orient: vertical; + } } + .search-overlay { position: fixed; top: 0; @@ -215,17 +268,6 @@ input[type="search"]::-webkit-search-results-button, input[type="search"]::-webkit-search-results-decoration { -webkit-appearance: none; } -.nextra-search.nextra-stork ul { - @apply overflow-auto left-0 md:-left-80 md:right-0; - max-height: min(calc(100vh - 80px), 400px); - max-width: min(calc(100vw - 2rem), calc(100% + 20rem)); - width: 100vw; -} - -code { - font-size: 0.9em; - padding: 2px 0.25em; -} /* Locale */ .locale-switch summary::-webkit-details-marker { @@ -258,12 +300,12 @@ table { @apply p-0; } table tr { - @apply m-0 p-0 border-t border-oldGray-300; - @apply dark:border-oldGray-700; + @apply m-0 p-0 border-t border-gray-300; + @apply dark:border-gray-600; } table tr:nth-child(2n) { - @apply bg-oldGray-100; - @apply dark:bg-oldGray-900; + @apply bg-gray-100; + @apply dark:bg-gray-600 dark:bg-opacity-20; } table tr th { @apply font-semibold; @@ -279,8 +321,8 @@ table tr td[align="right"] { table tr th, table tr td { @apply text-left; - @apply m-0 px-4 py-2 border border-oldGray-300; - @apply dark:border-oldGray-700; + @apply m-0 px-4 py-2 border border-gray-300; + @apply dark:border-gray-600; } .table-container { overflow: auto; @@ -294,81 +336,23 @@ table tr td { @apply mr-1; } -pre { - position: relative; -} - -pre .prism-code { - --c-highlight: #cce0f5; -} -.dark pre .prism-code { - --c-highlight: #3d4b61; -} - -pre .prism-code .token-line { - line-height: 150%; -} - -pre .prism-code .token.plain, -pre .prism-code .token.builtin, -pre .prism-code .token.char, -pre .prism-code .token.constant { - color: #000 !important; -} -.dark pre .prism-code .token.plain, -.dark pre .prism-code .token.builtin, -.dark pre .prism-code .token.char, -.dark pre .prism-code .token.constant { - color: #fff !important; -} -pre .prism-code .token.string, -pre .prism-code .token.url, -pre .prism-code .token.attr-value { - color: #028265 !important; -} -.dark pre .prism-code .token.string, -.dark pre .prism-code .token.url, -.dark pre .prism-code .token.attr-value { - color: #20bb98 !important; -} -pre .prism-code .token.punctuation, -pre .prism-code .token.operator { - color: #333 !important; -} -.dark pre .prism-code .token.punctuation, -.dark pre .prism-code .token.operator { - color: #bbb !important; -} -pre .prism-code .token.number, -pre .prism-code .token.function, -pre .prism-code .token.tag:not(.script) { - color: #0076ff !important; -} -.dark pre .prism-code .token.number, -.dark pre .prism-code .token.function, -.dark pre .prism-code .token.tag:not(.script) { - color: #1e86ff !important; -} - /* RTL */ .nextra-container.rtl { direction: rtl; -} -.nextra-container.rtl .sidebar ul ul { - @apply mr-5 ml-0; -} -.nextra-container.rtl .sidebar button, -.nextra-container.rtl .sidebar a { - @apply text-right; -} -.nextra-container.rtl article blockquote { - @apply pr-6 border-r-2 pl-0 border-l-0; + .sidebar ul ul { + @apply mr-5 ml-0; + } + .sidebar button, + .sidebar a { + @apply text-right; + } + article blockquote { + @apply pr-6 border-r-2 pl-0 border-l-0; + } } .nextra-container:not(.rtl):not(.page) article.docs-container { - @apply xl:pr-8; } .nextra-container.rtl:not(.page) .docs-container { - @apply xl:pl-8; } @screen md { .nextra-container:not(.page) article.docs-container .bleed.full { @@ -394,16 +378,47 @@ pre .prism-code .token.tag:not(.script) { margin-right: calc(50% - 50vw); } } -.nextra-container.rtl code { - direction: ltr; -} -.nextra-container.rtl .anchor-icon { - @apply ml-0 mr-2 inline-block; +.nextra-container.rtl { + code { + direction: ltr; + } + .anchor-icon { + @apply ml-0 mr-2 inline-block; + } + article ul, + article ol { + @apply ml-0 mr-6; + } + .sidebar { + @apply md:border-l; + } } -.nextra-container.rtl article ul, -.nextra-container.rtl article ol { - @apply ml-0 mr-6; + +:root { + --shiki-color-text: #414141; + --shiki-color-background: transparent; + --shiki-token-constant: #1976d2; + --shiki-token-string: #22863a; + --shiki-token-comment: #aaa; + --shiki-token-keyword: #d32f2f; + --shiki-token-parameter: #ff9800; + --shiki-token-function: #6f42c1; + --shiki-token-string-expression: #22863a; + --shiki-token-punctuation: #212121; + --shiki-token-link: #22863a; + --nextra-shiki-deleted: #f00; + --nextra-shiki-inserted: #f00; } -.nextra-container.rtl .sidebar { - @apply md:border-l; + +.dark { + --shiki-color-text: #d1d1d1; + --shiki-token-constant: #79b8ff; + --shiki-token-string: #ffab70; + --shiki-token-comment: #6b737c; + --shiki-token-keyword: #f97583; + --shiki-token-parameter: #ff9800; + --shiki-token-function: #b392f0; + --shiki-token-string-expression: #4bb74a; + --shiki-token-punctuation: #bbbbbb; + --shiki-token-link: #ffab70; } diff --git a/.yalc/nextra-renderlesskit-theme-docs/yalc.sig b/.yalc/nextra-renderlesskit-theme-docs/yalc.sig index 1a06780..1a3cdc2 100644 --- a/.yalc/nextra-renderlesskit-theme-docs/yalc.sig +++ b/.yalc/nextra-renderlesskit-theme-docs/yalc.sig @@ -1 +1 @@ -c3783295e317c37bfdce305433552e0b \ No newline at end of file +5c59a22afbd167bc63e999604e286788 \ No newline at end of file diff --git a/.yalc/nextra/dist/filter-route-locale.d.ts b/.yalc/nextra/dist/filter-route-locale.d.ts new file mode 100644 index 0000000..be11361 --- /dev/null +++ b/.yalc/nextra/dist/filter-route-locale.d.ts @@ -0,0 +1,2 @@ +import type { PageMapItem } from './types'; +export default function filterRouteLocale(pageMap: PageMapItem[], locale: string, defaultLocale: string): PageMapItem[]; diff --git a/.yalc/nextra/dist/index.js b/.yalc/nextra/dist/index.js index 032aa37..948504d 100644 --- a/.yalc/nextra/dist/index.js +++ b/.yalc/nextra/dist/index.js @@ -1,7 +1,11 @@ +var __create = Object.create; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; @@ -17,6 +21,173 @@ var __spreadValues = (a, b) => { return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); +var __reExport = (target, module2, copyDefault, desc) => { + if (module2 && typeof module2 === "object" || typeof module2 === "function") { + for (let key of __getOwnPropNames(module2)) + if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default")) + __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable }); + } + return target; +}; +var __toESM = (module2, isNodeMode) => { + return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2); +}; +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// src/plugin.ts +var import_graceful_fs = __toESM(require("graceful-fs")); +var import_util = __toESM(require("util")); + +// src/utils.ts +var import_fs = __toESM(require("fs")); +function getLocaleFromFilename(name) { + const localeRegex = /\.([a-zA-Z-]+)?\.(mdx?|jsx?|json)$/; + const match = name.match(localeRegex); + if (match) + return match[1]; + return void 0; +} +function removeExtension(name) { + const match = name.match(/^([^.]+)/); + return match !== null ? match[1] : ""; +} +var parseJsonFile = (content, path3) => { + let parsed = {}; + try { + parsed = JSON.parse(content); + } catch (err) { + console.error(`Error parsing ${path3}, make sure it's a valid JSON +` + err); + } + return parsed; +}; +var existsSync = (f) => { + try { + import_fs.default.accessSync(f, import_fs.default.constants.F_OK); + return true; + } catch (_) { + return false; + } +}; + +// src/plugin.ts +var import_path2 = __toESM(require("path")); +var import_slash = __toESM(require("slash")); +var import_gray_matter = __toESM(require("gray-matter")); + +// src/page-map.ts +var import_path = __toESM(require("path")); +var extension = /\.mdx?$/; +var metaExtension = /meta\.?([a-zA-Z-]+)?\.json/; +function findPagesDir(dir = process.cwd()) { + if (existsSync(import_path.default.join(dir, "pages"))) + return "pages"; + if (existsSync(import_path.default.join(dir, "src/pages"))) + return "src/pages"; + throw new Error("> Couldn't find a `pages` directory. Please create one under the project root"); +} + +// src/plugin.ts +var { readdir, readFile } = import_graceful_fs.default; +function collectFiles(_0) { + return __async(this, arguments, function* (dir, route = "/", fileMap = {}) { + const files = yield import_util.default.promisify(readdir)(dir, { withFileTypes: true }); + const items = (yield Promise.all(files.map((f) => __async(this, null, function* () { + const filePath = import_path2.default.resolve(dir, f.name); + const fileRoute = (0, import_slash.default)(import_path2.default.join(route, removeExtension(f.name).replace(/^index$/, ""))); + if (f.isDirectory()) { + if (fileRoute === "/api") + return null; + const { items: children } = yield collectFiles(filePath, fileRoute, fileMap); + if (!children || !children.length) + return null; + return { + name: f.name, + children, + route: fileRoute + }; + } else if (extension.test(f.name)) { + const locale = getLocaleFromFilename(f.name); + const fileContents = yield import_util.default.promisify(readFile)(filePath, "utf-8"); + const { data } = (0, import_gray_matter.default)(fileContents); + if (Object.keys(data).length) { + fileMap[filePath] = { + name: removeExtension(f.name), + route: fileRoute, + frontMatter: data, + locale + }; + return fileMap[filePath]; + } + fileMap[filePath] = { + name: removeExtension(f.name), + route: fileRoute, + locale + }; + return fileMap[filePath]; + } else if (metaExtension.test(f.name)) { + const content = yield import_util.default.promisify(readFile)(filePath, "utf-8"); + const meta = parseJsonFile(content, filePath); + const locale = f.name.match(metaExtension)[1]; + fileMap[filePath] = { + name: "meta.json", + meta, + locale + }; + return fileMap[filePath]; + } + })))).filter(Boolean); + return { + items, + fileMap + }; + }); +} +var PageMapCache = class { + constructor() { + this.cache = { items: [], fileMap: {} }; + } + set(data) { + this.cache.items = data.items; + this.cache.fileMap = data.fileMap; + } + clear() { + this.cache = null; + } + get() { + return this.cache; + } +}; +var pageMapCache = new PageMapCache(); +var NextraPlugin = class { + apply(compiler) { + compiler.hooks.beforeCompile.tapAsync("NextraPlugin", (_, callback) => __async(this, null, function* () { + const result = yield collectFiles(import_path2.default.join(process.cwd(), findPagesDir()), "/"); + pageMapCache.set(result); + callback(); + })); + } +}; // src/index.js var defaultExtensions = ["js", "jsx", "ts", "tsx"]; @@ -38,18 +209,22 @@ module.exports = (...args) => (nextConfig = {}) => { return Object.assign({}, nextConfig, { pageExtensions, webpack(config, options) { + const nextra = new NextraPlugin(); + if (!config.plugins) { + config.plugins = [nextra]; + } else { + config.plugins.push(nextra); + } config.module.rules.push({ test: markdownExtensionTest, use: [ options.defaultLoaders.babel, { loader: "nextra/loader", - options: __spreadProps(__spreadValues({}, nextraConfig), { locales, defaultLocale }) + options: __spreadProps(__spreadValues({}, nextraConfig), { locales, defaultLocale, pageMapCache }) } ] }); - if (!config.plugins) - config.plugins = []; if (typeof nextConfig.webpack === "function") { return nextConfig.webpack(config, options); } diff --git a/.yalc/nextra/dist/loader.mjs b/.yalc/nextra/dist/loader.mjs index b98a667..7f1561e 100644 --- a/.yalc/nextra/dist/loader.mjs +++ b/.yalc/nextra/dist/loader.mjs @@ -39,45 +39,15 @@ var __async = (__this, __arguments, generator) => { }; // src/loader.ts -import path2 from "path"; -import gracefulFs2 from "graceful-fs"; -import grayMatter from "gray-matter"; -import slash from "slash"; - -// src/filter-route-locale.ts -function filterRouteLocale(pageMap, locale, defaultLocale) { - const isDefaultLocale = !locale || locale === defaultLocale; - const filteredPageMap = []; - const fallbackPages = {}; - for (const page of pageMap) { - if (page.children) { - filteredPageMap.push(__spreadProps(__spreadValues({}, page), { - children: filterRouteLocale(page.children, locale, defaultLocale) - })); - continue; - } - const localDoesMatch = !page.locale && isDefaultLocale || page.locale === locale || page.name === "meta.json"; - if (localDoesMatch) { - fallbackPages[page.name] = null; - filteredPageMap.push(page); - } else { - if (fallbackPages[page.name] !== null && (!page.locale || page.locale === defaultLocale)) { - fallbackPages[page.name] = page; - } - } - } - for (const name2 in fallbackPages) { - if (fallbackPages[name2]) { - filteredPageMap.push(fallbackPages[name2]); - } - } - return filteredPageMap; -} +import path4 from "path"; +import grayMatter2 from "gray-matter"; +import slash2 from "slash"; // src/content-dump.ts -import gracefulFs from "graceful-fs"; +import fs from "graceful-fs"; import path from "path"; -var { promises: fs, statSync, mkdirSync } = gracefulFs; +import { promisify } from "util"; +var { statSync, mkdirSync } = fs; var assetDir = path.join(process.cwd(), "public", ".nextra"); var asset = {}; try { @@ -101,7 +71,7 @@ function addPage(_0) { data: structurizedData }; const dataFile = path.join(assetDir, `data-${fileLocale}.json`); - yield fs.writeFile(dataFile, JSON.stringify(asset[fileLocale])); + yield promisify(fs.writeFile)(dataFile, JSON.stringify(asset[fileLocale])); }); } @@ -118,12 +88,12 @@ function removeExtension(name2) { const match = name2.match(/^([^.]+)/); return match !== null ? match[1] : ""; } -var parseJsonFile = (content, path3) => { +var parseJsonFile = (content, path5) => { let parsed = {}; try { parsed = JSON.parse(content); } catch (err) { - console.error(`Error parsing ${path3}, make sure it's a valid JSON + console.error(`Error parsing ${path5}, make sure it's a valid JSON ` + err); } return parsed; @@ -138,9 +108,9 @@ var existsSync = (f) => { }; // src/compile.ts -import { compile } from "@mdx-js/mdx"; +import { createProcessor } from "@mdx-js/mdx"; import remarkGfm from "remark-gfm"; -import rehypePrettyCode from "@shuding/rehype-pretty-code"; +import rehypePrettyCode from "rehype-pretty-code"; // src/mdx-plugins/static-image.js var relative = /^\.{1,2}\//; @@ -252,13 +222,24 @@ function visit2(node, handler) { function getFlattenedValue(node) { return node.children.map((child) => "children" in child ? getFlattenedValue(child) : "value" in child ? child.value : "").join(""); } -function getHeaders(headers) { - return () => (tree, _file, done) => { +function remarkHeadings(headers) { + const data = this.data(); + return (tree, _file, done) => { visit2(tree, (node) => { const heading = __spreadProps(__spreadValues({}, node), { value: getFlattenedValue(node) }); - headers.push(heading); + const headingMeta = data.headingMeta; + if (node.depth === 1) { + headingMeta.hasH1 = true; + if (Array.isArray(node.children) && node.children.length === 1) { + const child = node.children[0]; + if (child.type === "text") { + headingMeta.titleText = child.value; + } + } + } + headingMeta.headings.push(heading); }); done(); }; @@ -565,6 +546,14 @@ var theme_default = { }; // src/compile.ts +var createCompiler = (mdxOptions) => { + const compiler = createProcessor(mdxOptions); + compiler.data("headingMeta", { + hasH1: false, + headings: [] + }); + return compiler; +}; var rehypePrettyCodeOptions = { theme: theme_default, onVisitHighlightedLine(node) { @@ -585,15 +574,14 @@ function compileMdx(_0) { unstable_staticImage: false, unstable_contentDump: false }) { - let headings = []; let structurizedData = {}; - const result = yield compile(source, { + const compiler = createCompiler({ jsx: true, providerImportSource: "@mdx-js/react", remarkPlugins: [ ...mdxOptions.remarkPlugins || [], remarkGfm, - getHeaders(headings), + remarkHeadings, ...nextraOptions.unstable_staticImage ? [remarkStaticImage] : [], ...nextraOptions.unstable_contentDump ? [structurize_default(structurizedData)] : [] ].filter(Boolean), @@ -604,41 +592,51 @@ function compileMdx(_0) { attachCodeMeta ].filter(Boolean) }); - if (Array.isArray(headings) && headings.length > 0) { - const h1 = headings.find((v) => v.depth === 1); - if (h1 && Array.isArray(h1.children) && h1.children.length === 1) { - const child = h1.children[0]; - if (child.type === "text") { - return { - result: String(result), - titleText: child.value, - headings, - hasH1: true, - structurizedData - }; - } - } - return { - result: String(result), - headings, - hasH1: h1 ? true : false, - structurizedData - }; - } - return { - result: String(result), - hasH1: false, + const result = yield compiler.process(source); + return __spreadProps(__spreadValues({ + result: String(result) + }, compiler.data("headingMeta")), { structurizedData - }; + }); }); } -// src/loader.ts -var { promises: fs3 } = gracefulFs2; +// src/page-map.ts +import path2 from "path"; + +// src/filter-route-locale.ts +function filterRouteLocale(pageMap, locale, defaultLocale) { + const isDefaultLocale = !locale || locale === defaultLocale; + const filteredPageMap = []; + const fallbackPages = {}; + for (const page of pageMap) { + if (page.children) { + filteredPageMap.push(__spreadProps(__spreadValues({}, page), { + children: filterRouteLocale(page.children, locale, defaultLocale) + })); + continue; + } + const localDoesMatch = !page.locale && isDefaultLocale || page.locale === locale || page.name === "meta.json"; + if (localDoesMatch) { + fallbackPages[page.name] = null; + filteredPageMap.push(page); + } else { + if (fallbackPages[page.name] !== null && (!page.locale || page.locale === defaultLocale)) { + fallbackPages[page.name] = page; + } + } + } + for (const name2 in fallbackPages) { + if (fallbackPages[name2]) { + filteredPageMap.push(fallbackPages[name2]); + } + } + return filteredPageMap; +} + +// src/page-map.ts var extension = /\.mdx?$/; var metaExtension = /meta\.?([a-zA-Z-]+)?\.json/; -var isProductionBuild = process.env.NODE_ENV === "production"; -var indexContentEmitted = /* @__PURE__ */ new Set(); function findPagesDir(dir = process.cwd()) { if (existsSync(path2.join(dir, "pages"))) return "pages"; @@ -646,98 +644,120 @@ function findPagesDir(dir = process.cwd()) { return "src/pages"; throw new Error("> Couldn't find a `pages` directory. Please create one under the project root"); } -var pagesDir = findPagesDir(); -function getPageMap(currentResourcePath) { - return __async(this, null, function* () { - const activeRouteLocale = getLocaleFromFilename(currentResourcePath); - let activeRoute = ""; - let activeRouteTitle = ""; - function getFiles(dir, route) { - return __async(this, null, function* () { - const files = yield fs3.readdir(dir, { withFileTypes: true }); - let dirMeta = {}; - const items = (yield Promise.all(files.map((f) => __async(this, null, function* () { - const filePath = path2.resolve(dir, f.name); - const fileRoute = slash(path2.join(route, removeExtension(f.name).replace(/^index$/, ""))); - if (f.isDirectory()) { - if (fileRoute === "/api") - return null; - const children = yield getFiles(filePath, fileRoute); - if (!children || !children.length) - return null; - return { - name: f.name, - children, - route: fileRoute - }; - } else if (extension.test(f.name)) { - const locale = getLocaleFromFilename(f.name); - if (filePath === currentResourcePath) { - activeRoute = fileRoute; - } - const fileContents = yield fs3.readFile(filePath, "utf-8"); - const { data } = grayMatter(fileContents); - if (Object.keys(data).length) { - return { - name: removeExtension(f.name), - route: fileRoute, - frontMatter: data, - locale - }; - } - return { - name: removeExtension(f.name), - route: fileRoute, - locale - }; - } else if (metaExtension.test(f.name)) { - const content = yield fs3.readFile(filePath, "utf-8"); - const meta = parseJsonFile(content, filePath); - const locale = f.name.match(metaExtension)[1]; - if (!activeRouteLocale || locale === activeRouteLocale) { - dirMeta = meta; - } - return { - name: "meta.json", - meta, - locale - }; - } - })))).map((item) => { - if (!item) - return; - if (item.route === activeRoute) { - const metadata = dirMeta[item.name]; - activeRouteTitle = (typeof metadata === "string" ? metadata : metadata == null ? void 0 : metadata.title) || item.name; - } - return __spreadValues({}, item); - }).filter(Boolean); - return items; - }); - } +function getPageMap(currentResourcePath, pageMaps, fileMap, defaultLocale) { + var _a, _b; + const activeRouteLocale = getLocaleFromFilename(currentResourcePath); + const pageItem = fileMap[currentResourcePath]; + const metaName = path2.dirname(currentResourcePath); + const pageMeta = (_b = (_a = fileMap[`${metaName}/meta.${activeRouteLocale}.json`]) == null ? void 0 : _a.meta) == null ? void 0 : _b[pageItem.name]; + const title = (typeof pageMeta === "string" ? pageMeta : pageMeta == null ? void 0 : pageMeta.title) || pageItem.name; + if (activeRouteLocale) { return [ - yield getFiles(path2.join(process.cwd(), pagesDir), "/"), - activeRoute, - activeRouteTitle + filterRouteLocale(pageMaps, activeRouteLocale, defaultLocale), + fileMap[currentResourcePath].route, + title ]; + } + return [pageMaps, fileMap[currentResourcePath].route, title]; +} + +// src/plugin.ts +import fs3 from "graceful-fs"; +import util from "util"; +import path3 from "path"; +import slash from "slash"; +import grayMatter from "gray-matter"; +var { readdir, readFile } = fs3; +function collectFiles(_0) { + return __async(this, arguments, function* (dir, route = "/", fileMap = {}) { + const files = yield util.promisify(readdir)(dir, { withFileTypes: true }); + const items = (yield Promise.all(files.map((f) => __async(this, null, function* () { + const filePath = path3.resolve(dir, f.name); + const fileRoute = slash(path3.join(route, removeExtension(f.name).replace(/^index$/, ""))); + if (f.isDirectory()) { + if (fileRoute === "/api") + return null; + const { items: children } = yield collectFiles(filePath, fileRoute, fileMap); + if (!children || !children.length) + return null; + return { + name: f.name, + children, + route: fileRoute + }; + } else if (extension.test(f.name)) { + const locale = getLocaleFromFilename(f.name); + const fileContents = yield util.promisify(readFile)(filePath, "utf-8"); + const { data } = grayMatter(fileContents); + if (Object.keys(data).length) { + fileMap[filePath] = { + name: removeExtension(f.name), + route: fileRoute, + frontMatter: data, + locale + }; + return fileMap[filePath]; + } + fileMap[filePath] = { + name: removeExtension(f.name), + route: fileRoute, + locale + }; + return fileMap[filePath]; + } else if (metaExtension.test(f.name)) { + const content = yield util.promisify(readFile)(filePath, "utf-8"); + const meta = parseJsonFile(content, filePath); + const locale = f.name.match(metaExtension)[1]; + fileMap[filePath] = { + name: "meta.json", + meta, + locale + }; + return fileMap[filePath]; + } + })))).filter(Boolean); + return { + items, + fileMap + }; }); } -function loader_default(source) { +var PageMapCache = class { + constructor() { + this.cache = { items: [], fileMap: {} }; + } + set(data) { + this.cache.items = data.items; + this.cache.fileMap = data.fileMap; + } + clear() { + this.cache = null; + } + get() { + return this.cache; + } +}; +var pageMapCache = new PageMapCache(); + +// src/loader.ts +var extension2 = /\.mdx?$/; +var isProductionBuild = process.env.NODE_ENV === "production"; +var indexContentEmitted = /* @__PURE__ */ new Set(); +function loader_default(source, callback) { return __async(this, null, function* () { - const callback = this.async(); this.cacheable(true); if (!isProductionBuild) { - this.addContextDependency(path2.resolve(pagesDir)); + this.addContextDependency(path4.resolve(findPagesDir())); } const options = this.getOptions(); let { theme, themeConfig, - locales, defaultLocale, unstable_contentDump, unstable_staticImage, - mdxOptions + mdxOptions, + pageMapCache: pageMapCache2 } = options; const { resourcePath } = this; const filename = resourcePath.slice(resourcePath.lastIndexOf("/") + 1); @@ -745,21 +765,25 @@ function loader_default(source) { if (!theme) { throw new Error("No Nextra theme found!"); } - let [pageMap, route, title] = yield getPageMap(resourcePath); - if (locales) { - const locale = getLocaleFromFilename(filename); - if (locale) { - pageMap = filterRouteLocale(pageMap, locale, defaultLocale); - } + let pageMapResult, fileMap; + if (isProductionBuild) { + const data2 = pageMapCache2.get(); + pageMapResult = data2.items; + fileMap = data2.fileMap; + } else { + const data2 = yield collectFiles(path4.join(process.cwd(), findPagesDir()), "/"); + pageMapResult = data2.items; + fileMap = data2.fileMap; } - let { data, content } = grayMatter(source); + const [pageMap, route, title] = getPageMap(resourcePath, pageMapResult, fileMap, defaultLocale); + let { data, content } = grayMatter2(source); let layout = theme; let layoutConfig = themeConfig || null; if (theme.startsWith(".") || theme.startsWith("/")) { - layout = path2.resolve(theme); + layout = path4.resolve(theme); } if (layoutConfig) { - layoutConfig = slash(path2.resolve(layoutConfig)); + layoutConfig = slash2(path4.resolve(layoutConfig)); } if (isProductionBuild && indexContentEmitted.has(filename)) { unstable_contentDump = false; @@ -771,7 +795,7 @@ function loader_default(source) { content = result; content = content.replace("export default MDXContent;", ""); if (unstable_contentDump) { - if (extension.test(filename)) { + if (extension2.test(filename)) { yield addPage({ fileLocale, route, @@ -787,8 +811,8 @@ import { withSSG } from 'nextra/ssg' ${layoutConfig ? `import layoutConfig from '${layoutConfig}'` : ""}`; const suffix = `export default function NextraPage (props) { return withSSG(withLayout({ - filename: "${slash(filename)}", - route: "${slash(route)}", + filename: "${slash2(filename)}", + route: "${slash2(route)}", meta: ${JSON.stringify(data)}, pageMap: ${JSON.stringify(pageMap)}, titleText: ${JSON.stringify(titleText)}, diff --git a/.yalc/nextra/dist/page-map.d.ts b/.yalc/nextra/dist/page-map.d.ts new file mode 100644 index 0000000..613c963 --- /dev/null +++ b/.yalc/nextra/dist/page-map.d.ts @@ -0,0 +1,5 @@ +import { PageMapItem } from './types'; +export declare const extension: RegExp; +export declare const metaExtension: RegExp; +export declare function findPagesDir(dir?: string): string; +export declare function getPageMap(currentResourcePath: string, pageMaps: PageMapItem[], fileMap: Record, defaultLocale: string): any[]; diff --git a/.yalc/nextra/dist/plugin.d.ts b/.yalc/nextra/dist/plugin.d.ts new file mode 100644 index 0000000..8d83608 --- /dev/null +++ b/.yalc/nextra/dist/plugin.d.ts @@ -0,0 +1,27 @@ +import { PageMapItem } from './types'; +import { Compiler } from 'webpack'; +export declare function collectFiles(dir: string, route?: string, fileMap?: Record): Promise<{ + items: PageMapItem[]; + fileMap: Record; +}>; +export declare class PageMapCache { + cache: { + items: PageMapItem[]; + fileMap: Record; + } | null; + constructor(); + set(data: { + items: PageMapItem[]; + fileMap: Record; + }): void; + clear(): void; + get(): { + items: PageMapItem[]; + fileMap: Record; + } | null; +} +export declare const pageMapCache: PageMapCache; +declare class NextraPlugin { + apply(compiler: Compiler): void; +} +export { NextraPlugin }; diff --git a/.yalc/nextra/dist/types.d.ts b/.yalc/nextra/dist/types.d.ts index 47555c5..a80e8e4 100644 --- a/.yalc/nextra/dist/types.d.ts +++ b/.yalc/nextra/dist/types.d.ts @@ -1,5 +1,6 @@ import { Heading as MDASTHeading } from 'mdast'; import { ProcessorOptions } from '@mdx-js/mdx'; +import { PageMapCache } from './plugin'; export interface LoaderOptions { theme: Theme; themeConfig: string; @@ -8,6 +9,7 @@ export interface LoaderOptions { unstable_staticImage: boolean; unstable_contentDump: boolean; mdxOptions: Pick; + pageMapCache: PageMapCache; } export interface PageMapItem { name: string; diff --git a/.yalc/nextra/dist/utils.d.ts b/.yalc/nextra/dist/utils.d.ts new file mode 100644 index 0000000..adf3d93 --- /dev/null +++ b/.yalc/nextra/dist/utils.d.ts @@ -0,0 +1,5 @@ +export declare function getLocaleFromFilename(name: string): string | undefined; +export declare function removeExtension(name: string): string; +export declare function getFileName(resourcePath: string): string; +export declare const parseJsonFile: (content: string, path: string) => Record; +export declare const existsSync: (f: string) => boolean; diff --git a/.yalc/nextra/package.json b/.yalc/nextra/package.json index 15c2f4f..7861de5 100644 --- a/.yalc/nextra/package.json +++ b/.yalc/nextra/package.json @@ -17,21 +17,23 @@ "build": "node scripts/build.js", "dev": "node scripts/dev.js", "types": "tsc --project tsconfig.type.json", - "prepublishOnly": "rm -rf dist && yarn build & yarn types" + "test": "vitest run", + "prepublishOnly": "rm -rf dist && yarn build && yarn types" }, "dependencies": { "@mdx-js/mdx": "^2.0.0-rc.2", - "@shuding/rehype-pretty-code": "^0.0.1", "github-slugger": "^1.4.0", "graceful-fs": "^4.2.6", "gray-matter": "^4.0.3", + "rehype-pretty-code": "^0.0.8", "remark-gfm": "^3.0.1", "shiki": "0.10.0", "slash": "^3.0.0", - "typescript": "^4.5.2" + "typescript": "^4.5.2", + "vitest": "^0.0.141" }, "peerDependencies": { "react": ">=16.13.1" }, - "yalcSig": "68fdd3fa4f2b6dd8521ede4a271ff25f" + "yalcSig": "49c130e678dae63712a78061e6b30766" } diff --git a/.yalc/nextra/yalc.sig b/.yalc/nextra/yalc.sig index e76cd18..de6d814 100644 --- a/.yalc/nextra/yalc.sig +++ b/.yalc/nextra/yalc.sig @@ -1 +1 @@ -68fdd3fa4f2b6dd8521ede4a271ff25f \ No newline at end of file +49c130e678dae63712a78061e6b30766 \ No newline at end of file diff --git a/components/Callout.tsx b/components/Callout.tsx index a8a7178..8bf5dae 100644 --- a/components/Callout.tsx +++ b/components/Callout.tsx @@ -2,11 +2,11 @@ import React from "react"; const themes = { default: - "bg-orange-100 text-orange-800 dark:text-orange-300 dark:bg-orange-200 dark:bg-opacity-10", + "bg-orange-50 border border-orange-100 text-orange-800 dark:text-orange-300 dark:bg-orange-400 dark:border-orange-400 dark:bg-opacity-20 dark:border-opacity-30", error: - "bg-red-200 text-red-900 dark:text-red-200 dark:bg-red-600 dark:bg-opacity-30", + "bg-red-100 border border-red-200 text-red-900 dark:text-red-200 dark:bg-red-900 dark:bg-opacity-30 dark:border-opacity-30", warning: - "bg-yellow-200 text-yellow-900 dark:text-yellow-200 dark:bg-yellow-700 dark:bg-opacity-30", + "bg-yellow-50 border border-yellow-100 text-yellow-900 dark:text-yellow-200 dark:bg-yellow-700 dark:bg-opacity-30", }; interface CalloutProps { diff --git a/next.config.js b/next.config.js index 0fcbd45..0fa161d 100644 --- a/next.config.js +++ b/next.config.js @@ -2,6 +2,7 @@ const withNextra = require("nextra")({ theme: "nextra-renderlesskit-theme-docs", themeConfig: "./theme.config.js", unstable_stork: false, + unstable_contentDump: true, unstable_staticImage: true, }); diff --git a/package.json b/package.json index 687dcd1..d09b534 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "nextra-renderlesskit-theme-docs": "link:.yalc/nextra-renderlesskit-theme-docs", "react": "17.0.2", "react-dom": "17.0.2", + "react-innertext": "^1.1.5", "react-live": "2.2.3", "twind": "^0.16.16" }, diff --git a/postcss.config.js b/postcss.config.js index 689a661..6c4b8db 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,5 +1,5 @@ // If you want to use other PostCSS plugins, see the following: // https://tailwindcss.com/docs/using-with-preprocessors module.exports = { - plugins: ["tailwindcss", "autoprefixer"], + plugins: ["tailwindcss/nesting", "tailwindcss", "autoprefixer"], }; diff --git a/public/.nextra/data-default.json b/public/.nextra/data-default.json new file mode 100644 index 0000000..35ed91a --- /dev/null +++ b/public/.nextra/data-default.json @@ -0,0 +1,67 @@ +{ + "/": { + "title": "index", + "data": { + "": "A React UI library built using low level headless\nRenderleskit components &\nTailwind." + } + }, + "/docs/getting-started": { + "title": "getting-started", + "data": { + "": "Renderlesskit uses tailwind to provide better styling at one place, so you'll\nneed to setup a tailwind project using thier\ninstallation guide.", + "installation#Installation": "\nnpm i @renderlesskit/react-tailwind\n\nyarn add @renderlesskit/react-tailwind\n", + "tailwind-setup#Tailwind setup": "After setting up tailwind in your project, import our preset function inside\nyour tailwind.config.js and use it.\nmodule.exports = preset({\n presets: [require(\"@renderlesskit/react-tailwind/preset\")],\n purge: [\n // Make sure to add this purge to generate the component's default styling\n \"node_modules/@renderlesskit/react-tailwind/**/*\",\n ],\n});\n\nCheckout our integration guides for CRA & Next.js\n", + "setting-up-provider#Setting up provider": "Renderlesskit needs a theme provider to pass down all the neccesary styling for\nthe components.Go to the root of your application and add this:\nimport * as React from \"react\";\n// 1. import `RenderlesskitProvider` component\nimport { RenderlesskitProvider } from \"@renderlesskit/react-tailwind\";\n\nfunction App() {\n // 2. Use at the root of your app\n return (\n \n \n \n );\n}\n" + } + }, + "/docs/components/primitives/box": { + "title": "box", + "data": { + "": "Box is the most abstract component on top of which all other Renderlesskit\ncomponents are built. It uses reakit's Role\ncomponent internally.\n\n", + "imports#Imports": "\nimport { Box } from \"@renderlesskit/react-tailwind\";\n", + "usage#Usage": "\n\n", + "as-prop#As prop": "By using the as prop you can control which element should be rendered, if you\nare using typescript Box is fully typesafe too.You can either pass string elements or pass ReactNodes to the as prop.Follows all the Reakit composition rules\nReakit Composition Docs\n\n \n Link\n \n Renderlesskit Button\n\n", + "card-example#Card example": "\n\n \n \n Total Subscribers\n \n \n 71,897\n \n \n \n \n Avg. Open Rate\n \n \n 58.16%\n \n \n\n", + "api-reference#API Reference": "\n\n" + } + }, + "/guides/usage-with-cra": { + "title": "usage-with-cra", + "data": { + "": "First let's create a new CRA project.\nnpx create-react-app my-website\n", + "setup-tailwindcss#Setup TailwindCSS": "To get started with renderlesskit first step is to setup Tailwind CSS in your\nCRA project. Refer to tailwind documentation for\nSetting up Tailwind CSS in a Create React App projectAfter setting up tailwind in your project, all you need to do inside your\ntailwind.config.js is import our preset function and use it.\nmodule.exports = preset({\n presets: [require(\"@renderlesskit/react-tailwind/preset\")],\n purge: [\n // Make sure to add this purge to generate the component's default styling\n \"node_modules/@renderlesskit/react-tailwind/**/*\",\n ],\n});\n\npresets merges your taiwind config with renderlesskit's internal tailwind\nconfigs and enables certain plugins\n", + "renderlesskit-setup#Renderlesskit Setup": "After following all the steps and correctly setting up tailwind, now let's add\nthe RenderlesskitProviderFollow Setting Up Provider to setup\nthe provider for your app.Follow Extending Theme Tokens to extend\nyour theme tokens", + "typescript-setup#TypeScript Setup": "Follow TypeScript Guide" + } + }, + "/guides/usage-with-nextjs": { + "title": "usage-with-nextjs", + "data": { + "": "First let's create a new Nextjs project.\nnpx create-next-app my-website\n", + "setup-tailwindcss#Setup TailwindCSS": "To get started with renderlesskit first step is to setup Tailwind CSS in your\nCRA project. Refer to tailwind documentation for\nSetting up Tailwind CSS in a Next.js projectAfter setting up tailwind in your project, all you need to do inside your\ntailwind.config.js is import our preset function and use it.\nmodule.exports = preset({\n presets: [require(\"@renderlesskit/react-tailwind/preset\")],\n purge: [\n // Make sure to add this purge to generate the component's default styling\n \"node_modules/@renderlesskit/react-tailwind/**/*\",\n ],\n});\n\npresets merges your taiwind config with renderlesskit's internal tailwind\nconfigs and enables certain plugins\n", + "renderlesskit-setup#Renderlesskit Setup": "After following all the steps and correctly setting up tailwind, now let's add\nthe RenderlesskitProviderFollow Setting Up Provider", + "typescript-setup#TypeScript Setup": "Follow TypeScript Guide" + } + }, + "/guides/typescript-guide": { + "title": "typescript-guide", + "data": { + "": "Renderlesskit provides a full typesafe theming system which can help you get\nbetter intellisense while working with the components.In this guide we are going to see how to setup TypeScript, and see how we can\nadd extra typesafe variants to component themes.First, we need to extract our custom theme object into it's own file so that\nwe can infer it's types.", + "creating-theme-file#Creating theme file": "extendTheme is an\nidentity function\nwhich helps us infer the type of the customTheme, and provide intellisense.\n// renderlesskit.config.ts\nimport { extendTheme } from \"@renderlesski/react-tailwind\";\n\nexport const customTheme = extendTheme({\n extend: {\n buttton: {\n variants: {\n red: \"bg-red-300 text-white\",\n },\n },\n },\n});\n", + "creating-declaration-file#Creating declaration file": "TypeScript definitions for the Renderlesskit's theme can be extended by using\ndeclaration merging.\nSo the first step is creating a declarations file. Let's name it global.d.ts\nfor example.\n// global.d.ts\nimport { DefaultTheme } from \"@renderlesskit/react-tailwind\";\nimport { customTheme } from \"./my-theme\";\n\ntype UserTheme = typeof customTheme.extend;\n\ndeclare global {\n namespace Renderlesskit {\n interface Theme {\n components: MergeTheme;\n }\n }\n}\nFor CRA projects you can put this content inside react-app-env.d.tsThats It!Now if you can create a new Button & you'll see that there is a new variant\ncalled red\n\n\n\n" + } + }, + "/docs/components/primitives/button": { + "title": "button", + "data": { + "": "The Button component can be used to trigger various kinds of user events such as\nsuch as submitting a form, opening a dialog, canceling an action, or performing\na delete operation.\n\n", + "imports#Imports": "\nimport { Button, ButtonGroup, IconButton } from \"@renderlesskit/react-tailwind\";\n\nButton: The button which has prefix/suffix icons support, variants & size.\nButtonGroup: Used to group related buttons together in a horizontal stack,\ncan also be set as attached\nIconButton: Accessible button to show an icon\n\n", + "usage#Usage": "\n\n", + "button-sizes#Button sizes": "Button has 4 sizes sm md lg xl\n
\n \n \n \n \n
\n", + "button-variants#Button variants": "Button has 4 variants solid subtle outline ghost\n
\n \n \n \n \n
\n\nYou can add extra variants & sizes via the theme file. Checkout theming\nguide.\n", + "button-prefix-suffix--icononly#Button prefix, suffix & iconOnly": "You can pass iconOnly, prefix and suffix props to the button to append or\nprepend any content inside of button.\n
\n \n \n \n
\n\n
\n
\n \n \n \n \n
\n
\n \n \n \n \n
\n
\n", + "api-reference#API Reference": "", + "button#Button": "\n\n" + } + } +} diff --git a/tailwind.config.js b/tailwind.config.js index 436848b..f28c310 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,3 +1,5 @@ +const colors = require("tailwindcss/colors"); + module.exports = { presets: [require("@renderlesskit/react-tailwind/preset")], content: [ @@ -8,6 +10,19 @@ module.exports = { ], darkMode: "class", theme: { + colors: { + transparent: "transparent", + current: "currentColor", + black: "#000", + white: "#fff", + gray: colors.gray, + slate: colors.slate, + neutral: colors.neutral, + red: colors.red, + orange: colors.orange, + yellow: colors.yellow, + prime: colors.blue, + }, extend: { colors: { dark: "#111", diff --git a/theme.config.js b/theme.config.js index 28fc4ab..eea223d 100644 --- a/theme.config.js +++ b/theme.config.js @@ -8,8 +8,10 @@ export default { // Docs Path in the above repo titleSuffix: " – Timeless", search: true, - UNSTABLE_stork: false, + unstable_flexsearch: true, floatTOC: true, + feedbackLink: "Question? Give us feedback →", + feedbackLabels: "feedback", logo: ( RenderlessKit React Tailwind @@ -25,7 +27,7 @@ export default { ), footer: true, - footerEditLink: "Edit this page on GitHub", + footerEditLink: "Edit this page on GitHub →", footerText: <>MIT {new Date().getFullYear()} © Timeless., darkMode: true, nextLinks: true, diff --git a/tsconfig.json b/tsconfig.json index c60aa9d..e6bcdec 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,6 +21,6 @@ "@/styles/*": ["styles/*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "pages/_middleware.js"], "exclude": ["node_modules"] } diff --git a/yalc.lock b/yalc.lock index fdcce39..dfd4df0 100644 --- a/yalc.lock +++ b/yalc.lock @@ -2,11 +2,11 @@ "version": "v1", "packages": { "nextra-renderlesskit-theme-docs": { - "signature": "c3783295e317c37bfdce305433552e0b", + "signature": "5c59a22afbd167bc63e999604e286788", "link": true }, "nextra": { - "signature": "68fdd3fa4f2b6dd8521ede4a271ff25f", + "signature": "49c130e678dae63712a78061e6b30766", "link": true, "replaced": "2.0.0-beta.5" } diff --git a/yarn.lock b/yarn.lock index 058cb22..4f88693 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1268,6 +1268,16 @@ compute-scroll-into-view "1.0.14" copy-to-clipboard "3.3.1" +"@chakra-ui/hooks@^1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-1.7.2.tgz#64341c06b141cdc4c08ccab0308b46b20c11a99b" + integrity sha512-XJnya9ugAPYUedtQULKaLYBezE9cZMOkDm0MQl7FEuJKZ9ocHD6Pwpwf9Z03R91XQmcNL8gZ1NS0GT9v/xNl3Q== + dependencies: + "@chakra-ui/react-utils" "1.2.1" + "@chakra-ui/utils" "1.9.1" + compute-scroll-into-view "1.0.14" + copy-to-clipboard "3.3.1" + "@chakra-ui/react-utils@1.2.1", "@chakra-ui/react-utils@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@chakra-ui/react-utils/-/react-utils-1.2.1.tgz#e06c8987c63ceab3da3ddd53503bf45a893179a5" @@ -1555,6 +1565,11 @@ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== +"@headlessui/react@^1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.4.3.tgz#f77c6bb5cb4a614a5d730fb880cab502d48abf37" + integrity sha512-n2IQkaaw0aAAlQS5MEXsM4uRK+w18CrM72EqnGRl/UBOQeQajad8oiKXR9Nk15jOzTFQjpxzrZMf1NxHidFBiw== + "@humanwhocodes/config-array@^0.9.2": version "0.9.2" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" @@ -1786,14 +1801,6 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@mdx-js/loader@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-2.0.0-rc.2.tgz#f9da795f51acfb19f41e7e1286de962e01cc8495" - integrity sha512-cdOV/RZI0/5OnLwBjChvF2UewSuR8L39pZ+/5s/GAigIlzoef169S87Cn2osUabj6wkdWe+sb+4pfcD0x0o5Ig== - dependencies: - "@mdx-js/mdx" "^2.0.0-rc.2" - source-map "^0.7.0" - "@mdx-js/mdx@^2.0.0-rc.2": version "2.0.0-rc.2" resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-2.0.0-rc.2.tgz#46f343030539717adffd5f7bcb4f97325b31de7b" @@ -2275,7 +2282,7 @@ conventional-recommended-bump "^6.1.0" prepend-file "^2.0.0" -"@renderlesskit/react-tailwind@0.0.1-alpha.37": +"@renderlesskit/react-tailwind@0.0.1-alpha.37", "@renderlesskit/react-tailwind@^0.0.1-alpha.37": version "0.0.1-alpha.37" resolved "https://registry.yarnpkg.com/@renderlesskit/react-tailwind/-/react-tailwind-0.0.1-alpha.37.tgz#2cf69b70e009a53ac88520ae3f4efe83c8426699" integrity sha512-iALqm4pQiu9gIsLMIA8P+uFDoPAVFZ/gRwboE6u07D9fc8emg3V9CeUCiZsOjrnXRICmSCAAeuKkT6ePDG/N8Q== @@ -2323,11 +2330,6 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@sindresorhus/is@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" - integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== - "@sindresorhus/is@^4.0.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.2.0.tgz#667bfc6186ae7c9e0b45a08960c551437176e1ca" @@ -2492,6 +2494,18 @@ "@types/node" "*" "@types/responselike" "*" +"@types/chai-subset@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.3.tgz#97893814e92abd2c534de422cb377e0e0bdaac94" + integrity sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw== + dependencies: + "@types/chai" "*" + +"@types/chai@*", "@types/chai@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.0.tgz#23509ebc1fa32f1b4d50d6a66c4032d5b8eaabdc" + integrity sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw== + "@types/debug@^4.0.0": version "4.1.7" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" @@ -2989,13 +3003,6 @@ arch@^2.1.0: resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== -archive-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" - integrity sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA= - dependencies: - file-type "^4.2.0" - arg@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/arg/-/arg-1.0.0.tgz#444d885a4e25b121640b55155ef7cd03975d6050" @@ -3100,6 +3107,11 @@ assert@2.0.0: object-is "^1.0.1" util "^0.12.0" +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" @@ -3327,14 +3339,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bl@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" - integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -3500,29 +3504,6 @@ buble@0.19.6: regexpu-core "^4.2.0" vlq "^1.0.0" -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -3541,7 +3522,7 @@ buffer@5.6.0: base64-js "^1.0.2" ieee754 "^1.1.4" -buffer@^5.2.1, buffer@^5.5.0: +buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -3564,19 +3545,6 @@ cacheable-lookup@^5.0.3: resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== -cacheable-request@^2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" - integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= - dependencies: - clone-response "1.0.2" - get-stream "3.0.0" - http-cache-semantics "3.8.1" - keyv "3.0.0" - lowercase-keys "1.0.0" - normalize-url "2.0.1" - responselike "1.0.2" - cacheable-request@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" @@ -3655,6 +3623,18 @@ ccount@^2.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== +chai@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49" + integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.1" + type-detect "^4.0.5" + chalk@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" @@ -3735,6 +3715,11 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + chokidar@3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" @@ -3867,7 +3852,7 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clone-response@1.0.2, clone-response@^1.0.2: +clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= @@ -3940,11 +3925,6 @@ comma-separated-tokens@^2.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz#d4c25abb679b7751c880be623c1179780fe1dd98" integrity sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg== -commander@^2.8.1: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - commander@^8.3.0: version "8.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" @@ -4015,13 +3995,6 @@ constants-browserify@1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= -content-disposition@^0.5.2: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - conventional-changelog-angular@^5.0.11, conventional-changelog-angular@^5.0.12: version "5.0.13" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" @@ -4497,64 +4470,18 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" -decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" - integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== - dependencies: - file-type "^5.2.0" - is-stream "^1.1.0" - tar-stream "^1.5.2" - -decompress-tarbz2@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" - integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== - dependencies: - decompress-tar "^4.1.0" - file-type "^6.1.0" - is-stream "^1.1.0" - seek-bzip "^1.0.5" - unbzip2-stream "^1.0.9" - -decompress-targz@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" - integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== - dependencies: - decompress-tar "^4.1.1" - file-type "^5.2.0" - is-stream "^1.1.0" - -decompress-unzip@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" - integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= - dependencies: - file-type "^3.8.0" - get-stream "^2.2.0" - pify "^2.3.0" - yauzl "^2.4.2" - -decompress@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" - integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== - dependencies: - decompress-tar "^4.0.0" - decompress-tarbz2 "^4.0.0" - decompress-targz "^4.0.0" - decompress-unzip "^4.0.1" - graceful-fs "^4.1.10" - make-dir "^1.0.0" - pify "^2.3.0" - strip-dirs "^2.0.0" - dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -4776,23 +4703,6 @@ dot-prop@^5.1.0, dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -download@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/download/-/download-8.0.0.tgz#afc0b309730811731aae9f5371c9f46be73e51b1" - integrity sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA== - dependencies: - archive-type "^4.0.0" - content-disposition "^0.5.2" - decompress "^4.2.1" - ext-name "^5.0.0" - file-type "^11.1.0" - filenamify "^3.0.0" - get-stream "^4.1.0" - got "^8.3.1" - make-dir "^2.1.0" - p-event "^2.1.0" - pify "^4.0.1" - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -4843,7 +4753,7 @@ encoding@0.1.13: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -4909,6 +4819,114 @@ es6-object-assign@^1.1.0: resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= +esbuild-android-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" + integrity sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg== + +esbuild-darwin-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72" + integrity sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ== + +esbuild-darwin-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a" + integrity sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ== + +esbuild-freebsd-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" + integrity sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA== + +esbuild-freebsd-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" + integrity sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ== + +esbuild-linux-32@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" + integrity sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g== + +esbuild-linux-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" + integrity sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA== + +esbuild-linux-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" + integrity sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA== + +esbuild-linux-arm@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" + integrity sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA== + +esbuild-linux-mips64le@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" + integrity sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg== + +esbuild-linux-ppc64le@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" + integrity sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ== + +esbuild-netbsd-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" + integrity sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w== + +esbuild-openbsd-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" + integrity sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g== + +esbuild-sunos-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" + integrity sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw== + +esbuild-windows-32@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" + integrity sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw== + +esbuild-windows-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" + integrity sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ== + +esbuild-windows-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" + integrity sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA== + +esbuild@^0.13.12: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf" + integrity sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw== + optionalDependencies: + esbuild-android-arm64 "0.13.15" + esbuild-darwin-64 "0.13.15" + esbuild-darwin-arm64 "0.13.15" + esbuild-freebsd-64 "0.13.15" + esbuild-freebsd-arm64 "0.13.15" + esbuild-linux-32 "0.13.15" + esbuild-linux-64 "0.13.15" + esbuild-linux-arm "0.13.15" + esbuild-linux-arm64 "0.13.15" + esbuild-linux-mips64le "0.13.15" + esbuild-linux-ppc64le "0.13.15" + esbuild-netbsd-64 "0.13.15" + esbuild-openbsd-64 "0.13.15" + esbuild-sunos-64 "0.13.15" + esbuild-windows-32 "0.13.15" + esbuild-windows-64 "0.13.15" + esbuild-windows-arm64 "0.13.15" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -4919,7 +4937,7 @@ escape-goat@^2.0.0: resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -5229,11 +5247,6 @@ estree-util-build-jsx@^2.0.0: estree-util-is-identifier-name "^2.0.0" estree-walker "^3.0.0" -estree-util-is-identifier-name@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-1.1.0.tgz#2e3488ea06d9ea2face116058864f6370b37456d" - integrity sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ== - estree-util-is-identifier-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.0.tgz#e2d3d2ae3032c017b2112832bfc5d8ba938c8010" @@ -5335,21 +5348,6 @@ expect@^27.4.2: jest-message-util "^27.4.2" jest-regex-util "^27.4.0" -ext-list@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" - integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== - dependencies: - mime-db "^1.28.0" - -ext-name@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" - integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== - dependencies: - ext-list "^2.0.0" - sort-keys-length "^1.0.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -5416,13 +5414,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -5437,45 +5428,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-type@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-11.1.0.tgz#93780f3fed98b599755d846b99a1617a2ad063b8" - integrity sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g== - -file-type@^3.8.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" - integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= - -file-type@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" - integrity sha1-G2AOX8ofvcboDApwxxyNul95BsU= - -file-type@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" - integrity sha1-LdvqfHP/42No365J3DOMBYwritY= - -file-type@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" - integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== - -filename-reserved-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" - integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik= - -filenamify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-3.0.0.tgz#9603eb688179f8c5d40d828626dcbb92c3a4672c" - integrity sha512-5EFZ//MsvJgXjBAFJ+Bh2YaCTRF/VP1YOmGrgt+KJ4SFRLjI87EIdwLLuT6wQX0I4F9W41xutobzczjsOKlI/g== - dependencies: - filename-reserved-regex "^2.0.0" - strip-outer "^1.0.0" - trim-repeated "^1.0.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -5538,6 +5490,11 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== +flexsearch@^0.7.21: + version "0.7.21" + resolved "https://registry.yarnpkg.com/flexsearch/-/flexsearch-0.7.21.tgz#0f5ede3f2aae67ddc351efbe3b24b69d29e9d48b" + integrity sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg== + focus-visible@5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/focus-visible/-/focus-visible-5.2.0.tgz#3a9e41fccf587bd25dcc2ef045508284f0a4d6b3" @@ -5578,19 +5535,6 @@ framesync@5.3.0: dependencies: tslib "^2.1.0" -from2@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - fs-extra@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" @@ -5662,6 +5606,11 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" @@ -5698,19 +5647,11 @@ get-pkg-repo@^4.0.0: through2 "^2.0.0" yargs "^16.2.0" -get-stream@3.0.0, get-stream@^3.0.0: +get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -5792,7 +5733,7 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" -github-slugger@1.4.0: +github-slugger@1.4.0, github-slugger@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e" integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ== @@ -5909,29 +5850,6 @@ got@11.8.3: p-cancelable "^2.0.0" responselike "^2.0.0" -got@^8.3.1: - version "8.3.2" - resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" - integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== - dependencies: - "@sindresorhus/is" "^0.7.0" - cacheable-request "^2.1.1" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - into-stream "^3.1.0" - is-retry-allowed "^1.1.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - mimic-response "^1.0.0" - p-cancelable "^0.4.0" - p-timeout "^2.0.1" - pify "^3.0.0" - safe-buffer "^5.1.1" - timed-out "^4.0.1" - url-parse-lax "^3.0.0" - url-to-options "^1.0.1" - got@^9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" @@ -5949,16 +5867,11 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.10, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: +graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== -grapheme-splitter@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - gray-matter@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" @@ -6006,23 +5919,11 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" - integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== - has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - dependencies: - has-symbol-support-x "^1.4.1" - has-tostringtag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" @@ -6084,11 +5985,6 @@ hast-util-to-estree@^2.0.0: unist-util-position "^4.0.0" zwitch "^2.0.0" -hast-util-to-string@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz#9b24c114866bdb9478927d7e9c36a485ac728378" - integrity sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w== - hast-util-whitespace@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c" @@ -6142,11 +6038,6 @@ htmlparser2@^6.0.0: domutils "^2.5.2" entities "^2.0.0" -http-cache-semantics@3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== - http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" @@ -6385,14 +6276,6 @@ intl-messageformat@^9.6.12: "@formatjs/icu-messageformat-parser" "2.0.15" tslib "^2.1.0" -into-stream@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" - integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= - dependencies: - from2 "^2.1.1" - p-is-promise "^1.1.0" - invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -6561,11 +6444,6 @@ is-nan@^1.2.1: call-bind "^1.0.0" define-properties "^1.1.3" -is-natural-number@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" - integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= - is-negative-zero@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -6593,11 +6471,6 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" - integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== - is-path-inside@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -6608,7 +6481,7 @@ is-plain-obj@2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: +is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= @@ -6643,11 +6516,6 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-retry-allowed@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - is-shared-array-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" @@ -6793,14 +6661,6 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== - dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" - jest-changed-files@^27.4.2: version "27.4.2" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.4.2.tgz#da2547ea47c6e6a5f6ed336151bd2075736eb4a5" @@ -7342,6 +7202,11 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" +jsonc-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" + integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -7364,13 +7229,6 @@ jsonparse@^1.2.0: array-includes "^3.1.3" object.assign "^4.1.2" -keyv@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" - integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== - dependencies: - json-buffer "3.0.0" - keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -7502,6 +7360,11 @@ loader-utils@1.2.3: emojis-list "^2.0.0" json5 "^1.0.1" +local-pkg@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.1.tgz#e7b0d7aa0b9c498a1110a5ac5b00ba66ef38cfff" + integrity sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw== + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -7600,11 +7463,6 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lowercase-keys@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= - lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" @@ -7647,21 +7505,6 @@ magic-string@^0.25.0, magic-string@^0.25.1: dependencies: sourcemap-codec "^1.4.4" -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -8294,7 +8137,7 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.51.0, mime-db@^1.28.0: +mime-db@1.51.0: version "1.51.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== @@ -8553,15 +8396,6 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" - integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== - dependencies: - prepend-http "^2.0.0" - query-string "^5.0.1" - sort-keys "^2.0.0" - normalize-url@^4.1.0: version "4.5.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" @@ -8591,7 +8425,7 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -8748,11 +8582,6 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -p-cancelable@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" - integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== - p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" @@ -8763,23 +8592,11 @@ p-cancelable@^2.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== -p-event@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/p-event/-/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6" - integrity sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA== - dependencies: - p-timeout "^2.0.1" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" - integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= - p-limit@3.1.0, p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" @@ -8829,13 +8646,6 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" -p-timeout@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" - integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== - dependencies: - p-finally "^1.0.0" - p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -8916,6 +8726,11 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-numeric-range@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" + integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== + parse-path@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" @@ -8988,6 +8803,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + pbkdf2@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" @@ -9004,11 +8824,6 @@ pegjs@^0.10.0: resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" integrity sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0= -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -9042,28 +8857,11 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - pify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - pirates@^4.0.1: version "4.0.4" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.4.tgz#07df81e61028e402735cdd49db701e4885b4e6e6" @@ -9134,7 +8932,7 @@ postcss@8.2.15: nanoid "^3.1.23" source-map "^0.6.1" -postcss@8.4.5, postcss@^8.1.6: +postcss@8.4.5, postcss@^8.1.6, postcss@^8.4.5: version "8.4.5" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== @@ -9298,15 +9096,6 @@ qs@^6.9.4: dependencies: side-channel "^1.0.4" -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - query-string@^6.13.8: version "6.14.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" @@ -9400,6 +9189,11 @@ react-icons@4.3.1: resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.3.1.tgz#2fa92aebbbc71f43d2db2ed1aed07361124e91ca" integrity sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ== +react-innertext@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/react-innertext/-/react-innertext-1.1.5.tgz#8147ac54db3f7067d95f49e2d2c05a720d27d8d0" + integrity sha512-PWAqdqhxhHIv80dT9znP2KvS+hfkbRovFp4zFYHFFlOoQLRiawIic81gKb3U1wEyJZgMwgs3JoLtwryASRWP3Q== + react-is@17.0.2, react-is@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" @@ -9423,10 +9217,10 @@ react-live@2.2.3: react-simple-code-editor "^0.10.0" unescape "^1.0.1" -react-live@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/react-live/-/react-live-2.3.0.tgz#09fbac361903970e7cf51cee60729eeb164a5d87" - integrity sha512-b+Nc7x/bLu2sPX/If1uncrmUvYtXTqxY8QpzBw/X76SA3QJ1ggU0Ld6X5phLXZ469+XWO5lOU7OpAt0JoTyZPQ== +react-live@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/react-live/-/react-live-2.4.0.tgz#c550a6e3e344ad047c71a7776b9bf96a485d5762" + integrity sha512-1/JOjxPFBoXNgeEC4AqDyhw34qI2RJH1+3M4bXGnQTbwfA9qaUi66j4FfeRk0CBV05Lu8v80Maa1QZS/wmT/Pw== dependencies: "@types/buble" "^0.20.0" buble "0.19.6" @@ -9533,7 +9327,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: +readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -9685,6 +9479,13 @@ regjsparser@^0.7.0: dependencies: jsesc "~0.5.0" +rehype-pretty-code@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/rehype-pretty-code/-/rehype-pretty-code-0.0.8.tgz#e4cc342e9dd5daf934a71e1aa1e1f37132bfb40e" + integrity sha512-b9n4a5hjOFsnqCIASFrMeabMJIJIpMMRVylKF3ArvbED28cRZ4LvKT2PXNmMuzI1rZ9h7SuseSdX4/EgCtlxJA== + dependencies: + parse-numeric-range "^1.3.0" + release-it@14.11.8: version "14.11.8" resolved "https://registry.yarnpkg.com/release-it/-/release-it-14.11.8.tgz#6da25daa93286d832cae4f10008a3bf0c08c2725" @@ -9730,17 +9531,6 @@ remark-gfm@^3.0.1: micromark-extension-gfm "^2.0.0" unified "^10.0.0" -remark-mdx-code-meta@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/remark-mdx-code-meta/-/remark-mdx-code-meta-1.0.0.tgz#da6a9f302bc5ce117474d597021326cfcebca1dc" - integrity sha512-7lu7aX7EeBQOwTQL8uYRvUhjAujMAC/bpOEv4p5pPL3xb9R6SR+8BKpiEA8CrbBEc8nhNac9QJ7/K3VpR5I7yQ== - dependencies: - acorn "^8.2.4" - acorn-jsx "^5.3.1" - estree-util-is-identifier-name "^1.1.0" - hast-util-to-string "^1.0.4" - unist-util-visit "^2.0.3" - remark-mdx@^2.0.0-rc.2: version "2.0.0-rc.2" resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.0.0-rc.2.tgz#07676a08f34cd292505414e5440927e1b7d26289" @@ -9833,7 +9623,7 @@ resolve@^2.0.0-next.3: is-core-module "^2.2.0" path-parse "^1.0.6" -responselike@1.0.2, responselike@^1.0.2: +responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= @@ -9890,6 +9680,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rollup@^2.59.0: + version "2.64.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.64.0.tgz#f0f59774e21fbb56de438a37d06a2189632b207a" + integrity sha512-+c+lbw1lexBKSMb1yxGDVfJ+vchJH3qLbmavR+awDinTDA2C5Ug9u7lkOzj62SCu0PKUExsW36tpgW7Fmpn3yQ== + optionalDependencies: + fsevents "~2.3.2" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -9923,7 +9720,7 @@ sade@^1.7.3: dependencies: mri "^1.1.0" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -9961,13 +9758,6 @@ section-matter@^1.0.0: extend-shallow "^2.0.1" kind-of "^6.0.0" -seek-bzip@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" - integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== - dependencies: - commander "^2.8.1" - semver-diff@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" @@ -9975,7 +9765,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.6.0: +"semver@2 || 3 || 4 || 5": version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -10058,6 +9848,15 @@ shelljs@0.8.4: interpret "^1.0.0" rechoir "^0.6.2" +shiki@0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.10.0.tgz#85f21ecfa95b377ff64db6c71442c22c220e9540" + integrity sha512-iczxaIYeBFHTFrQPb9DVy2SKgYxC4Wo7Iucm7C17cCh2Ge/refnvHscUOxM85u57MfLoNOtjoEFUWt9gBexblA== + dependencies: + jsonc-parser "^3.0.0" + vscode-oniguruma "^1.6.1" + vscode-textmate "5.2.0" + side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -10108,27 +9907,6 @@ slice-ansi@^5.0.0: ansi-styles "^6.0.0" is-fullwidth-code-point "^4.0.0" -sort-keys-length@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" - integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg= - dependencies: - sort-keys "^1.0.0" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= - dependencies: - is-plain-obj "^1.0.0" - sort-object-keys@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45" @@ -10167,7 +9945,7 @@ source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.7.3, source-map@^0.7.0, source-map@^0.7.3: +source-map@0.7.3, source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -10293,11 +10071,6 @@ stream-parser@^0.3.1: dependencies: debug "2" -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -10425,13 +10198,6 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-dirs@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" - integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== - dependencies: - is-natural-number "^4.0.1" - strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -10459,13 +10225,6 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -strip-outer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" - integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== - dependencies: - escape-string-regexp "^1.0.2" - style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -10581,19 +10340,6 @@ tailwindcss@3.0.9: quick-lru "^5.1.1" resolve "^1.20.0" -tar-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" - integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== - dependencies: - bl "^1.0.0" - buffer-alloc "^1.2.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.1" - xtend "^4.0.0" - temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" @@ -10662,11 +10408,6 @@ through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - timers-browserify@2.0.12: version "2.0.12" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" @@ -10684,6 +10425,16 @@ tiny-warning@^1.0.3: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tinypool@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.1.1.tgz#99eaf29d030feeca2da6c1d6b33f90fc18093bc7" + integrity sha512-sW2fQZ2BRb/GX5v55NkHiTrbMLx0eX0xNpP+VGhOe2f7Oo04+LeClDyM19zCE/WCy7jJ8kzIJ0Ojrxj3UhN9Sg== + +tinyspy@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-0.2.8.tgz#b821b3d43a7d5ae47bc575a5d8627e84fdf4e809" + integrity sha512-4VXqQzzh9gC5uOLk77cLr9R3wqJq07xJlgM9IUdCNJCet139r+046ETKbU1x7mGs7B0k7eopyH5U6yflbBXNyA== + title@3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/title/-/title-3.4.3.tgz#76ef6b398310a7814120634620e47849481485d3" @@ -10711,11 +10462,6 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-buffer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -10781,13 +10527,6 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -trim-repeated@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" - integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= - dependencies: - escape-string-regexp "^1.0.2" - trough@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/trough/-/trough-2.0.2.tgz#94a3aa9d5ce379fc561f6244905b3f36b7458d96" @@ -10866,7 +10605,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@4.0.8: +type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -10938,14 +10677,6 @@ unbox-primitive@^1.0.1: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" -unbzip2-stream@^1.0.9: - version "1.4.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" - integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== - dependencies: - buffer "^5.2.1" - through "^2.3.8" - unescape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96" @@ -11008,11 +10739,6 @@ unist-util-generated@^2.0.0: resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz#86fafb77eb6ce9bfa6b663c3f5ad4f8e56a60113" integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw== -unist-util-is@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" - integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== - unist-util-is@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236" @@ -11045,14 +10771,6 @@ unist-util-stringify-position@^3.0.0: dependencies: "@types/unist" "^2.0.0" -unist-util-visit-parents@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" - integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - unist-util-visit-parents@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz#e83559a4ad7e6048a46b1bdb22614f2f3f4724f2" @@ -11069,15 +10787,6 @@ unist-util-visit-parents@^5.0.0: "@types/unist" "^2.0.0" unist-util-is "^5.0.0" -unist-util-visit@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" - integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - unist-util-visit-parents "^3.0.0" - unist-util-visit@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-3.1.0.tgz#9420d285e1aee938c7d9acbafc8e160186dbaf7b" @@ -11155,11 +10864,6 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= - use-callback-ref@^1.2.3: version "1.2.5" resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.2.5.tgz#6115ed242cfbaed5915499c0a9842ca2912f38a5" @@ -11258,6 +10962,31 @@ vfile@^5.0.0: unist-util-stringify-position "^3.0.0" vfile-message "^3.0.0" +vite@>=2.7.10: + version "2.7.12" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.7.12.tgz#7784ab19e7ff98f6a192d2d7d877480a8c2b7e7d" + integrity sha512-KvPYToRQWhRfBeVkyhkZ5hASuHQkqZUUdUcE3xyYtq5oYEPIJ0h9LWiWTO6v990glmSac2cEPeYeXzpX5Z6qKQ== + dependencies: + esbuild "^0.13.12" + postcss "^8.4.5" + resolve "^1.20.0" + rollup "^2.59.0" + optionalDependencies: + fsevents "~2.3.2" + +vitest@^0.0.141: + version "0.0.141" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.0.141.tgz#687f66acc21692222095dc5d3a3729fa8d7c8010" + integrity sha512-CQwNWGbifAs5OrG1MXyiveeFT3KYpU/UZiZzNUR5ZHMUWKam9OeoDX0U3sFuyaERp/0b2vhoL0oaMccY2PJPSQ== + dependencies: + "@types/chai" "^4.3.0" + "@types/chai-subset" "^1.3.3" + chai "^4.3.4" + local-pkg "^0.4.1" + tinypool "^0.1.1" + tinyspy "^0.2.8" + vite ">=2.7.10" + vlq@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" @@ -11268,6 +10997,16 @@ vm-browserify@1.1.2: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +vscode-oniguruma@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz#2bf4dfcfe3dd2e56eb549a3068c8ee39e6c30ce5" + integrity sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ== + +vscode-textmate@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e" + integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ== + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -11481,7 +11220,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1: +xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -11572,14 +11311,6 @@ yargs@^17.0.0: y18n "^5.0.5" yargs-parser "^21.0.0" -yauzl@^2.4.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"