diff --git a/.gitignore b/.gitignore index 636b642..56d17dc 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,7 @@ node_modules .next .DS_Store yarn-error.log -dist \ No newline at end of file +dist +obsidian_vault/.obsidian/workspace.json +obsidian_vault/__tempassets__/* +!obsidian_vault/__tempassets__/README.md diff --git a/copy-docs.mts b/copy-docs.mts new file mode 100644 index 0000000..1be26f3 --- /dev/null +++ b/copy-docs.mts @@ -0,0 +1,107 @@ +// This file gets only the public doc files, and renames them to remove spaces + +import { default as fs } from 'fs'; +import { default as path } from 'path'; +import { fileURLToPath } from 'url'; +import _ from 'lodash'; +import replace from 'replace'; + +const __filename = fileURLToPath(import.meta.url); // get the resolved path to the file +const __dirname = path.dirname(__filename); // get the name of the directory + +const skipFiles = ['__tempassets__', 'public', '.obsidian']; + + +// Define the folder paths +const publishFolder = path.join(__dirname, 'obsidian_vault'); +const distFolder = path.join(__dirname, 'pages/'); +const distFolderPublic = path.join(__dirname, 'public/'); + +console.log("🗑️ Cleaning up temporary folders...") +fs.existsSync(distFolder) && fs.rmSync(distFolder, { recursive: true }); + + +async function copyDirAndRename(sourceDir, targetDir) { + + + + if(path.basename(sourceDir) === 'public'){ + console.log('public folder') + const publicFiles = await fs.readdirSync(sourceDir, { withFileTypes: true }); + for (let file of publicFiles) { + const sourcePath = path.join(sourceDir, file.name); + const targetPath = path.join(distFolderPublic, file.name); + console.log(" 🏞️ ", (path.basename(sourcePath)), ' >> ', targetPath) + fs.copyFileSync(sourcePath, targetPath) + } + } + + if(!skipFiles.includes(path.basename(sourceDir))){ + console.log("📂", path.basename(targetDir)) + await fs.mkdirSync(targetDir, { recursive: true }); // Ensure target directory exists + const entries = await fs.readdirSync(sourceDir, { withFileTypes: true }); + + for (let entry of entries) { + const sourcePath = path.join(sourceDir, entry.name); + const targetPath = path.join(targetDir, entry.name); + + if (entry.isDirectory() && ( !path.basename(sourcePath).startsWith('.') || !path.basename(sourcePath).startsWith('__') || path.basename(sourcePath) !== 'public') ){ + // Ignore directories starting with a dot, like .obsidian + // Igrnore internal directories starting with, like __tempassets__ + await copyDirAndRename(sourcePath, targetPath); // Recurse into subdirectory + } else { + + const fileName = path.basename(sourcePath) + + if(fileName === "_meta.md"){ + console.log(" 🤖 meta.js") + const meta = await fs.readFileSync(sourcePath, 'utf8').trim().split('\n') + + const metaJson = {} + + meta.forEach((line) => { + // Extract the title and path from the _meta.md file + const regex = /\[([^\]]+)\]\(([^\)]+)\)/g; + const input = line; + const matches = input.matchAll(regex); + let title, linePath; + for (const match of matches) { + title = match[1].toString() + linePath = match[2].toString() + } + const sentenceCase = (str) => { + str = str.replace(/-/g, ' ') + return _.upperFirst(_.lowerCase(str)) + } + console.log('🔥', title, title.split(' ').length) + metaJson[path.parse(linePath).name] = title.split(' ').length > 1 ? title : sentenceCase(title) + }) + await fs.writeFileSync(path.join(targetDir, '_meta.js'), `export default `+JSON.stringify(metaJson, null, 2)) + } + else { + if(!path.basename(sourcePath).startsWith('.')){ + console.log(" 📄", (path.basename(sourcePath))) + fs.copyFileSync(sourcePath, targetPath) + } + } + } + + } + } + } + + +await copyDirAndRename(publishFolder, distFolder) + +// Obsidian uses .md files, but we need to link to pages directly, not a file name +replace({ + regex: /.md/g, + replacement: "", + paths: [distFolder], + recursive: true, + silent: true, +}); + + + +console.log('✅ Done!') \ No newline at end of file diff --git a/middleware.js b/middleware.js deleted file mode 100644 index 38011cf..0000000 --- a/middleware.js +++ /dev/null @@ -1 +0,0 @@ -export { locales as middleware } from "nextra/locales"; diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..4f11a03 --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/next.config.js b/next.config.js index 5dfec7d..706d5dd 100644 --- a/next.config.js +++ b/next.config.js @@ -1,33 +1,50 @@ -const withNextra = require("nextra")({ - theme: "nextra-theme-docs", - themeConfig: "./theme.config.js", - unstable_flexsearch: true, - unstable_staticImage: true, -}); +import bundleAnalyzer from '@next/bundle-analyzer' +import nextra from 'nextra' +import remarkObsidian from 'remark-obsidian' - -module.exports = withNextra({ - i18n: { - locales: ['en', 'pt-br'], - defaultLocale: 'en', +const withNextra = nextra({ + theme: 'nextra-theme-docs', + themeConfig: './theme.config.tsx', + defaultShowCopyCode: true, + transformPageMap(pageMap, locale) { + if (locale === 'en') { + pageMap = [ + ...pageMap, + ] + } + return pageMap + }, + latex: true, + mdxOptions: { + remarkPlugins: [remarkObsidian] }, - redirects: () => { - return [ - { - source: "/reset-tokens", - destination: "/troubleshooting/reset-tokens", - statusCode: 302 - }, - { - source: "/non-local-styles", - destination: "/styles/non-local-styles", - statusCode: 302 - }, - { - source: "/sams-fancy-link", - destination: "/guides/naming-design-tokens", - statusCode: 302 - }, - ] - } + }) + +const withBundleAnalyzer = bundleAnalyzer({ + enabled: process.env.ANALYZE === 'true' +}) + +/** + * @type {import('next').NextConfig} + */ +export default withBundleAnalyzer( + withNextra({ + // i18n: { + // locales: ['en', 'pt-br'], + // defaultLocale: 'en' + // }, + distDir: './.next', // Nextra supports custom `nextConfig.distDir` + reactStrictMode: true, + redirects: () => + Object.entries({ + "/reset-tokens": "/troubleshooting/reset-tokens", + "/non-local-styles": "/styles/non-local-styles", + "/naming-design-tokens": "/guides/naming-design-tokens", + }).map(([from, to]) => ({ + source: from, + destination: to, + permanent: true, + })) + }), +) \ No newline at end of file diff --git a/obsidian_vault/.obsidian/app.json b/obsidian_vault/.obsidian/app.json new file mode 100644 index 0000000..8c13e56 --- /dev/null +++ b/obsidian_vault/.obsidian/app.json @@ -0,0 +1,4 @@ +{ + "alwaysUpdateLinks": true, + "showUnsupportedFiles": true +} \ No newline at end of file diff --git a/obsidian_vault/.obsidian/appearance.json b/obsidian_vault/.obsidian/appearance.json new file mode 100644 index 0000000..c8c365d --- /dev/null +++ b/obsidian_vault/.obsidian/appearance.json @@ -0,0 +1,3 @@ +{ + "accentColor": "" +} \ No newline at end of file diff --git a/obsidian_vault/.obsidian/community-plugins.json b/obsidian_vault/.obsidian/community-plugins.json new file mode 100644 index 0000000..441ab5f --- /dev/null +++ b/obsidian_vault/.obsidian/community-plugins.json @@ -0,0 +1,3 @@ +[ + "mdx-as-md-obsidian" +] \ No newline at end of file diff --git a/obsidian_vault/.obsidian/core-plugins-migration.json b/obsidian_vault/.obsidian/core-plugins-migration.json new file mode 100644 index 0000000..436f43c --- /dev/null +++ b/obsidian_vault/.obsidian/core-plugins-migration.json @@ -0,0 +1,30 @@ +{ + "file-explorer": true, + "global-search": true, + "switcher": true, + "graph": true, + "backlink": true, + "canvas": true, + "outgoing-link": true, + "tag-pane": true, + "properties": false, + "page-preview": true, + "daily-notes": true, + "templates": true, + "note-composer": true, + "command-palette": true, + "slash-command": false, + "editor-status": true, + "bookmarks": true, + "markdown-importer": false, + "zk-prefixer": false, + "random-note": false, + "outline": true, + "word-count": true, + "slides": false, + "audio-recorder": false, + "workspaces": false, + "file-recovery": true, + "publish": false, + "sync": false +} \ No newline at end of file diff --git a/obsidian_vault/.obsidian/core-plugins.json b/obsidian_vault/.obsidian/core-plugins.json new file mode 100644 index 0000000..9405bfd --- /dev/null +++ b/obsidian_vault/.obsidian/core-plugins.json @@ -0,0 +1,20 @@ +[ + "file-explorer", + "global-search", + "switcher", + "graph", + "backlink", + "canvas", + "outgoing-link", + "tag-pane", + "page-preview", + "daily-notes", + "templates", + "note-composer", + "command-palette", + "editor-status", + "bookmarks", + "outline", + "word-count", + "file-recovery" +] \ No newline at end of file diff --git a/obsidian_vault/.obsidian/graph.json b/obsidian_vault/.obsidian/graph.json new file mode 100644 index 0000000..42a46ec --- /dev/null +++ b/obsidian_vault/.obsidian/graph.json @@ -0,0 +1,22 @@ +{ + "collapse-filter": true, + "search": "", + "showTags": false, + "showAttachments": false, + "hideUnresolved": false, + "showOrphans": true, + "collapse-color-groups": true, + "colorGroups": [], + "collapse-display": true, + "showArrow": false, + "textFadeMultiplier": 0, + "nodeSizeMultiplier": 1, + "lineSizeMultiplier": 1, + "collapse-forces": true, + "centerStrength": 0.518713248970312, + "repelStrength": 10, + "linkStrength": 1, + "linkDistance": 250, + "scale": 1, + "close": true +} \ No newline at end of file diff --git a/obsidian_vault/.obsidian/plugins/mdx-as-md-obsidian/main.js b/obsidian_vault/.obsidian/plugins/mdx-as-md-obsidian/main.js new file mode 100644 index 0000000..5206ff4 --- /dev/null +++ b/obsidian_vault/.obsidian/plugins/mdx-as-md-obsidian/main.js @@ -0,0 +1,93 @@ +'use strict'; + +var obsidian = require('obsidian'); + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +var MdxAsMdPlugin = /** @class */ (function (_super) { + __extends(MdxAsMdPlugin, _super); + function MdxAsMdPlugin() { + return _super !== null && _super.apply(this, arguments) || this; + } + MdxAsMdPlugin.prototype.onload = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + _super.prototype.onload.call(this); + // register the view and extensions + this.registerExtensions(["mdx"], "markdown"); + return [2 /*return*/]; + }); + }); + }; + return MdxAsMdPlugin; +}(obsidian.Plugin)); + +module.exports = MdxAsMdPlugin; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tKSB7XHJcbiAgICBmb3IgKHZhciBpID0gMCwgaWwgPSBmcm9tLmxlbmd0aCwgaiA9IHRvLmxlbmd0aDsgaSA8IGlsOyBpKyssIGorKylcclxuICAgICAgICB0b1tqXSA9IGZyb21baV07XHJcbiAgICByZXR1cm4gdG87XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcclxufVxyXG4iLCJpbXBvcnQgeyBQbHVnaW4gfSBmcm9tICdvYnNpZGlhbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1keEFzTWRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXG4gIGFzeW5jIG9ubG9hZCgpIHtcbiAgICBzdXBlci5vbmxvYWQoKTtcblxuICAgIC8vIHJlZ2lzdGVyIHRoZSB2aWV3IGFuZCBleHRlbnNpb25zXG4gICAgdGhpcy5yZWdpc3RlckV4dGVuc2lvbnMoW1wibWR4XCJdLCBcIm1hcmtkb3duXCIpO1xuICB9XG59XG4iXSwibmFtZXMiOlsiUGx1Z2luIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGFBQWEsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbkMsSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLGNBQWM7QUFDekMsU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxLQUFLLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3BGLFFBQVEsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzFHLElBQUksT0FBTyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUNGO0FBQ08sU0FBUyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNoQyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssVUFBVSxJQUFJLENBQUMsS0FBSyxJQUFJO0FBQzdDLFFBQVEsTUFBTSxJQUFJLFNBQVMsQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsK0JBQStCLENBQUMsQ0FBQztBQUNsRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEIsSUFBSSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDM0MsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pGLENBQUM7QUF1Q0Q7QUFDTyxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7QUFDN0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDaEgsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDL0QsUUFBUSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ25HLFFBQVEsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ3RHLFFBQVEsU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3RILFFBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlFLEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNEO0FBQ08sU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUMzQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckgsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxNQUFNLEtBQUssVUFBVSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3SixJQUFJLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3RFLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRSxFQUFFO0FBQ3RCLFFBQVEsSUFBSSxDQUFDLEVBQUUsTUFBTSxJQUFJLFNBQVMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ3RFLFFBQVEsT0FBTyxDQUFDLEVBQUUsSUFBSTtBQUN0QixZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3pLLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRCxZQUFZLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6QixnQkFBZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTTtBQUM5QyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3hFLGdCQUFnQixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0FBQ2pFLGdCQUFnQixLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTO0FBQ2pFLGdCQUFnQjtBQUNoQixvQkFBb0IsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNoSSxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUMxRyxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0FBQ3pGLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDdkYsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTO0FBQzNDLGFBQWE7QUFDYixZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDbEUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3pGLEtBQUs7QUFDTDs7O0lDdkcyQyxpQ0FBTTtJQUFqRDs7S0FRQztJQU5PLDhCQUFNLEdBQVo7OztnQkFDRSxpQkFBTSxNQUFNLFdBQUUsQ0FBQzs7Z0JBR2YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7Ozs7S0FDOUM7SUFDSCxvQkFBQztBQUFELENBUkEsQ0FBMkNBLGVBQU07Ozs7In0= diff --git a/obsidian_vault/.obsidian/plugins/mdx-as-md-obsidian/manifest.json b/obsidian_vault/.obsidian/plugins/mdx-as-md-obsidian/manifest.json new file mode 100644 index 0000000..afa0196 --- /dev/null +++ b/obsidian_vault/.obsidian/plugins/mdx-as-md-obsidian/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "mdx-as-md-obsidian", + "version": "0.0.1", + "description": "Edit mdx files as if they were markdown", + "name": "mdx as md", + "author": "death_au", + "authorUrl": "https://github.com/mkozhukharenko", + "isDesktopOnly": false, + "minAppVersion": "0.10.12" +} \ No newline at end of file diff --git a/obsidian_vault/_app.tsx b/obsidian_vault/_app.tsx new file mode 100644 index 0000000..988113e --- /dev/null +++ b/obsidian_vault/_app.tsx @@ -0,0 +1,53 @@ +/* eslint react/no-unknown-property: ['error', { ignore: ['global', 'jsx'] }] */ +import { AppProps } from 'next/app'; +import React from "react" + +export default function App({ Component, pageProps, router }: AppProps) { + return ( + <> + + + + ); +} \ No newline at end of file diff --git a/pages/_meta.en.json b/obsidian_vault/_meta.js similarity index 96% rename from pages/_meta.en.json rename to obsidian_vault/_meta.js index 1fb2390..06c2260 100644 --- a/pages/_meta.en.json +++ b/obsidian_vault/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "index": "Introduction", "getting-started": "Getting started", "tokens": "Using tokens", diff --git a/pages/available-tokens/_meta.en.json b/obsidian_vault/available-tokens/_meta.js similarity index 96% rename from pages/available-tokens/_meta.en.json rename to obsidian_vault/available-tokens/_meta.js index 977d5f9..aec00b3 100644 --- a/pages/available-tokens/_meta.en.json +++ b/obsidian_vault/available-tokens/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "available-tokens": "Overview", "sizing-tokens": "Sizing tokens", "spacing-tokens": "Spacing tokens", diff --git a/pages/available-tokens/asset-tokens.en.mdx b/obsidian_vault/available-tokens/asset-tokens.mdx similarity index 96% rename from pages/available-tokens/asset-tokens.en.mdx rename to obsidian_vault/available-tokens/asset-tokens.mdx index 4b918f7..7663d9d 100644 --- a/pages/available-tokens/asset-tokens.en.mdx +++ b/obsidian_vault/available-tokens/asset-tokens.mdx @@ -8,7 +8,7 @@ This can be very useful in white-label projects, where you need to change the as Create an Asset token under the ‘Asset’ category by clicking on the ‘+’ icon. Enter a token name and an asset url. -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' Currently the image source needs to have its own CORS (Cross-Origin Resource Sharing) validation. Some websites already have that implemented (e.g. Unsplash), but otherwise you can put this behind a CORS proxy. More information on CORS can be found [here](https://medium.com/nodejsmadeeasy/a-simple-cors-proxy-for-javascript-applications-9b36a8d39c51). We'll be adding a CORS proxy in a future release. diff --git a/pages/available-tokens/available-tokens.en.mdx b/obsidian_vault/available-tokens/available-tokens.mdx similarity index 100% rename from pages/available-tokens/available-tokens.en.mdx rename to obsidian_vault/available-tokens/available-tokens.mdx diff --git a/pages/available-tokens/border-radius-tokens.en.mdx b/obsidian_vault/available-tokens/border-radius-tokens.mdx similarity index 100% rename from pages/available-tokens/border-radius-tokens.en.mdx rename to obsidian_vault/available-tokens/border-radius-tokens.mdx diff --git a/pages/available-tokens/border-tokens.en.mdx b/obsidian_vault/available-tokens/border-tokens.mdx similarity index 92% rename from pages/available-tokens/border-tokens.en.mdx rename to obsidian_vault/available-tokens/border-tokens.mdx index dfe3a62..35f1abf 100644 --- a/pages/available-tokens/border-tokens.en.mdx +++ b/obsidian_vault/available-tokens/border-tokens.mdx @@ -5,6 +5,6 @@ You can create Border tokens to define border styles. The token must contain the - Width: the width or thickness of the border. Can be defined either unitless or with a unit such as px or rem. - Style: the border style. Currently solid and dashed is supported. -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' This token will be applied under the `border` property, which was previously used by border color tokens. The plugin will automatically migrate any older applied color tokens under the `border` property to the new `borderColor` one. diff --git a/pages/available-tokens/border-width-tokens.en.mdx b/obsidian_vault/available-tokens/border-width-tokens.mdx similarity index 100% rename from pages/available-tokens/border-width-tokens.en.mdx rename to obsidian_vault/available-tokens/border-width-tokens.mdx diff --git a/pages/available-tokens/color-tokens.en.mdx b/obsidian_vault/available-tokens/color-tokens.mdx similarity index 98% rename from pages/available-tokens/color-tokens.en.mdx rename to obsidian_vault/available-tokens/color-tokens.mdx index ffe2973..77ce284 100644 --- a/pages/available-tokens/color-tokens.en.mdx +++ b/obsidian_vault/available-tokens/color-tokens.mdx @@ -1,4 +1,4 @@ -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' # Color Tokens diff --git a/pages/available-tokens/composition-tokens.en.mdx b/obsidian_vault/available-tokens/composition-tokens.mdx similarity index 100% rename from pages/available-tokens/composition-tokens.en.mdx rename to obsidian_vault/available-tokens/composition-tokens.mdx diff --git a/pages/available-tokens/dimension-tokens.pt-br.mdx b/obsidian_vault/available-tokens/dimension-tokens.mdx similarity index 92% rename from pages/available-tokens/dimension-tokens.pt-br.mdx rename to obsidian_vault/available-tokens/dimension-tokens.mdx index 69daf22..a6fed3e 100644 --- a/pages/available-tokens/dimension-tokens.pt-br.mdx +++ b/obsidian_vault/available-tokens/dimension-tokens.mdx @@ -11,6 +11,6 @@ To apply a dimension token, you can right click the token and select the applica ![](/dimension-token.png) -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' This token is introduced in order to support the upcoming W3C format: https://second-editors-draft.tr.designtokens.org/format/#dimension diff --git a/pages/available-tokens/opacity-tokens.en.mdx b/obsidian_vault/available-tokens/opacity-tokens.mdx similarity index 100% rename from pages/available-tokens/opacity-tokens.en.mdx rename to obsidian_vault/available-tokens/opacity-tokens.mdx diff --git a/pages/available-tokens/shadow-tokens.en.mdx b/obsidian_vault/available-tokens/shadow-tokens.mdx similarity index 100% rename from pages/available-tokens/shadow-tokens.en.mdx rename to obsidian_vault/available-tokens/shadow-tokens.mdx diff --git a/pages/available-tokens/sizing-tokens.en.mdx b/obsidian_vault/available-tokens/sizing-tokens.mdx similarity index 100% rename from pages/available-tokens/sizing-tokens.en.mdx rename to obsidian_vault/available-tokens/sizing-tokens.mdx diff --git a/pages/available-tokens/spacing-tokens.en.mdx b/obsidian_vault/available-tokens/spacing-tokens.mdx similarity index 82% rename from pages/available-tokens/spacing-tokens.en.mdx rename to obsidian_vault/available-tokens/spacing-tokens.mdx index 2b13843..611e8eb 100644 --- a/pages/available-tokens/spacing-tokens.en.mdx +++ b/obsidian_vault/available-tokens/spacing-tokens.mdx @@ -8,6 +8,7 @@ Spacing tokens give you the ability to define values for Auto Layout that you ca 3. Once selected, you can apply a spacing token by either left-clicking (all values will have this token applied) or right-clicking and then specifying which part or side of the layer you want to target like: `Gap`, `All`, `Top`, `Right`, `Bottom`, `Left` . If you want to apply left-right and top-bottom with a click, you can select `horizontal-padding` or `vertical-padding` to apply them respectively. --- + import ReactPlayer from 'react-player' -This will apply to the gap property (like today)
+**Single value (like today)** +This will apply to the gap property (like today) ```10px``` -**Two values**
-This will apply top-and-bottom | left-and-right
+**Two values** +This will apply top-and-bottom | left-and-right ```8px 64px``` -**Three values**
-This will apply top | right-and-left | bottom
+**Three values** +This will apply top | right-and-left | bottom ```16px 8px 32px``` -**Four values**
-This will apply top | right | bottom | left
+**Four values** +This will apply top | right | bottom | left ```2px 4px 8px 16px``` --- diff --git a/pages/available-tokens/typography-tokens.pt-br.md b/obsidian_vault/available-tokens/typography-tokens.md similarity index 97% rename from pages/available-tokens/typography-tokens.pt-br.md rename to obsidian_vault/available-tokens/typography-tokens.md index b64bfca..6e404ee 100644 --- a/pages/available-tokens/typography-tokens.pt-br.md +++ b/obsidian_vault/available-tokens/typography-tokens.md @@ -33,7 +33,7 @@ An example of a typography token looks like this: ``` -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' While Font Family and Font Weight tokens can be applied individually to text nodes, both must be applied simultaneously to cause a visual change in Figma. diff --git a/pages/contributing/_meta.en.json b/obsidian_vault/contributing/_meta.js similarity index 86% rename from pages/contributing/_meta.en.json rename to obsidian_vault/contributing/_meta.js index 286db0b..49193e8 100644 --- a/pages/contributing/_meta.en.json +++ b/obsidian_vault/contributing/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "contributing": "Contributing", "beta-builds": "Beta builds", "shared-data": "Shared plugin space" diff --git a/pages/contributing/beta-builds.en.mdx b/obsidian_vault/contributing/beta-builds.mdx similarity index 100% rename from pages/contributing/beta-builds.en.mdx rename to obsidian_vault/contributing/beta-builds.mdx diff --git a/pages/contributing/contributing.en.md b/obsidian_vault/contributing/contributing.md similarity index 100% rename from pages/contributing/contributing.en.md rename to obsidian_vault/contributing/contributing.md diff --git a/pages/contributing/shared-data.en.md b/obsidian_vault/contributing/shared-data.md similarity index 100% rename from pages/contributing/shared-data.en.md rename to obsidian_vault/contributing/shared-data.md diff --git a/pages/dev-mode.en.mdx b/obsidian_vault/dev-mode.mdx similarity index 96% rename from pages/dev-mode.en.mdx rename to obsidian_vault/dev-mode.mdx index 7dd83a2..849d89d 100644 --- a/pages/dev-mode.en.mdx +++ b/obsidian_vault/dev-mode.mdx @@ -2,7 +2,7 @@ Tokens Studio for Figma is integrated with Figma's [Dev Mode](https://www.figma.com/dev-mode/), allowing developers to see the names of Tokens applied to your layers. -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' ### Installation **NOTE:** You can only access dev mode for Tokens Studio by toggling on Figma's `Dev mode`. diff --git a/pages/getting-started.en.mdx b/obsidian_vault/getting-started.mdx similarity index 100% rename from pages/getting-started.en.mdx rename to obsidian_vault/getting-started.mdx diff --git a/pages/guides/_meta.en.json b/obsidian_vault/guides/_meta.js similarity index 75% rename from pages/guides/_meta.en.json rename to obsidian_vault/guides/_meta.js index 8214be5..b64cd66 100644 --- a/pages/guides/_meta.en.json +++ b/obsidian_vault/guides/_meta.js @@ -1,3 +1,3 @@ -{ +export default { "naming-design-tokens": "Naming design tokens" } diff --git a/pages/guides/naming-design-tokens.en.mdx b/obsidian_vault/guides/naming-design-tokens.mdx similarity index 100% rename from pages/guides/naming-design-tokens.en.mdx rename to obsidian_vault/guides/naming-design-tokens.mdx diff --git a/pages/index.en.mdx b/obsidian_vault/index.mdx similarity index 100% rename from pages/index.en.mdx rename to obsidian_vault/index.mdx diff --git a/pages/inspect/_meta.pt-br.json b/obsidian_vault/inspect/_meta.js similarity index 79% rename from pages/inspect/_meta.pt-br.json rename to obsidian_vault/inspect/_meta.js index ce78ac5..84c6d81 100644 --- a/pages/inspect/_meta.pt-br.json +++ b/obsidian_vault/inspect/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "multi-inspect": "Inspecting tokens", "handoff": "Handoff" } diff --git a/pages/inspect/handoff.en.mdx b/obsidian_vault/inspect/handoff.mdx similarity index 96% rename from pages/inspect/handoff.en.mdx rename to obsidian_vault/inspect/handoff.mdx index 456f1f2..c02962e 100644 --- a/pages/inspect/handoff.en.mdx +++ b/obsidian_vault/inspect/handoff.mdx @@ -1,23 +1,23 @@ -# Handoff - -As Figma currently provides no way to inspect plugin data as a viewer (we hope they do allow that at some point), you'd have to fall back to either letting your engineers use the plugin themselves and inspect layers, or use more traditional methods. One of those methods would be Redlining, where you'd create layers showing which tokens were applied to what layers, still containing token names so it would be clear what to apply when. - -Annotate tokens - -## Annotate in the plugin -One way would be to use the Annotate feature inside Tokens Studio for Figma. You would select a single layer, go to the Inspect tab, switch to Debug & Annotate, and use the annotate tool to create annotations for you. Those would not update automatically, and only work for single layers. - -import Callout from 'nextra-theme-docs/callout' - - - To use the Annotate feature make sure that the `Deep Inspect` is disabled in the Inspect tab. - - -## Component Spec Toolkit -If your organization has not fully implemented design tokens, configured the Tokens Studio for Figma plugin, or has restrictions on plugin usage, consider this library-based alternative for annotation components: the [Component Spec Tool](https://bit.ly/3HYxszW). Designers can use the Component Spec Tool to annotate design systems component work without needing to upgrade their engineer’s Figma access level, install a plugin, or create a plugin dependency to their core library files. - -This tool is great for: -- Individuals/teams early in their design systems journey -- Organizations with a limited license count -- Organizations who outsource development of their component libraries -- Teams looking to bridge the gap between their design and engineering teams +# Handoff + +As Figma currently provides no way to inspect plugin data as a viewer (we hope they do allow that at some point), you'd have to fall back to either letting your engineers use the plugin themselves and inspect layers, or use more traditional methods. One of those methods would be Redlining, where you'd create layers showing which tokens were applied to what layers, still containing token names so it would be clear what to apply when. + +Annotate tokens + +## Annotate in the plugin +One way would be to use the Annotate feature inside Tokens Studio for Figma. You would select a single layer, go to the Inspect tab, switch to Debug & Annotate, and use the annotate tool to create annotations for you. Those would not update automatically, and only work for single layers. + +import { Callout } from 'nextra/components' + + + To use the Annotate feature make sure that the `Deep Inspect` is disabled in the Inspect tab. + + +## Component Spec Toolkit +If your organization has not fully implemented design tokens, configured the Tokens Studio for Figma plugin, or has restrictions on plugin usage, consider this library-based alternative for annotation components: the [Component Spec Tool](https://bit.ly/3HYxszW). Designers can use the Component Spec Tool to annotate design systems component work without needing to upgrade their engineer’s Figma access level, install a plugin, or create a plugin dependency to their core library files. + +This tool is great for: +- Individuals/teams early in their design systems journey +- Organizations with a limited license count +- Organizations who outsource development of their component libraries +- Teams looking to bridge the gap between their design and engineering teams diff --git a/pages/inspect/multi-inspect.en.mdx b/obsidian_vault/inspect/multi-inspect.mdx similarity index 100% rename from pages/inspect/multi-inspect.en.mdx rename to obsidian_vault/inspect/multi-inspect.mdx diff --git a/pages/styles/_meta.pt-br.json b/obsidian_vault/styles/_meta.js similarity index 92% rename from pages/styles/_meta.pt-br.json rename to obsidian_vault/styles/_meta.js index 5f23d6c..d400f09 100644 --- a/pages/styles/_meta.pt-br.json +++ b/obsidian_vault/styles/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "styles": "Importing styles", "create-styles": "Creating styles", "keeping-styles-in-sync": "Keeping styles in sync", diff --git a/pages/styles/create-styles.en.md b/obsidian_vault/styles/create-styles.md similarity index 94% rename from pages/styles/create-styles.en.md rename to obsidian_vault/styles/create-styles.md index 5c04386..491f159 100644 --- a/pages/styles/create-styles.en.md +++ b/obsidian_vault/styles/create-styles.md @@ -7,7 +7,7 @@ We also respect some choices you might make on how your styles should be named, - Ignore first part of token name for styles: This will strip away the very first part of the token name, so `colors.red.500` becomes `red.500` - Prefix styles with Theme name: When using Themes this will prepend the name of the Theme to the created style. So a token `background.default` in the Theme `light` becomes `light.background.default` -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' Styles are only created if a token set is `active`. If a token set is `inactive` or `Treated as source`, the styles for these sets won't be created. diff --git a/pages/styles/keeping-styles-in-sync.en.md b/obsidian_vault/styles/keeping-styles-in-sync.md similarity index 100% rename from pages/styles/keeping-styles-in-sync.en.md rename to obsidian_vault/styles/keeping-styles-in-sync.md diff --git a/pages/styles/non-local-styles.en.mdx b/obsidian_vault/styles/non-local-styles.mdx similarity index 100% rename from pages/styles/non-local-styles.en.mdx rename to obsidian_vault/styles/non-local-styles.mdx diff --git a/pages/styles/styles.en.mdx b/obsidian_vault/styles/styles.mdx similarity index 99% rename from pages/styles/styles.en.mdx rename to obsidian_vault/styles/styles.mdx index e3eb97c..4f0cc69 100644 --- a/pages/styles/styles.en.mdx +++ b/obsidian_vault/styles/styles.mdx @@ -25,7 +25,7 @@ That means, your 4 styles all referencing `Inter` as a font family, with 2 font This process is not perfect (yet), but with a little bit of manual tweaking you'll get yourself a token set that's easy to update later on. -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' ### Color Tokens diff --git a/pages/styles/swap-styles.en.mdx b/obsidian_vault/styles/swap-styles.mdx similarity index 96% rename from pages/styles/swap-styles.en.mdx rename to obsidian_vault/styles/swap-styles.mdx index c34bf91..dd419bf 100644 --- a/pages/styles/swap-styles.en.mdx +++ b/obsidian_vault/styles/swap-styles.mdx @@ -8,7 +8,7 @@ In order to use this feature, you need to have Themes defined, and Color tokens This works both for Styles created in the current file, as well as styles that come from a library. In order to attach it to the Theme, however you'll need to attach it in the library file where that style is defined. -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' This feature is currently behind a feature flag and only available to Pro users. We'll gradually release this so your colleagues who do not have Pro but only act as consumers can also benefit from this. diff --git a/pages/sync/_meta.en.json b/obsidian_vault/sync/_meta.js similarity index 95% rename from pages/sync/_meta.en.json rename to obsidian_vault/sync/_meta.js index 47538bf..3bb6030 100644 --- a/pages/sync/_meta.en.json +++ b/obsidian_vault/sync/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "sync": "Overview", "jsonbin": "JSONBin.io", "url": "URL", diff --git a/pages/sync/ado.en.mdx b/obsidian_vault/sync/ado.mdx similarity index 97% rename from pages/sync/ado.en.mdx rename to obsidian_vault/sync/ado.mdx index 689fac9..c39fa29 100644 --- a/pages/sync/ado.en.mdx +++ b/obsidian_vault/sync/ado.mdx @@ -4,7 +4,7 @@ If you'd like to use Azure DevOps as your sync provider you can do that now! --- -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' Already have an Azure account with a repository? Great, skip to step 3 diff --git a/pages/sync/branch-switching.en.mdx b/obsidian_vault/sync/branch-switching.mdx similarity index 100% rename from pages/sync/branch-switching.en.mdx rename to obsidian_vault/sync/branch-switching.mdx diff --git a/pages/sync/generic-storage.en.mdx b/obsidian_vault/sync/generic-storage.mdx similarity index 98% rename from pages/sync/generic-storage.en.mdx rename to obsidian_vault/sync/generic-storage.mdx index e056ca5..60d15d5 100644 --- a/pages/sync/generic-storage.en.mdx +++ b/obsidian_vault/sync/generic-storage.mdx @@ -2,7 +2,7 @@ --- -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' ![](/generic-storage-sync.png) diff --git a/pages/sync/github.en.mdx b/obsidian_vault/sync/github.mdx similarity index 99% rename from pages/sync/github.en.mdx rename to obsidian_vault/sync/github.mdx index 214b443..07e79a2 100644 --- a/pages/sync/github.en.mdx +++ b/obsidian_vault/sync/github.mdx @@ -14,7 +14,7 @@ import ReactPlayer from 'react-player' url="/github-sync.mp4" /> -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' To set up Github sync for your file, follow these steps: 1. Go to [Github](https://github.com/signup) and create an account. diff --git a/pages/sync/gitlab.en.mdx b/obsidian_vault/sync/gitlab.mdx similarity index 99% rename from pages/sync/gitlab.en.mdx rename to obsidian_vault/sync/gitlab.mdx index c0c620c..b0a2eb9 100644 --- a/pages/sync/gitlab.en.mdx +++ b/obsidian_vault/sync/gitlab.mdx @@ -17,7 +17,7 @@ import ReactPlayer from 'react-player' url="/github-sync.mp4" /> */} -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' Already have a GitLab account with a repository? Great, skip to step 3 diff --git a/pages/sync/jsonbin.en.mdx b/obsidian_vault/sync/jsonbin.mdx similarity index 98% rename from pages/sync/jsonbin.en.mdx rename to obsidian_vault/sync/jsonbin.mdx index c85a3c9..f6ff586 100644 --- a/pages/sync/jsonbin.en.mdx +++ b/obsidian_vault/sync/jsonbin.mdx @@ -1,4 +1,4 @@ -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' # JSONBin.io To enable JSONBin.io Sync for your file, follow these steps: diff --git a/pages/sync/multi-file.en.mdx b/obsidian_vault/sync/multi-file.mdx similarity index 92% rename from pages/sync/multi-file.en.mdx rename to obsidian_vault/sync/multi-file.mdx index 4e8719f..d96de4b 100644 --- a/pages/sync/multi-file.en.mdx +++ b/obsidian_vault/sync/multi-file.mdx @@ -21,7 +21,7 @@ Change the file path by removing the `.json` extension and sync to your folder a Multi File Sync -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' Free users will have read-only access on tokens, when you're using a multi-file setup. diff --git a/pages/sync/second-screen.pt-br.mdx b/obsidian_vault/sync/second-screen.mdx similarity index 96% rename from pages/sync/second-screen.pt-br.mdx rename to obsidian_vault/sync/second-screen.mdx index 4afb56b..3338ac6 100644 --- a/pages/sync/second-screen.pt-br.mdx +++ b/obsidian_vault/sync/second-screen.mdx @@ -12,7 +12,7 @@ The list view lets you navigate your design tokens in a visualized list way, whi Table view of second screen The table or spreadsheet view gives you powerful bulk-edit capabilities, such as editing the values of multiple tokens at the same time. -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' Have any feedback for us? Share in #second-screen-early-access. We want to make managing design tokens in the browser something that you enjoy. diff --git a/pages/sync/supernova.en.mdx b/obsidian_vault/sync/supernova.mdx similarity index 100% rename from pages/sync/supernova.en.mdx rename to obsidian_vault/sync/supernova.mdx diff --git a/pages/sync/sync.en.mdx b/obsidian_vault/sync/sync.mdx similarity index 100% rename from pages/sync/sync.en.mdx rename to obsidian_vault/sync/sync.mdx diff --git a/pages/sync/url.en.mdx b/obsidian_vault/sync/url.mdx similarity index 90% rename from pages/sync/url.en.mdx rename to obsidian_vault/sync/url.mdx index 7eaac3c..3397849 100644 --- a/pages/sync/url.en.mdx +++ b/obsidian_vault/sync/url.mdx @@ -1,5 +1,6 @@ +import { Callout } from 'nextra/components' + # URL Sync -import Callout from 'nextra-theme-docs/callout' The URL sync mode operates in a read-only mode, which means you cannot make direct changes within the plugin. Instead, you will need to modify the corresponding .json file stored on your server. @@ -9,7 +10,7 @@ import Callout from 'nextra-theme-docs/callout' To enable the Sync feature for your file, follow these steps in the plugin: 1. Open the Settings tab and navigate to the Sync providers section. 2. Click on the `Add new` dropdown and choose `URL` as your Sync Provider. - 3. Enter a name for your credentials. NOTE: This does not concern your repository details at all, so you can also modify the name later if desired. + 3. Enter a name for your credentials. *NOTE:* This does not concern your repository details at all, so you can also modify the name later if desired. 4. If your server requires authentication, you can store the necessary Headers as a JSON object in the headers field. This allows you to provide any required authentication headers. 5. It is important to ensure that your server's .json file has the Access-Control-Allow-Origin header set to `*`. If you need assistance with this, consult your engineers or refer to relevant [documentation](https://gist.github.com/nixta/0b98d7975562bc31c4c9). 6. In the URL field, enter the complete URL that points to your .json file stored on your server. diff --git a/pages/themes/_meta.en.json b/obsidian_vault/themes/_meta.js similarity index 82% rename from pages/themes/_meta.en.json rename to obsidian_vault/themes/_meta.js index cb5343c..b4cbf34 100644 --- a/pages/themes/_meta.en.json +++ b/obsidian_vault/themes/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "token-sets": "Token Sets", "themes-pro": "Multi-Dimensional Themes (Pro)" } diff --git a/pages/themes/themes-pro.en.mdx b/obsidian_vault/themes/themes-pro.mdx similarity index 98% rename from pages/themes/themes-pro.en.mdx rename to obsidian_vault/themes/themes-pro.mdx index 3c431b3..85b2a66 100644 --- a/pages/themes/themes-pro.en.mdx +++ b/obsidian_vault/themes/themes-pro.mdx @@ -28,7 +28,7 @@ To create a new theme, click on the `New Theme` button. Assign a name to your th Enter the name of the theme, enable the token sets you want to be included in the theme and click on `Save theme` button. You can also set a token set as a source. -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' Note that no styles are generated when creating styles with a set that is treated as a source. If you wish to exclude a specific token set from a particular theme, set it to disabled. diff --git a/pages/themes/token-sets.en.mdx b/obsidian_vault/themes/token-sets.mdx similarity index 96% rename from pages/themes/token-sets.en.mdx rename to obsidian_vault/themes/token-sets.mdx index d344d86..858302d 100644 --- a/pages/themes/token-sets.en.mdx +++ b/obsidian_vault/themes/token-sets.mdx @@ -34,7 +34,7 @@ By ticking the checkbox you activate this set, meaning these tokens will get exp You can drag sets around to define their order. All active token sets get exposed and merged into one big token set, if some tokens have the exact same name and path, the latter one wins (e.g. if colors.foreground exists in both a light and a dark theme, the one thats visible later in the set list wins). #### Creating a folder structure of sets (Pro) -You first need to enable Multi File Sync. +You first need to enable [Multi File Sync](/sync/multi-file). When the Multi File Sync is enabled, you can create a folder structure from the plugin. Simply rename your token sets to have a folder path, eg folder/set-1 , folder/set-2. ![](https://user-images.githubusercontent.com/109062656/184136468-275b114d-ff50-4322-9c21-04d940ce2dab.png) diff --git a/pages/tokens/_meta.en.json b/obsidian_vault/tokens/_meta.js similarity index 94% rename from pages/tokens/_meta.en.json rename to obsidian_vault/tokens/_meta.js index a81cd3c..55f6f6a 100644 --- a/pages/tokens/_meta.en.json +++ b/obsidian_vault/tokens/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "creating-tokens": "Creating tokens", "applying-tokens": "Applying tokens", "aliases": "Aliases", diff --git a/pages/tokens/aliases.en.mdx b/obsidian_vault/tokens/aliases.mdx similarity index 97% rename from pages/tokens/aliases.en.mdx rename to obsidian_vault/tokens/aliases.mdx index 1e36e31..d6728e6 100644 --- a/pages/tokens/aliases.en.mdx +++ b/obsidian_vault/tokens/aliases.mdx @@ -1,4 +1,4 @@ -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' # Aliases diff --git a/pages/tokens/applying-tokens.en.mdx b/obsidian_vault/tokens/applying-tokens.mdx similarity index 100% rename from pages/tokens/applying-tokens.en.mdx rename to obsidian_vault/tokens/applying-tokens.mdx diff --git a/pages/tokens/color-modifiers.en.mdx b/obsidian_vault/tokens/color-modifiers.mdx similarity index 98% rename from pages/tokens/color-modifiers.en.mdx rename to obsidian_vault/tokens/color-modifiers.mdx index 1483ffc..2be2bfd 100644 --- a/pages/tokens/color-modifiers.en.mdx +++ b/obsidian_vault/tokens/color-modifiers.mdx @@ -1,4 +1,4 @@ -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' # Color Modifiers (Pro) As a Pro user, you can manipulate colors to create slight variations of a specific base color. You can currently pick from the following opertaions: lighten, darken, mix and alpha. Additionally, you can also pick from the following color-spaces: lch, srgb, p3 and hsl. diff --git a/pages/tokens/creating-tokens.en.mdx b/obsidian_vault/tokens/creating-tokens.mdx similarity index 100% rename from pages/tokens/creating-tokens.en.mdx rename to obsidian_vault/tokens/creating-tokens.mdx diff --git a/pages/tokens/documentation-tokens.en.mdx b/obsidian_vault/tokens/documentation-tokens.mdx similarity index 100% rename from pages/tokens/documentation-tokens.en.mdx rename to obsidian_vault/tokens/documentation-tokens.mdx diff --git a/pages/tokens/json-schema.en.mdx b/obsidian_vault/tokens/json-schema.mdx similarity index 98% rename from pages/tokens/json-schema.en.mdx rename to obsidian_vault/tokens/json-schema.mdx index 654423e..cbaa3b2 100644 --- a/pages/tokens/json-schema.en.mdx +++ b/obsidian_vault/tokens/json-schema.mdx @@ -1,6 +1,6 @@ # JSON Schema -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' Tokens are represented in JSON, as a list of objects. A valid JSON would look like this: diff --git a/pages/tokens/settings.en.mdx b/obsidian_vault/tokens/settings.mdx similarity index 100% rename from pages/tokens/settings.en.mdx rename to obsidian_vault/tokens/settings.mdx diff --git a/pages/tokens/token-types.en.mdx b/obsidian_vault/tokens/token-types.mdx similarity index 100% rename from pages/tokens/token-types.en.mdx rename to obsidian_vault/tokens/token-types.mdx diff --git a/pages/tokens/using-math.en.mdx b/obsidian_vault/tokens/using-math.mdx similarity index 100% rename from pages/tokens/using-math.en.mdx rename to obsidian_vault/tokens/using-math.mdx diff --git a/pages/transforming/_meta.pt-br.json b/obsidian_vault/transforming/_meta.js similarity index 70% rename from pages/transforming/_meta.pt-br.json rename to obsidian_vault/transforming/_meta.js index 9951e9c..169837e 100644 --- a/pages/transforming/_meta.pt-br.json +++ b/obsidian_vault/transforming/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "style-dictionary": "Style dictionary" - } +} \ No newline at end of file diff --git a/pages/transforming/style-dictionary.en.mdx b/obsidian_vault/transforming/style-dictionary.mdx similarity index 100% rename from pages/transforming/style-dictionary.en.mdx rename to obsidian_vault/transforming/style-dictionary.mdx diff --git a/pages/troubleshooting/_meta.pt-br.json b/obsidian_vault/troubleshooting/_meta.js similarity index 69% rename from pages/troubleshooting/_meta.pt-br.json rename to obsidian_vault/troubleshooting/_meta.js index deb8ab5..41c4557 100644 --- a/pages/troubleshooting/_meta.pt-br.json +++ b/obsidian_vault/troubleshooting/_meta.js @@ -1,3 +1,3 @@ -{ +export default { "reset-tokens": "Resetting tokens" } diff --git a/pages/troubleshooting/reset-tokens.pt-br.mdx b/obsidian_vault/troubleshooting/reset-tokens.mdx similarity index 96% rename from pages/troubleshooting/reset-tokens.pt-br.mdx rename to obsidian_vault/troubleshooting/reset-tokens.mdx index 9e298f3..4f01a62 100644 --- a/pages/troubleshooting/reset-tokens.pt-br.mdx +++ b/obsidian_vault/troubleshooting/reset-tokens.mdx @@ -1,7 +1,7 @@ # Reset your tokens If you run into any problems with your tokens and have problems opening the plugin, you can always reset your tokens. -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' If you have the tokens only on the local document, you will lose these tokens by resetting the tokens. If you have your tokens connected to an external syncing provider, you can pull the tokens again from the repository after resetting the tokens. diff --git a/pages/variables/_meta.en.json b/obsidian_vault/variables/_meta.js similarity index 81% rename from pages/variables/_meta.en.json rename to obsidian_vault/variables/_meta.js index 282c9cb..0fe2a0c 100644 --- a/pages/variables/_meta.en.json +++ b/obsidian_vault/variables/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "creating-variables": "Creating variables", "references": "References" } diff --git a/pages/variables/creating-variables.en.mdx b/obsidian_vault/variables/creating-variables.mdx similarity index 100% rename from pages/variables/creating-variables.en.mdx rename to obsidian_vault/variables/creating-variables.mdx diff --git a/pages/variables/references.en.mdx b/obsidian_vault/variables/references.mdx similarity index 100% rename from pages/variables/references.en.mdx rename to obsidian_vault/variables/references.mdx diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index db90e14..0000000 --- a/package-lock.json +++ /dev/null @@ -1,5912 +0,0 @@ -{ - "name": "figma-plugin-docs", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "figma-plugin-docs", - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "next": "^12.2.0", - "nextra": "2.0.0-beta.6", - "nextra-theme-docs": "2.0.0-beta.6", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-player": "^2.12.0" - }, - "devDependencies": { - "autoprefixer": "^10.4.2", - "postcss": "^8.4.5", - "prettier": "^2.0.5", - "tailwindcss": "^3.0.16" - } - }, - "node_modules/@babel/runtime": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", - "integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==", - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@headlessui/react": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.3.tgz", - "integrity": "sha512-LGp06SrGv7BMaIQlTs8s2G06moqkI0cb0b8stgq7KZ3xcHdH3qMP+cRyV7qe5x4XEW/IGY48BW4fLesD6NQLng==", - "engines": { - "node": ">=10" - } - }, - "node_modules/@mdx-js/mdx": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.1.5.tgz", - "integrity": "sha512-zEG0lt+Bl/r5U6e0TOS7qDbsXICtemfAPquxWFsMbdzrvlWaqMGemLl+sjVpqlyaaiCiGVQBSGdCk0t1qXjkQg==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/mdx": "^2.0.0", - "estree-util-build-jsx": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-util-to-js": "^1.1.0", - "estree-walker": "^3.0.0", - "hast-util-to-estree": "^2.0.0", - "markdown-extensions": "^1.0.0", - "periscopic": "^3.0.0", - "remark-mdx": "^2.0.0", - "remark-parse": "^10.0.0", - "remark-rehype": "^10.0.0", - "unified": "^10.0.0", - "unist-util-position-from-estree": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0" - } - }, - "node_modules/@mdx-js/react": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.1.5.tgz", - "integrity": "sha512-3Az1I6SAWA9R38rYjz5rXBrGKeZhq96CSSyQtqY+maPj8stBsoUH5pNcmIixuGkufYsh8F5+ka2CVPo2fycWZw==", - "dependencies": { - "@types/mdx": "^2.0.0", - "@types/react": ">=16" - } - }, - "node_modules/@napi-rs/simple-git": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git/-/simple-git-0.1.8.tgz", - "integrity": "sha512-BvOMdkkofTz6lEE35itJ/laUokPhr/5ToMGlOH25YnhLD2yN1KpRAT4blW9tT8281/1aZjW3xyi73bs//IrDKA==", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@napi-rs/simple-git-android-arm-eabi": "0.1.8", - "@napi-rs/simple-git-android-arm64": "0.1.8", - "@napi-rs/simple-git-darwin-arm64": "0.1.8", - "@napi-rs/simple-git-darwin-x64": "0.1.8", - "@napi-rs/simple-git-linux-arm-gnueabihf": "0.1.8", - "@napi-rs/simple-git-linux-arm64-gnu": "0.1.8", - "@napi-rs/simple-git-linux-arm64-musl": "0.1.8", - "@napi-rs/simple-git-linux-x64-gnu": "0.1.8", - "@napi-rs/simple-git-linux-x64-musl": "0.1.8", - "@napi-rs/simple-git-win32-arm64-msvc": "0.1.8", - "@napi-rs/simple-git-win32-x64-msvc": "0.1.8" - } - }, - "node_modules/@napi-rs/simple-git-android-arm-eabi": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm-eabi/-/simple-git-android-arm-eabi-0.1.8.tgz", - "integrity": "sha512-JJCejHBB1G6O8nxjQLT4quWCcvLpC3oRdJJ9G3MFYSCoYS8i1bWCWeU+K7Br+xT+D6s1t9q8kNJAwJv9Ygpi0g==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/simple-git-android-arm64": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm64/-/simple-git-android-arm64-0.1.8.tgz", - "integrity": "sha512-mraHzwWBw3tdRetNOS5KnFSjvdAbNBnjFLA8I4PwTCPJj3Q4txrigcPp2d59cJ0TC51xpnPXnZjYdNwwSI9g6g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/simple-git-darwin-arm64": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-arm64/-/simple-git-darwin-arm64-0.1.8.tgz", - "integrity": "sha512-ufy/36eI/j4UskEuvqSH7uXtp3oXeLDmjQCfKJz3u5Vx98KmOMKrqAm2H81AB2WOtCo5mqS6PbBeUXR8BJX8lQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/simple-git-darwin-x64": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-x64/-/simple-git-darwin-x64-0.1.8.tgz", - "integrity": "sha512-Vb21U+v3tPJNl+8JtIHHT8HGe6WZ8o1Tq3f6p+Jx9Cz71zEbcIiB9FCEMY1knS/jwQEOuhhlI9Qk7d4HY+rprA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/simple-git-linux-arm-gnueabihf": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm-gnueabihf/-/simple-git-linux-arm-gnueabihf-0.1.8.tgz", - "integrity": "sha512-6BPTJ7CzpSm2t54mRLVaUr3S7ORJfVJoCk2rQ8v8oDg0XAMKvmQQxOsAgqKBo9gYNHJnqrOx3AEuEgvB586BuQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/simple-git-linux-arm64-gnu": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-gnu/-/simple-git-linux-arm64-gnu-0.1.8.tgz", - "integrity": "sha512-qfESqUCAA/XoQpRXHptSQ8gIFnETCQt1zY9VOkplx6tgYk9PCeaX4B1Xuzrh3eZamSCMJFn+1YB9Ut8NwyGgAA==", - "cpu": [ - "arm64" - ], - "hasInstallScript": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/simple-git-linux-arm64-musl": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-musl/-/simple-git-linux-arm64-musl-0.1.8.tgz", - "integrity": "sha512-G80BQPpaRmQpn8dJGHp4I2/YVhWDUNJwcCrJAtAdbKFDCMyCHJBln2ERL/+IEUlIAT05zK/c1Z5WEprvXEdXow==", - "cpu": [ - "arm64" - ], - "hasInstallScript": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/simple-git-linux-x64-gnu": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-gnu/-/simple-git-linux-x64-gnu-0.1.8.tgz", - "integrity": "sha512-NI6o1sZYEf6vPtNWJAm9w8BxJt+LlSFW0liSjYe3lc3e4dhMfV240f0ALeqlwdIldRPaDFwZSJX5/QbS7nMzhw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/simple-git-linux-x64-musl": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-musl/-/simple-git-linux-x64-musl-0.1.8.tgz", - "integrity": "sha512-wljGAEOW41er45VTiU8kXJmO480pQKzsgRCvPlJJSCaEVBbmo6XXbFIXnZy1a2J3Zyy2IOsRB4PVkUZaNuPkZQ==", - "cpu": [ - "x64" - ], - "hasInstallScript": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/simple-git-win32-arm64-msvc": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-arm64-msvc/-/simple-git-win32-arm64-msvc-0.1.8.tgz", - "integrity": "sha512-QuV4QILyKPfbWHoQKrhXqjiCClx0SxbCTVogkR89BwivekqJMd9UlMxZdoCmwLWutRx4z9KmzQqokvYI5QeepA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/simple-git-win32-x64-msvc": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-x64-msvc/-/simple-git-win32-x64-msvc-0.1.8.tgz", - "integrity": "sha512-UzNS4JtjhZhZ5hRLq7BIUq+4JOwt1ThIKv11CsF1ag2l99f0123XvfEpjczKTaa94nHtjXYc2Mv9TjccBqYOew==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/env": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.3.1.tgz", - "integrity": "sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg==" - }, - "node_modules/@next/swc-android-arm-eabi": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.1.tgz", - "integrity": "sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-android-arm64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.3.1.tgz", - "integrity": "sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.3.1.tgz", - "integrity": "sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.1.tgz", - "integrity": "sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-freebsd-x64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.1.tgz", - "integrity": "sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm-gnueabihf": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.3.1.tgz", - "integrity": "sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.3.1.tgz", - "integrity": "sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.1.tgz", - "integrity": "sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.3.1.tgz", - "integrity": "sha512-JWEaMyvNrXuM3dyy9Pp5cFPuSSvG82+yABqsWugjWlvfmnlnx9HOQZY23bFq3cNghy5V/t0iPb6cffzRWylgsA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.3.1.tgz", - "integrity": "sha512-xoEWQQ71waWc4BZcOjmatuvPUXKTv6MbIFzpm4LFeCHsg2iwai0ILmNXf81rJR+L1Wb9ifEke2sQpZSPNz1Iyg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.1.tgz", - "integrity": "sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.1.tgz", - "integrity": "sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.1.tgz", - "integrity": "sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@reach/skip-nav": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@reach/skip-nav/-/skip-nav-0.16.0.tgz", - "integrity": "sha512-SY4PdNx+hQHbeOr/+qLc+QXdRt9NTVlt0r737bOqY1WURGBIEN9sGgsmIsHluP1/bQuAe0JKdOJ/tXiwQ3Z3ug==", - "dependencies": { - "@reach/utils": "0.16.0", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" - } - }, - "node_modules/@reach/utils": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@reach/utils/-/utils-0.16.0.tgz", - "integrity": "sha512-PCggBet3qaQmwFNcmQ/GqHSefadAFyNCUekq9RrWoaU9hh/S4iaFgf2MBMdM47eQj5i/Bk0Mm07cP/XPFlkN+Q==", - "dependencies": { - "tiny-warning": "^1.0.3", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" - } - }, - "node_modules/@swc/helpers": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz", - "integrity": "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/acorn": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - }, - "node_modules/@types/estree-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", - "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/hast": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", - "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdx": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.3.tgz", - "integrity": "sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==" - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "node_modules/@types/react": { - "version": "18.0.21", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz", - "integrity": "sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" - }, - "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-node/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/astring": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.3.tgz", - "integrity": "sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==", - "bin": { - "astring": "bin/astring" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001407", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001423", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001423.tgz", - "integrity": "sha512-09iwWGOlifvE1XuHokFMP7eR38a0JnajoyL3/i87c8ZjRWRrdKo1fqjNfugfBD0UDBIOz0U+jtNhJ0EPm1VleQ==" - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" - }, - "node_modules/chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dependencies": { - "ansi-styles": "^3.1.0", - "escape-string-regexp": "^1.0.5", - "supports-color": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" - }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==" - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" - }, - "node_modules/clipboardy": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.2.tgz", - "integrity": "sha512-16KrBOV7bHmHdxcQiCvfUFYVFyEah4FI8vYT1Fr7CGSA4G+xBWMEfUEQJS1hxeHGtI9ju1Bzs9uXSbj5HZKArw==", - "dependencies": { - "arch": "^2.1.0", - "execa": "^0.8.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-convert/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", - "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==" - }, - "node_modules/compute-scroll-into-view": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", - "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" - }, - "node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "dependencies": { - "character-entities": "^2.0.0" - } - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estree-util-attach-comments": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.0.tgz", - "integrity": "sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw==", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/estree-util-build-jsx": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.0.tgz", - "integrity": "sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-walker": "^3.0.0" - } - }, - "node_modules/estree-util-is-identifier-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz", - "integrity": "sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==" - }, - "node_modules/estree-util-to-js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.1.0.tgz", - "integrity": "sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "astring": "^1.8.0", - "source-map": "^0.7.0" - } - }, - "node_modules/estree-util-visit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.0.tgz", - "integrity": "sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^2.0.0" - } - }, - "node_modules/estree-walker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.1.tgz", - "integrity": "sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==" - }, - "node_modules/execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flexsearch": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.31.tgz", - "integrity": "sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==" - }, - "node_modules/focus-visible": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/focus-visible/-/focus-visible-5.2.0.tgz", - "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==" - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/github-slugger": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz", - "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==" - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hast-util-to-estree": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.1.0.tgz", - "integrity": "sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "estree-util-attach-comments": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdxjs-esm": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.3.0", - "unist-util-position": "^4.0.0", - "zwitch": "^2.0.0" - } - }, - "node_modules/hast-util-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", - "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" - }, - "node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - }, - "node_modules/intersection-observer": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.12.2.tgz", - "integrity": "sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==" - }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==" - }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==" - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==" - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/is-reference": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.0.tgz", - "integrity": "sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/load-script": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", - "integrity": "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=" - }, - "node_modules/longest-streak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", - "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/markdown-extensions": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", - "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/markdown-table": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz", - "integrity": "sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==" - }, - "node_modules/match-sorter": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-4.2.1.tgz", - "integrity": "sha512-s+3h9TiZU9U1pWhIERHf8/f4LmBN6IXaRgo2CI17+XGByGS1GvG5VvXK9pcGyCjGe3WM3mSYRC3ipGrd5UEVgw==", - "dependencies": { - "@babel/runtime": "^7.10.5", - "remove-accents": "0.4.2" - } - }, - "node_modules/mdast-util-definitions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", - "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", - "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", - "dependencies": { - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", - "integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/mdast-util-gfm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz", - "integrity": "sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==", - "dependencies": { - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-gfm-autolink-literal": "^1.0.0", - "mdast-util-gfm-footnote": "^1.0.0", - "mdast-util-gfm-strikethrough": "^1.0.0", - "mdast-util-gfm-table": "^1.0.0", - "mdast-util-gfm-task-list-item": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz", - "integrity": "sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==", - "dependencies": { - "@types/mdast": "^3.0.0", - "ccount": "^2.0.0", - "mdast-util-find-and-replace": "^2.0.0", - "micromark-util-character": "^1.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz", - "integrity": "sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0", - "micromark-util-normalize-identifier": "^1.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz", - "integrity": "sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.6.tgz", - "integrity": "sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==", - "dependencies": { - "@types/mdast": "^3.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.3.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz", - "integrity": "sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" - } - }, - "node_modules/mdast-util-mdx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.0.tgz", - "integrity": "sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw==", - "dependencies": { - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdx-jsx": "^2.0.0", - "mdast-util-mdxjs-esm": "^1.0.0" - } - }, - "node_modules/mdast-util-mdx-expression": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.1.tgz", - "integrity": "sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.0.tgz", - "integrity": "sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "ccount": "^2.0.0", - "mdast-util-to-markdown": "^1.3.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-remove-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.0.tgz", - "integrity": "sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.4.tgz", - "integrity": "sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-builder": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", - "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - } - }, - "node_modules/mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" - }, - "node_modules/memoize-one": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz", - "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromark": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz", - "integrity": "sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", - "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz", - "integrity": "sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==", - "dependencies": { - "micromark-extension-gfm-autolink-literal": "^1.0.0", - "micromark-extension-gfm-footnote": "^1.0.0", - "micromark-extension-gfm-strikethrough": "^1.0.0", - "micromark-extension-gfm-table": "^1.0.0", - "micromark-extension-gfm-tagfilter": "^1.0.0", - "micromark-extension-gfm-task-list-item": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz", - "integrity": "sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", - "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", - "dependencies": { - "micromark-core-commonmark": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz", - "integrity": "sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz", - "integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz", - "integrity": "sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==", - "dependencies": { - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz", - "integrity": "sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-mdx-expression": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz", - "integrity": "sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==", - "dependencies": { - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-mdx-jsx": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz", - "integrity": "sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==", - "dependencies": { - "@types/acorn": "^4.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - } - }, - "node_modules/micromark-extension-mdx-md": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz", - "integrity": "sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==", - "dependencies": { - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-extension-mdxjs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz", - "integrity": "sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==", - "dependencies": { - "acorn": "^8.0.0", - "acorn-jsx": "^5.0.0", - "micromark-extension-mdx-expression": "^1.0.0", - "micromark-extension-mdx-jsx": "^1.0.0", - "micromark-extension-mdx-md": "^1.0.0", - "micromark-extension-mdxjs-esm": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-extension-mdxjs-esm": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.3.tgz", - "integrity": "sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==", - "dependencies": { - "micromark-core-commonmark": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-position-from-estree": "^1.1.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - } - }, - "node_modules/micromark-factory-destination": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", - "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", - "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-mdx-expression": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.6.tgz", - "integrity": "sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-position-from-estree": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", - "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", - "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", - "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", - "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", - "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", - "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", - "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", - "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", - "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", - "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", - "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==" - }, - "node_modules/micromark-util-events-to-acorn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.0.tgz", - "integrity": "sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw==", - "dependencies": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "estree-util-visit": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-location": "^4.0.0", - "vfile-message": "^3.0.0" - } - }, - "node_modules/micromark-util-html-tag-name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", - "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==" - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", - "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", - "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", - "dependencies": { - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz", - "integrity": "sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", - "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", - "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==" - }, - "node_modules/micromark-util-types": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", - "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==" - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/next": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/next/-/next-12.3.1.tgz", - "integrity": "sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw==", - "dependencies": { - "@next/env": "12.3.1", - "@swc/helpers": "0.4.11", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.0.7", - "use-sync-external-store": "1.2.0" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=12.22.0" - }, - "optionalDependencies": { - "@next/swc-android-arm-eabi": "12.3.1", - "@next/swc-android-arm64": "12.3.1", - "@next/swc-darwin-arm64": "12.3.1", - "@next/swc-darwin-x64": "12.3.1", - "@next/swc-freebsd-x64": "12.3.1", - "@next/swc-linux-arm-gnueabihf": "12.3.1", - "@next/swc-linux-arm64-gnu": "12.3.1", - "@next/swc-linux-arm64-musl": "12.3.1", - "@next/swc-linux-x64-gnu": "12.3.1", - "@next/swc-linux-x64-musl": "12.3.1", - "@next/swc-win32-arm64-msvc": "12.3.1", - "@next/swc-win32-ia32-msvc": "12.3.1", - "@next/swc-win32-x64-msvc": "12.3.1" - } - }, - "node_modules/next-themes": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", - "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==" - }, - "node_modules/nextra": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/nextra/-/nextra-2.0.0-beta.6.tgz", - "integrity": "sha512-qRuCk28RyUzH1rbDKIQXjO7qTzNhuxeYc9D6uEX7mnz6Pfm/tTUoZgydAj9kIG9emKEPM0oh7CS/Tt8hhScIKg==", - "dependencies": { - "@mdx-js/mdx": "^2.1.0", - "@napi-rs/simple-git": "^0.1.7", - "github-slugger": "^1.4.0", - "graceful-fs": "^4.2.6", - "gray-matter": "^4.0.3", - "rehype-pretty-code": "^0.1.0", - "remark-gfm": "^3.0.1", - "shiki": "0.10.1", - "slash": "^3.0.0" - }, - "peerDependencies": { - "react": ">=16.13.1" - } - }, - "node_modules/nextra-theme-docs": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/nextra-theme-docs/-/nextra-theme-docs-2.0.0-beta.6.tgz", - "integrity": "sha512-Z+MRZlD1Lo2UbAm7Scuo2AmOkihciJ8eJcu3ynsVNg9MuEu/VALtUyjHh8ECmt1m6T6sTPYVDpX+WDejagZkKw==", - "dependencies": { - "@headlessui/react": "^1.6.1", - "@mdx-js/react": "^2.1.0", - "@reach/skip-nav": "^0.16.0", - "classnames": "^2.2.6", - "flexsearch": "^0.7.21", - "focus-visible": "^5.1.0", - "github-slugger": "^1.4.0", - "intersection-observer": "^0.12.0", - "match-sorter": "^4.2.0", - "next-themes": "^0.2.0-beta.2", - "parse-git-url": "^1.0.1", - "scroll-into-view-if-needed": "^2.2.29", - "title": "^3.4.2" - }, - "peerDependencies": { - "next": ">=9.5.3", - "react": ">=16.13.1", - "react-dom": ">=16.13.1" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "engines": { - "node": ">=4" - } - }, - "node_modules/parse-entities": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.0.tgz", - "integrity": "sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "character-entities": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - } - }, - "node_modules/parse-git-url": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-git-url/-/parse-git-url-1.0.1.tgz", - "integrity": "sha512-Zukjztu09UXpXV/Q+4vgwyVPzUBkUvDjlqHlpG+swv/zYzed/5Igw/33rIEJxFDRc5LxvEqYDVDzhBfnOLWDYw==" - }, - "node_modules/parse-numeric-range": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/periscopic": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.0.4.tgz", - "integrity": "sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==", - "dependencies": { - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", - "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/property-information": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", - "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - } - }, - "node_modules/react-fast-compare": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", - "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-player": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/react-player/-/react-player-2.12.0.tgz", - "integrity": "sha512-rymLRz/2GJJD+Wc01S7S+i9pGMFYnNmQibR2gVE3KmHJCBNN8BhPAlOPTGZtn1uKpJ6p4RPLlzPQ1OLreXd8gw==", - "dependencies": { - "deepmerge": "^4.0.0", - "load-script": "^1.0.0", - "memoize-one": "^5.1.1", - "prop-types": "^15.7.2", - "react-fast-compare": "^3.0.1" - }, - "peerDependencies": { - "react": ">=16.6.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" - }, - "node_modules/rehype-pretty-code": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/rehype-pretty-code/-/rehype-pretty-code-0.1.0.tgz", - "integrity": "sha512-7SaedCOn5VcDGdllQeu3kBWC+/zbkD6ZE7iOALJzK79+v0K0qQpa1WqBwoxetTbCLwBTY9wC4CabEsDS3qj55g==", - "dependencies": { - "parse-numeric-range": "^1.3.0" - }, - "engines": { - "node": "^12.16.0 || >=13.2.0" - }, - "peerDependencies": { - "shiki": "*" - } - }, - "node_modules/remark-gfm": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", - "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-gfm": "^2.0.0", - "micromark-extension-gfm": "^2.0.0", - "unified": "^10.0.0" - } - }, - "node_modules/remark-mdx": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.1.5.tgz", - "integrity": "sha512-A8vw5s+BgOa968Irt8BO7DfWJTE0Fe7Ge3hX8zzDB1DnwMZTNdK6qF2IcFao+/7nzk1vSysKcFp+3ku4vhMpaQ==", - "dependencies": { - "mdast-util-mdx": "^2.0.0", - "micromark-extension-mdxjs": "^1.0.0" - } - }, - "node_modules/remark-parse": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", - "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - } - }, - "node_modules/remark-rehype": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", - "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-to-hast": "^12.1.0", - "unified": "^10.0.0" - } - }, - "node_modules/remove-accents": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", - "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/scroll-into-view-if-needed": { - "version": "2.2.29", - "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz", - "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==", - "dependencies": { - "compute-scroll-into-view": "^1.0.17" - } - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shiki": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.1.tgz", - "integrity": "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==", - "dependencies": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "5.2.0" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", - "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, - "node_modules/styled-jsx": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.7.tgz", - "integrity": "sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==", - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==", - "dependencies": { - "has-flag": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tailwindcss": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.1.tgz", - "integrity": "sha512-Uw+GVSxp5CM48krnjHObqoOwlCt5Qo6nw1jlCRwfGy68dSYb/LwS9ZFidYGRiM+w6rMawkZiu1mEMAsHYAfoLg==", - "dev": true, - "dependencies": { - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "detective": "^5.2.1", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.17", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "6.0.0", - "postcss-selector-parser": "^6.0.10", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/tailwindcss/node_modules/postcss": { - "version": "8.4.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", - "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, - "node_modules/title": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/title/-/title-3.5.3.tgz", - "integrity": "sha512-20JyowYglSEeCvZv3EZ0nZ046vLarO37prvV0mbtQV7C8DJPGgN967r8SJkqd3XK3K3lD3/Iyfp3avjfil8Q2Q==", - "dependencies": { - "arg": "1.0.0", - "chalk": "2.3.0", - "clipboardy": "1.2.2", - "titleize": "1.0.0" - }, - "bin": { - "title": "bin/title.js" - } - }, - "node_modules/title/node_modules/arg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-1.0.0.tgz", - "integrity": "sha512-Wk7TEzl1KqvTGs/uyhmHO/3XLd3t1UeU4IstvPXVzGPM522cTjqjNZ99esCkcL52sjqjo8e8CTBcWhkxvGzoAw==" - }, - "node_modules/titleize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-1.0.0.tgz", - "integrity": "sha512-TARUb7z1pGvlLxgPk++7wJ6aycXF3GJ0sNSBTAsTuJrQG5QuZlkUQP+zl+nbjAh4gMX9yDw9ZYklMd7vAfJKEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" - }, - "node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==" - }, - "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - } - }, - "node_modules/unist-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", - "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", - "dependencies": { - "@types/unist": "^2.0.0" - } - }, - "node_modules/unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" - }, - "node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" - }, - "node_modules/unist-util-position": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", - "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", - "dependencies": { - "@types/unist": "^2.0.0" - } - }, - "node_modules/unist-util-position-from-estree": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz", - "integrity": "sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==", - "dependencies": { - "@types/unist": "^2.0.0" - } - }, - "node_modules/unist-util-remove-position": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz", - "integrity": "sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz", - "integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==", - "dependencies": { - "@types/unist": "^2.0.0" - } - }, - "node_modules/unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "bin": { - "uvu": "bin.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "node_modules/vfile-location": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", - "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", - "dependencies": { - "@types/unist": "^2.0.0", - "vfile": "^5.0.0" - } - }, - "node_modules/vfile-message": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.2.tgz", - "integrity": "sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - }, - "node_modules/vscode-oniguruma": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz", - "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==" - }, - "node_modules/vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==" - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==" - } - }, - "dependencies": { - "@babel/runtime": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", - "integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@headlessui/react": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.3.tgz", - "integrity": "sha512-LGp06SrGv7BMaIQlTs8s2G06moqkI0cb0b8stgq7KZ3xcHdH3qMP+cRyV7qe5x4XEW/IGY48BW4fLesD6NQLng==" - }, - "@mdx-js/mdx": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.1.5.tgz", - "integrity": "sha512-zEG0lt+Bl/r5U6e0TOS7qDbsXICtemfAPquxWFsMbdzrvlWaqMGemLl+sjVpqlyaaiCiGVQBSGdCk0t1qXjkQg==", - "requires": { - "@types/estree-jsx": "^1.0.0", - "@types/mdx": "^2.0.0", - "estree-util-build-jsx": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-util-to-js": "^1.1.0", - "estree-walker": "^3.0.0", - "hast-util-to-estree": "^2.0.0", - "markdown-extensions": "^1.0.0", - "periscopic": "^3.0.0", - "remark-mdx": "^2.0.0", - "remark-parse": "^10.0.0", - "remark-rehype": "^10.0.0", - "unified": "^10.0.0", - "unist-util-position-from-estree": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0" - } - }, - "@mdx-js/react": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.1.5.tgz", - "integrity": "sha512-3Az1I6SAWA9R38rYjz5rXBrGKeZhq96CSSyQtqY+maPj8stBsoUH5pNcmIixuGkufYsh8F5+ka2CVPo2fycWZw==", - "requires": { - "@types/mdx": "^2.0.0", - "@types/react": ">=16" - } - }, - "@napi-rs/simple-git": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git/-/simple-git-0.1.8.tgz", - "integrity": "sha512-BvOMdkkofTz6lEE35itJ/laUokPhr/5ToMGlOH25YnhLD2yN1KpRAT4blW9tT8281/1aZjW3xyi73bs//IrDKA==", - "requires": { - "@napi-rs/simple-git-android-arm-eabi": "0.1.8", - "@napi-rs/simple-git-android-arm64": "0.1.8", - "@napi-rs/simple-git-darwin-arm64": "0.1.8", - "@napi-rs/simple-git-darwin-x64": "0.1.8", - "@napi-rs/simple-git-linux-arm-gnueabihf": "0.1.8", - "@napi-rs/simple-git-linux-arm64-gnu": "0.1.8", - "@napi-rs/simple-git-linux-arm64-musl": "0.1.8", - "@napi-rs/simple-git-linux-x64-gnu": "0.1.8", - "@napi-rs/simple-git-linux-x64-musl": "0.1.8", - "@napi-rs/simple-git-win32-arm64-msvc": "0.1.8", - "@napi-rs/simple-git-win32-x64-msvc": "0.1.8" - } - }, - "@napi-rs/simple-git-android-arm-eabi": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm-eabi/-/simple-git-android-arm-eabi-0.1.8.tgz", - "integrity": "sha512-JJCejHBB1G6O8nxjQLT4quWCcvLpC3oRdJJ9G3MFYSCoYS8i1bWCWeU+K7Br+xT+D6s1t9q8kNJAwJv9Ygpi0g==", - "optional": true - }, - "@napi-rs/simple-git-android-arm64": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm64/-/simple-git-android-arm64-0.1.8.tgz", - "integrity": "sha512-mraHzwWBw3tdRetNOS5KnFSjvdAbNBnjFLA8I4PwTCPJj3Q4txrigcPp2d59cJ0TC51xpnPXnZjYdNwwSI9g6g==", - "optional": true - }, - "@napi-rs/simple-git-darwin-arm64": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-arm64/-/simple-git-darwin-arm64-0.1.8.tgz", - "integrity": "sha512-ufy/36eI/j4UskEuvqSH7uXtp3oXeLDmjQCfKJz3u5Vx98KmOMKrqAm2H81AB2WOtCo5mqS6PbBeUXR8BJX8lQ==", - "optional": true - }, - "@napi-rs/simple-git-darwin-x64": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-x64/-/simple-git-darwin-x64-0.1.8.tgz", - "integrity": "sha512-Vb21U+v3tPJNl+8JtIHHT8HGe6WZ8o1Tq3f6p+Jx9Cz71zEbcIiB9FCEMY1knS/jwQEOuhhlI9Qk7d4HY+rprA==", - "optional": true - }, - "@napi-rs/simple-git-linux-arm-gnueabihf": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm-gnueabihf/-/simple-git-linux-arm-gnueabihf-0.1.8.tgz", - "integrity": "sha512-6BPTJ7CzpSm2t54mRLVaUr3S7ORJfVJoCk2rQ8v8oDg0XAMKvmQQxOsAgqKBo9gYNHJnqrOx3AEuEgvB586BuQ==", - "optional": true - }, - "@napi-rs/simple-git-linux-arm64-gnu": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-gnu/-/simple-git-linux-arm64-gnu-0.1.8.tgz", - "integrity": "sha512-qfESqUCAA/XoQpRXHptSQ8gIFnETCQt1zY9VOkplx6tgYk9PCeaX4B1Xuzrh3eZamSCMJFn+1YB9Ut8NwyGgAA==", - "optional": true - }, - "@napi-rs/simple-git-linux-arm64-musl": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-musl/-/simple-git-linux-arm64-musl-0.1.8.tgz", - "integrity": "sha512-G80BQPpaRmQpn8dJGHp4I2/YVhWDUNJwcCrJAtAdbKFDCMyCHJBln2ERL/+IEUlIAT05zK/c1Z5WEprvXEdXow==", - "optional": true - }, - "@napi-rs/simple-git-linux-x64-gnu": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-gnu/-/simple-git-linux-x64-gnu-0.1.8.tgz", - "integrity": "sha512-NI6o1sZYEf6vPtNWJAm9w8BxJt+LlSFW0liSjYe3lc3e4dhMfV240f0ALeqlwdIldRPaDFwZSJX5/QbS7nMzhw==", - "optional": true - }, - "@napi-rs/simple-git-linux-x64-musl": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-musl/-/simple-git-linux-x64-musl-0.1.8.tgz", - "integrity": "sha512-wljGAEOW41er45VTiU8kXJmO480pQKzsgRCvPlJJSCaEVBbmo6XXbFIXnZy1a2J3Zyy2IOsRB4PVkUZaNuPkZQ==", - "optional": true - }, - "@napi-rs/simple-git-win32-arm64-msvc": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-arm64-msvc/-/simple-git-win32-arm64-msvc-0.1.8.tgz", - "integrity": "sha512-QuV4QILyKPfbWHoQKrhXqjiCClx0SxbCTVogkR89BwivekqJMd9UlMxZdoCmwLWutRx4z9KmzQqokvYI5QeepA==", - "optional": true - }, - "@napi-rs/simple-git-win32-x64-msvc": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-x64-msvc/-/simple-git-win32-x64-msvc-0.1.8.tgz", - "integrity": "sha512-UzNS4JtjhZhZ5hRLq7BIUq+4JOwt1ThIKv11CsF1ag2l99f0123XvfEpjczKTaa94nHtjXYc2Mv9TjccBqYOew==", - "optional": true - }, - "@next/env": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.3.1.tgz", - "integrity": "sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg==" - }, - "@next/swc-android-arm-eabi": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.1.tgz", - "integrity": "sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ==", - "optional": true - }, - "@next/swc-android-arm64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.3.1.tgz", - "integrity": "sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q==", - "optional": true - }, - "@next/swc-darwin-arm64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.3.1.tgz", - "integrity": "sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg==", - "optional": true - }, - "@next/swc-darwin-x64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.1.tgz", - "integrity": "sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA==", - "optional": true - }, - "@next/swc-freebsd-x64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.1.tgz", - "integrity": "sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q==", - "optional": true - }, - "@next/swc-linux-arm-gnueabihf": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.3.1.tgz", - "integrity": "sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w==", - "optional": true - }, - "@next/swc-linux-arm64-gnu": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.3.1.tgz", - "integrity": "sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ==", - "optional": true - }, - "@next/swc-linux-arm64-musl": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.1.tgz", - "integrity": "sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg==", - "optional": true - }, - "@next/swc-linux-x64-gnu": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.3.1.tgz", - "integrity": "sha512-JWEaMyvNrXuM3dyy9Pp5cFPuSSvG82+yABqsWugjWlvfmnlnx9HOQZY23bFq3cNghy5V/t0iPb6cffzRWylgsA==", - "optional": true - }, - "@next/swc-linux-x64-musl": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.3.1.tgz", - "integrity": "sha512-xoEWQQ71waWc4BZcOjmatuvPUXKTv6MbIFzpm4LFeCHsg2iwai0ILmNXf81rJR+L1Wb9ifEke2sQpZSPNz1Iyg==", - "optional": true - }, - "@next/swc-win32-arm64-msvc": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.1.tgz", - "integrity": "sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw==", - "optional": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.1.tgz", - "integrity": "sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA==", - "optional": true - }, - "@next/swc-win32-x64-msvc": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.1.tgz", - "integrity": "sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA==", - "optional": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@reach/skip-nav": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@reach/skip-nav/-/skip-nav-0.16.0.tgz", - "integrity": "sha512-SY4PdNx+hQHbeOr/+qLc+QXdRt9NTVlt0r737bOqY1WURGBIEN9sGgsmIsHluP1/bQuAe0JKdOJ/tXiwQ3Z3ug==", - "requires": { - "@reach/utils": "0.16.0", - "tslib": "^2.3.0" - } - }, - "@reach/utils": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@reach/utils/-/utils-0.16.0.tgz", - "integrity": "sha512-PCggBet3qaQmwFNcmQ/GqHSefadAFyNCUekq9RrWoaU9hh/S4iaFgf2MBMdM47eQj5i/Bk0Mm07cP/XPFlkN+Q==", - "requires": { - "tiny-warning": "^1.0.3", - "tslib": "^2.3.0" - } - }, - "@swc/helpers": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz", - "integrity": "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==", - "requires": { - "tslib": "^2.4.0" - } - }, - "@types/acorn": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", - "requires": { - "@types/estree": "*" - } - }, - "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "requires": { - "@types/ms": "*" - } - }, - "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - }, - "@types/estree-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", - "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", - "requires": { - "@types/estree": "*" - } - }, - "@types/hast": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", - "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", - "requires": { - "@types/unist": "*" - } - }, - "@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "requires": { - "@types/unist": "*" - } - }, - "@types/mdx": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.3.tgz", - "integrity": "sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==" - }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "@types/react": { - "version": "18.0.21", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz", - "integrity": "sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - }, - "acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "requires": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" - }, - "arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "astring": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.3.tgz", - "integrity": "sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==" - }, - "autoprefixer": { - "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001407", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001423", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001423.tgz", - "integrity": "sha512-09iwWGOlifvE1XuHokFMP7eR38a0JnajoyL3/i87c8ZjRWRrdKo1fqjNfugfBD0UDBIOz0U+jtNhJ0EPm1VleQ==" - }, - "ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "requires": { - "ansi-styles": "^3.1.0", - "escape-string-regexp": "^1.0.5", - "supports-color": "^4.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - } - } - }, - "character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" - }, - "character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" - }, - "character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" - }, - "character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==" - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" - }, - "clipboardy": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.2.tgz", - "integrity": "sha512-16KrBOV7bHmHdxcQiCvfUFYVFyEah4FI8vYT1Fr7CGSA4G+xBWMEfUEQJS1hxeHGtI9ju1Bzs9uXSbj5HZKArw==", - "requires": { - "arch": "^2.1.0", - "execa": "^0.8.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - }, - "dependencies": { - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - } - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "comma-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", - "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==" - }, - "compute-scroll-into-view": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", - "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "requires": { - "character-entities": "^2.0.0" - } - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, - "defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true - }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" - }, - "detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "requires": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - } - }, - "didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==" - }, - "dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==" - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "estree-util-attach-comments": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.0.tgz", - "integrity": "sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw==", - "requires": { - "@types/estree": "^1.0.0" - } - }, - "estree-util-build-jsx": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.0.tgz", - "integrity": "sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ==", - "requires": { - "@types/estree-jsx": "^1.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-walker": "^3.0.0" - } - }, - "estree-util-is-identifier-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz", - "integrity": "sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==" - }, - "estree-util-to-js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.1.0.tgz", - "integrity": "sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==", - "requires": { - "@types/estree-jsx": "^1.0.0", - "astring": "^1.8.0", - "source-map": "^0.7.0" - } - }, - "estree-util-visit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.0.tgz", - "integrity": "sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==", - "requires": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^2.0.0" - } - }, - "estree-walker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.1.tgz", - "integrity": "sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==" - }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "flexsearch": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.31.tgz", - "integrity": "sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==" - }, - "focus-visible": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/focus-visible/-/focus-visible-5.2.0.tgz", - "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==" - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==" - }, - "github-slugger": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz", - "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==" - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "requires": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==" - }, - "hast-util-to-estree": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.1.0.tgz", - "integrity": "sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==", - "requires": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "estree-util-attach-comments": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdxjs-esm": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.3.0", - "unist-util-position": "^4.0.0", - "zwitch": "^2.0.0" - } - }, - "hast-util-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", - "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" - }, - "inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - }, - "intersection-observer": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.12.2.tgz", - "integrity": "sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==" - }, - "is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==" - }, - "is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "requires": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==" - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" - }, - "is-reference": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.0.tgz", - "integrity": "sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==", - "requires": { - "@types/estree": "*" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" - }, - "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true - }, - "load-script": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", - "integrity": "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=" - }, - "longest-streak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", - "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "markdown-extensions": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", - "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==" - }, - "markdown-table": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz", - "integrity": "sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==" - }, - "match-sorter": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-4.2.1.tgz", - "integrity": "sha512-s+3h9TiZU9U1pWhIERHf8/f4LmBN6IXaRgo2CI17+XGByGS1GvG5VvXK9pcGyCjGe3WM3mSYRC3ipGrd5UEVgw==", - "requires": { - "@babel/runtime": "^7.10.5", - "remove-accents": "0.4.2" - } - }, - "mdast-util-definitions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", - "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "mdast-util-find-and-replace": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", - "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", - "requires": { - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" - } - }, - "mdast-util-from-markdown": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", - "integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - } - }, - "mdast-util-gfm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz", - "integrity": "sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==", - "requires": { - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-gfm-autolink-literal": "^1.0.0", - "mdast-util-gfm-footnote": "^1.0.0", - "mdast-util-gfm-strikethrough": "^1.0.0", - "mdast-util-gfm-table": "^1.0.0", - "mdast-util-gfm-task-list-item": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - } - }, - "mdast-util-gfm-autolink-literal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz", - "integrity": "sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==", - "requires": { - "@types/mdast": "^3.0.0", - "ccount": "^2.0.0", - "mdast-util-find-and-replace": "^2.0.0", - "micromark-util-character": "^1.0.0" - } - }, - "mdast-util-gfm-footnote": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz", - "integrity": "sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==", - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0", - "micromark-util-normalize-identifier": "^1.0.0" - } - }, - "mdast-util-gfm-strikethrough": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz", - "integrity": "sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==", - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" - } - }, - "mdast-util-gfm-table": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.6.tgz", - "integrity": "sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==", - "requires": { - "@types/mdast": "^3.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.3.0" - } - }, - "mdast-util-gfm-task-list-item": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz", - "integrity": "sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==", - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" - } - }, - "mdast-util-mdx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.0.tgz", - "integrity": "sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw==", - "requires": { - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdx-jsx": "^2.0.0", - "mdast-util-mdxjs-esm": "^1.0.0" - } - }, - "mdast-util-mdx-expression": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.1.tgz", - "integrity": "sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==", - "requires": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - } - }, - "mdast-util-mdx-jsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.0.tgz", - "integrity": "sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg==", - "requires": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "ccount": "^2.0.0", - "mdast-util-to-markdown": "^1.3.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-remove-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "mdast-util-mdxjs-esm": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.0.tgz", - "integrity": "sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g==", - "requires": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - } - }, - "mdast-util-to-hast": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.4.tgz", - "integrity": "sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==", - "requires": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-builder": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "mdast-util-to-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", - "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - } - }, - "mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" - }, - "memoize-one": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz", - "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromark": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz", - "integrity": "sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==", - "requires": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "micromark-core-commonmark": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", - "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", - "requires": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "micromark-extension-gfm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz", - "integrity": "sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==", - "requires": { - "micromark-extension-gfm-autolink-literal": "^1.0.0", - "micromark-extension-gfm-footnote": "^1.0.0", - "micromark-extension-gfm-strikethrough": "^1.0.0", - "micromark-extension-gfm-table": "^1.0.0", - "micromark-extension-gfm-tagfilter": "^1.0.0", - "micromark-extension-gfm-task-list-item": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-extension-gfm-autolink-literal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz", - "integrity": "sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==", - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-extension-gfm-footnote": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", - "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", - "requires": { - "micromark-core-commonmark": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-extension-gfm-strikethrough": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz", - "integrity": "sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==", - "requires": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-extension-gfm-table": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz", - "integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==", - "requires": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-extension-gfm-tagfilter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz", - "integrity": "sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==", - "requires": { - "micromark-util-types": "^1.0.0" - } - }, - "micromark-extension-gfm-task-list-item": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz", - "integrity": "sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==", - "requires": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-extension-mdx-expression": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz", - "integrity": "sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==", - "requires": { - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-extension-mdx-jsx": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz", - "integrity": "sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==", - "requires": { - "@types/acorn": "^4.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - } - }, - "micromark-extension-mdx-md": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz", - "integrity": "sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==", - "requires": { - "micromark-util-types": "^1.0.0" - } - }, - "micromark-extension-mdxjs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz", - "integrity": "sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==", - "requires": { - "acorn": "^8.0.0", - "acorn-jsx": "^5.0.0", - "micromark-extension-mdx-expression": "^1.0.0", - "micromark-extension-mdx-jsx": "^1.0.0", - "micromark-extension-mdx-md": "^1.0.0", - "micromark-extension-mdxjs-esm": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-extension-mdxjs-esm": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.3.tgz", - "integrity": "sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==", - "requires": { - "micromark-core-commonmark": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-position-from-estree": "^1.1.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - } - }, - "micromark-factory-destination": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", - "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-factory-label": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", - "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-factory-mdx-expression": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.6.tgz", - "integrity": "sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==", - "requires": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-position-from-estree": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - } - }, - "micromark-factory-space": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", - "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-factory-title": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", - "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", - "requires": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-factory-whitespace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", - "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", - "requires": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-util-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", - "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", - "requires": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-util-chunked": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", - "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", - "requires": { - "micromark-util-symbol": "^1.0.0" - } - }, - "micromark-util-classify-character": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", - "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-util-combine-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", - "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", - "requires": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-util-decode-numeric-character-reference": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", - "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", - "requires": { - "micromark-util-symbol": "^1.0.0" - } - }, - "micromark-util-decode-string": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", - "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", - "requires": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "micromark-util-encode": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", - "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==" - }, - "micromark-util-events-to-acorn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.0.tgz", - "integrity": "sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw==", - "requires": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "estree-util-visit": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-location": "^4.0.0", - "vfile-message": "^3.0.0" - } - }, - "micromark-util-html-tag-name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", - "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==" - }, - "micromark-util-normalize-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", - "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", - "requires": { - "micromark-util-symbol": "^1.0.0" - } - }, - "micromark-util-resolve-all": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", - "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", - "requires": { - "micromark-util-types": "^1.0.0" - } - }, - "micromark-util-sanitize-uri": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz", - "integrity": "sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==", - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "micromark-util-subtokenize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", - "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", - "requires": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-util-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", - "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==" - }, - "micromark-util-types": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", - "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" - }, - "next": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/next/-/next-12.3.1.tgz", - "integrity": "sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw==", - "requires": { - "@next/env": "12.3.1", - "@next/swc-android-arm-eabi": "12.3.1", - "@next/swc-android-arm64": "12.3.1", - "@next/swc-darwin-arm64": "12.3.1", - "@next/swc-darwin-x64": "12.3.1", - "@next/swc-freebsd-x64": "12.3.1", - "@next/swc-linux-arm-gnueabihf": "12.3.1", - "@next/swc-linux-arm64-gnu": "12.3.1", - "@next/swc-linux-arm64-musl": "12.3.1", - "@next/swc-linux-x64-gnu": "12.3.1", - "@next/swc-linux-x64-musl": "12.3.1", - "@next/swc-win32-arm64-msvc": "12.3.1", - "@next/swc-win32-ia32-msvc": "12.3.1", - "@next/swc-win32-x64-msvc": "12.3.1", - "@swc/helpers": "0.4.11", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.0.7", - "use-sync-external-store": "1.2.0" - } - }, - "next-themes": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", - "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==" - }, - "nextra": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/nextra/-/nextra-2.0.0-beta.6.tgz", - "integrity": "sha512-qRuCk28RyUzH1rbDKIQXjO7qTzNhuxeYc9D6uEX7mnz6Pfm/tTUoZgydAj9kIG9emKEPM0oh7CS/Tt8hhScIKg==", - "requires": { - "@mdx-js/mdx": "^2.1.0", - "@napi-rs/simple-git": "^0.1.7", - "github-slugger": "^1.4.0", - "graceful-fs": "^4.2.6", - "gray-matter": "^4.0.3", - "rehype-pretty-code": "^0.1.0", - "remark-gfm": "^3.0.1", - "shiki": "0.10.1", - "slash": "^3.0.0" - } - }, - "nextra-theme-docs": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/nextra-theme-docs/-/nextra-theme-docs-2.0.0-beta.6.tgz", - "integrity": "sha512-Z+MRZlD1Lo2UbAm7Scuo2AmOkihciJ8eJcu3ynsVNg9MuEu/VALtUyjHh8ECmt1m6T6sTPYVDpX+WDejagZkKw==", - "requires": { - "@headlessui/react": "^1.6.1", - "@mdx-js/react": "^2.1.0", - "@reach/skip-nav": "^0.16.0", - "classnames": "^2.2.6", - "flexsearch": "^0.7.21", - "focus-visible": "^5.1.0", - "github-slugger": "^1.4.0", - "intersection-observer": "^0.12.0", - "match-sorter": "^4.2.0", - "next-themes": "^0.2.0-beta.2", - "parse-git-url": "^1.0.1", - "scroll-into-view-if-needed": "^2.2.29", - "title": "^3.4.2" - } - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "requires": { - "path-key": "^2.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - }, - "parse-entities": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.0.tgz", - "integrity": "sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==", - "requires": { - "@types/unist": "^2.0.0", - "character-entities": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - } - }, - "parse-git-url": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-git-url/-/parse-git-url-1.0.1.tgz", - "integrity": "sha512-Zukjztu09UXpXV/Q+4vgwyVPzUBkUvDjlqHlpG+swv/zYzed/5Igw/33rIEJxFDRc5LxvEqYDVDzhBfnOLWDYw==" - }, - "parse-numeric-range": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "periscopic": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.0.4.tgz", - "integrity": "sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==", - "requires": { - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" - } - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dev": true, - "requires": { - "camelcase-css": "^2.0.1" - } - }, - "postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "requires": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - } - }, - "postcss-nested": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", - "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", - "dev": true - }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "property-information": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", - "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, - "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - } - }, - "react-fast-compare": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", - "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "react-player": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/react-player/-/react-player-2.12.0.tgz", - "integrity": "sha512-rymLRz/2GJJD+Wc01S7S+i9pGMFYnNmQibR2gVE3KmHJCBNN8BhPAlOPTGZtn1uKpJ6p4RPLlzPQ1OLreXd8gw==", - "requires": { - "deepmerge": "^4.0.0", - "load-script": "^1.0.0", - "memoize-one": "^5.1.1", - "prop-types": "^15.7.2", - "react-fast-compare": "^3.0.1" - } - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "requires": { - "pify": "^2.3.0" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" - }, - "rehype-pretty-code": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/rehype-pretty-code/-/rehype-pretty-code-0.1.0.tgz", - "integrity": "sha512-7SaedCOn5VcDGdllQeu3kBWC+/zbkD6ZE7iOALJzK79+v0K0qQpa1WqBwoxetTbCLwBTY9wC4CabEsDS3qj55g==", - "requires": { - "parse-numeric-range": "^1.3.0" - } - }, - "remark-gfm": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", - "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-gfm": "^2.0.0", - "micromark-extension-gfm": "^2.0.0", - "unified": "^10.0.0" - } - }, - "remark-mdx": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.1.5.tgz", - "integrity": "sha512-A8vw5s+BgOa968Irt8BO7DfWJTE0Fe7Ge3hX8zzDB1DnwMZTNdK6qF2IcFao+/7nzk1vSysKcFp+3ku4vhMpaQ==", - "requires": { - "mdast-util-mdx": "^2.0.0", - "micromark-extension-mdxjs": "^1.0.0" - } - }, - "remark-parse": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", - "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - } - }, - "remark-rehype": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", - "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", - "requires": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-to-hast": "^12.1.0", - "unified": "^10.0.0" - } - }, - "remove-accents": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", - "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "requires": { - "mri": "^1.1.0" - } - }, - "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "scroll-into-view-if-needed": { - "version": "2.2.29", - "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz", - "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==", - "requires": { - "compute-scroll-into-view": "^1.0.17" - } - }, - "section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "requires": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" - }, - "shiki": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.1.tgz", - "integrity": "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==", - "requires": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "5.2.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "space-separated-tokens": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", - "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "requires": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - } - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==" - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==" - }, - "style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "requires": { - "inline-style-parser": "0.1.1" - } - }, - "styled-jsx": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.7.tgz", - "integrity": "sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==" - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==", - "requires": { - "has-flag": "^2.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "tailwindcss": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.1.tgz", - "integrity": "sha512-Uw+GVSxp5CM48krnjHObqoOwlCt5Qo6nw1jlCRwfGy68dSYb/LwS9ZFidYGRiM+w6rMawkZiu1mEMAsHYAfoLg==", - "dev": true, - "requires": { - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "detective": "^5.2.1", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.17", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "6.0.0", - "postcss-selector-parser": "^6.0.10", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1" - }, - "dependencies": { - "postcss": { - "version": "8.4.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", - "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", - "dev": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - } - } - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, - "title": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/title/-/title-3.5.3.tgz", - "integrity": "sha512-20JyowYglSEeCvZv3EZ0nZ046vLarO37prvV0mbtQV7C8DJPGgN967r8SJkqd3XK3K3lD3/Iyfp3avjfil8Q2Q==", - "requires": { - "arg": "1.0.0", - "chalk": "2.3.0", - "clipboardy": "1.2.2", - "titleize": "1.0.0" - }, - "dependencies": { - "arg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-1.0.0.tgz", - "integrity": "sha512-Wk7TEzl1KqvTGs/uyhmHO/3XLd3t1UeU4IstvPXVzGPM522cTjqjNZ99esCkcL52sjqjo8e8CTBcWhkxvGzoAw==" - } - } - }, - "titleize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-1.0.0.tgz", - "integrity": "sha512-TARUb7z1pGvlLxgPk++7wJ6aycXF3GJ0sNSBTAsTuJrQG5QuZlkUQP+zl+nbjAh4gMX9yDw9ZYklMd7vAfJKEw==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" - }, - "trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==" - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "requires": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - } - }, - "unist-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", - "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" - }, - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" - }, - "unist-util-position": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", - "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-position-from-estree": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz", - "integrity": "sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==", - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-remove-position": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz", - "integrity": "sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "unist-util-stringify-position": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz", - "integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==", - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "requires": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - } - }, - "vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "vfile-location": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", - "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", - "requires": { - "@types/unist": "^2.0.0", - "vfile": "^5.0.0" - } - }, - "vfile-message": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.2.tgz", - "integrity": "sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - }, - "vscode-oniguruma": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz", - "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==" - }, - "vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==" - } - } -} diff --git a/package.json b/package.json index 82dae0f..13983cc 100644 --- a/package.json +++ b/package.json @@ -3,26 +3,40 @@ "version": "1.0.0", "description": "", "main": "index.js", + "type": "module", "scripts": { + "prebuild": "npx tsx copy-docs.mts", + "clean": "rm -rf .next", "dev": "next", - "start": "next start", + "start": "next start --port 6767", "build": "next build" }, "author": "Jan Six", "license": "MIT", "dependencies": { - "next": "^12.2.0", - "nextra": "2.0.0-beta.6", - "nextra-theme-docs": "2.0.0-beta.6", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-player": "^2.12.0" + "@next/bundle-analyzer": "^14.2.2", + "next": "^14.2.3", + "nextra": "3.0.0-alpha.24", + "nextra-theme-docs": "3.0.0-alpha.24", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-player": "^2.16.0", + "sharp": "^0.33.4" }, "devDependencies": { + "@types/node": "20.12.7", + "@types/react": "18.2.79", "autoprefixer": "^10.4.2", + "lodash": "^4.17.21", "postcss": "^8.4.5", "prettier": "^2.0.5", - "tailwindcss": "^3.0.16" + "rehype-raw": "^7.0.0", + "rehype-sanitize": "^6.0.0", + "remark-obsidian": "^1.8.0", + "rename": "^1.0.4", + "replace": "^1.2.2", + "tsx": "^4.7.2", + "typescript": "^5.4.5" }, "prettier": { "semi": false, diff --git a/pages/_app.js b/pages/_app.js deleted file mode 100644 index f251b11..0000000 --- a/pages/_app.js +++ /dev/null @@ -1,8 +0,0 @@ -import "../styles.css"; -import 'nextra-theme-docs/style.css' -import React from "react" - -export default function Nextra({ Component, pageProps }) { - const getLayout = Component.getLayout || ((page) => page); - return getLayout(); -} diff --git a/pages/_app.tsx b/pages/_app.tsx new file mode 100644 index 0000000..ae37386 --- /dev/null +++ b/pages/_app.tsx @@ -0,0 +1,54 @@ +/* eslint react/no-unknown-property: ['error', { ignore: ['global', 'jsx'] }] */ +import { AppProps } from 'next/app'; +import React from "react" +import "../styles.css" + +export default function App({ Component, pageProps, router }: AppProps) { + return ( + <> + + + + ); +} \ No newline at end of file diff --git a/pages/_document.js b/pages/_document.js deleted file mode 100644 index 75aa046..0000000 --- a/pages/_document.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import Document, { Html, Head, Main, NextScript } from 'next/document' - -class MyDocument extends Document { - render() { - return ( - - - -
- - - - ) - } -} - -export default MyDocument \ No newline at end of file diff --git a/pages/_meta.js b/pages/_meta.js new file mode 100644 index 0000000..06c2260 --- /dev/null +++ b/pages/_meta.js @@ -0,0 +1,15 @@ +export default { + "index": "Introduction", + "getting-started": "Getting started", + "tokens": "Using tokens", + "available-tokens": "Available tokens", + "inspect": "Inspect & handoff", + "dev-mode": "Dev mode", + "styles": "Styles", + "variables": "Variables", + "themes": "Themes & Sets", + "sync": "Sync", + "transforming": "Transforming for development", + "contributing": "Contributing", + "troubleshooting": "Troubleshooting" +} diff --git a/pages/_meta.pt-br.json b/pages/_meta.pt-br.json deleted file mode 100644 index 4e69bcd..0000000 --- a/pages/_meta.pt-br.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "index": "Introdução", - "getting-started": "Iniciando o uso", - "tokens": "Using tokens", - "available-tokens": "Available tokens", - "inspect": "Inspect", - "styles": "Estilos", - "themes": "Temas", - "sync": "Sincronizar", - "transforming": "Transforming for development", - "contributing": "Contributing", - "troubleshooting": "Troubleshooting" -} \ No newline at end of file diff --git a/pages/available-tokens/_meta.pt-br.json b/pages/available-tokens/_meta.js similarity index 59% rename from pages/available-tokens/_meta.pt-br.json rename to pages/available-tokens/_meta.js index cdd7622..aec00b3 100644 --- a/pages/available-tokens/_meta.pt-br.json +++ b/pages/available-tokens/_meta.js @@ -1,13 +1,15 @@ -{ +export default { "available-tokens": "Overview", "sizing-tokens": "Sizing tokens", - "spacing-tokens": "Tokens de Espaçamento (Spacing)", - "color-tokens": "Tokens de cor", + "spacing-tokens": "Spacing tokens", + "color-tokens": "Color tokens", "border-radius-tokens": "Border radius tokens", "border-width-tokens": "Border width tokens", "shadow-tokens": "Shadow tokens", "opacity-tokens": "Opacity tokens", "typography-tokens": "Typography tokens", "asset-tokens": "Asset tokens", - "composition-tokens": "Tokens de Composição (Pro)" -} \ No newline at end of file + "composition-tokens": "Composition tokens (Pro)", + "dimension-tokens": "Dimension tokens", + "border-tokens": "Border tokens" +} diff --git a/pages/available-tokens/asset-tokens.pt-br.mdx b/pages/available-tokens/asset-tokens.mdx similarity index 96% rename from pages/available-tokens/asset-tokens.pt-br.mdx rename to pages/available-tokens/asset-tokens.mdx index 4b918f7..7663d9d 100644 --- a/pages/available-tokens/asset-tokens.pt-br.mdx +++ b/pages/available-tokens/asset-tokens.mdx @@ -8,7 +8,7 @@ This can be very useful in white-label projects, where you need to change the as Create an Asset token under the ‘Asset’ category by clicking on the ‘+’ icon. Enter a token name and an asset url. -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' Currently the image source needs to have its own CORS (Cross-Origin Resource Sharing) validation. Some websites already have that implemented (e.g. Unsplash), but otherwise you can put this behind a CORS proxy. More information on CORS can be found [here](https://medium.com/nodejsmadeeasy/a-simple-cors-proxy-for-javascript-applications-9b36a8d39c51). We'll be adding a CORS proxy in a future release. diff --git a/pages/available-tokens/available-tokens.mdx b/pages/available-tokens/available-tokens.mdx new file mode 100644 index 0000000..e1addae --- /dev/null +++ b/pages/available-tokens/available-tokens.mdx @@ -0,0 +1,29 @@ +# Available Tokens + +The available token types are: + +| Group | Application | Type | +| :---------------------- | :----------------------------------------- | ---- | +| Sizing | Width, height | `sizing` | +| Spacing | Auto-Layout (Gap, padding) | `spacing` | +| Color | Styles and Layers: Fill, borderColor (right click) | `color` | +| Border radius | All corners, individual | `borderRadius` | +| Border width | Border width: All, Top, Right, Bottom, Left (right click) | `borderWidth` | +| Box Shadow | Styles and Layers: (one or many, drop/inner) | `boxShadow` | +| Opacity | Opacity | `opacity` | +| Font family | Text layers (in combination with weight) | `fontFamilies` | +| Font weight | Text layers (in combination with family) | `fontWeights` | +| Font size | Text layers | `fontSizes` | +| Line height | Text layers | `lineHeights` | +| Letter spacing | Text layers | `letterSpacing` | +| Paragraph spacing | Text layers | `paragraphSpacing` | +| TextCase | Text layers | `textCase` | +| TextDecoration | Text layers | `textDecoration` | +| Typography compositions | Text layers, styles | `typography` | +| Assets | Layers | `asset` | +| Composition | All available tokens | `composition` | +| Dimension | Layers, other tokens | `dimension` | +| Border | Layers | `border` | +| Boolean | Layers (Visibility) | `boolean` | +| Number | Layers, other tokens | `number` | +| Text | Text layers (characters) | `text` | diff --git a/pages/available-tokens/available-tokens.pt-br.md b/pages/available-tokens/available-tokens.pt-br.md deleted file mode 100644 index 279c478..0000000 --- a/pages/available-tokens/available-tokens.pt-br.md +++ /dev/null @@ -1,26 +0,0 @@ -# Tokens Disponíveis - -No plugin Tokens Studio for Figma, você pode criar Design Tokens reutilizáveis e semânticos para seus processos de Design. - -Os grupos de tokens disponíveis até o momento são: - -| Grupo | Grupo (Tradução) | Aplicação | Aplicação (Tradução) | Type | -| :---------------------- | :------------------------- | :-------------------------------------------- | :--------------------------------------------------- | ---- | -| Sizing | Tamanho | Width, height | Largura, altura | `sizing` | -| Spacing | Espaçamentos | Auto-Layout (Gap, padding) | Auto-Layout (Gap, padding) | `spacing` | -| Color | Cores | Fill, border (right click) | Preenchimento, borda (Clique direito) | `color` | -| Border radius | Arredondamento das bordas | All corners, individual | Todas as bordas, individual | `borderRadius` | -| Border width | Largura das bordas | Border width: All, Top, Right, Bottom, Left (right click) | Largura da borda: todos, cima, direita, baixo, esquerda| | -| Box Shadow | Sombras | Styles and Layers: (one or many, drop/inner) | Estilos e camadas (um ou vários, externo/interno) | `boxShadow` | -| Opacity | Opacidade | Opacity | Opacidade | `opacity` | -| Font family | Família de Fontes | Text layers (in combination with weight) | Camadas de texto (combinado com peso) | `fontFamilies` | -| Font weight | Peso da Fonte | Text layers (in combination with family) | Camadas de texto (combinado com família) | `fontWeights` | -| Font size | Tamanho da Fonte | Text layers | Camadas de texto | `fontSizes` | -| Line height | Altura da Linha | Text layers | Camadas de texto | `lineHeight` | -| Letter spacing | Espaço dos caracteres | Text layers | Camadas de texto | `letterSpacing` | -| Paragraph spacing | Espaço do parágrafo | Text layers | Camadas de texto | `paragraphSpacing` | -| TextCase | Caso do texto | Text layers | Camadas de texto | `textCase` | -| TextDecoration | Decoração do texto | Text Layers | Camadas de texto | `textDecoration` | -| Typography compositions | Composição de Tipografia | Text layers, styles | Camadas de texto, estilos | `typography` | -| Composition | Composição | All available tokens | Todos os tokens disponíveis | `composition` | -| Boolean | Layers (Visibility) | `boolean` | \ No newline at end of file diff --git a/pages/available-tokens/border-radius-tokens.pt-br.mdx b/pages/available-tokens/border-radius-tokens.mdx similarity index 65% rename from pages/available-tokens/border-radius-tokens.pt-br.mdx rename to pages/available-tokens/border-radius-tokens.mdx index ffff0ab..3e4dbb3 100644 --- a/pages/available-tokens/border-radius-tokens.pt-br.mdx +++ b/pages/available-tokens/border-radius-tokens.mdx @@ -12,23 +12,19 @@ Once selected, apply by either left-clicking (all values will use this token) or To save a lot of time, we introduced the multi-value radius tokens. This allows you to specify border radius for individual corners with one token. You are able to define one, two, three or four values, just like CSS. **Single value (like today)** -Clicking this on radii will apply to all corners (like today) -Clicking this on spacing will apply to the gap property (like today) +This will apply to all corners (like today) ```10px``` **Two values** -Clicking this on radii will apply top-left-and-bottom-right | top-right-and-bottom-left -Clicking this on spacing will apply top-and-bottom | left-and-right +This will apply top-left-and-bottom-right | top-right-and-bottom-left ```10px 5px``` **Three values** -Clicking this on radii will apply top-left | top-right-and-bottom-left | bottom-right -Clicking this on spacing will apply top | right-and-left | bottom +This will apply top-left | top-right-and-bottom-left | bottom-right ```2px 4px 2px``` **Four values** -Clicking this on radii will apply top-left | top-right | bottom-right | bottom-left -Clicking this on spacing will apply top | right | bottom | left +This will apply top-left | top-right | bottom-right | bottom-left ```1px 0 3px 4px``` --- diff --git a/pages/available-tokens/border-tokens.pt-br.mdx b/pages/available-tokens/border-tokens.mdx similarity index 52% rename from pages/available-tokens/border-tokens.pt-br.mdx rename to pages/available-tokens/border-tokens.mdx index ab0e99b..35f1abf 100644 --- a/pages/available-tokens/border-tokens.pt-br.mdx +++ b/pages/available-tokens/border-tokens.mdx @@ -4,3 +4,7 @@ You can create Border tokens to define border styles. The token must contain the - Color: the color of the border - Width: the width or thickness of the border. Can be defined either unitless or with a unit such as px or rem. - Style: the border style. Currently solid and dashed is supported. + +import { Callout } from 'nextra/components' + +This token will be applied under the `border` property, which was previously used by border color tokens. The plugin will automatically migrate any older applied color tokens under the `border` property to the new `borderColor` one. diff --git a/pages/available-tokens/border-width-tokens.pt-br.mdx b/pages/available-tokens/border-width-tokens.mdx similarity index 100% rename from pages/available-tokens/border-width-tokens.pt-br.mdx rename to pages/available-tokens/border-width-tokens.mdx diff --git a/pages/available-tokens/color-tokens.mdx b/pages/available-tokens/color-tokens.mdx new file mode 100644 index 0000000..77ce284 --- /dev/null +++ b/pages/available-tokens/color-tokens.mdx @@ -0,0 +1,48 @@ +import { Callout } from 'nextra/components' + +# Color Tokens + +Color tokens play a significant role in Tokens Studio for Figma because they are tightly integrated with Figma's styles. They provide additional options that Figma's native styles currently don't offer. +With color tokens you can: + +- Apply a fill color +- Apply a stroke color +- Create color styles +- Update color styles + +## Solid colors + +By default, a token references a Solid Paint (single color). +There are a few ways you can define color tokens: + +- Hex: `#ff0000` +- RGB: `rgb(255, 0, 0)` +- RGBA: `rgba(255, 0, 0, 1)` +- HSLA: `hsla(120, 50%, 50%, 1)` + +## Modifiers (Pro) + +We also support color modifiers which can help you create dynamic colors based on some parameters such as lighten, darken, mix and alpha. You can [read more about modifiers here](/tokens/color-modifiers). + +## Gradients + +You can define gradient color tokens by specifying a css-like syntax: `linear-gradient (45deg, #87CEEB 0%, #008000 100%)`. +Creating a linear gradient - step 1 + +If you need multiple color steps, just add more (minimum is 2). `linear-gradient(45deg, #0000FF 0%, #87CEEB 50%, #008000 100%)` +Multiple values in gradients - step 2 + +### Token References +The beauty of token gradients is that you can create gradients that reference another token, which is not possible within Figma itself. For example, you can define a gradient using token references by using the `{`, like this: `linear-gradient (45deg, {colors.yellow.400} 0%, {colors.blue.700} 100%)`. +Referencing in gradients - step 3 + +### Alpha values (opacity) +Opacity is supported as well, you can write your gradients like this: `linear-gradient (45deg, rgba({colors.yellow.400}, 0.4) 0%, rgba({colors.blue.700}, 1) 100%)`. The `0.4` and `1` between the rgba brackets are the amounts that define the percentage of the opacity. +Using opacity in gradients - step 4 + +### Limitations +- Positioning a gradient on a layer within the plugin is currently not possible. As the plugin only stores the degree of the gradient, without any translation information, it cannot accurately determine the positioning of the gradient on a layer. + + +If you prefer to apply color or text tokens using the plugin instead of relying on Figma's native style feature, there is a downside when the style is located in a library. In such cases, the plugin cannot directly apply the style and will fallback to using the associated hex value. However, if you want the plugin to apply styles seamlessly, you can leverage the Themes feature, which allows you to store the Figma Style IDs for each associated style. By utilizing Themes, the plugin can accurately apply the corresponding styles. + \ No newline at end of file diff --git a/pages/available-tokens/color-tokens.pt-br.md b/pages/available-tokens/color-tokens.pt-br.md deleted file mode 100644 index 9d5a8f8..0000000 --- a/pages/available-tokens/color-tokens.pt-br.md +++ /dev/null @@ -1,36 +0,0 @@ -# Tokens de cor - -Os tokens de cor constituem uma grande parte dos tokens do Figma, pois eles estão fortemente integrados aos estilos do Figma, mas oferecem opções que os Estilos (ainda) não oferecem. - -Você pode usar tokens de cores para várias coisas: - -- Atualizando estilos de cores -- Criação de estilos de cores -- Aplicando uma cor de preenchimento -- Aplicando uma cor de traço - -## Cores sólidas - -Existem várias maneiras de escrever tokens de cores: - -- Hex: `#ff0000` -- RGB: `rgb(255, 0, 0)` -- RGBA: `rgba(255, 0, 0, 1)` -- HSLA: `hsl(120, 50, 50, 1)` - -Por padrão, um token faz referência a uma cor sólida (cores únicas). - -## Gradientes - -Você pode definir tokens de cor gradiente especificando uma sintaxe semelhante a css: `linear-gradient(45deg, #ffffff 0%, #000000 100%)`.. - -Se você precisar de várias etapas de cores, basta adicionar mais (o mínimo é 2). `linear-gradient(45deg, #ffffff 0%, #ff0000 50%, #000000 100%)` - -### Referências de token -A grande vantagem dos gradientes de token é que você pode criá-los com referência a outro token, algo que não é possível no próprio Figma. `linear-gradient(45deg, $colors.white 0%, $colors.black 100%)` - -### Valores alfa (opacidade) -A opacidade também é suportada, você pode escrever seus gradientes assim: `linear-gradient(45deg, rgba($colors.primary, 0.5) 0%, rgba($colors.primary, 1) 100%)` - -### Limitações -- Posicionar seu gradiente em uma camada, como você pode fazer no Figma, atualmente não é possível, pois não saberemos onde posicioná-lo, pois armazenamos apenas o grau, não qualquer translação. \ No newline at end of file diff --git a/pages/available-tokens/composition-tokens.mdx b/pages/available-tokens/composition-tokens.mdx new file mode 100644 index 0000000..f89b4f8 --- /dev/null +++ b/pages/available-tokens/composition-tokens.mdx @@ -0,0 +1,39 @@ +# Composition Tokens + +If you are on a Pro plan, you can now create and use composition tokens. + +Composition tokens are a way to create a token that is a combination of other token types. + +For example, you want to create a single token for a card that combines a color token, a border radius token, spacing tokens and a shadow token. This is now possible with composition tokens. + +import ReactPlayer from 'react-player' + + + + +### Create a Composition Token + +To create a composition token, click on the `+` button next to the `Composition` token section. + +Creating a composition token in Tokens Studio for Figma + +In the creation modal, enter a unique name and select the property (fill, borderRadius, width, height etc.) you want to add to the composition token. + +Selecting property in composition token + +You can set a raw value or an alias token for the property. + +To add another property click on the `+` icon, select the property and enter the value. + +Add new property to composition token + +Click `Create`, the composition token can now be applied like any other token. + diff --git a/pages/available-tokens/composition-tokens.pt-br.mdx b/pages/available-tokens/composition-tokens.pt-br.mdx deleted file mode 100644 index 1ec6fc2..0000000 --- a/pages/available-tokens/composition-tokens.pt-br.mdx +++ /dev/null @@ -1,47 +0,0 @@ -# Tokens de Composição (Composition Tokens) - -Se você estiver em um plano Pro, agora poderá criar e usar tokens de composição. - -Os *tokens de composição* (Composition Tokens) são uma maneira de criar um token que é uma combinação de outros tipos de token. - -Por exemplo, você deseja criar um único token para um *card* que combine um token de cor, um token de raio da borda (*radius*), tokens de espaçamento e um token de sombra. Isso agora é possível com tokens de composição! :D - -import ReactPlayer from 'react-player' - - - -### Criar um token de composição - -Para criar um token de composição, clique no botão `+` ao lado da seção de token `Composition`. - -Criando um token de composição no Tokens Studio for Figma - -No modal de criação, insira um nome exclusivo e selecione a propriedade (preenchimento, borderRadius, largura, altura etc.) que deseja adicionar ao token de composição. - -Selecionando propriedade no token de composição - -Você pode definir um valor bruto (*raw*) ou um token de alias para a propriedade. - -Para adicionar outra propriedade clique no ícone `+`, selecione a propriedade e insira o valor. - -Adicionar nova propriedade ao token de composição - -Clique em `Create`, o token de composição agora pode ser aplicado como qualquer outro token. - - \ No newline at end of file diff --git a/pages/available-tokens/dimension-tokens.en.mdx b/pages/available-tokens/dimension-tokens.mdx similarity index 92% rename from pages/available-tokens/dimension-tokens.en.mdx rename to pages/available-tokens/dimension-tokens.mdx index 69daf22..a6fed3e 100644 --- a/pages/available-tokens/dimension-tokens.en.mdx +++ b/pages/available-tokens/dimension-tokens.mdx @@ -11,6 +11,6 @@ To apply a dimension token, you can right click the token and select the applica ![](/dimension-token.png) -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' This token is introduced in order to support the upcoming W3C format: https://second-editors-draft.tr.designtokens.org/format/#dimension diff --git a/pages/available-tokens/opacity-tokens.pt-br.mdx b/pages/available-tokens/opacity-tokens.mdx similarity index 100% rename from pages/available-tokens/opacity-tokens.pt-br.mdx rename to pages/available-tokens/opacity-tokens.mdx diff --git a/pages/available-tokens/shadow-tokens.pt-br.mdx b/pages/available-tokens/shadow-tokens.mdx similarity index 100% rename from pages/available-tokens/shadow-tokens.pt-br.mdx rename to pages/available-tokens/shadow-tokens.mdx diff --git a/pages/available-tokens/sizing-tokens.pt-br.mdx b/pages/available-tokens/sizing-tokens.mdx similarity index 100% rename from pages/available-tokens/sizing-tokens.pt-br.mdx rename to pages/available-tokens/sizing-tokens.mdx diff --git a/pages/available-tokens/spacing-tokens.mdx b/pages/available-tokens/spacing-tokens.mdx new file mode 100644 index 0000000..611e8eb --- /dev/null +++ b/pages/available-tokens/spacing-tokens.mdx @@ -0,0 +1,54 @@ +# Spacing Tokens + +Spacing tokens give you the ability to define values for Auto Layout that you can reuse. Once you apply a spacing token to a layer, it will be updated whenever you change that token. Therefore, any layer containing a reference to `{spacing.container}` will also be updated when you modify that specific token. +#### How to use + +1. Add a new token in the `Spacing` type. +2. Select or create a layer with Auto-layout(does not work on any other layer type). +3. Once selected, you can apply a spacing token by either left-clicking (all values will have this token applied) or right-clicking and then specifying which part or side of the layer you want to target like: `Gap`, `All`, `Top`, `Right`, `Bottom`, `Left` . If you want to apply left-right and top-bottom with a click, you can select `horizontal-padding` or `vertical-padding` to apply them respectively. +--- + + +import ReactPlayer from 'react-player' + + + +### Multi-value spacing tokens + +To save a lot of time, we introduced the multi-value spacing tokens. This allows you to specify spacing just for the horizontal or vertical padding. You are able to define one, two, three or four values, just like CSS. + +**Single value (like today)** +This will apply to the gap property (like today) +```10px``` + +**Two values** +This will apply top-and-bottom | left-and-right +```8px 64px``` + +**Three values** +This will apply top | right-and-left | bottom +```16px 8px 32px``` + +**Four values** +This will apply top | right | bottom | left +```2px 4px 8px 16px``` + +--- + + \ No newline at end of file diff --git a/pages/available-tokens/spacing-tokens.pt-br.md b/pages/available-tokens/spacing-tokens.pt-br.md deleted file mode 100644 index 56c090b..0000000 --- a/pages/available-tokens/spacing-tokens.pt-br.md +++ /dev/null @@ -1,25 +0,0 @@ -# Tokens de Espaçamento (Spacing) - -Os tokens de espaçamento permitem definir valores para `Auto Layout` que podem ser reutilizados. Depois de aplicar um token de espaçamento a uma camada, ele será atualizado sempre que você alterar esse token, portanto, qualquer camada que contenha uma referência a `$spacing.container` será atualizada, quando você atualizar esse token específico. - -#### Como usar - -Para fazer os tokens de espaçamento funcionarem, comece criando tokens na categoria `Spacing`. - -Em seguida, selecione ou crie uma camada de `Auto Layout` (não funcionará em nenhum outro tipo de camada). - -Depois de selecionado, aplique os tokens de espaçamento clicando com o botão esquerdo (todos os valores usarão este token) ou clique com o botão direito para especificar qual parte do `Auto Layout` você deseja atingir (`gap`,` horizontal` ou `vertical`. Outros virão em breve). - ---- - -import ReactPlayer from 'react-player' - - diff --git a/pages/available-tokens/typography-tokens.en.md b/pages/available-tokens/typography-tokens.md similarity index 97% rename from pages/available-tokens/typography-tokens.en.md rename to pages/available-tokens/typography-tokens.md index b64bfca..6e404ee 100644 --- a/pages/available-tokens/typography-tokens.en.md +++ b/pages/available-tokens/typography-tokens.md @@ -33,7 +33,7 @@ An example of a typography token looks like this: ``` -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' While Font Family and Font Weight tokens can be applied individually to text nodes, both must be applied simultaneously to cause a visual change in Figma. diff --git a/pages/contributing/_meta.pt-br.json b/pages/contributing/_meta.js similarity index 86% rename from pages/contributing/_meta.pt-br.json rename to pages/contributing/_meta.js index 286db0b..49193e8 100644 --- a/pages/contributing/_meta.pt-br.json +++ b/pages/contributing/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "contributing": "Contributing", "beta-builds": "Beta builds", "shared-data": "Shared plugin space" diff --git a/pages/contributing/beta-builds.mdx b/pages/contributing/beta-builds.mdx new file mode 100644 index 0000000..0ffe33c --- /dev/null +++ b/pages/contributing/beta-builds.mdx @@ -0,0 +1,25 @@ +# Beta Builds + +From time to time, beta builds are released before a new version is published. If you want to get in on this process, let me know on [Twitter](https://twitter.com/six7) by writing a DM. + +### Installing a development build + +If you received a beta build, here's a short guide explaining how to install it. First of all, it's important that you're using the Figma Desktop app. Development builds won't work on the browser version of Figma. [Download it here.](https://www.figma.com/downloads/) + +To get started, click on the menu icon in Figma and type `Manage` — you should find the entry `Manage plugins`. Click on it. + +![](/manage-plugins.jpg) + +Next, click on Create new plugin in the Development section. + +![](/create-new-plugin.jpg) + +Then click on `Choose a manifest.json file` and navigate to where you downloaded the ZIP File. Select the `manifest.json` file. + +![](/choose-manifest.jpg) + +That's it! You now got a development build of Tokens Studio for Figma. Start it by right clicking anywhere in a document and choose `Plugins > Tokens Studio for Figma (Dev)` + +### Known issues + +Check the [Contributing](https://docs.tokens.studio/contributing/contributing) page if you run into any problems. diff --git a/pages/contributing/beta-builds.pt-br.md b/pages/contributing/beta-builds.pt-br.md deleted file mode 100644 index 2e867aa..0000000 --- a/pages/contributing/beta-builds.pt-br.md +++ /dev/null @@ -1,21 +0,0 @@ -# Compilações Beta - -De tempos em tempos, compilações beta são lançadas antes que uma nova versão seja publicada. Se você quiser entrar neste processo, deixe-me saber no [Twitter](https://twitter.com/six7) escrevendo um DM. - -### Instalando uma compilação de desenvolvimento - -Se você recebeu uma versão beta, aqui está um pequeno guia que explica como instalá-la. Em primeiro lugar, é importante que você esteja usando o aplicativo Figma Desktop. As compilações de desenvolvimento não funcionarão na versão do navegador do Figma. [Baixe aqui.](Https://www.figma.com/downloads/) - -Para começar, clique no ícone do menu na Figma e digite `Manage` - você deve encontrar a entrada `Manage plugins`. Clique nele. - -![](/manage-plugins.jpg) - -Em seguida, clique em `Create new plugin` na seção `Development`. - -![](/create-new-plugin.jpg) - -Em seguida, clique em `Choose a manifest.json file` e navegue até o local onde você baixou o arquivo ZIP. Selecione o arquivo `manifest.json`. - -![](/choose-manifest.jpg) - -É isso! Agora você tem uma compilação de desenvolvimento do Tokens Studio for Figma. Comece clicando com o botão direito em qualquer lugar em um documento e escolha `Plugins > Tokens Studio for Figma (Dev)` \ No newline at end of file diff --git a/pages/contributing/contributing.md b/pages/contributing/contributing.md new file mode 100644 index 0000000..a943d86 --- /dev/null +++ b/pages/contributing/contributing.md @@ -0,0 +1,23 @@ +# Contributing + +If you want to get started contributing to Tokens Studio for Figma read this short guideline that should get you started. + +1. Run `npm ci` to install dependencies. +2. Run `npm run start` to start webpack in watch mode or npm run build to build once. +3. Open Figma -> Plugins -> Development -> New Plugin... and choose manifest.json file from this repo. +4. Create a Pull request for your branch + +### Known issues + +#### Cannot read property document of undefined + +This error can be solved by clearing Figma's cache. To do that follow the steps outlined in [this document](https://help.figma.com/hc/en-us/articles/360040328553-Can-I-work-offline-with-Figma-#clear-data). + +``` +Mac +Use the Terminal app to clear the cache. + +Quit the Figma desktop app. +Open the Terminal.app and enter the following command: rm -rf "$HOME/Library/Application Support/Figma/"{Desktop,DesktopProfile} +Try opening the Figma desktop app again. +``` diff --git a/pages/contributing/contributing.pt-br.md b/pages/contributing/contributing.pt-br.md deleted file mode 100644 index d620169..0000000 --- a/pages/contributing/contributing.pt-br.md +++ /dev/null @@ -1,24 +0,0 @@ -# Contribuindo - -Se você deseja começar a contribuir com o Tokens Studio for Figma, leia esta breve orientação que deve começar. - -1. Clone o repositório -2. Execute o `yarn` para instalar as dependências -3. Execute `yarn build:watch` para construir o plug-in e observe as alterações -4. Abra o Figma -> Plugins -> Development -> Import plugin from manifest... e escolha o arquivo `manifest.json` deste repositório. - - -### Problemas conhecidos - -#### Não é possível ler o documento de propriedade de indefinido - -Este erro pode ser resolvido limpando o cache do Figma. Para fazer isso, siga as etapas descritas em [este documento](https://help.figma.com/hc/en-us/articles/360040328553-Can-I-work-offline-with-Figma-#clear-data) . - -``` -Mac -Use o aplicativo Terminal para limpar o cache. - -Saia do aplicativo de desktop Figma. -Abra o Terminal.app e digite o seguinte comando: `rm -rf "$HOME/Library/Application Support/Figma/"{Desktop,DesktopProfile}` -Tente abrir o aplicativo de desktop Figma novamente. -``` diff --git a/pages/contributing/shared-data.md b/pages/contributing/shared-data.md new file mode 100644 index 0000000..1d959ae --- /dev/null +++ b/pages/contributing/shared-data.md @@ -0,0 +1,25 @@ +# Shared data + +We believe data stored by the plugin should be accessible by other plugin makers as well, to create a thriving ecosystem of tools all being able to communicate with one another. Imagine a world where we're able to store plugin data on a layer or document, and other plugins can pick that back up, and do the things their plugin does best. This is why we've opened up the plugin data that the plugin stores on your document or nodes so you can use it with other plugins as well. + +### How does it work? +We're storing tokens stored on a document on the shared plugin data namespace `tokens`. Other plugins can read from that. Also, we're storing applied decisions on each node on the same shared namespace. All you'd need to do is find out what tokens are stored on a node. Figma provides a couple of helpful functions to do so. + +#### Getting tokens stored on the document +`figma.root.getSharedPluginData("tokens", "values")` allows you to read all tokens stored on the document. + +#### Getting applied tokens on a layer +`node.getSharedPluginData("tokens", key)` gives you the token that was applied on that `node` for that `key`. To find out what `keys` are available, you'd first run `node.getSharedPluginDataKeys("tokens")` on the `node` to find out what `keys` are set. With that result you're able to query the stored tokens. + +#### Applying tokens on a layer +`node.setSharedPluginData("tokens", key, value)` allows you to store a token on a layer. You'd need to make sure that `key` is [any of the plugin data keys](https://github.com/tokens-studio/figma-plugin/blob/main/src/config/properties.js) that we're using. + +### Figma Plugin Helpers +We've [built a tool](https://www.npmjs.com/package/@six7/figma-tokens-helpers) that allows you to read all of the above more easily in your own plugin. We're exposing functions that wrap our plugin data functions, so you can easily get tokens stored on the document, on the layer, and even get the resolved tokens taking the activated sets/themes into account! + +### Examples +#### Automator +Automator is able to read and write to the shared plugin space. You could create all kinds of crazy automations - you could even create whole token sets using Automator. We've even [built an automation that automatically creates Documentation](https://automator.community/automation/create-documentation-for-figma-tokens) for you! + +#### Pro Layout Panel +What would make a really great Auto Layout enhancement even greater? The ability to choose from design tokens as your spacing values. [Pro Layout Panel](https://www.mrbiscuit.design) allows you to do that, so you can use the tokens you created in Tokens Studio for Figma and apply those (using the last used set combination in Tokens Studio for Figma) diff --git a/pages/contributing/shared-data.pt-br.md b/pages/contributing/shared-data.pt-br.md deleted file mode 100644 index 1a1239c..0000000 --- a/pages/contributing/shared-data.pt-br.md +++ /dev/null @@ -1,27 +0,0 @@ -# Dados compartilhados - -Acreditamos que os dados armazenados pelo Tokens Studio for Figma também devem ser acessíveis por outros fabricantes de plugins, para criar um ecossistema próspero de ferramentas que possam se comunicar umas com as outras. Imagine um mundo onde somos capazes de armazenar dados de plugins em uma camada ou documento, e outros plugins podem fazer o backup e fazer as coisas que seus plugins fazem melhor. É por isso que abrimos os dados do plug-in que o Tokens Studio for Figma armazena em seu documento ou nós para que você também possa usá-lo com outros plug-ins. - -### Como funciona? -Estamos armazenando tokens em um documento de dados de plug-in compartilhado em `tokens`. Outros plugins podem ler a partir daí. - -Também estamos armazenando decisões aplicadas em cada nó (node) no mesmo nome compartilhado. Tudo o que você precisa fazer é descobrir quais tokens estão armazenados em um nó. O Figma fornece algumas funções úteis para isso. - -#### Obtendo tokens armazenados no documento -`figma.root.getSharedPluginData("tokens", "values")` permite que você leia todos os tokens armazenados no documento. - -#### Obtendo tokens aplicados em uma camada -`node.getSharedPluginData("tokens", key)` fornece o token que foi aplicado nesse `nó` para essa `chave`. Para descobrir quais `keys` estão disponíveis, você deve primeiro executar `node.getSharedPluginDataKeys("tokens")` no `node` para descobrir quais `keys` estão definidas. Com esse resultado você pode consultar os tokens armazenados. - -#### Aplicando tokens em uma camada -`node.setSharedPluginData("tokens", key, value)` permite armazenar um token em uma camada. Você precisa ter certeza de que `key` é [qualquer uma das chaves de dados do plug-in](https://github.com/tokens-studio/figma-plugin/blob/main/src/config/properties.js) que nós esta usando. - -### Ajudantes de Tokens Figma -Nós [criamos uma ferramenta](https://www.npmjs.com/package/@tokens-studio/figma-plugin-helpers) que permite que você leia todos os itens acima com mais facilidade em seu próprio plugin. Estamos expondo funções que envolvem nossas funções de dados de plugins, para que você possa facilmente obter tokens armazenados no documento, na camada e até mesmo obter os tokens resolvidos levando em consideração os conjuntos/temas ativados! - -### Exemplos de integrações com outros Plugins -#### Automator -O Automator é capaz de ler e escrever no espaço compartilhado do plugin. Você pode criar todos os tipos de automações malucas - você pode até criar conjuntos inteiros de tokens usando o Automator. Nós até [criamos uma automação que cria automaticamente a documentação](https://automator.community/automation/create-documentation-for-figma-tokens) para você! - -#### Pro Layout Panel -O que tornaria um ótimo aprimoramento de layout automático ainda melhor? A capacidade de escolher tokens de design como seus valores de espaçamento. [Pro Layout Panel](https://www.mrbiscuit.design) permite que você faça isso, então você pode usar os tokens que você criou no Tokens Studio for Figma e aplicá-los (usando a última combinação de conjunto usada no Tokens Studio for Figma) \ No newline at end of file diff --git a/pages/convert-to-dtcg-format.en.mdx b/pages/convert-to-dtcg-format.en.mdx deleted file mode 100644 index e232449..0000000 --- a/pages/convert-to-dtcg-format.en.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Convert to W3C DTCG format - -If you want to make use of the W3C Design Tokens Community Group format for your tokens, you might need to make changes to your build setup when it comes to transforming tokens for development. We've recently partnered with Amazon to work on Style Dictionary version 4, which will come with W3C DTCG support. - -Go to [https://v4.styledictionary.com](https://v4.styledictionary.com/version-4/migration) to read all about this new version and how to make use of it in development, including migration guidelines. You'll find [information on what settings are required](https://v4.styledictionary.com/reference/utils/dtcg). diff --git a/pages/dev-mode.mdx b/pages/dev-mode.mdx new file mode 100644 index 0000000..849d89d --- /dev/null +++ b/pages/dev-mode.mdx @@ -0,0 +1,38 @@ +# Dev mode + +Tokens Studio for Figma is integrated with Figma's [Dev Mode](https://www.figma.com/dev-mode/), allowing developers to see the names of Tokens applied to your layers. + +import { Callout } from 'nextra/components' + +### Installation +**NOTE:** You can only access dev mode for Tokens Studio by toggling on Figma's `Dev mode`. +Toggling On Dev Mode in Figma + +--- + +When in Figma's dev mode, search for **Tokens Studio for Figma** in the `Plugins` tab, and click on save. +Saving Tokens Studio for Figma Plugin in Dev mode + +In the inspect tab, you can then change it from `CSS` to `Tokens Studio for Figma` under the `Language` dropdown menu. +Selecting Tokens Studio for Figma Plugin as Language in Dev mode + +--- +### Using Dev mode +Click on a layer of your element to see the tokens that are applied. +Using Dev mode to Inspect Tokens + +You can see the names of all tokens applied to the element which are displayed in the `Inspect panel`. +Tokens Displayed in Inspect Panel + +--- + +import ReactPlayer from 'react-player' + + + diff --git a/pages/getting-started.mdx b/pages/getting-started.mdx new file mode 100644 index 0000000..31c50ef --- /dev/null +++ b/pages/getting-started.mdx @@ -0,0 +1,40 @@ +# Getting started + +### What are design tokens? +> Design tokens are the visual design atoms of the design system — specifically, they are named entities that store visual design attributes. We use them in place of hard-coded values (such as hex values for color or pixel values for spacing) in order to maintain a scalable and consistent visual system for UI development. +[Salesforce, Lightning Design System](https://www.lightningdesignsystem.com/design-tokens/) + +Design Tokens originated at Salesforce, where [Jina](https://twitter.com/jina) and [Jon](https://twitter.com/jonnyl) coined the term. A good explanation can be found on [Jina Anne's Youtube](https://www.youtube.com/watch?v=q5qIowMyVt8) + +The [W3C Design Tokens Community Group](https://github.com/design-tokens/community-group) aims to establish a standard on which tools can rely on for sharing design tokens. This plugin aims to be W3C compliant so you could take your JSON and move to another tool someday. + +Unfortunately design tools are not advanced enough yet to fully incorporate design tokens. We have Color and Text Styles in Figma but there's no way to use a design token like border radius or spacer units in a reusable way. This plugin aims to bridge that gap, to help you manage your color and text styles and give you design tokens for all other properties. You can choose how deep you want to integrate the plugin into your workflow, an easy way to start would be to just use it to manage your color and text styles, which gives you features such as references, math for scales and a way to better create multi-themed design systems. + +### Installing the plugin + +Install Tokens Studio for Figma by hitting the `Install` button on [this page](https://www.figma.com/community/plugin/843461159747178978) (either in Figma or in the browser) + +If you launch the plugin for the very first time, you won't have any tokens defined just yet. Click on `Get started` to get started. + +--- + +import ReactPlayer from 'react-player' + + + + + +Then, you can proceed in one of the following ways: + +- Create your own tokens via the UI +- Import your existing styles into Tokens +- Sync your existing tokens using remote sync (GitHub, GitLab, JSONbin) +- Create tokens via the JSON editor diff --git a/pages/getting-started.pt-br.mdx b/pages/getting-started.pt-br.mdx deleted file mode 100644 index 0938d7f..0000000 --- a/pages/getting-started.pt-br.mdx +++ /dev/null @@ -1,39 +0,0 @@ -# Começando - -### O que são Tokens de Design (*Design Tokens*)? -> Os tokens de design são os átomos de design visual do sistema de design - especificamente, eles são entidades nomeadas que armazenam atributos de design visual. Nós os usamos no lugar de valores codificados (como valores hexadecimais para cores ou valores de pixels para espaçamento) a fim de manter um sistema visual escalonável e consistente para o desenvolvimento da UI. -[Salesforce, Lightning Design System](https://www.lightningdesignsystem.com/design-tokens/) - -Os tokens de design se originaram na Salesforce, onde [Jina](https://twitter.com/jina) e [Jon](https://twitter.com/jonnyl) cunharam o termo. Uma boa explicação pode ser encontrada no [Youtube da Jina Anne](https://www.youtube.com/watch?v=q5qIowMyVt8). - -O [W3C Design Tokens Community Group](https://github.com/design-tokens/community-group) visa estabelecer um padrão no qual as ferramentas podem contar para compartilhar tokens de design. Este plugin tem como objetivo ser compatível com W3C para que você possa pegar seu JSON e passar para outra ferramenta algum dia. - -Infelizmente, as ferramentas de design ainda não são avançadas o suficiente para incorporar totalmente os tokens de design. Temos estilos de cor e texto no Figma, mas não há como usar um token de design como raio de borda (*border radii*) ou unidades de espaço de forma reutilizável. Este plugin visa preencher essa lacuna, para ajudá-lo a gerenciar suas cores e estilos de texto e fornecer tokens de design para todas as outras propriedades. Você pode escolher o quão profundo deseja integrar o plugin em seu fluxo de trabalho, uma maneira fácil de começar seria apenas usá-lo para gerenciar suas cores e estilos de texto, o que oferece recursos como referências, matemática para escalas e uma maneira de melhorar criar sistemas de design com vários temas. - -### Instalando o plugin - -Instale o plugin Tokens Studio for Figma clicando no botão `Install` [nesta página](https://www.figma.com/community/plugin/843461159747178978) (no Figma cliente ou no navegador) - -Se você iniciar o plugin pela primeira vez, ainda não terá tokens definidos. Clique em `Get started` para começar. - ---- - -import ReactPlayer from 'react-player' - - - - -Em seguida, você pode seguir das seguintes maneiras: - -- Criar seus próprios tokens pela UI do plugin -- Importar seus tokens já feitos -- Sincronizar seus tokens já existentes usando repositórios remotos (GitHub, GitLab, JSONbin) -- Criar seus tokens através de um editor JSON diff --git a/pages/guides/_meta.js b/pages/guides/_meta.js new file mode 100644 index 0000000..b64cd66 --- /dev/null +++ b/pages/guides/_meta.js @@ -0,0 +1,3 @@ +export default { + "naming-design-tokens": "Naming design tokens" +} diff --git a/pages/guides/naming-design-tokens.mdx b/pages/guides/naming-design-tokens.mdx new file mode 100644 index 0000000..dfb9dbe --- /dev/null +++ b/pages/guides/naming-design-tokens.mdx @@ -0,0 +1,5 @@ +# Naming design tokens + +**Coming Soon** + +The Tokens Studio team are working hard creating a series of documents to guide you through our best practices and the token naming templates we use internally. \ No newline at end of file diff --git a/pages/index.mdx b/pages/index.mdx new file mode 100644 index 0000000..643fa0e --- /dev/null +++ b/pages/index.mdx @@ -0,0 +1,11 @@ +# Tokens Studio for Figma + +**Tokens Studio for Figma** is a [Figma Plugin](https://jansix.at/resources/figma-tokens) allowing you to integrate Tokens into your Figma designs. + +It gives you reusable tokens that can be used for a whole range of design options, from border radius or spacer units to semantic color and typography styles. It allows you to change tokens and see these changes applied to the whole document or its styles. + +![](/header.png) + +### Slack Channel + +We have a dedicated Slack server so the community can exchange ideas, best practices or simply ask a question. [Join the Slack channel](https://www.tokens.studio/slack). diff --git a/pages/index.pt-br.mdx b/pages/index.pt-br.mdx deleted file mode 100644 index 03168c0..0000000 --- a/pages/index.pt-br.mdx +++ /dev/null @@ -1,13 +0,0 @@ -# Tokens Studio for Figma - -**Tokens Studio for Figma** é um [Plugin do Figma](https://jansix.at/resources/figma-tokens) que permite integrar o conceito de Design Tokens em seus projetos no Figma. - -Ele lhe permite criar tokens reutilizáveis que podem ser aplicados com grande abrangência de opções, desde o arredondamento de bordas até unidades semânticas de cores ou estilos tipográficos. Você pode também controlar e alterar seus tokens de forma que isso seja se reflita em todo o documento ou em seus estilos. - -![](/tokens-intro.jpg) - -**Nota da tradução em Português Brasileiro:** decidimos manter as nomenclaturas com os nomes originais das propriedades de CSS e do Figma para os tokens, categorias e demais itens relacionados com desenvolvimnto. Porém, usamos a tradução em colunas de tabelas ou entre parenteses. O objetivo disso é abranger todos os profissionais, desde os que usam a ferramenta em português até os que preferem o idioma original (Inglês) - até mesmo os precisam das referências originais para código (**Exemplo:** não há CSS em português). - -*Traduzido para Português Brasileiro por* [Poe Bellentani](https://www.linkedin.com/in/bellentani/) | [Github](https://github.com/bellentani) | [Twitter](https://twitter.com/poebellentani) - -**Sinta-se livre para colaborar com o projeto no Github, corrigir e sugerir mudanças. Toda ajuda é super bem-vinda.** \ No newline at end of file diff --git a/pages/inspect/_meta.en.json b/pages/inspect/_meta.js similarity index 79% rename from pages/inspect/_meta.en.json rename to pages/inspect/_meta.js index ce78ac5..84c6d81 100644 --- a/pages/inspect/_meta.en.json +++ b/pages/inspect/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "multi-inspect": "Inspecting tokens", "handoff": "Handoff" } diff --git a/pages/inspect/handoff.mdx b/pages/inspect/handoff.mdx new file mode 100644 index 0000000..c02962e --- /dev/null +++ b/pages/inspect/handoff.mdx @@ -0,0 +1,23 @@ +# Handoff + +As Figma currently provides no way to inspect plugin data as a viewer (we hope they do allow that at some point), you'd have to fall back to either letting your engineers use the plugin themselves and inspect layers, or use more traditional methods. One of those methods would be Redlining, where you'd create layers showing which tokens were applied to what layers, still containing token names so it would be clear what to apply when. + +Annotate tokens + +## Annotate in the plugin +One way would be to use the Annotate feature inside Tokens Studio for Figma. You would select a single layer, go to the Inspect tab, switch to Debug & Annotate, and use the annotate tool to create annotations for you. Those would not update automatically, and only work for single layers. + +import { Callout } from 'nextra/components' + + + To use the Annotate feature make sure that the `Deep Inspect` is disabled in the Inspect tab. + + +## Component Spec Toolkit +If your organization has not fully implemented design tokens, configured the Tokens Studio for Figma plugin, or has restrictions on plugin usage, consider this library-based alternative for annotation components: the [Component Spec Tool](https://bit.ly/3HYxszW). Designers can use the Component Spec Tool to annotate design systems component work without needing to upgrade their engineer’s Figma access level, install a plugin, or create a plugin dependency to their core library files. + +This tool is great for: +- Individuals/teams early in their design systems journey +- Organizations with a limited license count +- Organizations who outsource development of their component libraries +- Teams looking to bridge the gap between their design and engineering teams diff --git a/pages/inspect/handoff.pt-br.mdx b/pages/inspect/handoff.pt-br.mdx deleted file mode 100644 index 97f3665..0000000 --- a/pages/inspect/handoff.pt-br.mdx +++ /dev/null @@ -1,27 +0,0 @@ -# Handoff - -As Figma currently provides no way to inspect plugin data as a viewer (we hope they do allow that at some point), you'd have to fall back to either letting your engineers use the plugin themselves and inspect layers, or use more traditional methods. One of those methods would be Redlining, where you'd create layers showing which tokens were applied to what layers, still containing token names so it would be clear what to apply when. - -Como o Figma não fornece de forma nativa uma maneira de inspecionar os dados do plug-in como um visualizador (esperamos que eles permitam isso em algum momento), você teria que voltar a permitir que seus engenheiros usem o plug-in e inspecionem as camadas ou use métodos mais tradicionais . Um desses métodos seria *Redlining* , onde você criaria camadas mostrando quais tokens foram aplicados a quais camadas, ainda contendo nomes de token para que ficasse claro o que aplicar e quando. - -Anotar tokens - -## Anotar no plugin -Uma maneira seria usar o recurso *Annotate* dentro do Tokens Studio for Figma. Você pode selecionar uma única camada, ir para a guia *Inspect*, alternar para *Debug* e anotar usando ferramenta. Esses não seriam atualizados automaticamente e funcionariam apenas para camadas únicas. - -import Callout from 'nextra-theme-docs/callout' - - - Para usar o recurso *Annotate*, certifique-se de que a `Deep Inspect` esteja desabilitada na guia *Inspect*. - - -## Kit de ferramentas de especificação de componentes -Se sua organização não implementou totalmente os tokens de design, configurou o plug-in Tokens Studio for Figma ou tem restrições no uso de plug-ins, considere esta alternativa baseada em biblioteca para componentes de anotação: a [Component Spec Tool](https://bit.ly/3HYxszW). - -Os designers podem usar a Component Spec Tool para anotar o trabalho dos componentes dos sistemas de design sem precisar atualizar o nível de acesso Figma de seu engenheiro, instalar um plug-in ou criar uma dependência de plug-in para seus arquivos de biblioteca principais. - -Esta ferramenta é ótima para: -- Indivíduos/equipes no início de sua jornada de Design Systems; -- Organizações com limite de uso de licenças; -- Organizações que terceirizam o desenvolvimento de suas bibliotecas de componentes; -- Equipes que procuram preencher a lacuna entre suas equipes de design e engenharia. \ No newline at end of file diff --git a/pages/inspect/multi-inspect.mdx b/pages/inspect/multi-inspect.mdx new file mode 100644 index 0000000..8765279 --- /dev/null +++ b/pages/inspect/multi-inspect.mdx @@ -0,0 +1,56 @@ +# Multi-inspect + +You can select any layer and click on the `Inspect` tab of the plugin to view all the tokens that are applied. + + +import ReactPlayer from 'react-player' + + + + +## Deep inspect + +By selecting `Deep Inspect` you can see the tokens applied to all the children of the selected layer. + + +Deep inspecting a layer in Figma + +## Selecting all layers with a particular token + +By clicking on the crosshair icon you can select all the layers that have a particular token. + + +Selecting all layers with a particular token + +## Selecting a single layer with a particular token + +On the side of the token you can see how many layers a particular token is applied to. By clicking on the layer icon, you get a list of the different layers and you can select any particular layer. + + + +Selecting a single layer with a token + +## Removing tokens + +You can select a single token or `Select all` tokens and click on `Remove selected` to remove the token/s from the layer/s. + + + +removing a token + +## Remapping tokens + +Click on the `v` icon next to the token to remap it to another token on all the layers that it is applied. + + + +remapping a token \ No newline at end of file diff --git a/pages/inspect/multi-inspect.pt-br.mdx b/pages/inspect/multi-inspect.pt-br.mdx deleted file mode 100644 index 49f61c8..0000000 --- a/pages/inspect/multi-inspect.pt-br.mdx +++ /dev/null @@ -1,49 +0,0 @@ -# Multi inspecionar - -Você pode selecionar qualquer camada e clicar na guia 'Inspecionar' do plug-in para visualizar todos os tokens aplicados. - - -import ReactPlayer from 'react-player' - - - - -## Inspecione profundamente - -Ao selecionar `Deep Inspect` você pode ver os tokens aplicados a todos os filhos da camada selecionada. - -Inspecionando profundamente uma camada no Figma - -## Selecionando todas as camadas com um token específico - -Ao clicar no ícone de mira, você pode selecionar todas as camadas que possuem um token específico. - - -Selecionando todas as camadas com um token específico - -## Selecionando uma única camada com um token específico - -Na lateral do token, você pode ver a quantas camadas um token específico é aplicado. Ao clicar no ícone da camada, você obtém uma lista das diferentes camadas e pode selecionar qualquer camada específica. - -Selecionando uma única camada com um token - -## Removendo tokens - -Você pode selecionar um único token ou `Select all` tokens e clicar em `Remove selected` para remover o(s) token(s) da(s) camada(s). - -removendo um token - -## Remapeamento de tokens - -Clique no ícone `v` ao lado do token para remapear para outro token em todas as camadas em que ele for aplicado. - -remapeamento de um token diff --git a/pages/styles/_meta.en.json b/pages/styles/_meta.js similarity index 92% rename from pages/styles/_meta.en.json rename to pages/styles/_meta.js index 5f23d6c..d400f09 100644 --- a/pages/styles/_meta.en.json +++ b/pages/styles/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "styles": "Importing styles", "create-styles": "Creating styles", "keeping-styles-in-sync": "Keeping styles in sync", diff --git a/pages/styles/create-styles.pt-br.md b/pages/styles/create-styles.md similarity index 72% rename from pages/styles/create-styles.pt-br.md rename to pages/styles/create-styles.md index e12f710..491f159 100644 --- a/pages/styles/create-styles.pt-br.md +++ b/pages/styles/create-styles.md @@ -1,8 +1,14 @@ -### Creating styles +# Creating styles You can tell the plugin to create any styles for tokens that have not been created yet. The plugin will respect your naming of your tokens, and convert any group to a `/` separated style. We also respect some choices you might make on how your styles should be named, in Settings you'll find 2 options: - Ignore first part of token name for styles: This will strip away the very first part of the token name, so `colors.red.500` becomes `red.500` -- Prefix styles with Theme name: When using Themes this will prepend the name of the Theme to the created style. So a token `background.default` in the Theme `light` becomes `light.background.default` \ No newline at end of file +- Prefix styles with Theme name: When using Themes this will prepend the name of the Theme to the created style. So a token `background.default` in the Theme `light` becomes `light.background.default` + +import { Callout } from 'nextra/components' + + + Styles are only created if a token set is `active`. If a token set is `inactive` or `Treated as source`, the styles for these sets won't be created. + diff --git a/pages/styles/keeping-styles-in-sync.pt-br.md b/pages/styles/keeping-styles-in-sync.md similarity index 61% rename from pages/styles/keeping-styles-in-sync.pt-br.md rename to pages/styles/keeping-styles-in-sync.md index e0b5b09..e860ebb 100644 --- a/pages/styles/keeping-styles-in-sync.pt-br.md +++ b/pages/styles/keeping-styles-in-sync.md @@ -1,12 +1,13 @@ -## Manter os estilos sincronizados +### Keeping styles in sync -É claro que você quer que seus estilos sejam atualizados sempre que atualizar seus tokens. Para fazer isso, é importante manter a estrutura de nomenclatura dos tokens igual aos seus estilos no Figma. Ou seja, se você renomear quaisquer tokens, certifique-se de renomear suas contrapartes de estilos também. +Naturally you'd want your styles to update whenever you update your tokens. If you're using Themes we offer an easy way to do that. Any time you rename a token, the plugin will ask if you want to also rename any connected style. This is only possible if you're doing that change in the file where that style is defined, though. As edits sometimes happen also outside of the file, we offer a `Sync styles` option in the Styles part of the bottom section of the plugin. There, you have access to Rename styles and Remove styles that are not connected. You'd perform this step in the file where your styles are defined (for that theme). + ### Trying to keep styles in sync without using Themes If you're not using Themes, you have to keep the names of styles and tokens the same, then the plugin will update their value for you if the name matches. However you'd have to delete and rename on your own. diff --git a/pages/styles/non-local-styles.mdx b/pages/styles/non-local-styles.mdx new file mode 100644 index 0000000..50a7778 --- /dev/null +++ b/pages/styles/non-local-styles.mdx @@ -0,0 +1,57 @@ +# Non-local styles + +When you want to apply a color token in a file that is not the library file of your Figma styles what you often want to do is to apply the Style instead of a raw hex value. Otherwise all your designers will see, is a hex value, not the applied decision. To do that, we need to prepare our library files first. + +![](/non-local-styles/preview.png) + + +In order for Tokens Studio for Figma to apply a Style instead of a raw hex value in documents where that style is not defined, we need to keep track of the Style ID of each of your created styles. As creating styles is always in relation to a theme (a combination of token sets that are activated), we need to store that information with Themes. With the Pro version of the plugin you are able to connect your tokens to styles. + +![](/non-local-styles/manage-themes-modal.png) + +To do that, you can do as follows: + +1. Create a new theme. +2. Activate that new theme. +3. Let the plugin create all styles for that theme for you, click on `Styles > Create styles` in the bottom. +4. Publish your library. +5. Make sure to sync with one of the remote sync solutions (e.g. GitHub). +6. When you now apply a token in any other file (with that same remote sync setup) we will apply that Style for you. + + +If you already had styles and don't want to create again, you can also click on `Manage themes`, select the theme you want to connect your styles to, go to the Styles tab, and click `Attach styles`. This will attach any style that match token names to this theme. + +![](/non-local-styles/themes-styles-tab.png) + +The same is true for `Importing styles`. If you import styles we will store the connection with the currently active theme. + +### $themes.json file + +We'll store these style connections in a file called `$themes.json` in the root of your project. If you're using single-file sync, this will be one of the root-level keys of your JSON. + + +### Multiple themes in one library + +If you'd rather place all your theme styles in one library, you can do that as well. To do that, go to `Settings` and check `Prefix styles with active theme name`. This will create any styles with the theme name prepended. + +![](/non-local-styles/settings.png) + + +### How to use + +If you're still not sure on how to get started connecting your tokens to styles, the following video might help: + +--- + +import ReactPlayer from 'react-player' + + + \ No newline at end of file diff --git a/pages/styles/non-local-styles.pt-br.mdx b/pages/styles/non-local-styles.pt-br.mdx deleted file mode 100644 index b19983e..0000000 --- a/pages/styles/non-local-styles.pt-br.mdx +++ /dev/null @@ -1,56 +0,0 @@ -# Estilos não locais - -Quando você quiser aplicar um token de cor em um arquivo que não é o arquivo de biblioteca de seus estilos Figma, o que quer é aplicar o estilo em vez de um valor hexadecimal brutov (raw value). Caso contrário, todos os seus designers verão um valor hexadecimal, não a decisão aplicada. Para fazer isso, precisamos preparar nossos arquivos de biblioteca primeiro. - -![](/non-local-styles/preview.png) - -Para que o Tokens Studio for Figma aplique um estilo em vez de um valor hexadecimal bruto em documentos em que esse estilo não está definido, precisamos acompanhar o ID do estilo de cada um dos estilos criados. Como a criação de estilos é sempre em relação a um tema (uma combinação de conjuntos de tokens que são ativados), precisamos armazenar essa informação com Temas. Com a versão Pro do plugin, você pode conectar seus tokens a estilos. - -![](/non-local-styles/manage-themes-modal.png) - -Para fazer isso, você pode fazer o seguinte: - -1. Crie um novo tema. -2. Ative esse novo tema. -3. Deixe o plugin criar todos os estilos para aquele tema para você, clique em `Styles > Create styles` na parte inferior. -4. Publique sua biblioteca. -5. Certifique-se de sincronizar com uma das soluções de sincronização remota (por exemplo, GitHub). -6. Quando você aplicar um token em qualquer outro arquivo (com a mesma configuração de sincronização remota), aplicaremos esse estilo para você. - - -Se você já tinha estilos e não quer criar novamente, você também pode clicar em `Manage themes`, selecionar o tema ao qual deseja conectar seus estilos, ir até a aba Estilos e clicar em `Attach styles`. Isso anexará qualquer estilo que corresponda a nomes de token a este tema. - -![](/non-local-styles/themes-styles-tab.png) - -O mesmo vale para `Importing styles`. Se você importar estilos, armazenaremos a conexão com o tema ativo no momento. - -### $themes.json file - -Armazenaremos essas conexões de estilo em um arquivo chamado `$themes.json` na raiz do seu projeto. Se você estiver usando a sincronização de arquivo único, essa será uma das chaves de nível raiz do seu JSON. - - -### Vários temas em uma biblioteca - -Se você preferir colocar todos os seus estilos de tema em uma biblioteca, você também pode fazer isso. Para fazer isso, vá para `Settings` e marque `Prefix styles with active theme name`. Isso criará qualquer estilo com o nome do tema anexado. - -![](/non-local-styles/settings.png) - - -### Como usar - -Se você ainda não tiver certeza de como começar a conectar seus tokens a estilos, o vídeo a seguir pode ajudar: - ---- - -import ReactPlayer from 'react-player' - - - \ No newline at end of file diff --git a/pages/styles/styles.mdx b/pages/styles/styles.mdx new file mode 100644 index 0000000..4f0cc69 --- /dev/null +++ b/pages/styles/styles.mdx @@ -0,0 +1,272 @@ +# Importing styles + +Instead of manually creating all tokens, you can let the plugin do the work for you. + +In the document where your styles are located, click on `Import` at the bottom of the plugin. + +--- + +import ReactPlayer from 'react-player' + + + + +The plugin will automatically convert color and typography styles to tokens for you. What's best about this approach is that the plugin tries to determine your base units, and create tokens for these. + +That means, your 4 styles all referencing `Inter` as a font family, with 2 font weights, `Regular` and `Bold` will become a set of base tokens (options) of `font-inter`, `font-weight-bold`, various font size, line height, letter spacing and paragraph and a set of Typography tokens (style decisions composed of these base units. + +This process is not perfect (yet), but with a little bit of manual tweaking you'll get yourself a token set that's easy to update later on. + +import { Callout } from 'nextra/components' + + +### Color Tokens + +Importing color styles into Tokens is fairly straightforward. What the plugin will do is create sets of tokens according to the naming of your base styles, so you'd get tokens similar to these: + +``` + "colors": { + "Black": { + "value": "#212121", + "type": "color" + }, + "White": { + "value": "#ffffff", + "type": "color" + }, + "Primary ": { + "100": { + "value": "#e9f4ff", + "type": "color" + }, + "200": { + "value": "#d2e9ff", + "type": "color" + }, + "300": { + "value": "#8fc8ff", + "type": "color" + }, + "400": { + "value": "#4ba6ff", + "type": "color" + }, + "500": { + "value": "#1e90ff", + "type": "color" + }, + "600": { + "value": "#1565b3", + "type": "color" + }, + "700": { + "value": "#0c3a66", + "type": "color" + }, + "800": { + "value": "#061d33", + "type": "color" + }, + "900": { + "value": "#030e19", + "type": "color" + } + }, + "Secondary ": { + "100": { + "value": "#e7efff", + "type": "color" + }, + "200": { + "value": "#cfdffe", + "type": "color" + }, + "300": { + "value": "#a0bffd", + "type": "color" + }, + "400": { + "value": "#709ffd", + "type": "color" + }, + "500": { + "value": "#115ffb", + "type": "color" + }, + "600": { + "value": "#0a3997", + "type": "color" + }, + "700": { + "value": "#072664", + "type": "color" + }, + "800": { + "value": "#031332", + "type": "color" + }, + "900": { + "value": "#020919", + "type": "color" + } + } + } +``` + + +### Importing typography tokens + +The resulting Token JSON for these imported styles will look something like this: + +``` +"fontFamilies": { + "heading": { + "value": "Monument Extended", + "type": "fontFamilies" + }, + "body": { + "value": "Circular Std", + "type": "fontFamilies" + } + }, + "lineHeights": { + "body": { + "value": "140%", + "type": "lineHeights" + }, + "auto": { + "value": "AUTO", + "type": "lineHeights" + }, + "none": { + "value": "100%", + "type": "lineHeights" + }, + "tight": { + "value": "110%", + "type": "lineHeights" + } + }, + "fontWeights": { + "heading": { + "regular": { + "value": "Regular", + "type": "fontWeights" + }, + "bold": { + "value": "Bold", + "type": "fontWeights" + } + }, + "body": { + "regular": { + "value": "Regular", + "type": "fontWeights" + }, + "bold": { + "value": "Bold", + "type": "fontWeights" + } + } + }, + "fontSizes": { + "sm": { + "value": "16", + "type": "fontSizes" + }, + "lg": { + "value": "20", + "type": "fontSizes" + }, + "xl": { + "value": "25", + "type": "fontSizes" + }, + "2xl": { + "value": "31", + "type": "fontSizes" + } + }, + "letterSpacing": { + "normal": { + "value": "0%", + "type": "letterSpacing" + }, + "tight": { + "value": "-1%", + "type": "letterSpacing" + }, + "tighter": { + "value": "-3%", + "type": "letterSpacing" + }, + "wide": { + "value": "5%", + "type": "letterSpacing" + } + } +``` + +The resulting import of styles should result in a set of tokens similar to the one below. What this means, is that you can update any of your token values, and all your styles will automatically get updated as well. Changing a the font family of your headings is now a matter of changing a single token. + +``` +"typography": { + "Headings": { + "Display 1": { + "Bold": { + "value": { + "fontFamily": "{fontFamilies.heading}", + "fontWeight": "{fontWeights.heading.bold}", + "lineHeight": "{lineHeights.tight}", + "fontSize": "{fontSizes.lg}", + "letterSpacing": "{letterSpacing.tighter}", + "paragraphSpacing": "{paragraphSpacing.none}" + "paragraphIndent": "{paragraphIndent.none}" + }, + "type": "typography" + } + }, + "Display 2": { + "Bold": { + "value": { + "fontFamily": "{fontFamilies.heading}", + "fontWeight": "{fontWeights.heading.bold}", + "lineHeight": "{lineHeights.tight}", + "fontSize": "{fontSizes.xl}", + "letterSpacing": "{letterSpacing.tighter}", + "paragraphSpacing": "{paragraphSpacing.none}" + "paragraphIndent": "{paragraphIndent.none}" + }, + "type": "typography" + } + }, + "Display 3": { + "Bold": { + "value": { + "fontFamily": "{fontFamilies.heading}", + "fontWeight": "{fontWeights.heading.bold}", + "lineHeight": "{lineHeights.tight}", + "fontSize": "{fontSizes.2xl}", + "letterSpacing": "{letterSpacing.tighter}", + "paragraphSpacing": "{paragraphSpacing.none}" + "paragraphIndent": "{paragraphIndent.none}" + }, + "type": "typography" + } + } + } + } +``` + +### Importing styles later on +If you created or changed styles after you imported your initial styles, you can still use the Import function. The plugin will show you what styles changed in comparison to your tokens and what new ones were added. You can then decide if you want to ignore a change or if you want to update the token. + +![](/import-styles-diff.png) diff --git a/pages/styles/styles.pt-br.md b/pages/styles/styles.pt-br.md deleted file mode 100644 index b825102..0000000 --- a/pages/styles/styles.pt-br.md +++ /dev/null @@ -1,172 +0,0 @@ -# Estilos (Styles) - -Em vez de criar manualmente todos os tokens, você pode deixar o plug-in fazer o trabalho por você. - -No documento onde seus estilos estão localizados, clique em `Import Styles` no canto superior direito do plugin. - ---- - -import ReactPlayer from 'react-player' - - - - -O plugin irá converter automaticamente estilos de cores e tipografia em tokens para você. O que há de melhor nessa abordagem é que o plug-in tenta determinar suas unidades básicas e criar tokens para elas. - -Isso significa que seus 4 estilos referenciando `Inter` como uma família de fontes, com 2 pesos de fonte, `Regular` e `Bold` se tornarão um conjunto de tokens de base (options) de `font-inter`, `font-weight-bold`, vários tamanhos de fonte, altura de linha, espaçamento entre letras e/ou parágrafo em um conjunto de tokens de Tipografia (decisões de estilo compostas por essas unidades básicas). - -Este processo não é perfeito (ainda), mas com um pouco de ajuste manual você obterá um conjunto de tokens que é fácil de atualizar mais tarde. - -import Callout from 'nextra-theme-docs/callout' - - - A importação de estilos que possuem um ponto (`.`) em seus nomes não funcionará no momento. Use `/` como um divisor. - - -## Tokens de Cores - -Importar estilos de cores para tokens é bastante simples. O que o plug-in fará é criar conjuntos de tokens de acordo com a nomenclatura de seus estilos de base, para que você obtenha tokens semelhantes a estes: - -``` - "colors": { - "Black": "#212121", - "White": "#ffffff", - "Primary ": { - "100 T": "#e9f4ff", - "200 T": "#d2e9ff", - "300 T": "#8fc8ff", - "400 T": "#4ba6ff", - "500 (Base)": "#1e90ff", - "600 S": "#1565b3", - "700 S": "#0c3a66", - "800 S": "#061d33", - "900 S": "#030e19" - }, - "Secondary ": { - "100 T": "#e7efff", - "200 T": "#cfdffe", - "300 T": "#a0bffd", - "400 T": "#709ffd", - "500 (Base)": "#115ffb", - "600 S": "#0a3997", - "700 S": "#072664", - "800 S": "#031332", - "900 S": "#020919" - }, -``` - - -## Tokens de Tipografia - -Os tokens de tipografia suportados por enquanto são: - -- Famílias de fontes -- Pesos de fonte -- Tamanhos de fonte -- Alturas de linha -- Espaçamento entre letras -- Espaçamento de parágrafo - -O Token JSON resultante para esses estilos importados será semelhante a este: - -``` -"fontFamilies": { - "heading": "Monument Extended", - "body": "Circular Std" - }, - "lineHeights": { - "body": "140%", - "auto": "AUTO", - "none": "100%", - "tight": "110%" - }, - "fontWeights": { - "heading": { - "regular": "Regular", - "bold": "Bold" - }, - "body": { - "regular": "Regular", - "bold": "Bold" - } - }, - "fontSizes": { - "sm": "16", - "lg": "20", - "xl": "25", - "2xl": "31", - }, - "letterSpacing": { - "normal": "0%", - "tight": "-1%", - "tighter": "-3%", - "wide": "5%" - }, -} -``` - -A importação de estilos resultante deve pareecer um conjunto de tokens semelhante ao mostrado abaixo. O que isso significa é que você pode atualizar qualquer um dos seus valores de token e todos os seus estilos também serão atualizados automaticamente. Alterar a família de fontes de seus títulos agora é uma questão de alterar um único token. - -``` -"typography": { - "Headings": { - "Display 1": { - "Bold": { - "fontFamily": "$fontFamilies.heading", - "fontWeight": "$fontWeights.heading.bold", - "lineHeight": "$lineHeights.tight", - "fontSize": "$fontSizes.8xl", - "letterSpacing": "$letterSpacing.tighter", - "paragraphSpacing": "$paragraphSpacing.none" - } - }, - "Display 2": { - "Bold": { - "fontFamily": "$fontFamilies.heading", - "fontWeight": "$fontWeights.heading.bold", - "lineHeight": "$lineHeights.tight", - "fontSize": "$fontSizes.7xl", - "letterSpacing": "$letterSpacing.tighter", - "paragraphSpacing": "$paragraphSpacing.none" - } - }, - "Display 3": { - "Bold": { - "fontFamily": "$fontFamilies.heading", - "fontWeight": "$fontWeights.heading.bold", - "lineHeight": "$lineHeights.tight", - "fontSize": "$fontSizes.6xl", - "letterSpacing": "$letterSpacing.tighter", - "paragraphSpacing": "$paragraphSpacing.none" - } - } - } -} -``` - -## Manter os estilos sincronizados - -É claro que você quer que seus estilos sejam atualizados sempre que atualizar seus tokens. Para fazer isso, é importante manter a estrutura de nomenclatura dos tokens igual aos seus estilos no Figma. Ou seja, se você renomear quaisquer tokens, certifique-se de renomear suas contrapartes de estilos também. - -Se você criar um novo estilo posteriormente e quiser mantê-lo em tokens, crie-o no Tokens Studio for Figma e use o botão `Create Styles`, ao invés de aplicar Import Styles novamente. - -`Create Styles` basicamente diz ao Figma para criar qualquer estilo que não exista. - -![](/create-styles.jpg) - -## Importando estilos mais tarde -Se você criou ou alterou estilos depois de importar seus estilos iniciais, ainda pode usar a função `Import`. O plug-in mostrará quais estilos mudaram em comparação com seus tokens e quais novos foram adicionados. Você pode então decidir se deseja ignorar uma alteração ou se deseja atualizar o token. - -![](/import-styles-diff.png) - - - O plugin atualmente trata tokens com um apelido como um valor diferente do valor de estilo. Isso será corrigido em uma versão futura. - \ No newline at end of file diff --git a/pages/styles/swap-styles.pt-br.mdx b/pages/styles/swap-styles.mdx similarity index 81% rename from pages/styles/swap-styles.pt-br.mdx rename to pages/styles/swap-styles.mdx index 12443ba..dd419bf 100644 --- a/pages/styles/swap-styles.pt-br.mdx +++ b/pages/styles/swap-styles.mdx @@ -1,4 +1,4 @@ -# Swap styles (Alpha) +# Swap styles ![Apply selector showing Swap Styles as an option](/swap-styles.png) @@ -8,6 +8,12 @@ In order to use this feature, you need to have Themes defined, and Color tokens This works both for Styles created in the current file, as well as styles that come from a library. In order to attach it to the Theme, however you'll need to attach it in the library file where that style is defined. +import { Callout } from 'nextra/components' + + + This feature is currently behind a feature flag and only available to Pro users. We'll gradually release this so your colleagues who do not have Pro but only act as consumers can also benefit from this. + + --- import ReactPlayer from 'react-player' diff --git a/pages/sync/_meta.js b/pages/sync/_meta.js new file mode 100644 index 0000000..3bb6030 --- /dev/null +++ b/pages/sync/_meta.js @@ -0,0 +1,13 @@ +export default { + "sync": "Overview", + "jsonbin": "JSONBin.io", + "url": "URL", + "github": "GitHub", + "gitlab": "GitLab", + "ado": "Azure DevOps", + "supernova": "Supernova", + "branch-switching": "Branch switching (Pro)", + "generic-storage":"Generic Versioned Storage", + "multi-file": "Multi-file Sync (Pro)", + "second-screen": "Second screen (Pro)" +} diff --git a/pages/sync/_meta.pt-br.json b/pages/sync/_meta.pt-br.json deleted file mode 100644 index 64d0344..0000000 --- a/pages/sync/_meta.pt-br.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "sync": "Overview", - "jsonbin": "JSONBin.io", - "url": "URL", - "github": "GitHub", - "gitlab": "GitLab", - "ado": "Azure DevOps", - "branch-switching": "Trocando de Branchs (Pro)", - "multi-file": "Sincronizando multiplos arquivos (Pro)", - "second-screen": "Second screen (Pro)" -} diff --git a/pages/sync/ado.mdx b/pages/sync/ado.mdx new file mode 100644 index 0000000..c39fa29 --- /dev/null +++ b/pages/sync/ado.mdx @@ -0,0 +1,52 @@ +# Azure DevOps (ADO) + +If you'd like to use Azure DevOps as your sync provider you can do that now! + +--- + +import { Callout } from 'nextra/components' + + + Already have an Azure account with a repository? Great, skip to step 3 + + +### 1. Create an Azure account + +Go to https://dev.azure.com and create an account. + +### 2. Create a new repository + +Create a new repository. Give it any name you like, make it public or private and initialize it with a README. + +### 3. Generate your Personal Access Token + +Go to the Personal Access Tokens section by clicking the avatar icon left of your user and then choosing Personal access tokens, generate a new token and select the neccessary scopes for this repository. + +Copy that token, you'll need it in a second and won't see it again if you close the page. + +Also, never share this token with anyone who shouldn't have access to your repository. + +### 4. Add a new ADO sync to your Tokens file. + +Go to the Sync tab and select ADO. Add a new item + +- Add your organization URL, e.g. https://dev.azure.com/my_organization_name +- Add your Personal Access Token which we just copied. +- Add your repository name (e.g. `newproject`) +- Add your default branch (probably `main`) +- Specify a file path where your tokens should be stored, e.g. `data/tokens.json` or just `tokens.json` +- If needed, add a project name + +### 5. Push your initial set of tokens + +The plugin will now ask you to push your currently stored tokens to the repository. + +Add a commit message, e.g. "Initial commit" + +If you're adding a repository that already contains tokens, the plugin will ask you if you want to pull the latest tokens. This will overwrite your locally stored tokens, so make sure to back these up if you don't want them to get removed. + +### 6. Push or pull changes + +Whenever you make a change in Tokens Studio for Figma, you have to manually hit `Push to ADO` to push your local changes to the remote. Anytime you do that you have to supply a commit message. You can choose the branch you want to push your changes to, so you could just try new tokens out without overwriting the currently live ones. + +If you only want to pull the latest changes, hit `Pull from ADO`. The plugin will let you know when your local changes differ from the ones stored on the remote by showing a blue dot. diff --git a/pages/sync/ado.pt-br.mdx b/pages/sync/ado.pt-br.mdx deleted file mode 100644 index 57e8cb9..0000000 --- a/pages/sync/ado.pt-br.mdx +++ /dev/null @@ -1,52 +0,0 @@ -# Azure DevOps (ADO) - -Se você quiser usar o Azure DevOps como seu provedor de sincronização, faça isso agora! - ---- - -import Callout from 'nextra-theme-docs/callout' - - - Já tem uma conta do Azure com um repositório? Ótimo, pule para o passo 3 - - -### 1. Crie uma conta Azure - -Vá para https://dev.azure.com e crie uma conta. - -### 2. Crie um novo repositório - -Crie um novo repositório. Dê-lhe o nome que quiser, torne-o público ou privado de acordo com sua necessidade. Inicialize-o com um README. - -### 3. Gere seu token de acesso pessoal (Personal Access Token) - -Vá para a seção Tokens de acesso pessoal (Personal Access Tokens) clicando no ícone de avatar à esquerda do seu usuário e escolhendo Tokens de acesso pessoal, gere um novo token e selecione os escopos necessários para este repositório. - -Copie esse token, você precisará dele em um segundo e não o verá novamente se fechar a página. - -Importante: nunca compartilhe esse token com alguém que não deva ter acesso ao seu repositório. - -### 4. Adicione uma nova sincronização ADO ao seu arquivo Tokens. - -Vá para a guia Sincronizar e selecione ADO. Adicionar um novo item: - -- Adicione o URL da sua organização, por exemplo https://dev.azure.com/my_organization_name -- Adicione seu Token de Acesso Pessoal (Personal Access Token) que acabamos de copiar. -- Adicione o nome do seu repositório (por exemplo,`newproject`) -- Adicione seu branch padrão (provavelmente `main`) -- Especifique um caminho de arquivo onde seus tokens devem ser armazenados, por exemplo `data/tokens.json` ou apenas `tokens.json` -- Se necessário, adicione um nome de projeto - -### 5. Envie (Push) seu conjunto inicial de tokens - -O plug-in agora solicitará que você envie seus tokens armazenados atualmente para o repositório. - -Adicione uma mensagem de confirmação, por exemplo "Versionamento inicial" ou "Initial commit" - -Se você estiver adicionando um repositório que já contém tokens, o plug-in perguntará se você deseja obter os tokens mais recentes. Isso substituirá seus tokens armazenados localmente, portanto, faça backup deles se não quiser que eles sejam removidos. - -### 6. Envie (Push) ou pegue (Pull) modificações - -Sempre que você faz uma alteração no Tokens Studio for Figma, você precisa clicar manualmente em `Push to ADO` para enviar suas alterações locais para o controle remoto. Sempre que você fizer isso, você deve fornecer uma mensagem de confirmação. Você pode escolher a ramificação para a qual deseja enviar suas alterações, para poder experimentar novos tokens sem substituir os atuais. - -Se você quiser apenas extrair as últimas alterações, clique em `Pull from ADO`. O plug-in informará quando suas alterações locais forem diferentes das armazenadas no controle remoto, mostrando um ponto azul. diff --git a/pages/sync/branch-switching.mdx b/pages/sync/branch-switching.mdx new file mode 100644 index 0000000..edd4a08 --- /dev/null +++ b/pages/sync/branch-switching.mdx @@ -0,0 +1,19 @@ +# Branch Switching + +Now you can view and switch branches of your remote sync. + +Click the `branch` icon at the bottom of the plugin to see the list of branches. + + +Switching branches in Tokens Studio for Figma + +Click on the branch name to view all the branches and select a branch you want to switch to. + + +Switching branches in Tokens Studio for Figma + + +You can also create a new branch by clicking on `Create new branch from` and selecting the branch you want to duplicate. + + +Create new branch from existing branch \ No newline at end of file diff --git a/pages/sync/branch-switching.pt-br.mdx b/pages/sync/branch-switching.pt-br.mdx deleted file mode 100644 index 20e770e..0000000 --- a/pages/sync/branch-switching.pt-br.mdx +++ /dev/null @@ -1,18 +0,0 @@ -# Trocando de branchs - -Agora você pode ver e trocar de branches da sua sincronização remota. - -Clique no ícone `branch` na parte inferior do plugin para ver a lista de branches. - - -Switching branches in Tokens Studio for Figma - -Clique no nome da ramificação (branch) para ver todas as ramificações (branches) e selecione uma ramificação (branch) para a qual deseja alternar. - -Switching branches in Tokens Studio for Figma - - -Você também pode criar um novo branch clicando em `Create new branch from` e selecionando o branch que deseja duplicar. - - -Create new branch from existing branch \ No newline at end of file diff --git a/pages/sync/generic-storage.mdx b/pages/sync/generic-storage.mdx new file mode 100644 index 0000000..60d15d5 --- /dev/null +++ b/pages/sync/generic-storage.mdx @@ -0,0 +1,67 @@ +# Generic Versioned Storage Sync + +--- + +import { Callout } from 'nextra/components' + + +![](/generic-storage-sync.png) + + +Sometimes you need more control over how your tokens are stored, either to circumvent direct git solutions like Github, Gitlab, etc, to keep control within your infrastructure and not rely on third party storage, or to adopt more fine grained control regarding access and modification of tokens by your users, in this case, you can create your own storage endpoint and hook it into the Figma Tokens plugin. + +An example implementation of creating your storage endpoint can be found [here](https://github.com/SorsOps/figma-tokens-generic-storage-example). In this example we are using a SQLite DB to store the tokens on a local file, however you need only to support the data contract between the plugin. + + +## Flows + +There are 3 types of flows available to this storage provider: + +1. Readonly + +If this is used, the storage provider acts similar to the URL provider, with the only difference the ability to set additional headers. All read requests will be sent via `GET` calls to the endpoint, and no writes will be conducted at all. + +2. Read/Write + +In this flow, write requests are done using `PUT` requests that are considered to be idempotent. During the initial setup, a `PUT` request will be sent with the current set of tokens. + + + If there are no pre-existing tokens, a warning will popup saying `No tokens stored on remote`. You can use the below flow if you wish to circumvent this. + + +3. Read/Write/Create + +With the above, the initial creation of the tokens might not be idempotent and thus the first call during the setup and provisioning is a `POST` request. This post request is expected to return a response to indicate whether the endpoints storage was setup or not for tracking purposes, as well as an `updatedAt` field in the json which could be used to determine whether an additional `GET` request for synchronization with the remote is needed + +These flows are noted in this simple sequence diagram + +![](/generic-storage-sequence.png) + + +## Schemas + +The example repo contains all the schemas necessary should you wish to roll your own endpoint. The swagger is available. [here](https://github.com/SorsOps/figma-tokens-generic-storage-example/blob/main/public/swagger.json) + +## Setup + +### 1. Create a new Generic Storage Provider + +Choose the appropriate flow for your backend and supply the url. + +### 2. Add in optional headers + +Additional header key value pairs can be setup. These headers will be sent for every request. As such you could user `Authorization` : `Bearer xxxyyyzzz` headers if you have an authorization layer in front of your endpoint, or need to identify users for auditing and tracking purposes. + +### 3. Push your initial set of tokens + +If using create flow, you will push your initial tokens as part of the storage provisioning, otherwise ensure that tokens are available at time and provisioning to request. + +### 4. Push or pull changes + +Tokens should be automatically updated whenever you make changes, however you might need to manually sync to your endpoint occasionally if multiple users are writing to the same endpoint. + +### 5. How to use tokens stored in Generic Storage in development? + +This storage provider stores the raw json representing your tokens, as such you will need to be responsible in disseminating the useable resolved tokens to your downstream consumers. + +To help you, the following package could be useful: [Token Transformer](https://www.npmjs.com/package/token-transformer). You or your dev can install it by running `npm install token-transformer`. You can then pull through the tokens json file from your endpoint, extract the `values` and `$themes` properties on the response and handle the resolution locally, or implement this functionality directly into your API for your consumers diff --git a/pages/sync/generic-storage.pt-br.mdx b/pages/sync/generic-storage.pt-br.mdx deleted file mode 100644 index b5ade89..0000000 --- a/pages/sync/generic-storage.pt-br.mdx +++ /dev/null @@ -1,12 +0,0 @@ -# Generic Versioned Storage Sync - ---- - -import Callout from 'nextra-theme-docs/callout' - - -![](/generic-storage-sync.png) - - - Tradução em breve - \ No newline at end of file diff --git a/pages/sync/github.mdx b/pages/sync/github.mdx new file mode 100644 index 0000000..07e79a2 --- /dev/null +++ b/pages/sync/github.mdx @@ -0,0 +1,77 @@ +# GitHub Sync + +Storing tokens on GitHub is beneficial as it's version controlled, allows you to work on different branches (think of a brand refresh that lives on a different branch than the current live version) and gives you varying access levels such as Read or Write access. You can also integrate GitHub Actions which will allow you to create a token pipeline with Style Dictionary or other tools. + +--- + +import ReactPlayer from 'react-player' + + + +import { Callout } from 'nextra/components' + +To set up Github sync for your file, follow these steps: +1. Go to [Github](https://github.com/signup) and create an account. +2. [Create a new repository](https://github.com/new). Give it a name, make it private or public, and initialize it with a **README** (a crucial step). +3. In the `Settings` tab of your profile, scroll to the bottom to find `Developer Settings` whereafter you should find [Personal Access Tokens](https://github.com/settings/tokens). +4. You can either create a personal access token with the older **'Tokens (Classic)'**, or with **'Fine-grained tokens'**: +- **Classic**: Generate a new token and as a minimum scope you can check `repo`. Choose an expiry date, scroll down and click `Generate token`. +- **Fine-grained tokens**: Generate a new token, decide for yourself when that token should expire. Select the repos you want to allow access for and under **'Repository permissions'**, make sure the option `Contents` has `Read and write` selected. Then, scroll down and click `Generate token`. + +After creating a token, it's important to copy and save the token immediately since you won't be able to access it again once you close the page. +**NOTE:** Please ensure that you keep the token confidential and never share it with anyone who shouldn't have access to your repository. Treat the token with the same level of security as your personal password. Even if a token is accidentally shared or compromised, it's essential to revoke and delete it promptly to maintain the security of your repository. + +### Adding GitHub as a Sync Provider + +In the Tokens Studio for Figma plugin, go to the `Settings` tab and in the `Add new` menu, select `GitHub`. + +- Add a name (this is only used for the plugin UI) +- Paste your Personal Access Token which you just copied. +- Add your GitHub repository (e.g. `tokens-studio/figma-plugin`) +- Add your default branch (probably `main`) +- Specify a file path where your tokens should be stored, e.g. `data/tokens.json` or just `tokens.json` +Adding Github Repository Credentials- step 1 + +**Note:** If you only have a README (no token files) setup in your repo, you can use a forward slash **'/'** in the file path as a way of initiating your first commit to setup the repository via the plugin. You will then be able to push your newly created tokens. + +### Pushing your initial set of tokens + +The plugin will now ask you to push your currently setup tokens to the repository. + +Add a commit message, e.g. "Initial commit" +Initiating an initial commit to the repository + +If you're adding a repository that already contains tokens, the plugin will ask you if you want to pull the latest tokens. + +**NOTE:** This will overwrite any locally stored tokens, so make sure to back these up if you don't want to lose them. +Pulling tokens afer Repository setup - step 1 + +### Pushing or Pulling Changes + +Whenever you make a change in Tokens Studio for Figma, you have to manually hit the `Push to GitHub` to push your local changes to your repository. You have to enter a commit message with every push. You can also choose the branch you want to push your changes to. This way you could also try out new tokens without overwriting the current token set up you have. +Pushing tokens to Github + +If you only want to pull the latest changes, hit `Pull from GitHub`. The plugin indicates when your local changes differ from the ones stored on the repository by displaying a blue dot. +Pulling tokens from Github + +### How to use tokens stored in GitHub in development? +We have have now moved over from using Token Transformer to using our Custom Tranforms for [Style-dictionary](/transforming/style-dictionary) to work with Design Tokens. + + + Examples + + A few example repositories that utilise Tokens Studio for Figma, token-transformer, Style Dictionary and GitHub Actions can be found here: + + - [1 theme to css variables](https://github.com/tokens-studio/plugin-example-css) + - [Multiple themes to css variables](https://github.com/tokens-studio/plugin-example-multi) + - [TailwindCSS with dark and light theme](https://github.com/tokens-studio/plugin-example-tailwindcss) + - [Multifile, multitheme](https://github.com/TheeMattOliver/figma-tokens-multifile-multitheme-example) + + Let us know if you have other examples you want to share with the community! + diff --git a/pages/sync/github.pt-br.mdx b/pages/sync/github.pt-br.mdx deleted file mode 100644 index 2735adf..0000000 --- a/pages/sync/github.pt-br.mdx +++ /dev/null @@ -1,95 +0,0 @@ -# GitHub Sync - -Armazenar tokens no GitHub faz muito sentido. É um gestor de versionamento muito popular, permite que você trabalhe em diferentes contextos do seu design (em *Branchs* diferentes, por exemplo) (pense em uma atualização de marca que está em um *branch* diferente da versão no ar) e oferece vários níveis de acesso, como acesso de leitura ou gravação. Além disso, você pode integrar as ações do GitHub, que permitirão criar um pipeline de tokens com o *Style Dictionary* ou outras ferramentas similares. - ---- - -import ReactPlayer from 'react-player' - - - - -import Callout from 'nextra-theme-docs/callout' - - - Já tem uma conta GitHub com um repositório? Ótimo, pule para a etapa 3 - - -### 1. Crie uma conta GitHub - -Vá para https://github.com/signup e crie uma conta. - -### 2. Crie um novo repositório - -Acesse https://github.com/new e crie um novo repositório. Dê a ele o nome que desejar, torne-o público ou privado e inicialize-o com um README. - -### 3. Gere seu token de acesso pessoal - -Vá para a seção *Personal Access Tokens" clicando [aqui](https://github.com/settings/tokens) ou clique em seu Avatar no canto superior direito, vá para `Settings` > role para baixo até `Developer Settings`> [Personal Access Tokens](https://github.com/settings/tokens) e gere um novo token e selecione o escopo `repo`, decida por si mesmo quando esse token deve expirar. Role para baixo e clique em `Generate token`. - -Copie esse token, você precisará dele logo mais e não o verá novamente se fechar a página (salvá-lo em um lugar como o Notion é uma boa ideia para uso futuro). - -Além disso, nunca compartilhe este token com ninguém que não deveria ter acesso ao seu repositório. O token que compartilhei no vídeo acima já foi excluído, trate seu token como sua senha pessoal. - -### 4. Adicione uma nova sincronização do GitHub ao seu arquivo de tokens - -Vá para a guia Sincronizar e selecione GitHub. Adicionar um novo item - -- Adicione qualquer nome (usado apenas para a UI do plugin para identificar seu Token) -- Adicione seu token de acesso pessoal que acabamos de copiar -- Adicione seu repositório GitHub (e.g. `tokens-studio/figma-plugin`) -- Adicione seu branch padrão (provavelmente `main`) -- Especifique um caminho de arquivo onde seus tokens devem ser armazenados, tal como `data/tokens.json` ou apenas `tokens.json` - -### 5. Envie seu conjunto inicial de tokens - -O plug-in agora solicitará que você envie seus tokens armazenados para o repositório. - -Adicione uma mensagem de confirmação (*Commit*), por exemplo "Confirmação inicial". - -Se você estiver adicionando um repositório que já contém tokens, o plug-in perguntará se você deseja obter os tokens mais recentes. Isso substituirá seus tokens armazenados localmente, portanto, certifique-se de fazer backup deles se não quiser que sejam removidos. - -### 6. Empurre ou puxe as alterações - -Sempre que você fizer uma alteração no Tokens Studio for Figma, você deve clicar manualmente em `Push to GitHub` para enviar suas alterações locais para o remoto. Sempre que você fizer isso, deverá fornecer uma mensagem de confirmação (*Commit*). Você pode escolher o branch para o qual deseja enviar suas alterações, para que possa apenas tentar novos tokens sem sobrescrever os atualmente ativos. - -Se você deseja apenas obter as alterações mais recentes, clique em `Pull from GitHub`. O plug-in avisará quando suas alterações locais forem diferentes das armazenadas no controle remoto, mostrando um ponto azul. - -### 7. Como usar tokens armazenados no GitHub em desenvolvimento? - -Se você deseja usar seus tokens também no desenvolvimento, há algumas etapas que você precisa seguir. - -Os tokens que armazenamos no GitHub são a fonte de verdade (*SSoT*) para o plug-in apenas. Ou seja, ele ainda contém apelidos e qualquer matemática que você possa ter usado que é exclusiva para ele. Porém, ferramentas como o *Style Dictionary* não funcionam com matemática. - -Portanto, precisamos de uma maneira de transformar nossos tokens em algo que o Dicionário de Estilo possa ler. - -Escrevi um pacote que faz exatamente isso: [Token Transformer](https://www.npmjs.com/package/token-transformer). Você ou seu desenvolvedor pode instalar executando `npm install token-transformer`. - -Você pode então usá-lo para gerar tokens para um JSON que pode ser lido pelo *Style Dictionary*, sem nenhum apelido, sem nenhuma matemática. - -Execute `node token-transformer tokens.json output.json` onde input.json é o arquivo em que você armazenou seus tokens. Isso pegará seu arquivo JSON de entrada (que é o arquivo que geramos a partir do Tokens Studio for Figma, deve corresponder ao que você inseriu nos detalhes de sincronização) e enviar os tokens transformados para um output.json - -Se você usar vários conjuntos (*Sets*) de tokens, também poderá criar diferentes arquivos de tokens por combinação de tema. Você pode fazer isso fornecendo parâmetros adicionais de transformador de token: `node token-transformer data / tokens.json output.json global,dark` usará os conjuntos de token global e dark para gerar combinações. - -Não deseja incluir o conjunto global na saída, mas usá-lo para resolver aliases? Forneça outro parâmetro como este e o transformador o excluirá na saída: `node token-transformer tokens.json output.json global,dark global` - - - - Exemplos - - Alguns repositórios de exemplo que utilizam Tokens Studio for Figma, token-transformer, Style Dictionary e GitHub Actions podem ser encontrados aqui: - - - [1 tema para variáveis css](https://github.com/tokens-studio/plugin-example-css) - - [Vários temas para variáveis css](https://github.com/tokens-studio/plugin-example-multi) - - [TailwindCSS com tema escuro e claro](https://github.com/tokens-studio/plugin-example-tailwindcss) - - Avise-me se você tiver outros exemplos que deseja compartilhar com a comunidade! - diff --git a/pages/sync/gitlab.mdx b/pages/sync/gitlab.mdx new file mode 100644 index 0000000..b0a2eb9 --- /dev/null +++ b/pages/sync/gitlab.mdx @@ -0,0 +1,106 @@ +# GitLab Sync + +Storing tokens on GitLab makes a lot of sense. It's version controlled, allows you to work in different branches (think of a brand refresh that lives on a different branch than the current live version) and gives you varying access levels such as Read or Write access. Also you can integrate GitLab CI/CD which will allow you to create a token pipeline with Style Dictionary or other tools. + +--- + +import ReactPlayer from 'react-player' + +{/* TODO: Record video for GitLab Sync */} +{/* */} + +import { Callout } from 'nextra/components' + + + Already have a GitLab account with a repository? Great, skip to step 3 + + +### 1. Create a GitLab account + +Go to https://gitlab.com/users/sign_up and create an account. + +### 2. Create a new repository + +Go to https://gitlab.com/projects/new and create a new repository. Give it any name you like, make it public or private and initialize it with a README. + +### 3. Generate your Personal Access Token + +Go to the Personal Access Tokens section by clicking [here](https://gitlab.com/-/profile/personal_access_tokens), or click on your Avatar in the top right, go to `Account` > `Access Tokens` and generate a new token and select scope `api`, decide for yourself when that token should expire. Scroll down and click `Create personal access token`. + + + Important: We currently only support Personal Access Tokens, not Project Access Tokens. + + +Copy that token, you'll need it in a second and won't see it again if you close the page. + +Also, never share this token with anyone who shouldn't have access to your repository. The token I shared in the video above was deleted already, treat it like your personal password. + +### 4. Add a new GitLab sync to your Tokens file. + +Go to the Sync tab and select GitLab. Add a new item + +- Add any name (this is only used for the plugin UI) +- Add your Personal Access Token which we just copied. +- Add your GitLab repository (e.g. `tokens-studio/figma-plugin`) +- Add your default branch (probably `main`) +- Specify a file path where your tokens should be stored, e.g. `data/tokens.json` or just `tokens.json` + + +Is this the first time connecting to a folder/directory in your GitLab repository? Or are you trying to setup a connection to a non-existant directory in your GitLab repository? +You first need to create a directory in your repository on GitLab. Once the directory has been created within your repository, you can establish a connection to that folder through the plugin. + + +### 5. Push your initial set of tokens + +The plugin will now ask you to push your currently stored tokens to the repository. + +Add a commit message, e.g. "Initial commit" + +If you're adding a repository that already contains tokens, the plugin will ask you if you want to pull the latest tokens. This will overwrite your locally stored tokens, so make sure to back these up if you don't want them to get removed. + +### 6. Push or pull changes + +Whenever you make a change in Tokens Studio for Figma, you have to manually hit `Push to GitLab` to push your local changes to the remote. Anytime you do that you have to supply a commit message. You can choose the branch you want to push your changes to, so you could just try new tokens out without overwriting the currently live ones. + +If you only want to pull the latest changes, hit `Pull from GitLab`. The plugin will let you know when your local changes differ from the ones stored on the remote by showing a blue dot. + +### 7. How to use tokens stored in GitLab in development? + +If you now want to use your tokens also in development there's a few steps you need to follow. + +The tokens we store on GitLab is the raw source of truth for the plugin. Meaning, it still contains aliases and any math you might have used. Tools such as Style Dictionary can't work with math by default. + +To help you get started, we have created a custom Style Dictionary configuration that handles things such as math. You will have to change the configuration to use your tokens based on your token structure. You can find the configuration file [in this gist](https://gist.github.com/six7/9cbce8bcbb16b308c5c87f3729392d21). + +Alternatively, you can use this package that transforms the tokens into a format that Style Dictionary can work with: [Token Transformer](https://www.npmjs.com/package/token-transformer). You or your dev can install that by running `npm install token-transformer`. + +You can then use it to generate tokens to a JSON that is readable by Style Dictionary, without any aliases, without any math. + +Run `node token-transformer tokens.json output.json` where tokens.json is the file you stored your tokens in. This will take your input JSON file (which is the file we generate from Tokens Studio for Figma, this should match what you entered in the Sync details) and output the transformed tokens to an output.json + +If you use multiple token sets you might also want to create different token files per theme combination. You can do that by giving token-transformer additional parameters: `node token-transformer data/tokens.json output.json global,dark` will use the global and dark token sets to generate combinations. + +Don't want to include the global set in the output but use it for resolving aliases? Provide another parameter like this and the transformer will exclude that in the output: `node token-transformer tokens.json output.json global,dark global` + +{/* + + Examples + +A few example repositories that utilise Tokens Studio for Figma, token-transformer, Style Dictionary and GitLab CI/CD can be found here: + +- [1 theme to css variables](https://github.com/tokens-studio/plugin-example-css) +- [Multiple themes to css variables](https://github.com/tokens-studio/plugin-example-multi) +- [TailwindCSS with dark and light theme](https://github.com/tokens-studio/plugin-example-tailwindcss) + +Let me know if you have other examples you want to share with the community! + + +*/} diff --git a/pages/sync/gitlab.pt-br.mdx b/pages/sync/gitlab.pt-br.mdx deleted file mode 100644 index faf5b27..0000000 --- a/pages/sync/gitlab.pt-br.mdx +++ /dev/null @@ -1,109 +0,0 @@ -# GitLab Sync - -Armazenar tokens no GitLab faz muito sentido. É um gestor de versionamento muito popular, permite que você trabalhe em diferentes contextos do seu design (em *Branchs* diferentes, por exemplo) (pense em uma atualização de marca que está em um *branch* diferente da versão no ar) e oferece vários níveis de acesso, como acesso de leitura ou gravação. Além disso, você pode integrar as ações do GitLab CI/CD, que permitirão criar um pipeline de tokens com o *Style Dictionary* ou outras ferramentas similares. - ---- - -import ReactPlayer from 'react-player' - -{/* TODO: Record video for GitLab Sync */} -{/* */} - -import Callout from 'nextra-theme-docs/callout' - - - Já tem uma conta GitLab com um repositório? Ótimo, pule para o passo 3 - - -### 1. Crie uma conta no GitLab - -Acesse https://gitlab.com/users/sign_up e crie uma conta. - -### 2. Criar um novo repositório - -Go to https://gitlab.com/projects/new and create a new repository. Give it any name you like, make it public or private and initialize it with a README. - -Acesse https://gitlab.com/projects/new e crie um novo repositório. Dê-lhe o nome que quiser, torne-o público ou privado e inicialize-o com um README. - -### 3. Generate your Personal Access Token - -Go to the Personal Access Tokens section by clicking [here](https://gitlab.com/-/profile/personal_access_tokens), or click on your Avatar in the top right, go to `Account` > `Access Tokens` and generate a new token and select scope `api`, decide for yourself when that token should expire. Scroll down and click `Create personal access token`. - -Vá para a seção Personal Access Tokens clicando [aqui](https://gitlab.com/-/profile/personal_access_tokens), ou clique em seu Avatar no canto superior direito, vá para `Account` > `Access Tokens` e gere um novo token e selecione o escopo `api`, decida por si mesmo quando esse token deve expirar. Role para baixo e clique em `Create personal access token`. - -Copie esse token, você precisará dele logo na sequência e não o verá novamente se fechar a página (se perder, terá que gerar outro). - -Importante: nunca compartilhe esse token com alguém que não deva ter acesso ao seu repositório. O token que compartilhei no vídeo acima já foi excluído, trate-o como sua senha pessoal. - -### 4. Adicione uma nova sincronização do GitLab ao seu arquivo Tokens. - -Go to the Sync tab and select GitLab. Add a new item - -- Add any name (this is only used for the plugin UI) -- Add your Personal Access Token which we just copied. -- Add your GitLab repository (e.g. `tokens-studio/figma-plugin`) -- Add your default branch (probably `main`) -- Specify a file path where your tokens should be stored, e.g. `data/tokens.json` or just `tokens.json` - -Vá para a guia `Sync` e selecione GitLab. Adicionar um novo item. - -- Adicione qualquer nome (isso é usado apenas para a interface do usuário do plug-in); -- Adicione seu Token de Acesso Pessoal (*Personal Access Token*) que acabamos de copiar; -- Adicione seu repositório GitLab (por exemplo, `tokens-studio/figma-plugin`); -- Adicione seu branch padrão (provavelmente `main`); -- Especifique um caminho de arquivo onde seus tokens devem ser armazenados, por exemplo `data/tokens.json` ou apenas `tokens.json`. - -### 5. Envie (Push) seu conjunto inicial de tokens - -O plug-in agora solicitará que você envie seus tokens armazenados atualmente para o repositório. - -Adicione uma mensagem de confirmação, por exemplo "Versionamento inicial" ou "Initial commit" - -Se você estiver adicionando um repositório que já contém tokens, o plug-in perguntará se você deseja obter os tokens mais recentes. Isso substituirá seus tokens armazenados localmente, portanto, faça backup deles se não quiser que eles sejam removidos. - -### 6. Enviar (Push) ou pegar (Pull) modificações - -Sempre que você fizer uma alteração no Tokens Studio for Figma, você precisará clicar manualmente em 'Push to GitLab' para enviar suas alterações locais para o controle remoto. Sempre que você fizer isso, você deve fornecer uma mensagem de confirmação. Você pode escolher a ramificação (branch) para a qual deseja enviar suas alterações, para poder experimentar novos tokens sem substituir os atuais. - -Se você quiser apenas pegar (pull) as alterações mais recentes, clique em `Pull from GitLab`. O plug-in informará quando suas alterações locais forem diferentes das armazenadas no controle remoto, mostrando um ponto azul. - -### 7. Como usar tokens armazenados no GitLab em desenvolvimento? - -Se agora você deseja usar seus tokens também em desenvolvimento, há algumas etapas que você precisa seguir. - -Os tokens que armazenamos no GitLab são a fonte primitiva da verdade (raw Single Source of Truth) para o plugin. Ou seja, ele ainda contém aliases e qualquer matemática que você possa ter usado. Ferramentas como o *Style Dictionary* não funcionam com matemática por padrão. - -Para ajudá-lo a começar, criamos uma configuração personalizada do *Style Dictionary* que lida com coisas como matemática. Você terá que alterar a configuração para usar seus tokens com base nesta estrutura. Você pode encontrar o arquivo de configuração [neste gist](https://gist.github.com/six7/9cbce8bcbb16b308c5c87f3729392d21). - -Como alternativa, você pode usar este pacote que transforma os tokens em um formato com o qual o *Style Dictionary* pode trabalhar: [Token Transformer](https://www.npmjs.com/package/token-transformer). Você ou seu desenvolvedor podem instalar isso executando `npm install token-transformer`. - -Você pode usá-lo para gerar tokens para um JSON que pode ser lido pelo *Style Dictionary*, sem aliases, sem matemática. - -Execute `node token-transformer tokens.json output.json` onde `tokens.json` é o arquivo em que você armazenou seus tokens. Isso pegará seu arquivo JSON de entrada (que é o arquivo que geramos a partir do Tokens Studio for Figma, deve corresponder ao que você digitou nos detalhes de sincronização) e converterá os tokens transformados em um `output.json`. - -Se você usar vários conjuntos de token, também poderá criar arquivos de token diferentes por combinação de tema. Você pode fazer isso fornecendo parâmetros adicionais ao transformador de token: `node token-transformer data/tokens.json output.json global,dark` usará os conjuntos de token global e dark para gerar combinações. - -Não deseja incluir o conjunto global na saída, mas usá-lo para resolver aliases? Forneça outro parâmetro como este e o transformador excluirá isso na saída: `node token-transformer tokens.json output.json global,dark global` - -{/* - - Examples - -A few example repositories that utilise Tokens Studio for Figma, token-transformer, Style Dictionary and GitLab CI/CD can be found here: - -- [1 theme to css variables](https://github.com/tokens-studio/plugin-example-css) -- [Multiple themes to css variables](https://github.com/tokens-studio/plugin-example-multi) -- [TailwindCSS with dark and light theme](https://github.com/tokens-studio/plugin-example-tailwindcss) - -Let me know if you have other examples you want to share with the community! - - -*/} diff --git a/pages/sync/jsonbin.mdx b/pages/sync/jsonbin.mdx new file mode 100644 index 0000000..f6ff586 --- /dev/null +++ b/pages/sync/jsonbin.mdx @@ -0,0 +1,47 @@ +import { Callout } from 'nextra/components' + +# JSONBin.io +To enable JSONBin.io Sync for your file, follow these steps: + +1. You will first need to register an account on JSONBin.io by visiting their [website](https://jsonbin.io/). +2. Once created, click on your avatar and select `API Keys`. Locate your `Secret` Key and copy it. +4. Then, in the Tokens Studio for Figma plugin, go to the `Settings` tab. +5. `Add New`, and then choose JSONBin as your Sync Provider. +6. Enter a name +7. Past your Secret Key into the `Secret` field. +8. Save Credentials to add your json BIN! + +If you want to create a new sync bin, leave the ID field blank. The plugin will generate a new bin for you. Alternatively, you can enter an existing ID to link to an already created bin. + + + When creating a new bin, your tokens get uploaded to that bin. However, when using an existing ID, the tokens stored on the remote will overwrite your existing ones. + +Adding JSONBin credentials - step 1 + +### Getting your team on board + +Once you have set a storage provider on a document in the plugin, the ID and name of your bin will be stored within that document. However, the `Secret` field will be left blank for each team member as it requires them to add their own secret. This approach allows for future implementation of different permissions and granting certain users different levels of access as consumers or contributors. + +### Changing storage credentials + +You can switch between different stored token bins at any time. To do so, create multiple provider items and click "Apply" to assign a specific token set to the current document. +Multiple JSONBin providers - step 2 + +### Updating tokens + +Whenever you make changes to a token, the remote storage will be automatically updated. There is currently no separate "Publish" process; changes are immediately reflected in the tokens. + +### Pulling changes + +On startup, the plugin will automatically fetch the latest remote tokens. However, if your team has made changes while the plugin was open, you can pull the newest changes by clicking the `Pull from JSONBin` button located at the bottom-left of the plugin. +JSONBin pull icon - step 3 + +### Pausing sync + +By default, every token change triggers an update on your sync provider. However, you can pause this behavior by unchecking the `Update remote` option found in the bottom-right `setting-icon` menu of the plugin. +Update JSONBin setting - step 4 + +### Read-only mode +If you'd like some of your team members to only be able to Read tokens, not write, you can add JSONBin with the `URL Sync` option in the plugin. All you'll need to do is add the URL for the bin, such as `https://api.jsonbin.io/v3/b/1234878172571726252` and headers such as `{ "X-Master-Key":"YOUR_KEY", "X-Access-Key":"YOUR_ACCESS_KEY_", "X-Bin-Meta": false }`. The important part is X-Bin-Meta: false, which is required for JSONBin to return only the tokens and not any metadata they store. +Credentials for JSONBin read-only - step 5 + diff --git a/pages/sync/jsonbin.pt-br.mdx b/pages/sync/jsonbin.pt-br.mdx deleted file mode 100644 index 69077ce..0000000 --- a/pages/sync/jsonbin.pt-br.mdx +++ /dev/null @@ -1,39 +0,0 @@ -# JSONBin.io - -Para começar a habilitar o Sync para o seu arquivo, vá para a guia `Sync` no plugin. Escolha `JSONBin` para selecionar JSONBin como seu provedor de sincronização. - -Ao iniciar o recurso Sincronizar pela primeira vez, você não terá nenhuma credencial de provedor armazenada em seu dispositivo. Vá em frente e selecione `Add Credentials`. - -Para `name`, escolha o nome que desejar. Você pode alterar o nome mais tarde. - -Agora você precisa pegar suas credenciais do JSONBin. Para fazer isso, acesse JSONBin.io e registre uma conta. - -Uma vez logado, clique no seu avatar e selecione `API-Keys`. Lá você encontrará sua chave secreta (`secret key`). Copie e insira no campo `Secret` no Tokens Studio for Figma. - -Se você deseja criar um novo bin de sincronização, você pode deixar a parte ID em branco. O plugin irá criar um novo bin para você. Você também pode inserir um ID existente neste campo para vincular um compartimento existente. - -import Callout from 'nextra-theme-docs/callout' - - - Ao criar um novo bin, seus tokens são carregados para esse bin. No entanto, ao usar um ID existente, os tokens armazenados no controle remoto sobrescreverão os existentes. - - -### Trazendo sua equipe a bordo - -Depois de definir um provedor para um documento, armazenamos a ID e o nome do seu compartimento neste documento. O `Secret` é deixado em branco, então cada membro da equipe terá que adicionar o segredo por conta própria. A razão para isso é que, no futuro, queremos habilitar diferentes permissões com base em diferentes usuários, alguns atuando apenas como consumidores, outros como colaboradores. - -### Alterar credenciais de armazenamento - -Você pode alternar entre as diferentes caixas de tokens armazenadas sempre que desejar. Para fazer isso, após ter criado mais de um item de provedor, clique em `Apply` para aplicar este conjunto de tokens ao documento atual. - -### Atualizando tokens - -Sempre que você atualizar um token, o remoto será atualizado automaticamente. Atualmente, não há nenhum processo de `Publish` em vigor, exceto a atualização de tokens. - -### Pegando mudanças - -O plugin irá buscar automaticamente os tokens remotos mais recentes em sua inicialização. De vez em quando, sua equipe pode ter feito alterações enquanto você estava com o plug-in aberto, para obter as alterações mais recentes, clique no botão `Pull from JSONbin` no canto superior direito. - -### Pausando sincronização - -Por padrão, cada mudança de token aciona uma atualização em seu provedor de sincronização. Você pode pausar este comportamento desmarcando `Update Remote` (no menu suspenso inferior esquerdo do plugin). \ No newline at end of file diff --git a/pages/sync/multi-file.mdx b/pages/sync/multi-file.mdx new file mode 100644 index 0000000..d96de4b --- /dev/null +++ b/pages/sync/multi-file.mdx @@ -0,0 +1,31 @@ +# Multi File Sync + +As a pro user you can now sync multiple files at once. + +import ReactPlayer from 'react-player' + + + +In the `Settings` tab select your remote sync in the `Token Storage` section. + +Change the file path by removing the `.json` extension and sync to your folder and sub-folders. + +Multi File Sync + +import { Callout } from 'nextra/components' + + + Free users will have read-only access on tokens, when you're using a multi-file setup. + + + + diff --git a/pages/sync/multi-file.pt-br.mdx b/pages/sync/multi-file.pt-br.mdx deleted file mode 100644 index e7a1b64..0000000 --- a/pages/sync/multi-file.pt-br.mdx +++ /dev/null @@ -1,31 +0,0 @@ -# Sincronizando diversos arquivos (Multi File Sync) - -Como usuário profissional, agora você pode sincronizar vários arquivos ao mesmo tempo. - -import ReactPlayer from 'react-player' - - - -Na guia `Settings` selecione sua sincronização remota na seção `Token Storage`. - -Altere o caminho do arquivo removendo a extensão `.json` e sincronize com sua pasta e subpastas. - -Multi File Sync - -import Callout from 'nextra-theme-docs/callout' - - - Organizar vários arquivos é atualmente baseada em seus nomes. A classificação de outras maneiras será implementada em uma versão futura. - - - - diff --git a/pages/sync/second-screen.en.mdx b/pages/sync/second-screen.mdx similarity index 96% rename from pages/sync/second-screen.en.mdx rename to pages/sync/second-screen.mdx index 4afb56b..3338ac6 100644 --- a/pages/sync/second-screen.en.mdx +++ b/pages/sync/second-screen.mdx @@ -12,7 +12,7 @@ The list view lets you navigate your design tokens in a visualized list way, whi Table view of second screen The table or spreadsheet view gives you powerful bulk-edit capabilities, such as editing the values of multiple tokens at the same time. -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' Have any feedback for us? Share in #second-screen-early-access. We want to make managing design tokens in the browser something that you enjoy. diff --git a/pages/sync/supernova.mdx b/pages/sync/supernova.mdx new file mode 100644 index 0000000..0bf04c9 --- /dev/null +++ b/pages/sync/supernova.mdx @@ -0,0 +1,6 @@ +# Supernova Sync + +You can now sync your tokens between Tokens Studio and Supernova. +![](/supernova.png) + +For more information on syncing with Supernova, you can check out the detailed [documentation](https://learn.supernova.io/latest/design-systems/add-design-system-content/tokens-studio.html). diff --git a/pages/sync/sync.mdx b/pages/sync/sync.mdx new file mode 100644 index 0000000..f93430a --- /dev/null +++ b/pages/sync/sync.mdx @@ -0,0 +1,44 @@ +# Sync + +Since tokens are most useful in a team environment, it's also essential to have a version control in place to ensure that token values remain updated while the team members are working on different files. + +To select one of the sync providers, in the `Settings` tab, you should find the `Add New` button. You will find the following options in the menu. + +### Sync options +- Local storage (default) +- URL +- JSONBin.io +- GitHub +- GitLab +- Azure DevOps +- Supernova +- Generic Versioned Storage + +Syncing providers - step 1 + +#### Local storage +By default, all tokens are stored on the document that you're working in. If you need to work in multiple documents, this option won't work as it means you would have to copy paste your tokens to the other document. + +#### [URL](/sync/url) +Pulls tokens from a remote `.json` stored on your server. This is a read-only sync method. + +#### [JSONBin.io](/sync/jsonbin) +You can use JSONBin.io by creating an account and syncing your tokens there. It's a free and easy way to sync your tokens, but they are however not version controlled by default. + +#### [GitHub](/sync/github) +The recommended way as it hosts your code and design decisions in the same location. By connecting to a repository, you can pull and push tokens or even select a branch to push to. This allows you to explore design decisions before deploying them to a production environment. Additionally, we provide support for GitHub Enterprise for enhanced functionality and compatibility. + +#### [Gitlab](/sync/gitlab) +Like GitHub, you can use GitLab to store your tokens on your repository. + +#### [Azure DevOps](/sync/ado) +Allows you to store your tokens on ADO. + +#### [Supernova](/sync/supernova) +Allows you to sync your tokens between Tokens Studio and Supernova. + +#### [Generic Versioned Storage](/sync/generic-storage) +An extension off of the URL storage. This storage provider supports read/only, read/write and read/write/create flows. Additionally it can be extended with arbitrary headers on the requests should you need more fined grained support for your end-point. + +#### BitBucket (not yet) +We're planning on integrating BitBucket as well, but have hit a roadblock with their API. If you'd like to support us in that effort, reach out on Slack in #feat-bitbucket-sync. diff --git a/pages/sync/sync.pt-br.mdx b/pages/sync/sync.pt-br.mdx deleted file mode 100644 index 848a79b..0000000 --- a/pages/sync/sync.pt-br.mdx +++ /dev/null @@ -1,27 +0,0 @@ -# Sincronizar (Sync) - -Como os tokens fazem mais sentido em um ambiente de equipe, algum tipo de sincronização é necessário para manter os valores atualizados enquanto a equipe está trabalhando em arquivos diferentes. - -### Sync options -- Local storage (padrão) -- JSONBin.io -- URL -- GitHub -- GitLab (novo) - -![](/sync-sync.png) - -#### Armazenamento Local (Local storage) -Por padrão, todos os tokens são armazenados no documento em que você está trabalhando. Se precisar trabalhar em vários documentos, esta opção não funcionará, pois significa que você terá que copiar e colar seus tokens no outro documento. - -#### JSONBin.io -Você pode usar JSONBin.io para criar uma conta e sincronizar seus tokens lá. É uma maneira fácil e gratuita de sincronizar seus tokens, embora eles não sejam tenham controle de versão por padrão. - -#### URL -Extrai tokens de um .json remoto armazenado em seu servidor. Este é um método de sincronização somente de leitura. - -#### GitHub -A maneira mais recomendada (vale para todos os repositórios em Git), pois permite que suas decisões de design vivam no mesmo lugar que seu código está. Conecte-se a um repositório, extraia e envie tokens ou escolha um branch para o qual deseja enviar o seu trabalho - o que permite explorar as decisões de design antes de colocá-los em produção. - -#### Gitlab -A maneira mais recomendada (vale para todos os repositórios em Git), pois permite que suas decisões de design vivam no mesmo lugar que seu código está. Conecte-se a um repositório, extraia e envie tokens ou escolha um branch para o qual deseja enviar o seu trabalho - o que permite explorar as decisões de design antes de colocá-los em produção. diff --git a/pages/sync/url.mdx b/pages/sync/url.mdx new file mode 100644 index 0000000..3397849 --- /dev/null +++ b/pages/sync/url.mdx @@ -0,0 +1,25 @@ +import { Callout } from 'nextra/components' + +# URL Sync + + + The URL sync mode operates in a read-only mode, which means you cannot make direct changes within the plugin. Instead, you will need to modify the corresponding .json file stored on your server. + For an example .json file, you can refer to the provided link to access a sample [file](https://raw.githubusercontent.com/tokens-studio/plugin-example-css/main/tokens.json). + + +To enable the Sync feature for your file, follow these steps in the plugin: + 1. Open the Settings tab and navigate to the Sync providers section. + 2. Click on the `Add new` dropdown and choose `URL` as your Sync Provider. + 3. Enter a name for your credentials. *NOTE:* This does not concern your repository details at all, so you can also modify the name later if desired. + 4. If your server requires authentication, you can store the necessary Headers as a JSON object in the headers field. This allows you to provide any required authentication headers. + 5. It is important to ensure that your server's .json file has the Access-Control-Allow-Origin header set to `*`. If you need assistance with this, consult your engineers or refer to relevant [documentation](https://gist.github.com/nixta/0b98d7975562bc31c4c9). + 6. In the URL field, enter the complete URL that points to your .json file stored on your server. + +Adding URL Sync Credentials - step 1 + +### Getting your team on board +After setting a storage provider on a document, the ID and name of the bin will be stored within that document. The Headers field is intentionally left blank, as each team member will need to add their own headers. + +### Pulling changes +On startup, the plugin will automatically fetch the latest remote tokens. However, if your team has made changes while the plugin was open, you can pull the newest updates by clicking the `Pull from URL` button located at the bottom-left. This way, you can ensure that you have the most up-to-date token information from the remote source and synchronize any changes that occurred while the plugin was running. +Pulling URL Updates - step 2 diff --git a/pages/sync/url.pt-br.mdx b/pages/sync/url.pt-br.mdx deleted file mode 100644 index 0368196..0000000 --- a/pages/sync/url.pt-br.mdx +++ /dev/null @@ -1,25 +0,0 @@ -# Sincronizar por URL (URL Sync) - -![](/url-sync.png) - -Para começar a usar o Sync para o seu arquivo, vá para a guia `Sync` no plugin. Escolha `URL` para escolher um .json armazenado em seu servidor como seu provedor de sincronização. - -Ao iniciar o recurso *Sync* pela primeira vez, você não terá nenhuma credencial de provedor armazenada em seu dispositivo. Vá em frente e selecione `Add Credentials`. - -Para `name`, escolha o nome que desejar - você poderá alterá-lo mais tarde. - -Se o seu servidor requer algum tipo de autenticação, você pode armazenar seus *Headers* como um objeto JSON no campo de *Headers*. É importante que seu .json armazenado em seu servidor tenha `Access-Control-Allow-Origins` definido como `*`, peça a time de Desenvolvimento para ajudá-lo se você estiver travado ou [leia sobre isso](https: //gist.github.com/nixta/0b98d7975562bc31c4c9). A parte do URL é o URL completo que aponta para o seu .json - -### Modo de leitura (Read only mode) - -O modo de sincronização de URL é um modo somente leitura. Isso significa que você não pode fazer nenhuma alteração diretamente no plug-in, você terá que fazer no .json armazenado em seu servidor. - -Você pode encontrar um exemplo .json em [exemplo de JSON de tokens](https://raw.githubusercontent.com/tokens-studio/figma-plugin-example/main/tokens.json). - -### Trazendo sua equipe a bordo - -Depois de definir um provedor de armazenamento em um documento, armazenamos a ID e o nome do seu *bin* neste documento. O campo *Headers* é deixado em branco, então cada membro da equipe terá que adicionar os *Headers* por conta própria. - -### Enviando modificações (pull) - -O plugin irá buscar automaticamente os tokens remotos mais recentes na inicialização. De vez em quando, sua equipe pode ter feito alterações enquanto você estava com o plug-in aberto. Para obter as alterações mais recentes, clique no botão 'Pull from URL' no canto superior direito. \ No newline at end of file diff --git a/pages/themes/_meta.js b/pages/themes/_meta.js new file mode 100644 index 0000000..b4cbf34 --- /dev/null +++ b/pages/themes/_meta.js @@ -0,0 +1,4 @@ +export default { + "token-sets": "Token Sets", + "themes-pro": "Multi-Dimensional Themes (Pro)" +} diff --git a/pages/themes/_meta.pt-br.json b/pages/themes/_meta.pt-br.json deleted file mode 100644 index 0355902..0000000 --- a/pages/themes/_meta.pt-br.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "token-sets": "Token Sets", - "themes-pro": "Temas avançados (Pro)" -} diff --git a/pages/themes/themes-pro.mdx b/pages/themes/themes-pro.mdx new file mode 100644 index 0000000..85b2a66 --- /dev/null +++ b/pages/themes/themes-pro.mdx @@ -0,0 +1,82 @@ +# Multi-dimensional themes (Pro) + +Advanced themes have now become Multidimensional themes! Previously, when working with themes, you would have to save multiple themes for different overrides, which led to a lengthy list of themes to choose from. + +--- + +import ReactPlayer from 'react-player' + + + + + +## Creating a theme + +Select the `Theme` dropdown and click on the `Manage Themes` option. + +Manage themes - step 1 + +To create a new theme, click on the `New Theme` button. Assign a name to your theme and enable the token sets that you want to include in the theme. Finally, click on the `Save Theme` button. Additionally, you can designate a token set as a `Source`. + +Enter the name of the theme, enable the token sets you want to be included in the theme and click on `Save theme` button. You can also set a token set as a source. + +import { Callout } from 'nextra/components' + + +Note that no styles are generated when creating styles with a set that is treated as a source. If you wish to exclude a specific token set from a particular theme, set it to disabled. + + +Creating a theme - step 2 + +## Managing Themes + +In the `Manage Themes`section, you can not only obtain an overview of all your themes but also access information about the tokens attached to styles. To do this, click on the arrow next to one of your themes. This action will open a modal window with two tabs located on the top-right: `Sets` and `Styles`, select the Styles tab. Within the styles tab, upon expanding the available sections, you will find a comprehensive overview of the tokens and styles that are linked to the selected theme. + + + When connecting Styles to tokens in a Multi-dimensional theme where some tokens depend on another token which changes its value between themes, styles won't change their value as `Styles` in Figma have no concept of references. + + +Styles tab + +## Grouping Themes + +With Multi-dimensional themes, we now provide the ability to categorise your themes into groups. This allows you to generate a matrix of potential combinations involving color themes, platforms, brands, density, languages, and more. Multi-dimensional themes significantly alleviate the need to create an excessive number of individual themes. + +For example: +- **Mode** - Light, Dark +- **Brand A** - RedPlanet, YellowCab +- **Contrast** - Default, High +- **Language** - English, Japanese, German + +Having your sets clubbed under groups makes it more accessible to switch from a matrix of themes. + +Themes dropdown + +Prior to the implementation of multidimensional themes, achieving all possible combinations required the creation of 24 themes, such as: +1. RedPlanet-Light-Default-English +2. RedPlanet-Light-Default-Japanese +3. RedPlanet-Light-Default-German +4. RedPlanet-Dark-Default-English +5. RedPlanet-Dark-Default-Japanese +6. RedPlanet-Dark-Default-German, and so on. + +With the introduction of multidimensional themes, this number has now been reduced to 9 themes. + + +## Applying a theme + +To apply a particular theme, click on the Theme dropdown, and select one set from each of the groups that you want applied. + + +Existing themes will be ungrouped. You can move your themes to groups by editing the existing theme and adding a group name. + + +Selected themes diff --git a/pages/themes/themes-pro.pt-br.mdx b/pages/themes/themes-pro.pt-br.mdx deleted file mode 100644 index 37ffeb1..0000000 --- a/pages/themes/themes-pro.pt-br.mdx +++ /dev/null @@ -1,30 +0,0 @@ -# Themes-Pro - -If you are on a Pro plan, you have access to the `Theme` feature. - -Using this feature you can select any number of token sets and save it as a theme and apply any theme with a single click. - -## Creating a theme - -Select the `Theme` dropdown and click on `Manage Themes` option. - - -Creating a theme - step 1 - -You can create a new theme by clicking on `New theme` button. - - -Creating a theme - step 2 - -Enter the name of the theme, enable the token sets you want to be included in the theme and click on `Save theme` button. You can also set a token set as a source. - - -Creating a theme - step 3 - - -## Applying a theme - -To apply a particular theme click on the `Theme` dropdown and select the theme you want to apply. - - -Applying a theme \ No newline at end of file diff --git a/pages/themes/token-sets.mdx b/pages/themes/token-sets.mdx new file mode 100644 index 0000000..858302d --- /dev/null +++ b/pages/themes/token-sets.mdx @@ -0,0 +1,40 @@ +# Token Sets + +You can split your tokens up into multiple sets, or themes. + +Splitting tokens up has many benefits: +- Allow you to split up options and decisions +- Gives you the ability to semantically seperate tokens +- Different sets can be exposed by activating only what you need + +--- + +![Switch between token sets](/token-sets-1.gif) + +##### Creating sets +You can create a new set by clicking the '+' at the bottom of your existing sets. Enter a unique name. + +![](/token-sets.png) + +#### Switching to a set +Click on the token set (not the checkbox) to switch editor context to this new set. + +#### Renaming or deleting a set +Right-click a set to display 'Rename' and 'Delete' options. + +#### Treat as source +Right-click a set to enable 'Treat as source'. When a token set is treated as a source, these tokens will not be exported as styles but only used as a reference. You recognise a token set is marked as source by the dot inside the checkbox. + +![](/treat-as-source.png) + +#### Activating (checking) a set +By ticking the checkbox you activate this set, meaning these tokens will get exposed to Figma. If you have multiple sets (e.g. a light and a dark theme) you can overwrite decisions that may have been defined in another set. + +#### Changing order of sets +You can drag sets around to define their order. All active token sets get exposed and merged into one big token set, if some tokens have the exact same name and path, the latter one wins (e.g. if colors.foreground exists in both a light and a dark theme, the one thats visible later in the set list wins). + +#### Creating a folder structure of sets (Pro) +You first need to enable [Multi File Sync](/sync/multi-file). +When the Multi File Sync is enabled, you can create a folder structure from the plugin. Simply rename your token sets to have a folder path, eg folder/set-1 , folder/set-2. + +![](https://user-images.githubusercontent.com/109062656/184136468-275b114d-ff50-4322-9c21-04d940ce2dab.png) diff --git a/pages/themes/token-sets.pt-br.mdx b/pages/themes/token-sets.pt-br.mdx deleted file mode 100644 index a4a82d2..0000000 --- a/pages/themes/token-sets.pt-br.mdx +++ /dev/null @@ -1,40 +0,0 @@ -# Token Sets (Temas) - -Agora você pode dividir seus tokens em vários conjuntos ou temas. - -Dividir tokens tem muitos benefícios: -- Permitem que você divida opções e decisões -- Oferece a capacidade de separar semanticamente tokens -- Conjuntos diferentes podem ser expostos ativando apenas o que você precisa - ---- - -![Switch between token sets](/token-sets-1.gif) - -##### Criando sets -Você pode criar um novo conjunto clicando no `+` próximo aos conjuntos existentes. Insira um nome único. - -![](/token-sets.png) - -#### Mudando para um conjunto (set) -Clique no conjunto de tokens (não na caixa de seleção) para mudar o contexto do editor para este novo conjunto. - -#### Renomeando ou excluindo um conjunto (set) -Clique com o botão direito em um conjunto para exibir as opções de renomear e excluir. - -#### Tratar como fonte (Treat as source) -Clique com o botão direito do mouse em um conjunto para ativar 'Treat as source'. Quando um conjunto de tokens é tratado como fonte, esses tokens não serão exportados como estilos, mas usados apenas como referência. Você reconhece que um conjunto de tokens está marcado como origem pelo ponto dentro da caixa de seleção (checkbox). - -![](/treat-as-source.png) - -#### Ativando (verificando) um conjunto (set) -Ao marcar a caixa de seleção, você ativa este conjunto, o que significa que esses tokens serão expostos ao Figma. Se você tiver vários conjuntos (por exemplo, um tema claro e um tema escuro), poderá substituir as decisões que podem ter sido definidas em outro conjunto. - -#### Alteração da ordem dos conjuntos -Você pode arrastar conjuntos para definir sua ordem. Todos os conjuntos de tokens ativos são expostos e mesclados em um grande conjunto de tokens, se alguns tokens tiverem exatamente o mesmo nome e caminho, o último ganha (por exemplo, se `colors.foreground` existe em um tema claro e escuro, aquele que é visível mais tarde nas vitórias do `set list`) - -#### Criando uma estrutura de pastas de conjuntos (Pro) -Primeiro você precisa habilitar a Multi File Sync. -Quando o Multi File Sync está ativado, você pode criar uma estrutura de pastas a partir do plug-in. Basta renomear seus conjuntos de tokens para ter um caminho de pasta, por exemplo, `folder/set-1` , `folder/set-2`. - -![](https://user-images.githubusercontent.com/109062656/184136468-275b114d-ff50-4322-9c21-04d940ce2dab.png) \ No newline at end of file diff --git a/pages/tokens/_meta.js b/pages/tokens/_meta.js new file mode 100644 index 0000000..55f6f6a --- /dev/null +++ b/pages/tokens/_meta.js @@ -0,0 +1,11 @@ +export default { + "creating-tokens": "Creating tokens", + "applying-tokens": "Applying tokens", + "aliases": "Aliases", + "using-math": "Using math", + "color-modifiers": "Color modifiers (Pro)", + "documentation-tokens": "Documentation tokens", + "token-types": "Token types", + "json-schema": "JSON schema", + "settings": "Settings" +} diff --git a/pages/tokens/_meta.pt-br.json b/pages/tokens/_meta.pt-br.json deleted file mode 100644 index 8901dfb..0000000 --- a/pages/tokens/_meta.pt-br.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "creating-tokens": "Criação de tokens", - "applying-tokens": "Aplicando tokens", - "aliases": "Apelidos (Aliases)", - "using-math": "Usando matemática", - "documentation-tokens": "Tokens de documentação", - "token-types": "Token types", - "json-schema": "JSON schema" -} diff --git a/pages/tokens/aliases.mdx b/pages/tokens/aliases.mdx new file mode 100644 index 0000000..d6728e6 --- /dev/null +++ b/pages/tokens/aliases.mdx @@ -0,0 +1,31 @@ +import { Callout } from 'nextra/components' + +# Aliases + +One of the advantages of Tokens Studio for Figma is its ability to utilize references to other tokens when defining values for your tokens. This allows for a highly efficient and consistent design system. For example, your brand color can be established as a reference to `colors.red.500`, while a background token can derive its value from `colors.black`, and a foreground token can inherit its value from `colors.white` (all referenced from core). This feature enhances flexibility and maintains a cohesive visual language throughout your design system. +Aliasing a token - step 1 + +To use aliases in tokens, we use the following notation: `{spacing.sm}`. You can also select any available aliases while creating a token by typing `{` and a part of the alias name in the field, or by selecting available aliases from the dropdown. + +By using this notation, you instruct the plugin to locate a token named `spacing.sm` and use its corresponding value. The benefit of this approach is that any changes then made to the `spacing.sm` token will automatically propagate to all tokens that reference it. + + + References are case sensitive, which means you should write your references like your tokens are named (usually lowercase). + + +--- + +import ReactPlayer from 'react-player' + + + + +## Nested references +We also support nested references in the form of `{colors.{primary}.500}` up to 1 level of depth, any further level of depth is not supported. This is not supported by any other tool and is also not part of the DTCG format, in addition it can negatively impact performance of token resolution. diff --git a/pages/tokens/aliases.pt-br.md b/pages/tokens/aliases.pt-br.md deleted file mode 100644 index ad5b7fb..0000000 --- a/pages/tokens/aliases.pt-br.md +++ /dev/null @@ -1,15 +0,0 @@ -# Apelidos (Aliases) - -A coisa legal sobre Tokens Studio for Figma é que você pode fazer referência a outros tokens como um valor para seus tokens (ou, como podemos chamar, seus estilos). Isso significa que você pode fazer com que a cor de sua marca seja uma referência a `colors.red.500`, ou ter um token de fundo que obtém seu valor de um token de `colors.black` enquanto um token de primeiro plano obtém seu valor de um token `colors.white`. - -Para usar um alias em seus tokens, nós os escrevemos na seguinte notação: `$spacing.sm` - -import Callout from 'nextra-theme-docs/callout' - - - As referências (`references`) são sensíveis a maiúsculas e minúsculas, o que significa que você deve escrever suas referências como seus tokens são nomeados (geralmente em minúsculas). - - -O que isso faz é dizer ao plugin para procurar um token de `spacing.sm`, se for encontrado, usar esse valor. Sempre que você altera `spacing.sm`, o token que o referencia também muda. - -Você também pode incorporar apelidos dentro de tokens de cores! Se você quiser um estilo de cor que use a cor da marca, mas reduza sua opacidade para 50%, basta escrever: `rgba ($colors.brand, 0.5)` \ No newline at end of file diff --git a/pages/tokens/applying-tokens.mdx b/pages/tokens/applying-tokens.mdx new file mode 100644 index 0000000..3cd4f92 --- /dev/null +++ b/pages/tokens/applying-tokens.mdx @@ -0,0 +1,21 @@ +# Applying tokens + +There are two ways how you can apply tokens to your selection: + +### Default behaviour (left-click) +When you left-click on a token, it is applied to your current selection (multiple layers can be selected). For certain tokens, we provide default assumptions. For example, with `Colors`, we assume that you want to apply the token as a `Fill`. + +### Specifying what to apply (right-click) +You can also right-click on tokens to specify a particular token property you would like to set such as `Left`, `Top`, `Right`, `Bottom`, or `Gap` properties in the case of Spacing; can also be set individually. + +Token properties - step 1 + +### Control where to apply changes +You can also control which parts of your designs are updated by utilising the `Apply selector` located at the bottom right of the plugin. You have the following options to choose from: +- Apply to selection (updates only the currently selected elements) +- Apply to page (updates the current/active page) +- Apply to document (updates all pages, which can be slower) + +Additionally, we provide you with more control over the updates made after changing a token. In the `Setting icon` next to the apply selector, unchecking `Update on change` for example will require you to manually click the `Apply to` button in order to update the changes on your selection, page or document. +Apply to & update settings - step 2 + diff --git a/pages/tokens/applying-tokens.pt-br.md b/pages/tokens/applying-tokens.pt-br.md deleted file mode 100644 index bfb66c4..0000000 --- a/pages/tokens/applying-tokens.pt-br.md +++ /dev/null @@ -1,19 +0,0 @@ -# Aplicando tokens - -Existem duas maneiras de aplicar tokens à sua seleção: - -### Comportamento padrão (botão esquerdo) -Quando você clica com o botão esquerdo em um token, ele é colocado em sua seleção (várias camadas selecionadas são possíveis!). Para certos tokens, determinamos os padrões - como em `Colors`, onde assumimos que você deseja aplicar `Fill`. - -### Especificando o que aplicar (clique com o botão direito) -Você pode clicar com o botão direito do mouse nos tokens para especificar qual propriedade deve ser definida, como em `Spacing` as propriedades `Horizontal Spacing`, `Vertical Spacing` ou `Gap` individualmente. - -### Control where to apply changes -Você pode controlar quais partes do seu design são atualizadas utilizando o seletor Aplicar no canto inferior esquerdo do plugin. - -Você pode escolher entre: -- Aplicar à página (a página atualmente selecionada será atualizada) -- Aplicar ao documento (todas as páginas são atualizadas, possivelmente lento) -- Aplicar à seleção (apenas os nós selecionados atualmente serão atualizados) - -Além disso, oferecemos a você mais controle sobre o que acontece depois que você altera um token. Ao definir `Update on change` para false, o plugin irá requerer que você pressione manualmente o botão `Update` para enviar alterações para sua página / documento / seleção. \ No newline at end of file diff --git a/pages/tokens/color-modifiers.mdx b/pages/tokens/color-modifiers.mdx new file mode 100644 index 0000000..2be2bfd --- /dev/null +++ b/pages/tokens/color-modifiers.mdx @@ -0,0 +1,67 @@ +import { Callout } from 'nextra/components' + +# Color Modifiers (Pro) +As a Pro user, you can manipulate colors to create slight variations of a specific base color. You can currently pick from the following opertaions: lighten, darken, mix and alpha. Additionally, you can also pick from the following color-spaces: lch, srgb, p3 and hsl. + +The color modifier can for example be used to create a hover state that is a bit brighter, a pressed state which is a bit darker or a color ramp from the base color. By leveraging these modifiers, you can introduce subtle variations, indicating states, or creating cohesive color schemes throughout your design. + +Operations & Spaces - step 1 + + + Note 2: ColorJS.io is the color library used for the implementation of the color modifiers. + + +## How to use + +Create a base color and add a modifier + +Add new modifier - step 2 + +Choose the type of operation (lighten, darken, mix or alpha) and the color space (lcc, srgb, p3 or hsl). Next, you can enter an amount between 0 and 1, 0 being the base color 1 being the value of the selected opreation. + +## Available modifiers + + + Note: Currently it’s only possible to add one modifier to a base color at once. + + +### Lighten +When we use the lighten operation, we take the base color and increase its lightness by a percentage that equals the amount. So, the amount 0.1 will mean that the base color gets 10% lighter. An amount of 1 means you get pure white, so it's in relation to the base color towards white. + +``` +0 amount: no change in lightness +1 amount: white +``` +Lighten operation - step 3 + +### Darken +Using the darken operation means to darken the base color closer to the darkest shade in relation to the amount. So, the amount 0.1 will mean the base color gets darker by 10%, and a value of 1 means you get pure black. + +``` +0 amount: no change in darkness +1 amount: black +``` +Darken operation- step 4 + +### Mix +To mix a color with another color, you can use the mix operation. The amount 0 means = the original base color that is used, and 1 = the color that it is being mixed with. An amount of 0.3 means a 30-70% split between the two values. + +``` +0 amount: base color +1 amount: mix color +``` +Mix operation - step 5 + +### Alpha +To transparentize colors, you can use the alpha operation which takes the base color and makes it transparent according to the amount. 0 = transparent, 1 = fully opaque. An amount 0.2 outputs an opacity of 20%. + +``` +0 amount: fully transparent +1 amount: fully opaque +``` +Alpha operation - step 6 + + + + + diff --git a/pages/tokens/color-modifiers.pt-br.mdx b/pages/tokens/color-modifiers.pt-br.mdx deleted file mode 100644 index 026dd48..0000000 --- a/pages/tokens/color-modifiers.pt-br.mdx +++ /dev/null @@ -1,59 +0,0 @@ -import Callout from 'nextra-theme-docs/callout' - -# Color Modifiers (Pro) -As a Pro user you are now able to manipulate colors to create slight variations of a specific base color. Currently there are four modifiers available: lighten, darken, mix, alpha. - -The color modifier can for example be used to create a hover state that is a bit brighter, a pressed state which is a bit darker or a color ramp from the base color. - -## How to use -Create a base color and add a modifier - -![](/modifiers-intro.png) - -Choose the type of operation (lighten, darken, mix or alpha) and the color space (lcc, srgb, p3 or hsl) -Next, choose the amount for the modifier (this is an amount between 0 and 1). - -## Available modifiers -### Lighten -When we lighten we take the base color and increase lightness by a percentage that equals the amount, so a 0.1 amount will mean the color gets 10% lighter. A value of 1 means you’re getting a white, so it’s always in relation to the base color to white. - -0 amount: no change in lightness -1 amount: white - -![](/lighten.png) - -### Darken -Applying a darken modifier means we’re darkening the current color closer to the darkest shade in relation to the amount. So a 0.1 amount will mean the color gets 10% darker, an amount of 1 means pure black. - -0 amount: no change in darkness -1 amount: black - -![](/darken.png) - -### Mix -If you want to mix a color with another color you can use the mix modifier. The amount means: 0 = the original base color is used. 1 = the color to be mixed with is used. A value of 0.5 means a 50% split between those values. - -0 amount: base color -1 amount: mix color - -![](/mix.png) - -### Alpha -To transparentize colors you can use the alpha modifier, which takes the base color and makes it transparent according to the amount. 0 = transparent, 1 = fully opaque. - -0 amount: fully transparent -1 amount: fully opaque - -![](/alpha.png) - - - Note: Currently it’s only possible to add one modifier to a base color at once. - - - - Note 2: ColorJS.io is the color library used for the implementation of the color modifiers. - - - - - diff --git a/pages/tokens/creating-tokens.mdx b/pages/tokens/creating-tokens.mdx new file mode 100644 index 0000000..62ccc4b --- /dev/null +++ b/pages/tokens/creating-tokens.mdx @@ -0,0 +1,22 @@ +# Creating tokens + +In Tokens Studio for Figma, you can create reusable and semantic tokens which you can then reference in your design process. + +Creating a new token via the UI is a simple process. As an example, create a new token in the Colors type by clicking on the + icon. In the modal that appears, give your token a name, for example “colors.blue”, with a value of #0000FF, and click on create to create your first token! +Create a token - step 1 + +### Editing tokens +To change the value of an existing token, right click the token you wish to edit and select `Edit Token`. You can also change the name of the token. Doing so will then display a modal asking whether or not you would like to remap all your tokens using colors.blue to colors.blue.500. You can then select the type of remapping method: selection, page or document. +Edit a token - step 2 + +### Duplicating tokens +To duplicate a token, right click the token you wish to duplicate and select `Duplicate Token`. In addition to being able to duplicate a token, you can also select the set in which you want the token to be duplicated into. +Duplicate a token - step 3 + +### Token groups +As having a lot of tokens can become quite messy, you can use dot-notation in the token names to create nesting. For instance, you could have a token named "colors.button.background.primary”. This nesting approach helps keep your tokens structured and avoids clutter. + +You can also remove token groups by right-clicking them and selecting `Delete` which will remove all tokens under that group. +Using dot notation - step 4 + + diff --git a/pages/tokens/creating-tokens.pt-br.md b/pages/tokens/creating-tokens.pt-br.md deleted file mode 100644 index 5914c3e..0000000 --- a/pages/tokens/creating-tokens.pt-br.md +++ /dev/null @@ -1,18 +0,0 @@ -# Criação de tokens - -Criar um novo token por meio da UI é um processo simples. Como exemplo, crie um novo token no grupo Fill clicando no ícone `+` no grupo `Fill`. - -No modal que aparece, dê um nome ao seu token, por exemplo `blue` com um valor de `#0000FF`, salve seu progresso clicando em `Create`. - -### Editando tokens -Para alterar o valor de um token existente, clique com o botão direito no token que deseja editar e selecione `Edit Token`. - -Você também pode alterar o nome do token, o que atualizará automaticamente todas as referências a este token. - -### Grupos de token -Como gerar muitos tokens pode se tornar bastante confuso, você pode agrupar seus tokens adicionando-os a um grupo de tokens. - -#### Crie um novo grupo de tokens -Ao adicionar um novo token, você pode simplesmente escrever seus tokens em nomes separados por pontos. Nomear seu novo token `primary.500` irá adicionar este novo token ao grupo `primary` e com um nome de `500`. - -Você pode remover grupos de tokens clicando com o botão direito neles e selecionando `Delete`. diff --git a/pages/tokens/documentation-tokens.mdx b/pages/tokens/documentation-tokens.mdx new file mode 100644 index 0000000..68f4ef2 --- /dev/null +++ b/pages/tokens/documentation-tokens.mdx @@ -0,0 +1,28 @@ +# Documentation tokens + +To make it easier for you to create a living token documentation, version 50 introduced documentation tokens. With documentation tokens, you are able to create a reference sheet that is linked to your tokens and will update whenever you update your tokens, such as the one in this example: + +![](/size-example.jpg) + +### How do I get my own token sheet? + +1. Select a text layer +2. Right click the token you want to reference +3. Select documentation token choices: Name, raw value, value (with all aliases resolved) and description. +4. Whenever you change the value of a token (or it's description) the text content of this layer will update. + +![](/size-howto.jpg) + +--- + +import ReactPlayer from 'react-player' + + diff --git a/pages/tokens/documentation-tokens.pt-br.md b/pages/tokens/documentation-tokens.pt-br.md deleted file mode 100644 index 5d505dc..0000000 --- a/pages/tokens/documentation-tokens.pt-br.md +++ /dev/null @@ -1,28 +0,0 @@ -# Tokens de documentação - -Para facilitar a criação de uma documentação de tokens, a versão 50 introduziu os *tokens de documentação*. Com os tokens de documentação, você pode criar uma folha de referência que está vinculada aos seus tokens e será atualizada sempre que você atualizar seus tokens, como neste exemplo: - -![](/size-example.jpg) - -### Como faço para obter minha própria folha de token? - -1. Selecione uma camada de texto; -2. Clique com o botão direito no token que você deseja fazer referência; -3. Selecione uma das 3 opções de token de documentação: Nome (*Name*), Valor Bruto (*raw value*), descrição (*Description*); -4. Sempre que você alterar o valor de um token (ou sua descrição), o conteúdo de texto desta camada será atualizado. - -![](/size-howto.jpg) - ---- - -import ReactPlayer from 'react-player' - - diff --git a/pages/tokens/json-schema.pt-br.mdx b/pages/tokens/json-schema.mdx similarity index 61% rename from pages/tokens/json-schema.pt-br.mdx rename to pages/tokens/json-schema.mdx index ad56d75..cbaa3b2 100644 --- a/pages/tokens/json-schema.pt-br.mdx +++ b/pages/tokens/json-schema.mdx @@ -1,6 +1,8 @@ # JSON Schema -Os tokens são representados em JSON, como uma lista de objetos. Um JSON válido ficaria assim: +import { Callout } from 'nextra/components' + +Tokens are represented in JSON, as a list of objects. A valid JSON would look like this: ``` { @@ -17,11 +19,11 @@ Os tokens são representados em JSON, como uma lista de objetos. Um JSON válido } ``` -Este JSON definiria, portanto, 2 tokens: `red` e `blue`. +which would define 2 tokens, `red` and `blue`. -### Descrição (description) +### Description -Os tokens podem ter uma descrição (`description`), e o plugin encaminhará isso para o Figma ao criar estilos. +Tokens can have a description, and the plugin will forward this to Figma when creating styles. ``` { @@ -40,9 +42,9 @@ Os tokens podem ter uma descrição (`description`), e o plugin encaminhará iss } ``` -### Referências +### References -Os tokens podem conter referências a outros tokens. +Tokens can contain references to other tokens. ``` { @@ -52,16 +54,16 @@ Os tokens podem conter referências a outros tokens. "type": "color", }, "primary": { - "value": "{colors.primary}", + "value": "{colors.red}", "type": "color", } } } ``` -### Tokens complexos +### Complex Tokens -Os tokens também podem ser mais complexos do que isso, tipografia, sombra ou tokens de composição consistem em muitos valores diferentes. +Tokens can also be more complex than that, typography, shadow or composition tokens consist of many different values. ``` { @@ -97,9 +99,9 @@ Os tokens também podem ser mais complexos do que isso, tipografia, sombra ou to } ``` -## Armazenamento de arquivo único (Single file storage) +## Single file storage -Se você estiver exportando seu JSON do Tokens Studio for Figma para um único arquivo, o primeiro nível desse JSON é um pouco especial, pois indica os conjuntos de tokens que você possui. Os nomes dos conjuntos de tokens nunca fazem parte do nome do token, no entanto, precisamos seguir essa estrutura porque estamos vinculados a um único arquivo. +If you're exporting your JSON from Tokens Studio for Figma to a single file, the first level of that JSON is a bit special as it's indicating the token sets that you have. Names of token sets are never part of the token name, however we required to follow that structure because we are bound to a single file. ``` { @@ -138,11 +140,11 @@ Se você estiver exportando seu JSON do Tokens Studio for Figma para um único a } ``` -No exemplo acima, você pode notar que as referências são do tipo `colors.black`, e não `global.colors.black`. Isso ocorre porque esse primeiro nível é o nome do conjunto e nunca faz parte do nome do token. Pense nos conjuntos de tokens como arquivos. +In the example above, you might notice that references are type `colors.black`, and not `global.colors.black`. This is because that first level is the set name, and that is never part of the token name. Think of token sets as files. -## Armazenamento de vários arquivos (Multiple files storage) (PRO) +## Multiple files storage -Se você estiver usando a sincronização de vários arquivos (um recurso Pro), seus arquivos de token não terão esse nome definido como seu primeiro nível. Isso o torna compatível com outras ferramentas, como o dicionário de estilos. +If you're using multi-file sync (a Pro feature), your token files will not have that set name as its first level. This makes it compatible with other tools such as style dictionary. `global.json` ``` @@ -188,9 +190,13 @@ Se você estiver usando a sincronização de vários arquivos (um recurso Pro), } ``` -## Valores de token permitidos +## Allowed token values + + + It is suggested against using `Value` or `Type` as parts of token naming as it will create conflict in the JSON. Both the aforementioned are by default a part of the JSON script. + -Dependendo do tipo de token, permitimos valores diferentes, este JSON a seguir está tentando visualizar isso: +Depending on the `Type` of a token, we allow different values. The following JSON is a simplified visualisation: ``` { @@ -216,11 +222,11 @@ Dependendo do tipo de token, permitimos valores diferentes, este JSON a seguir e }, set2: { group4: { - colortoken: { + colorToken: { value: string, type: "color" } } } } -``` \ No newline at end of file +``` diff --git a/pages/tokens/settings.mdx b/pages/tokens/settings.mdx new file mode 100644 index 0000000..fd8fe43 --- /dev/null +++ b/pages/tokens/settings.mdx @@ -0,0 +1,25 @@ +# Settings + +There are a couple of settings that you can configure to customize the plugin according to your preferences. You can find these settings in the `Settings` tab of the plugin. + +## Ignore first part of token name for Styles +This setting removes the initial part of token names when creating styles. As a result, a color token named `colors.blue.500` will be created into a style called `blue/500` instead of `colors/blue/500.` +Ignore first part of token name for styles - step 1 + + +## Prefix styles with active theme name (Pro) +If you have set up themes and want your styles to be organized under a folder with the theme name, you can enable this setting. By doing so, a token named `bg.default` will be created as `Light/bg/default` for the Light theme and `Dark/bg/default` for the Dark theme. +Prefix styles with active theme name - step 2 + +## Base font size +By default, we consider `1rem` as equivalent to `16px` when using rem units. However, there might be instances where you want this value to be platform or screen-specific. To facilitate this flexibility, we provide an option to modify the rem value. You can adjust the `Base font-size` setting to a different value, such as 24 for example. +Base font-size token - step 3 + +Additionally, you can make this value dynamic and have it defined differently between token sets. For example, you can create a token called `scales.fontsize` with a value of 16px in the fontsize type and reference it in the `Base font-size`. Then, you can have the same token defined in a different set with a value of 24px. +Referencing base font-size token - step 4 + +## Debugging feature +Tthe `debugging feature` eseentially allow us to receive a record of telemetry data for bug fixing and performance. This feature is unchecked by default and leaving it so will send no data to the team. By checking the feature, you will be provided with a `Session ID` that you need to save for later. Proceed to then carry out the steps that for instance caused the plugin to crash. An anonymized report is then sent to the team for analysis. You can then reach out to one of the team members at Token Studio and share the saved ID, who will then look into the plugin crash reports. +debugging feature - step 5 + + diff --git a/pages/tokens/token-types.mdx b/pages/tokens/token-types.mdx new file mode 100644 index 0000000..5e5d06a --- /dev/null +++ b/pages/tokens/token-types.mdx @@ -0,0 +1,72 @@ +# Token types + +Tokens Studio for Figma uses a `type` property on each token to decide how to deal with each token. Token types can be set on individual tokens, or on a token group level. You can define your own types, but the plugin won't be able to apply them correctly. + +### Types at a group level + +If you'd rather define types not on every individual token but on a higher level, you can do that as well. + +``` +{ + "colors": { + "type": "color", + "red": { + value: '#ff0000', + }, + "blue": { + value: '#0000ff', + }, + } +} +``` + +The plugin will treat any token as a color token then, except if there's a `type` property set on the token itself. + +### Color tokens + +Color tokens can be defined like this: + +``` +{ + "colors": { + "red": { + type: 'color', + value: '#ff0000', + }, + "blue": { + type: 'color', + value: '#0000ff', + }, + } +} +``` + +### Size tokens + +Size tokens can be defined like this: + +``` +{ + "sizing": { + "large": { + type: 'sizing', + value: '12px', + }, + } +} +``` + +### Space tokens + +Space tokens can be defined like this: + +``` +{ + "spacing": { + "large": { + type: 'spacing', + value: '1rem', + }, + } +} +``` diff --git a/pages/tokens/token-types.pt-br.mdx b/pages/tokens/token-types.pt-br.mdx deleted file mode 100644 index 47c8351..0000000 --- a/pages/tokens/token-types.pt-br.mdx +++ /dev/null @@ -1,72 +0,0 @@ -# Tipos de Tokens (types) - -Tokens Studio for Figma usa uma propriedade `type` em cada token para decidir como lidar com cada token. Os tipos de token podem ser definidos em tokens individuais ou em um nível de grupo de tokens. Você pode definir seus próprios tipos, mas o plugin não poderá aplicá-los corretamente. - -### Tipos em nível de grupo - -Se você preferir definir tipos não em cada token individual, mas em um nível mais alto, também poderá fazer isso. - -``` -{ - "colors": { - "type": "color", - "red": { - value: '#ff0000', - }, - "blue": { - value: '#0000ff', - }, - } -} -``` - -O plug-in tratará qualquer token como um token de cor, exceto se houver uma propriedade `type` definida no próprio token. - -### Tokens de cor - -Tokens de cor podem ser definidos assim: - -``` -{ - "colors": { - "red": { - type: 'color', - value: '#ff0000', - }, - "blue": { - type: 'color', - value: '#0000ff', - }, - } -} -``` - -### Fichas de tamanho - -Os tokens de tamanho podem ser definidos assim: - -``` -{ - "sizing": { - "large": { - type: 'sizing', - value: '12px', - }, - } -} -``` - -### Tokens de espaço - -Os tokens de espaço podem ser definidos assim: - -``` -{ - "spacing": { - "large": { - type: 'spacing', - value: '1rem', - }, - } -} -``` diff --git a/pages/tokens/using-math.mdx b/pages/tokens/using-math.mdx new file mode 100644 index 0000000..2790036 --- /dev/null +++ b/pages/tokens/using-math.mdx @@ -0,0 +1,14 @@ +# Using Math + +A lot of times it may make sense to build your tokens with a scale in mind, such as a type scale or a spacing scale. What that means, is that a value uses another value, but does calculations with it. + +For example, you may want your `spacing.sm` token reference the `spacing.xs` token, but multiply its value by 2. To do that, you can write the following as the token's value: `{spacing.xs} * 2` (note the space between token and value) + +You can also multiply with another token: `{spacing.xs} * {spacing.scale}` + +where `spacing.scale` would be a token who's value could be for example 2. + +Other use cases where this is helpful could be typography with font sizes referencing the previous token and multiply that with a type scale of e.g. 1.25. + +### Adding units +The plugin cannot calculate if one of your tokens had the unit included (e.g. `spacing.sm = 2rem`). In that case you can either decide to remove the unit or extract the operation to its own token, and then append the unit after that new alias token (e.g. `spacing.sm = {spacing.xs} * {spacing.scale}` and then `{spacing.sm}rem`). However, we recommend to use unit-less tokens and instead rely on transformers such as Style Dictionary to later add units to your tokens. The plugin itself will consider any unit-less token as px-based. diff --git a/pages/tokens/using-math.pt-br.md b/pages/tokens/using-math.pt-br.md deleted file mode 100644 index e715ac1..0000000 --- a/pages/tokens/using-math.pt-br.md +++ /dev/null @@ -1,16 +0,0 @@ -# Usando matemática - -Muitas vezes, pode fazer sentido construir seus tokens com uma escala em mente, como uma escala de tipografia ou uma escala de espaçamento. O que isso significa é que um valor usa outro valore e faz cálculos com ele. - -Por exemplo, você pode querer que seu token `spacing.sm` faça referência ao token `spacing.xs`, porém multiplique seu valor por 2. Para fazer isso, você pode escrever o seguinte como o valor do token: `$spacing.xs * 2` (observe o espaço entre o token e o valor). - -Você também pode multiplicar por outro token: `$spacing.xs * $spacing.scale`! - -Onde `spacing.scale` seria um token cujo valor poderia ser, por exemplo, 2. - -Outros casos de uso em que isso é útil podem ser tipografia com tamanhos de fonte referenciando o token anterior e multiplicar isso com uma escala de tipo de, por exemplo, 1,25. - -### Adding units -O plugin não pode calcular se um dos tokens tinha a unidade incluída (por exemplo, `spacing.sm = 2rem`). - -Nesse caso, você pode decidir remover a unidade ou anexá-la após a operação (por exemplo, `{spacing.xs} * {spacing.scale}rem`). \ No newline at end of file diff --git a/pages/transforming/_meta.en.json b/pages/transforming/_meta.js similarity index 70% rename from pages/transforming/_meta.en.json rename to pages/transforming/_meta.js index 9951e9c..169837e 100644 --- a/pages/transforming/_meta.en.json +++ b/pages/transforming/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "style-dictionary": "Style dictionary" - } +} \ No newline at end of file diff --git a/pages/transforming/style-dictionary.pt-br.mdx b/pages/transforming/style-dictionary.mdx similarity index 91% rename from pages/transforming/style-dictionary.pt-br.mdx rename to pages/transforming/style-dictionary.mdx index 2dca352..a30ac53 100644 --- a/pages/transforming/style-dictionary.pt-br.mdx +++ b/pages/transforming/style-dictionary.mdx @@ -20,10 +20,10 @@ Once Style Dictionary is installed, we can start transforming our design tokens. ## Configuration -We provide official transforms in the form of a package called [@tokens-studio/sd-transforms](https://www.npmjs.com/package/@tokens-studio/sd-transforms). You can customize these transforms or create your own to fit your needs. More information ca be found on npm. +We provide official transforms in the form of a package called [@tokens-studio/sd-transforms](https://www.npmjs.com/package/@tokens-studio/sd-transforms). You can customize these transforms or create your own to fit your needs. More information can be found on npm. ## Style Dictionary Configurator [Style Dictionary Configurator](https://configurator.tokens.studio/) is a web-based tool that allows you to transform your design tokens directly in your browser. It uses Style Dictionary under the hood and can be a convenient way to experiment with Style Dictionary without installing it on your computer. -If you have any feedback or questions, you can find the Style Dictionary team on Slack in #style-dictionary-configurator. \ No newline at end of file +If you have any feedback or questions, you can find the Style Dictionary team on Slack in #style-dictionary-configurator. diff --git a/pages/troubleshooting/_meta.en.json b/pages/troubleshooting/_meta.js similarity index 69% rename from pages/troubleshooting/_meta.en.json rename to pages/troubleshooting/_meta.js index deb8ab5..41c4557 100644 --- a/pages/troubleshooting/_meta.en.json +++ b/pages/troubleshooting/_meta.js @@ -1,3 +1,3 @@ -{ +export default { "reset-tokens": "Resetting tokens" } diff --git a/pages/troubleshooting/reset-tokens.en.mdx b/pages/troubleshooting/reset-tokens.mdx similarity index 86% rename from pages/troubleshooting/reset-tokens.en.mdx rename to pages/troubleshooting/reset-tokens.mdx index 9e298f3..0f47f97 100644 --- a/pages/troubleshooting/reset-tokens.en.mdx +++ b/pages/troubleshooting/reset-tokens.mdx @@ -1,7 +1,7 @@ # Reset your tokens If you run into any problems with your tokens and have problems opening the plugin, you can always reset your tokens. -import Callout from 'nextra-theme-docs/callout' +import { Callout } from 'nextra/components' If you have the tokens only on the local document, you will lose these tokens by resetting the tokens. If you have your tokens connected to an external syncing provider, you can pull the tokens again from the repository after resetting the tokens. @@ -9,7 +9,7 @@ If you have the tokens only on the local document, you will lose these tokens by ### 1. Open your console -Open your developer tools and go to the console: `Cmd + Option + i` (on a Mac) or `Ctrl +Shift + i` (on Windows) and then click on the `Console` tab. +Open your developer tools and go to the console: ` + Option + i` (on a Mac) or `Ctrl +Shift + i` (on Windows) and then click on the `Console` tab. ### 2. Get tokens JSON diff --git a/pages/variables/_meta.pt-br.json b/pages/variables/_meta.js similarity index 81% rename from pages/variables/_meta.pt-br.json rename to pages/variables/_meta.js index 282c9cb..0fe2a0c 100644 --- a/pages/variables/_meta.pt-br.json +++ b/pages/variables/_meta.js @@ -1,4 +1,4 @@ -{ +export default { "creating-variables": "Creating variables", "references": "References" } diff --git a/pages/variables/creating-variables.pt-br.mdx b/pages/variables/creating-variables.mdx similarity index 100% rename from pages/variables/creating-variables.pt-br.mdx rename to pages/variables/creating-variables.mdx diff --git a/pages/variables/references.pt-br.mdx b/pages/variables/references.mdx similarity index 100% rename from pages/variables/references.pt-br.mdx rename to pages/variables/references.mdx diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index 12a703d..0000000 --- a/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/public/obisdian-image.png b/public/obisdian-image.png new file mode 100644 index 0000000..c0e65b0 Binary files /dev/null and b/public/obisdian-image.png differ diff --git a/readme.md b/readme.md index b93250e..e89b218 100644 --- a/readme.md +++ b/readme.md @@ -5,3 +5,4 @@ This is the source code for the documentation of the open source plugin [Tokens Built with [Nextra](https://github.com/shuding/nextra) [![](https://www.datocms-assets.com/31049/1618983297-powered-by-vercel.svg)](https://vercel.com?utm_source=figma-tokens&utm_campaign=oss) + \ No newline at end of file diff --git a/styles.css b/styles.css index acd49d9..fc6da3e 100644 --- a/styles.css +++ b/styles.css @@ -14,4 +14,12 @@ html { .dark .nextra-container .nextra-sidebar ul .active-anchor { color: #ffffff !important; +} + +img { + margin-block: 2rem; +} + +pre { + padding: 1rem; } \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index 4cd681f..0000000 --- a/tailwind.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - content: [ - "./pages/**/*.{md,mdx}", - "./theme.config.js", - ] -}; diff --git a/theme.config.js b/theme.config.js deleted file mode 100644 index 8914d59..0000000 --- a/theme.config.js +++ /dev/null @@ -1,85 +0,0 @@ -import { useRouter } from "next/router"; - -const Slack = () => ( - - - - - - -); - -export default { - projectLink: 'https://github.com/tokens-studio/figma-plugin', - projectChatLink: 'https://tokens.studio/slack', - projectChatLinkIcon: , - docsRepositoryBase: 'https://github.com/tokens-studio/plugin-docs/blob/master', - titleSuffix: ' – Tokens Studio for Figma', - chat: false, - logo: ( - <> - Tokens Studio for Figma Logo - Tokens Studio for Figma - - Docs - - - ), - head: ({ title, meta }) => { - const { route } = useRouter(); - - const lastDot = route.lastIndexOf('.') - const path = route === '/index' ? '/' : route.slice(0, lastDot) - const ogImage = `https://img.websnap.app/?url=https://docs.tokens.studio${path}&token=D5rpX7VfD3dACoyb&viewport_width=1200&viewport_height=630`; - const ogTitle = title ? `${title} – Tokens Studio for Figma Docs` : 'Tokens Studio for Figma Docs'; - return ( - <> - - - - - - - - - - - - - - - - - - - - - - - ) - }, - i18n: [ - { locale: 'en', text: 'English' }, - { locale: 'pt-br', text: 'Português (Brasil)' } - ], - search: true, - prevLinks: true, - nextLinks: true, - floatTOC: false, - defaultMenuCollapsed: true, - footer: true, - footerEditOnGitHubLink: true, - footerText: ( -
-
© {new Date().getFullYear()} Jan Six
- - Powered by Vercel - - - Social share images by Websnap.app - -
- ) -} diff --git a/theme.config.tsx b/theme.config.tsx new file mode 100644 index 0000000..ba9ce7f --- /dev/null +++ b/theme.config.tsx @@ -0,0 +1,39 @@ +import React from 'react' +import { DocsThemeConfig } from 'nextra-theme-docs' + + +// This is the branch that the docs are on - this is used to link to the correct file in the GitHub repo +// This should be changed to main when we're ready to merge the docs - we could also use a PR branch +const editorBranch = 'feat/obsidian-powered-docs' + +const config: DocsThemeConfig = { + logo: Tokens Studio for Figma, + project: { + link: 'https://github.com/tokens-studio/figma-plugin', + }, + docsRepositoryBase: `https://github.com/tokens-studio/plugin-docs/tree/${editorBranch}`, + editLink: { + component: ({ children, className, filePath }) => React.createElement('a', { + className, + href: `${config.docsRepositoryBase}/${filePath.replace('pages/', 'obsidian_vault/')}`, + }, children), + }, + footer: { + content: 'Tokens Studio for Figma', + }, + feedback: { + content: 'Give us feedback!', + useLink: () => "https://feedback.tokens.studio" + }, + // Timestamps are kinda useless here - because they're generated at build time, not at edit time + gitTimestamp: false + // i18n: [ + // { locale: 'en', name: 'English' }, + // { locale: 'pt-br', name: 'Português' }, + // ] + + +} + +export default config + \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..f519d6c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "incremental": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "downlevelIteration": true, + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] + } + \ No newline at end of file diff --git a/untitled.js b/untitled.js new file mode 100644 index 0000000..a165a53 --- /dev/null +++ b/untitled.js @@ -0,0 +1,139 @@ +// src/next.config.ts +import path from "path"; +import withVideos from "next-videos"; +import nextra from "nextra"; +import remarkMdxDisableExplicitJsx from "remark-mdx-disable-explicit-jsx"; +import nextBundleAnalyzer from "@next/bundle-analyzer"; + +// src/underscore-redirects.ts +import { writeFile } from "fs/promises"; +import { join } from "path"; +var RunPromiseWebpackPlugin = class { + constructor(asyncHook) { + this.asyncHook = asyncHook; + } + apply(compiler) { + compiler.hooks.beforeCompile.tapPromise("RunPromiseWebpackPlugin", this.asyncHook); + } +}; +var isWarningPrinted = false; +function applyUnderscoreRedirects(config, meta) { + config.plugins.push( + new RunPromiseWebpackPlugin(async () => { + const outDir = meta.dir; + const outFile = join(outDir, "./public/_redirects"); + try { + const redirects = meta.config.redirects ? Array.isArray(meta.config.redirects) ? meta.config.redirects : await meta.config.redirects() : []; + if (redirects.length === 0) { + if (!isWarningPrinted) { + console.warn( + '[@theguild/components] No redirects defined, no "_redirect" file is created!' + ); + isWarningPrinted = true; + } + return; + } + const redirectsTxt = redirects.map((r) => `${r.source} ${r.destination} ${r.permanent ? 301 : 302}`).join("\n"); + await writeFile(outFile, redirectsTxt); + } catch (error) { + throw new Error( + `Failed to generate "_redirects" file during build: ${error.message}` + ); + } + }) + ); +} + +// src/next.config.ts +var defaultRemarkPlugins = [ + [ + // replace