
Product
Introducing Custom Tabs for Org Alerts
Create and share saved alert views with custom tabs on the org alerts page, making it easier for teams to return to consistent, named filter sets.
@urbit/foundation-design-system
Advanced tools
A system of design variables, Markdoc and React components intended for Urbit Foundation projects.
A system of design variables, Markdoc and React components intended for Urbit Foundation projects.
We build all our sites with Next.js and Tailwind and this package is designed for those scenarios. Please be advised you will need a Next.js installation to make use of these components.
npm i @urbit/foundation-design-system
Ensure all peer dependencies are present as well:
npm i @tailwindcss/aspect-ratio tailwindcss-theme-swapper autoprefixer postcss prismjs tailwindcss next
Our design variables are available by using the Tailwind config in your own installation as a preset, ensuring you style our components as well in the content section:
presets: [require("@urbit/foundation-design-system/tailwind")],
content: [
"./node_modules/@urbit/foundation-design-system/**/*.js",
"./pages/**/*.{js,ts,jsx,tsx}",
"./components/**/*.{js,ts,jsx,tsx}",
],
Likewise you can find our CSS styles by importing them at the top of your site build (i.e. _app.js):
import "@urbit/foundation-design-system/styles/globals.css";
import "@urbit/foundation-design-system/styles/markdown.css";
import "@urbit/foundation-design-system/styles/prism.css";
We use Markdoc to allow for embedding dynamic React components inside Markdown files. For a sample of our components and how to use them in your own Markdown, see here.
Our Markdown parser is a custom patched installation of Markdoc for additional features (basic footnote support, superscript, next/link injection, inline HTML injection).
Import the component:
import Markdown from '@urbit/foundation-design-system';
Then, on the server-side parse your content by passing it an object in the following shape:
{ post: { content: "## A markdown document"}}
If you've extracted the content directly with gray-matter reconstruct the object:
const markdown = JSON.stringify(Markdown.parse({ post: { content } }));
Otherwise this works fine if you're just using getPostBySlug a la urbit.org:
const markdown = JSON.stringify(Markdown.parse(post));
And on front-end pass it to the renderer:
<div className="markdown">
<Markdown.render content={JSON.parse(markdown)} />
</div>
Why are we doing JSON stringification and parsing? you ask. The wind answers, and you feel the breeze on the back of your neck.
FAQs
A system of design variables, Markdoc and React components intended for Urbit Foundation projects.
The npm package @urbit/foundation-design-system receives a total of 54 weekly downloads. As such, @urbit/foundation-design-system popularity was classified as not popular.
We found that @urbit/foundation-design-system demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 9 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Create and share saved alert views with custom tabs on the org alerts page, making it easier for teams to return to consistent, named filter sets.

Product
Socket’s Rust and Cargo support is now generally available, providing dependency analysis and supply chain visibility for Rust projects.

Security News
Chrome 144 introduces the Temporal API, a modern approach to date and time handling designed to fix long-standing issues with JavaScript’s Date object.