mirror of
https://github.com/urbit/developers.urbit.org.git
synced 2024-10-05 17:57:51 +03:00
build: bump fds to 0.4.1, migrate to fds imports
- RenderTree component - /lib.js now in fds
This commit is contained in:
parent
000f42a8be
commit
316f1db756
@ -1,6 +1,9 @@
|
||||
import { BackgroundImage } from "@urbit/foundation-design-system";
|
||||
import {
|
||||
BackgroundImage,
|
||||
generateDisplayDate,
|
||||
formatDate,
|
||||
} from "@urbit/foundation-design-system";
|
||||
import Link from "next/link";
|
||||
import { generateDisplayDate, formatDate } from "../lib/lib";
|
||||
|
||||
export default function BlogPreview({ post }) {
|
||||
const date = generateDisplayDate(post.date);
|
||||
|
@ -3,8 +3,7 @@ import { useRouter } from "next/router";
|
||||
import { useState } from "react";
|
||||
import classnames from "classnames";
|
||||
import MenuTray from "../components/MenuTray";
|
||||
import { capitalize } from "../lib/lib";
|
||||
import { IntraNav } from "@urbit/foundation-design-system";
|
||||
import { IntraNav, capitalize } from "@urbit/foundation-design-system";
|
||||
|
||||
function ActiveLink({ children, href, className, currentPath }) {
|
||||
const firstCrumb = currentPath.split("/")[1];
|
||||
|
@ -1,5 +1,4 @@
|
||||
import Link from "next/link";
|
||||
import { formatDate } from "../lib/lib";
|
||||
|
||||
export default function Pagination(props) {
|
||||
return (
|
||||
|
@ -1,6 +1,9 @@
|
||||
import Link from "next/link";
|
||||
import { BackgroundImage } from "@urbit/foundation-design-system";
|
||||
import { formatDate, generateDisplayDate } from "../lib/lib";
|
||||
import {
|
||||
BackgroundImage,
|
||||
formatDate,
|
||||
generateDisplayDate,
|
||||
} from "@urbit/foundation-design-system";
|
||||
|
||||
export default function PostPreview(props) {
|
||||
const section = props?.section ? props.section : "blog";
|
||||
|
@ -1,11 +1,9 @@
|
||||
import { Component, createRef } from "react";
|
||||
// import { glossary } from "../lib/glossary";
|
||||
import { Component } from "react";
|
||||
import { withRouter } from "next/router";
|
||||
import debounce from "lodash.debounce";
|
||||
import Downshift from "downshift";
|
||||
import ob from "urbit-ob";
|
||||
import Sigil from "./Sigil";
|
||||
// import levenSort from "leven-sort";
|
||||
|
||||
class Search extends Component {
|
||||
constructor(props) {
|
||||
|
@ -1,5 +1,9 @@
|
||||
import Link from "next/link";
|
||||
import { formatDate, formatTime, formatTimeZone } from "../lib/lib";
|
||||
import {
|
||||
formatDate,
|
||||
formatTime,
|
||||
formatTimeZone,
|
||||
} from "@urbit/foundation-design-system";
|
||||
|
||||
export function Name({ children, className }) {
|
||||
return <b className={`font-normal ${className || ""}`}>{children}</b>;
|
||||
|
146
lib/lib.js
146
lib/lib.js
@ -1,146 +0,0 @@
|
||||
import fs from "fs";
|
||||
import { join, parse } from "path";
|
||||
import matter from "gray-matter";
|
||||
import toml from "@iarna/toml";
|
||||
import { DateTime } from "luxon";
|
||||
|
||||
const options = {
|
||||
engines: {
|
||||
toml: toml.parse.bind(toml),
|
||||
},
|
||||
language: "toml",
|
||||
delimiters: "+++",
|
||||
};
|
||||
|
||||
export function capitalize(str) {
|
||||
return str.charAt(0).toUpperCase() + str.slice(1);
|
||||
}
|
||||
|
||||
const directories = (dir) => {
|
||||
switch (dir) {
|
||||
case "/":
|
||||
return join(process.cwd(), "content");
|
||||
default:
|
||||
return join(process.cwd(), `content/${dir}`);
|
||||
}
|
||||
};
|
||||
|
||||
export function formatDate(dateTimeObject) {
|
||||
return dateTimeObject.toLocaleString(DateTime.DATE_FULL);
|
||||
}
|
||||
|
||||
export function formatTime(dateTimeObject) {
|
||||
const dt = dateTimeObject.toLocaleString(DateTime.TIME_SIMPLE);
|
||||
return dt.replace(/:00/g, "");
|
||||
}
|
||||
|
||||
export function formatTimeZone(dateTimeObject) {
|
||||
return dateTimeObject.offsetNameShort;
|
||||
}
|
||||
|
||||
export function generateDisplayDate(iso8601, zone = "America/Los_Angeles") {
|
||||
return DateTime.fromISO(iso8601, { zone });
|
||||
}
|
||||
|
||||
// Takes an ISO 8601 date string
|
||||
// Returns a time relative to user's current timezone
|
||||
export function generateRealtimeDate(iso8601) {
|
||||
return DateTime.fromISO(iso8601).setZone("system");
|
||||
}
|
||||
|
||||
export function getPostSlugs(key) {
|
||||
const dir = fs.existsSync(directories(key))
|
||||
? fs.readdirSync(directories(key), { withFileTypes: true })
|
||||
: [];
|
||||
return dir
|
||||
.filter((f) => f.isFile() && f.name !== "_index.md")
|
||||
.map((f) => f.name);
|
||||
}
|
||||
|
||||
export function getPostBySlug(slug, fields = [], key) {
|
||||
const realSlug = slug.replace(/\.md$/, "");
|
||||
const fullPath = join(directories(key), `${realSlug}.md`);
|
||||
const fileContents = fs.readFileSync(fullPath, "utf8");
|
||||
const { data, content } = matter(fileContents, options);
|
||||
const items = {};
|
||||
|
||||
// Ensure only the minimal needed data is exposed
|
||||
fields.forEach((field) => {
|
||||
if (field === "slug") {
|
||||
items[field] = realSlug;
|
||||
}
|
||||
|
||||
if (field === "content") {
|
||||
items[field] = content;
|
||||
}
|
||||
|
||||
if (data[field]) {
|
||||
items[field] = data[field];
|
||||
}
|
||||
});
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
export function getAllPosts(fields = [], key, sort = "") {
|
||||
const slugs = getPostSlugs(key);
|
||||
const posts = slugs
|
||||
.map((slug) => getPostBySlug(slug, fields, key))
|
||||
// sort posts by date in descending order
|
||||
.sort((post1, post2) => {
|
||||
if (sort === "date") {
|
||||
return DateTime.fromISO(post1.date) > DateTime.fromISO(post2.date)
|
||||
? -1
|
||||
: 1;
|
||||
} else if (sort === "weight") {
|
||||
return post1.weight > post2.weight ? -1 : 1;
|
||||
}
|
||||
});
|
||||
return posts;
|
||||
}
|
||||
|
||||
export function getNextPost(slug, fields = [], key, sort = "date") {
|
||||
let resultPost = null;
|
||||
|
||||
getAllPosts(fields, key, sort).forEach((post, index, array) => {
|
||||
if (post.slug === slug) {
|
||||
if (typeof array[index - 1] !== "undefined") {
|
||||
resultPost = array[index - 1];
|
||||
}
|
||||
}
|
||||
});
|
||||
return resultPost;
|
||||
}
|
||||
|
||||
export function getPreviousPost(slug, fields = [], key, sort = "date") {
|
||||
let resultPost = null;
|
||||
|
||||
getAllPosts(fields, key, sort).forEach((post, index, array) => {
|
||||
if (post.slug === slug) {
|
||||
if (typeof array[index + 1] !== "undefined") {
|
||||
resultPost = array[index + 1];
|
||||
}
|
||||
}
|
||||
});
|
||||
return resultPost;
|
||||
}
|
||||
|
||||
export const getPage = (path) => {
|
||||
try {
|
||||
let fileContents = fs.readFileSync(`${path}.md`, "utf8");
|
||||
if (fileContents) {
|
||||
const { data, content } = matter(fileContents, options);
|
||||
return { data, content };
|
||||
}
|
||||
} catch {
|
||||
try {
|
||||
let fileContents = fs.readFileSync(`${path}/_index.md`, "utf8");
|
||||
if (fileContents) {
|
||||
const { data, content } = matter(fileContents, options);
|
||||
return { data, content };
|
||||
}
|
||||
} catch {
|
||||
console.error("no md file for slug");
|
||||
}
|
||||
}
|
||||
};
|
372
package-lock.json
generated
372
package-lock.json
generated
@ -11,7 +11,7 @@
|
||||
"@iarna/toml": "^2.2.5",
|
||||
"@tailwindcss/aspect-ratio": "^0.4.0",
|
||||
"@tlon/sigil-js": "^1.4.5",
|
||||
"@urbit/foundation-design-system": "^0.2.3",
|
||||
"@urbit/foundation-design-system": "^0.4.1",
|
||||
"@urbit/markdoc": "^0.1.6",
|
||||
"axios": "^0.26.1",
|
||||
"buffer": "^6.0.3",
|
||||
@ -45,6 +45,40 @@
|
||||
"tailwindcss": "^3.0.24"
|
||||
}
|
||||
},
|
||||
"../foundation-design-system": {
|
||||
"name": "@urbit/foundation-design-system",
|
||||
"version": "0.4.1",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@iarna/toml": "^2.2.5",
|
||||
"core-js": "^3.23.1",
|
||||
"gray-matter": "^4.0.3",
|
||||
"html-react-parser": "^1.4.14",
|
||||
"luxon": "^3.0.1",
|
||||
"prism-react-renderer": "^1.3.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/preset-react": "^7.17.12",
|
||||
"@rollup/plugin-babel": "^5.3.1",
|
||||
"@rollup/plugin-commonjs": "^22.0.0",
|
||||
"@rollup/plugin-node-resolve": "^13.3.0",
|
||||
"rollup": "^2.75.7",
|
||||
"rollup-plugin-peer-deps-external": "^2.2.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tailwindcss/aspect-ratio": "^0.4.0",
|
||||
"@urbit/markdoc": "^0.1.6",
|
||||
"autoprefixer": "^10.4.7",
|
||||
"classnames": "^2.3.1",
|
||||
"next": "^12.1.6",
|
||||
"postcss": "^8.4.14",
|
||||
"prismjs": "^1.28.0",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"tailwindcss": "^3.1.3",
|
||||
"tailwindcss-theme-swapper": "^0.6.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/runtime": {
|
||||
"version": "7.18.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz",
|
||||
@ -329,27 +363,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@urbit/foundation-design-system": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@urbit/foundation-design-system/-/foundation-design-system-0.2.3.tgz",
|
||||
"integrity": "sha512-Iqwa5Z4LZHtI1rAcHQz/O6nod1HUPmQ6kO1etDFi64mcsebsmsCruHDLFrLUTXiI9bj+XinOsO/M4ErcUbG8zA==",
|
||||
"dependencies": {
|
||||
"core-js": "^3.23.1",
|
||||
"html-react-parser": "^1.4.14",
|
||||
"prism-react-renderer": "^1.3.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tailwindcss/aspect-ratio": "^0.4.0",
|
||||
"@urbit/markdoc": "^0.1.6",
|
||||
"autoprefixer": "^10.4.7",
|
||||
"classnames": "^2.3.1",
|
||||
"next": "^12.1.6",
|
||||
"postcss": "^8.4.14",
|
||||
"prismjs": "^1.28.0",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"tailwindcss": "^3.1.3",
|
||||
"tailwindcss-theme-swapper": "^0.6.2"
|
||||
}
|
||||
"resolved": "../foundation-design-system",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/@urbit/markdoc": {
|
||||
"version": "0.1.6",
|
||||
@ -459,6 +474,7 @@
|
||||
"version": "10.4.8",
|
||||
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz",
|
||||
"integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@ -558,6 +574,7 @@
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz",
|
||||
"integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@ -730,16 +747,6 @@
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/core-js": {
|
||||
"version": "3.24.1",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.24.1.tgz",
|
||||
"integrity": "sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg==",
|
||||
"hasInstallScript": true,
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/core-js"
|
||||
}
|
||||
},
|
||||
"node_modules/cross-spawn": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||
@ -827,65 +834,6 @@
|
||||
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
|
||||
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
|
||||
},
|
||||
"node_modules/dom-serializer": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
|
||||
"integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
|
||||
"dependencies": {
|
||||
"domelementtype": "^2.0.1",
|
||||
"domhandler": "^4.2.0",
|
||||
"entities": "^2.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/dom-serializer/node_modules/entities": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
|
||||
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
|
||||
"funding": {
|
||||
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/domelementtype": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
|
||||
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/fb55"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/domhandler": {
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
|
||||
"integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
|
||||
"dependencies": {
|
||||
"domelementtype": "^2.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/fb55/domhandler?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/domutils": {
|
||||
"version": "2.8.0",
|
||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
|
||||
"integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
|
||||
"dependencies": {
|
||||
"dom-serializer": "^1.0.1",
|
||||
"domelementtype": "^2.2.0",
|
||||
"domhandler": "^4.2.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/fb55/domutils?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/downshift": {
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz",
|
||||
@ -904,7 +852,8 @@
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.211",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz",
|
||||
"integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A=="
|
||||
"integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/end-of-stream": {
|
||||
"version": "1.4.4",
|
||||
@ -915,21 +864,11 @@
|
||||
"once": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/entities": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
|
||||
"integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
|
||||
"engines": {
|
||||
"node": ">=0.12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||
}
|
||||
},
|
||||
"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"
|
||||
}
|
||||
@ -1077,6 +1016,7 @@
|
||||
"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": "*"
|
||||
},
|
||||
@ -1203,47 +1143,6 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/html-dom-parser": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-1.2.0.tgz",
|
||||
"integrity": "sha512-2HIpFMvvffsXHFUFjso0M9LqM+1Lm22BF+Df2ba+7QHJXjk63pWChEnI6YG27eaWqUdfnh5/Vy+OXrNTtepRsg==",
|
||||
"dependencies": {
|
||||
"domhandler": "4.3.1",
|
||||
"htmlparser2": "7.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/html-react-parser": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-1.4.14.tgz",
|
||||
"integrity": "sha512-pxhNWGie8Y+DGDpSh8cTa0k3g8PsDcwlfolA+XxYo1AGDeB6e2rdlyv4ptU9bOTiZ2i3fID+6kyqs86MN0FYZQ==",
|
||||
"dependencies": {
|
||||
"domhandler": "4.3.1",
|
||||
"html-dom-parser": "1.2.0",
|
||||
"react-property": "2.0.0",
|
||||
"style-to-js": "1.1.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "0.14 || 15 || 16 || 17 || 18"
|
||||
}
|
||||
},
|
||||
"node_modules/htmlparser2": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
|
||||
"integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
|
||||
"funding": [
|
||||
"https://github.com/fb55/htmlparser2?sponsor=1",
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/fb55"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"domelementtype": "^2.0.1",
|
||||
"domhandler": "^4.2.2",
|
||||
"domutils": "^2.8.0",
|
||||
"entities": "^3.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/human-signals": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
|
||||
@ -1286,11 +1185,6 @@
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"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/invariant": {
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
|
||||
@ -1651,7 +1545,8 @@
|
||||
"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=="
|
||||
"integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/normalize-path": {
|
||||
"version": "3.0.0",
|
||||
@ -1665,6 +1560,7 @@
|
||||
"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"
|
||||
}
|
||||
@ -1979,14 +1875,6 @@
|
||||
"prettier": ">=2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prism-react-renderer": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz",
|
||||
"integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==",
|
||||
"peerDependencies": {
|
||||
"react": ">=0.14.9"
|
||||
}
|
||||
},
|
||||
"node_modules/prismjs": {
|
||||
"version": "1.28.0",
|
||||
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz",
|
||||
@ -2099,11 +1987,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
||||
},
|
||||
"node_modules/react-property": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz",
|
||||
"integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw=="
|
||||
},
|
||||
"node_modules/react-swipeable": {
|
||||
"version": "6.2.2",
|
||||
"resolved": "https://registry.npmjs.org/react-swipeable/-/react-swipeable-6.2.2.tgz",
|
||||
@ -2339,22 +2222,6 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/style-to-js": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.1.tgz",
|
||||
"integrity": "sha512-RJ18Z9t2B02sYhZtfWKQq5uplVctgvjTfLWT7+Eb1zjUjIrWzX5SdlkwLGQozrqarTmEzJJ/YmdNJCUNI47elg==",
|
||||
"dependencies": {
|
||||
"style-to-object": "0.3.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.2",
|
||||
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.2.tgz",
|
||||
@ -2493,6 +2360,7 @@
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz",
|
||||
"integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@ -2754,13 +2622,20 @@
|
||||
"dev": true
|
||||
},
|
||||
"@urbit/foundation-design-system": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@urbit/foundation-design-system/-/foundation-design-system-0.2.3.tgz",
|
||||
"integrity": "sha512-Iqwa5Z4LZHtI1rAcHQz/O6nod1HUPmQ6kO1etDFi64mcsebsmsCruHDLFrLUTXiI9bj+XinOsO/M4ErcUbG8zA==",
|
||||
"version": "file:../foundation-design-system",
|
||||
"requires": {
|
||||
"@babel/preset-react": "^7.17.12",
|
||||
"@iarna/toml": "^2.2.5",
|
||||
"@rollup/plugin-babel": "^5.3.1",
|
||||
"@rollup/plugin-commonjs": "^22.0.0",
|
||||
"@rollup/plugin-node-resolve": "^13.3.0",
|
||||
"core-js": "^3.23.1",
|
||||
"gray-matter": "^4.0.3",
|
||||
"html-react-parser": "^1.4.14",
|
||||
"prism-react-renderer": "^1.3.3"
|
||||
"luxon": "^3.0.1",
|
||||
"prism-react-renderer": "^1.3.3",
|
||||
"rollup": "^2.75.7",
|
||||
"rollup-plugin-peer-deps-external": "^2.2.4"
|
||||
}
|
||||
},
|
||||
"@urbit/markdoc": {
|
||||
@ -2841,6 +2716,7 @@
|
||||
"version": "10.4.8",
|
||||
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz",
|
||||
"integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"browserslist": "^4.21.3",
|
||||
"caniuse-lite": "^1.0.30001373",
|
||||
@ -2901,6 +2777,7 @@
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz",
|
||||
"integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"caniuse-lite": "^1.0.30001370",
|
||||
"electron-to-chromium": "^1.4.202",
|
||||
@ -3009,11 +2886,6 @@
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||
"dev": true
|
||||
},
|
||||
"core-js": {
|
||||
"version": "3.24.1",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.24.1.tgz",
|
||||
"integrity": "sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg=="
|
||||
},
|
||||
"cross-spawn": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||
@ -3079,46 +2951,6 @@
|
||||
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
|
||||
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
|
||||
},
|
||||
"dom-serializer": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
|
||||
"integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
|
||||
"requires": {
|
||||
"domelementtype": "^2.0.1",
|
||||
"domhandler": "^4.2.0",
|
||||
"entities": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"entities": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
|
||||
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"domelementtype": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
|
||||
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="
|
||||
},
|
||||
"domhandler": {
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
|
||||
"integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
|
||||
"requires": {
|
||||
"domelementtype": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"domutils": {
|
||||
"version": "2.8.0",
|
||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
|
||||
"integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
|
||||
"requires": {
|
||||
"dom-serializer": "^1.0.1",
|
||||
"domelementtype": "^2.2.0",
|
||||
"domhandler": "^4.2.0"
|
||||
}
|
||||
},
|
||||
"downshift": {
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz",
|
||||
@ -3134,7 +2966,8 @@
|
||||
"electron-to-chromium": {
|
||||
"version": "1.4.211",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz",
|
||||
"integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A=="
|
||||
"integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==",
|
||||
"dev": true
|
||||
},
|
||||
"end-of-stream": {
|
||||
"version": "1.4.4",
|
||||
@ -3145,15 +2978,11 @@
|
||||
"once": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"entities": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
|
||||
"integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q=="
|
||||
},
|
||||
"escalade": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
|
||||
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
|
||||
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
|
||||
"dev": true
|
||||
},
|
||||
"esprima": {
|
||||
"version": "4.0.1",
|
||||
@ -3254,7 +3083,8 @@
|
||||
"fraction.js": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
|
||||
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA=="
|
||||
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
|
||||
"dev": true
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "2.3.2",
|
||||
@ -3339,37 +3169,6 @@
|
||||
"resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
|
||||
"integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ=="
|
||||
},
|
||||
"html-dom-parser": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-1.2.0.tgz",
|
||||
"integrity": "sha512-2HIpFMvvffsXHFUFjso0M9LqM+1Lm22BF+Df2ba+7QHJXjk63pWChEnI6YG27eaWqUdfnh5/Vy+OXrNTtepRsg==",
|
||||
"requires": {
|
||||
"domhandler": "4.3.1",
|
||||
"htmlparser2": "7.2.0"
|
||||
}
|
||||
},
|
||||
"html-react-parser": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-1.4.14.tgz",
|
||||
"integrity": "sha512-pxhNWGie8Y+DGDpSh8cTa0k3g8PsDcwlfolA+XxYo1AGDeB6e2rdlyv4ptU9bOTiZ2i3fID+6kyqs86MN0FYZQ==",
|
||||
"requires": {
|
||||
"domhandler": "4.3.1",
|
||||
"html-dom-parser": "1.2.0",
|
||||
"react-property": "2.0.0",
|
||||
"style-to-js": "1.1.1"
|
||||
}
|
||||
},
|
||||
"htmlparser2": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
|
||||
"integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
|
||||
"requires": {
|
||||
"domelementtype": "^2.0.1",
|
||||
"domhandler": "^4.2.2",
|
||||
"domutils": "^2.8.0",
|
||||
"entities": "^3.0.1"
|
||||
}
|
||||
},
|
||||
"human-signals": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
|
||||
@ -3392,11 +3191,6 @@
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"invariant": {
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
|
||||
@ -3656,7 +3450,8 @@
|
||||
"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=="
|
||||
"integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
|
||||
"dev": true
|
||||
},
|
||||
"normalize-path": {
|
||||
"version": "3.0.0",
|
||||
@ -3666,7 +3461,8 @@
|
||||
"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=="
|
||||
"integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
|
||||
"dev": true
|
||||
},
|
||||
"npm-run-path": {
|
||||
"version": "4.0.1",
|
||||
@ -3854,12 +3650,6 @@
|
||||
"multimatch": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"prism-react-renderer": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz",
|
||||
"integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==",
|
||||
"requires": {}
|
||||
},
|
||||
"prismjs": {
|
||||
"version": "1.28.0",
|
||||
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz",
|
||||
@ -3939,11 +3729,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
||||
},
|
||||
"react-property": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz",
|
||||
"integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw=="
|
||||
},
|
||||
"react-swipeable": {
|
||||
"version": "6.2.2",
|
||||
"resolved": "https://registry.npmjs.org/react-swipeable/-/react-swipeable-6.2.2.tgz",
|
||||
@ -4110,22 +3895,6 @@
|
||||
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
|
||||
"dev": true
|
||||
},
|
||||
"style-to-js": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.1.tgz",
|
||||
"integrity": "sha512-RJ18Z9t2B02sYhZtfWKQq5uplVctgvjTfLWT7+Eb1zjUjIrWzX5SdlkwLGQozrqarTmEzJJ/YmdNJCUNI47elg==",
|
||||
"requires": {
|
||||
"style-to-object": "0.3.0"
|
||||
}
|
||||
},
|
||||
"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.2",
|
||||
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.2.tgz",
|
||||
@ -4226,6 +3995,7 @@
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz",
|
||||
"integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"escalade": "^3.1.1",
|
||||
"picocolors": "^1.0.0"
|
||||
|
@ -17,7 +17,7 @@
|
||||
"@iarna/toml": "^2.2.5",
|
||||
"@tailwindcss/aspect-ratio": "^0.4.0",
|
||||
"@tlon/sigil-js": "^1.4.5",
|
||||
"@urbit/foundation-design-system": "^0.2.3",
|
||||
"@urbit/foundation-design-system": "^0.4.1",
|
||||
"@urbit/markdoc": "^0.1.6",
|
||||
"axios": "^0.26.1",
|
||||
"buffer": "^6.0.3",
|
||||
|
@ -7,7 +7,7 @@ import {
|
||||
SingleColumn,
|
||||
Section,
|
||||
} from "@urbit/foundation-design-system";
|
||||
import { getAllPosts } from "../lib/lib";
|
||||
import { getAllPosts } from "@urbit/foundation-design-system";
|
||||
import Footer from "../components/Footer";
|
||||
|
||||
export default function Blog({ posts, search }) {
|
||||
|
@ -1,11 +1,3 @@
|
||||
import {
|
||||
getPostBySlug,
|
||||
getAllPosts,
|
||||
getNextPost,
|
||||
getPreviousPost,
|
||||
formatDate,
|
||||
generateDisplayDate,
|
||||
} from "../../lib/lib";
|
||||
import { useRouter } from "next/router";
|
||||
import Head from "next/head";
|
||||
import Link from "next/link";
|
||||
@ -20,6 +12,12 @@ import {
|
||||
SingleColumn,
|
||||
Section,
|
||||
TwoUp,
|
||||
getPostBySlug,
|
||||
getAllPosts,
|
||||
getNextPost,
|
||||
getPreviousPost,
|
||||
formatDate,
|
||||
generateDisplayDate,
|
||||
} from "@urbit/foundation-design-system";
|
||||
|
||||
export default function BlogPost({
|
||||
|
@ -6,13 +6,13 @@ import {
|
||||
SingleColumn,
|
||||
Section,
|
||||
TwoUp,
|
||||
getAllPosts,
|
||||
} from "@urbit/foundation-design-system";
|
||||
import Sigil from "../../components/Sigil";
|
||||
import Card from "../../components/Card";
|
||||
import Meta from "../../components/Meta";
|
||||
import Header from "../../components/Header";
|
||||
import Footer from "../../components/Footer";
|
||||
import { getAllPosts } from "../../lib/lib";
|
||||
export default function Directory({ search, directory }) {
|
||||
const post = {
|
||||
title: "Directory",
|
||||
|
@ -1,6 +1,5 @@
|
||||
import { getPostBySlug } from "../../lib/lib";
|
||||
import BasicPage from "../../components/BasicPage";
|
||||
import { Markdown } from "@urbit/foundation-design-system";
|
||||
import { Markdown, getPostBySlug } from "@urbit/foundation-design-system";
|
||||
|
||||
export default function Post({ post, markdown, search, index }) {
|
||||
return (
|
||||
|
@ -1,6 +1,5 @@
|
||||
import { getPostBySlug } from "../../lib/lib";
|
||||
import BasicPage from "../../components/BasicPage";
|
||||
import { Markdown } from "@urbit/foundation-design-system";
|
||||
import { Markdown, getPostBySlug } from "@urbit/foundation-design-system";
|
||||
|
||||
export default function Post({ post, markdown, search, index }) {
|
||||
return (
|
||||
|
@ -1,12 +1,12 @@
|
||||
import Head from "next/head";
|
||||
import Meta from "../components/Meta";
|
||||
import { getAllPosts } from "../lib/lib";
|
||||
import {
|
||||
Container,
|
||||
Markdown,
|
||||
SingleColumn,
|
||||
Section,
|
||||
TwoUp,
|
||||
getAllPosts,
|
||||
} from "@urbit/foundation-design-system";
|
||||
import Header from "../components/Header";
|
||||
import Footer from "../components/Footer";
|
||||
|
@ -1,8 +1,5 @@
|
||||
import Head from "next/head";
|
||||
import Link from "next/link";
|
||||
import { useRouter } from "next/router";
|
||||
import { useState } from "react";
|
||||
import classnames from "classnames";
|
||||
import Meta from "../../components/Meta";
|
||||
import Header from "../../components/Header";
|
||||
import Footer from "../../components/Footer";
|
||||
@ -18,17 +15,14 @@ import {
|
||||
SingleColumn,
|
||||
TwoUp,
|
||||
Markdown,
|
||||
RenderTree,
|
||||
getPage,
|
||||
getPreviousPost,
|
||||
getNextPost,
|
||||
} from "@urbit/foundation-design-system";
|
||||
import {
|
||||
Comms,
|
||||
Ringsig,
|
||||
Squad,
|
||||
MintFiller,
|
||||
guideDefault,
|
||||
} from "../../components/icons";
|
||||
import { Comms, Ringsig, Squad } from "../../components/icons";
|
||||
import guidesTree from "../../cache/guides.json";
|
||||
import { join } from "path";
|
||||
import { getPage, getPreviousPost, getNextPost } from "../../lib/lib";
|
||||
|
||||
export default function GuidePage({
|
||||
search,
|
||||
@ -50,7 +44,7 @@ export default function GuidePage({
|
||||
</Head>
|
||||
<div className="flex h-screen min-h-screen w-screen sidebar">
|
||||
<Sidebar search={search}>
|
||||
{childPages("/guides", posts.children)}
|
||||
<RenderTree root="/guides" posts={posts.children} />
|
||||
</Sidebar>
|
||||
<ContentArea
|
||||
breadcrumbs={breadcrumbs(posts, params.slug?.slice(0, -1) || "")}
|
||||
@ -115,108 +109,6 @@ const breadcrumbs = (posts, paths) => {
|
||||
return results;
|
||||
};
|
||||
|
||||
const childPages = (thisLink, children, level = 0) => (
|
||||
<ul className="pl-0">
|
||||
{Object.entries(children).map(([childSlug, child]) => (
|
||||
<li>{pageTree(join(thisLink, childSlug), child, level)}</li>
|
||||
))}
|
||||
</ul>
|
||||
);
|
||||
|
||||
const pageTree = (thisLink, tree, level = 0) => {
|
||||
const router = useRouter();
|
||||
const firstCrumb = "/" + router.asPath.split("/").slice(1).join("/");
|
||||
|
||||
const includesThisPage = firstCrumb.includes(thisLink);
|
||||
const isThisPage = router.asPath === thisLink;
|
||||
const [isOpen, toggleTree] = useState(includesThisPage);
|
||||
|
||||
const activeClasses = classnames({
|
||||
hidden: !isOpen,
|
||||
});
|
||||
|
||||
const headingItemClasses = classnames({
|
||||
"pl-0 text-base font-semibold hover:text-green-400 leading-relaxed":
|
||||
level === 0,
|
||||
"pl-4 text-base font-semibold hover:text-green-400": level === 1,
|
||||
"pl-8 text-base hover:text-green-400": level === 2,
|
||||
"dot text-green-400": isThisPage,
|
||||
"text-wall-600": !isThisPage,
|
||||
});
|
||||
|
||||
const pageItemClasses = classnames({
|
||||
"pl-4 text-base hover:text-green-400": level === 0,
|
||||
"pl-8 text-base hover:text-green-400": level === 1,
|
||||
"pl-12 text-base hover:text-green-400": level === 2,
|
||||
});
|
||||
|
||||
if (tree?.type === "tab") {
|
||||
return (
|
||||
<>
|
||||
<p className="text-xs uppercase font-semibold text-wall-400 mt-4">
|
||||
{tree.title}
|
||||
</p>
|
||||
{tree.pages.map(({ title, slug }) => {
|
||||
const href = join(thisLink, slug);
|
||||
const isSelected = router.asPath === href;
|
||||
const selectedClasses = classnames({
|
||||
dot: isSelected,
|
||||
"text-green-400": isSelected,
|
||||
"text-wall-600": !isSelected,
|
||||
});
|
||||
return (
|
||||
<li className="ml-0">
|
||||
<Link href={href} passHref>
|
||||
<a
|
||||
className={`relative font-semibold inline-block ${selectedClasses} `}
|
||||
>
|
||||
{title}
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
);
|
||||
})}
|
||||
{childPages(thisLink, tree.children, level)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<span onClick={() => toggleTree(!isOpen)}>
|
||||
<p className={`${headingItemClasses} relative cursor-pointer`}>
|
||||
{tree.title}
|
||||
</p>
|
||||
</span>
|
||||
<div className={activeClasses}>
|
||||
<ul className={""}>
|
||||
{tree.pages.map(({ title, slug }) => {
|
||||
const href = join(thisLink, slug);
|
||||
const isSelected = router.asPath === href;
|
||||
const selectedClasses = classnames({
|
||||
dot: isSelected,
|
||||
"text-green-400": isSelected,
|
||||
"text-wall-600": !isSelected,
|
||||
});
|
||||
return (
|
||||
<li>
|
||||
<Link href={href} passHref>
|
||||
<a
|
||||
className={`relative inline-block ${selectedClasses} ${pageItemClasses} `}
|
||||
>
|
||||
{title}
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
);
|
||||
})}
|
||||
</ul>
|
||||
{childPages(thisLink, tree.children, level + 1)}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
function Landing({ search }) {
|
||||
const post = {
|
||||
title: "Guides",
|
||||
|
@ -3,12 +3,14 @@ import Header from "../components/Header";
|
||||
import Footer from "../components/Footer";
|
||||
import IndexCard from "../components/IndexCard";
|
||||
import NewsletterSignup from "../components/NewsletterSignup";
|
||||
|
||||
import {
|
||||
Container,
|
||||
SingleColumn,
|
||||
Section,
|
||||
TwoUp,
|
||||
formatDate,
|
||||
generateDisplayDate,
|
||||
getAllPosts,
|
||||
} from "@urbit/foundation-design-system";
|
||||
import Link from "next/link";
|
||||
import {
|
||||
@ -24,8 +26,6 @@ import {
|
||||
} from "../components/icons";
|
||||
import Card from "../components/Card";
|
||||
import TallCard from "../components/TallCard";
|
||||
import { getAllPosts } from "../lib/lib";
|
||||
import { formatDate, generateDisplayDate } from "../lib/lib";
|
||||
|
||||
export default function Home({ search, posts }) {
|
||||
return (
|
||||
|
@ -9,25 +9,19 @@ import {
|
||||
Section,
|
||||
SingleColumn,
|
||||
TwoUp,
|
||||
getPage,
|
||||
getPreviousPost,
|
||||
getNextPost,
|
||||
} from "@urbit/foundation-design-system";
|
||||
import Header from "../../components/Header";
|
||||
import Footer from "../../components/Footer";
|
||||
import Card from "../../components/Card";
|
||||
import Sidebar from "../../components/Sidebar";
|
||||
import ContentArea from "../../components/ContentArea";
|
||||
import Pagination from "../../components/Pagination";
|
||||
import {
|
||||
Arvo,
|
||||
Hoon,
|
||||
Nock,
|
||||
Vere,
|
||||
Azimuth,
|
||||
Cryptography,
|
||||
Dojo,
|
||||
} from "../../components/icons";
|
||||
import Footer from "../../components/Footer";
|
||||
import { Arvo, Hoon, Nock, Vere, Azimuth, Dojo } from "../../components/icons";
|
||||
import overviewTree from "../../cache/overview.json";
|
||||
import { join } from "path";
|
||||
import { getPage, getPreviousPost, getNextPost } from "../../lib/lib";
|
||||
|
||||
export default function Overview({
|
||||
posts,
|
||||
|
@ -1,8 +1,5 @@
|
||||
import Head from "next/head";
|
||||
import Link from "next/link";
|
||||
import { useRouter } from "next/router";
|
||||
import { useState, useEffect } from "react";
|
||||
import classnames from "classnames";
|
||||
import Meta from "../../components/Meta";
|
||||
import ContentArea from "../../components/ContentArea";
|
||||
import Sidebar from "../../components/Sidebar";
|
||||
@ -11,7 +8,12 @@ import BasicPage from "../../components/BasicPage";
|
||||
import { Markdown } from "@urbit/foundation-design-system";
|
||||
import referenceTree from "../../cache/reference.json";
|
||||
import { join } from "path";
|
||||
import { getPage, getPreviousPost, getNextPost } from "../../lib/lib";
|
||||
import {
|
||||
RenderTree,
|
||||
getPage,
|
||||
getPreviousPost,
|
||||
getNextPost,
|
||||
} from "@urbit/foundation-design-system";
|
||||
|
||||
export default function GuidePage({
|
||||
search,
|
||||
@ -40,7 +42,7 @@ export default function GuidePage({
|
||||
</Head>
|
||||
<div className="flex h-screen min-h-screen w-screen sidebar">
|
||||
<Sidebar search={search}>
|
||||
<SidebarContent root="/reference" posts={posts.children} />
|
||||
<RenderTree root="/reference" posts={posts.children} />
|
||||
</Sidebar>
|
||||
<ContentArea
|
||||
breadcrumbs={breadcrumbs(posts, params.slug?.slice(0, -1) || "")}
|
||||
@ -105,126 +107,6 @@ const breadcrumbs = (posts, paths) => {
|
||||
return results;
|
||||
};
|
||||
|
||||
const SidebarContent = ({ root, posts }) => {
|
||||
const router = useRouter();
|
||||
|
||||
const childPages = (thisLink, children, level = 0) => (
|
||||
<ul className="pl-0">
|
||||
{Object.entries(children).map(([childSlug, child]) => (
|
||||
<li>{pageTree(join(thisLink, childSlug), child, level)}</li>
|
||||
))}
|
||||
</ul>
|
||||
);
|
||||
|
||||
const pageTree = (thisLink, tree, level = 0) => {
|
||||
const firstCrumb =
|
||||
"/" + router.asPath.split("/").slice(1).join("/").split("#")[0];
|
||||
const includesThisPage = firstCrumb.includes(thisLink);
|
||||
const isThisPage = router.asPath === thisLink;
|
||||
const [isOpen, toggleTree] = useState(includesThisPage);
|
||||
useEffect(() => {
|
||||
const handleRouteChange = () => {
|
||||
const firstCrumb =
|
||||
"/" + router.asPath.split("/").slice(1).join("/").split("#")[0];
|
||||
const includesThisPage = firstCrumb.includes(thisLink);
|
||||
console.log(firstCrumb);
|
||||
toggleTree(includesThisPage);
|
||||
};
|
||||
|
||||
router.events.on("routeChangeComplete", handleRouteChange);
|
||||
return () => {
|
||||
router.events.off("routeChangeStart", handleRouteChange);
|
||||
};
|
||||
}, [router.asPath]);
|
||||
const activeClasses = classnames({
|
||||
hidden: !isOpen,
|
||||
});
|
||||
|
||||
const headingItemClasses = classnames({
|
||||
"pl-0 text-base font-semibold hover:text-green-400 leading-relaxed":
|
||||
level === 0,
|
||||
"pl-4 text-base font-semibold hover:text-green-400": level === 1,
|
||||
"pl-8 text-base hover:text-green-400": level === 2,
|
||||
"dot text-green-400": isThisPage,
|
||||
"text-wall-600": !isThisPage,
|
||||
});
|
||||
|
||||
const pageItemClasses = classnames({
|
||||
"pl-4 text-base hover:text-green-400": level === 0,
|
||||
"pl-8 text-base hover:text-green-400": level === 1,
|
||||
"pl-12 text-base hover:text-green-400": level === 2,
|
||||
});
|
||||
|
||||
if (tree?.type === "tab") {
|
||||
return (
|
||||
<>
|
||||
<p className="text-xs uppercase font-semibold text-wall-400 mt-4">
|
||||
{tree.title}
|
||||
</p>
|
||||
{childPages(thisLink, tree.children, level)}
|
||||
{tree.pages.map(({ title, slug }) => {
|
||||
const href = join(thisLink, slug);
|
||||
const isSelected = router.asPath === href;
|
||||
const selectedClasses = classnames({
|
||||
dot: isSelected,
|
||||
"text-green-400": isSelected,
|
||||
"text-wall-600": !isSelected,
|
||||
});
|
||||
return (
|
||||
<li className="ml-0">
|
||||
<Link href={href} passHref>
|
||||
<a
|
||||
className={`relative font-semibold inline-block ${selectedClasses} `}
|
||||
>
|
||||
{title}
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
);
|
||||
})}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<span onClick={() => toggleTree(!isOpen)}>
|
||||
<p className={`${headingItemClasses} relative cursor-pointer`}>
|
||||
{tree.title}
|
||||
</p>
|
||||
</span>
|
||||
<div className={activeClasses}>
|
||||
<ul className={""}>
|
||||
{tree.pages.map(({ title, slug }) => {
|
||||
const href = join(thisLink, slug);
|
||||
const isSelected = router.asPath === href;
|
||||
const selectedClasses = classnames({
|
||||
dot: isSelected,
|
||||
"text-green-400": isSelected,
|
||||
"text-wall-600": !isSelected,
|
||||
});
|
||||
return (
|
||||
<li>
|
||||
<Link href={href} passHref>
|
||||
<a
|
||||
className={`relative inline-block ${selectedClasses} ${pageItemClasses} `}
|
||||
>
|
||||
{title}
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
);
|
||||
})}
|
||||
</ul>
|
||||
{childPages(thisLink, tree.children, level + 1)}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
return childPages(root, posts);
|
||||
};
|
||||
|
||||
export async function getStaticProps({ params }) {
|
||||
let posts = referenceTree;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user