From 39a6587d186b377d93dd1467f635cb101be3d70a Mon Sep 17 00:00:00 2001 From: DrAv0011 Date: Mon, 21 Sep 2026 19:14:31 +0200 Subject: [PATCH] docs: update CLI setup and site accessibility --- .gitignore | 4 +- docs/cli/index.md | 103 +++++++++++++++------------ docs/filters/ci.md | 81 +++++++++++++++++---- docs/server/installation.md | 6 +- docs/ui/guides/render-pack.md | 2 +- docs/ui/installation.md | 10 +-- src/components/Home/home.module.css | 1 + src/components/PackageGrid/index.tsx | 3 +- src/components/PackageManager.tsx | 24 ++++++- src/components/ds/ds.module.css | 4 +- src/components/ds/index.tsx | 5 +- src/css/bedrock/colors.css | 16 +++++ src/css/bedrock/infima-bridge.css | 28 ++++++++ src/data/sections.ts | 9 +-- src/theme/MDXComponents.tsx | 3 +- 15 files changed, 222 insertions(+), 77 deletions(-) diff --git a/.gitignore b/.gitignore index 0dcc78c..5ef5d4a 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,6 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -TODO \ No newline at end of file +TODO + +/reviews \ No newline at end of file diff --git a/docs/cli/index.md b/docs/cli/index.md index c8dff38..452f2d5 100644 --- a/docs/cli/index.md +++ b/docs/cli/index.md @@ -14,6 +14,11 @@ description: "@bedrock-core/cli scaffolds a complete Minecraft Bedrock addon pro `@bedrock-core/cli` is in beta: the API can change between releases. Pin exact versions and read the changelog before upgrading. ::: +## Prerequisites + +- Node.js 22.18+ — [https://nodejs.org/](https://nodejs.org/) +- Regolith — [https://regolith-docs.readthedocs.io/en/stable](https://regolith-docs.readthedocs.io/en/stable) + ## Usage @@ -28,20 +33,25 @@ description: "@bedrock-core/cli scaffolds a complete Minecraft Bedrock addon pro | --- | --- | | `-a, --author ` | Author name. Skips the author prompt | | `-d, --description ` | Project description. Skips the description prompt | +| `-p, --package-manager ` | Install with `yarn`, `npm`, `pnpm`, or `none` to skip | | `-V, --version` | Print the CLI version | | `-h, --help` | Print usage | -No template switch and no package-manager choice — the template ships a `yarn.lock`. +There is one complete template. Choose npm, yarn, pnpm, or `none` when you want to install +later. Yarn and pnpm record their selected version in `package.json`; each manager creates its own lockfile, which should be committed with the project. ### Prompts -Three text prompts, all with defaults you can accept with Enter. `[project-name]` and `--author`/`--description` each skip their own prompt, so a fully-flagged invocation runs with no prompts at all: +Three text prompts and a package-manager selection, all with defaults you can accept with Enter. +`[project-name]`, `--author`, `--description`, and `--package-manager` each skip their own prompt, +so a fully flagged invocation runs with no prompts at all: | Prompt | Default | Validation | | --- | --- | --- | | `Project name:` | `my-addon` | Must be a valid new npm package name (this becomes the directory and `package.json` name) | | `Author name:` | `Your Name` | — | | `Description:` | `A Minecraft Bedrock addon with custom UI` | — | +| `Install dependencies with:` | `yarn (recommended)` | yarn, npm, pnpm, or install later | Ctrl-C prints `✖ Operation cancelled` and exits cleanly. The CLI refuses to write into a directory that already exists and is not empty. @@ -57,7 +67,7 @@ my-addon/ ├── tsconfig.test.json extends tsconfig.json; entry is scripts/gametest.ts ├── eslint.config.mjs ├── .vscode/ launch.json wired to the Minecraft debugger (port 19144) -├── core-ui-v*.mcpack render pack, downloaded for you +├── core-ui-.mcpack render pack, downloaded for you └── packs/ ├── BP/ │ ├── manifest.json @@ -125,14 +135,14 @@ after scaffolding. | Profile | Script | Export | Notes | | --- | --- | --- | --- | -| `build` | `yarn build` | read-only, `local` | Minified, `bundler.debug: false` — the release build | -| `default` | `yarn watch` | writable, `development` | Laid-out JSON, debug bundle, build-stamp HUD, redeploys on change | -| `test` | `yarn watch:test` | writable, `development` | Same as `default`, resolving `manifest.test.json` and bundling `gametest.ts` | -| `build-test` | `yarn build:test` | read-only, `./build/test/BP` and `./build/test/RP` | The gametest manifest and entry, for [`bds-runner`](/docs/bds-runner) | +| `build` | `build` | read-only, `local` | Minified, `bundler.debug: false` — the release build | +| `default` | `watch` | writable, `development` | Laid-out JSON, debug bundle, build-stamp HUD, redeploys on change | +| `test` | `watch:test` | writable, `development` | Same as `default`, resolving `manifest.test.json` and bundling `gametest.ts` | +| `build-test` | `build:test` | writable, `./build/test/BP` and `./build/test/RP` | The gametest manifest and entry, for [`bds-runner`](/docs/bds-runner) | ### GameTests -`packs/BP/scripts/tests/index.ts` registers one GameTest tagged `example` through `@minecraft/server-gametest`, a beta module only `manifest.test.json` declares. `gametest.ts` — the entry `tsconfig.test.json` names — imports `./main` then `./tests`, so a release build (`main.ts`) never pulls in the test suite or the beta module. `yarn build:test` produces the pack [`bds-runner`](/docs/bds-runner) runs the suite against. +`packs/BP/scripts/tests/index.ts` registers one GameTest tagged `example` through `@minecraft/server-gametest`, a beta module only `manifest.test.json` declares. `gametest.ts` — the entry `tsconfig.test.json` names — imports `./main` then `./tests`, so a release build (`main.ts`) never pulls in the test suite or the beta module. The `build:test` script produces the pack [`bds-runner`](/docs/bds-runner) runs the suite against. ### tsconfig @@ -152,7 +162,7 @@ after scaffolding. ``` :::caution Build once before the editor is happy -Both generated files are produced by the filters, so a freshly scaffolded project does not typecheck until `yarn build` has run at least once. This is expected — run the build before hunting for missing modules. +Both generated files are produced by the filters, so a freshly scaffolded project does not typecheck until the `build` script has run at least once. This is expected — run the build before hunting for missing modules. ::: A second tsconfig, `tsconfig.test.json`, extends this one and names `packs/BP/scripts/gametest.ts` as its sole entry — the `test` and `build-test` profiles point the bundler at it. See [GameTests](#gametests). @@ -198,52 +208,55 @@ A `playerSpawn` handler greets the player with an interpolated translation (gate ## After scaffolding -The CLI **does not** install anything. It copies the template, substitutes your answers, and downloads the latest render pack `.mcpack` from GitHub releases into the project root (non-fatal if that fails — it prints the download link instead). - -It then prints: - -```txt -✔ Project created successfully! - -Next steps: - - cd my-addon - yarn install (or npm install) - yarn run regolith-install (or npm run regolith-install) - yarn run build (or npm run build) - The first build writes the Minecraft document types, so the .ts templates in - packs/BP/blocks and packs/BP/entities autocomplete once it has run. - See packs/BP/scripts/UI/screens/ to explore the starter screens and navigation. - -Render pack: - - Install: open "./core-ui-v.mcpack" (double-click to import into Minecraft) - -Development: - - yarn run watch - Watch mode for auto-rebuild - yarn run lint - Lint your code - -Push a stone button in-game to see the example UI! -``` - -When the render pack download fails, the last line under "Render pack:" is replaced with a link to the latest `.mcpack` on GitHub Releases instead of a filename — non-fatal, so scaffolding still finishes. +The CLI copies the template, substitutes your answers, downloads the render pack matching UI +`0.12.1` (`core-ui-0.12.1.mcpack`), then installs dependencies with the package manager you chose. +If the asset download fails, it prints the matching release link instead. Choosing `none` creates +the files without running a package manager. + +It prints the commands for your selected manager: + + + +The output also explains that the first build writes the generated Minecraft types, points to the +starter screens, and tells you how to import the matching render pack into the client. + +When the render pack download fails, the last line under "Render pack:" is replaced with a link to +the UI `0.12.1` release instead of a filename — non-fatal, so scaffolding still finishes. | Script | What it runs | | --- | --- | | `regolith-install` | `regolith install-all` — fetches every filter declared in `config.json` | | `build` | `regolith run build` — the read-only local export profile | -| `build:test` | `regolith run build-test` — the read-only gametest export, for `bds-runner` | +| `build:test` | `regolith run build-test` — the writable gametest export, for `bds-runner` | | `watch` | `regolith watch` — the development profile, redeploying on change | | `watch:test` | `regolith watch test` — the development profile, resolving the gametest manifest and entry | | `lint` | `eslint .` | | `loopback` / `loopback:preview` | Windows loopback exemption for the Minecraft debugger | -No git repository is created and no package manager is detected — the template ships a `yarn.lock`, so `yarn install` is the smoothest path. - -:::tip Prerequisites -Node.js 22.18+ (what the Regolith filters run on), a package manager, and [Regolith](https://regolith-docs.readthedocs.io/en/stable) on your `PATH`. See [Installation](/docs/ui/installation). -::: +When Git is available, the generated directory is initialized as a repository without creating a +commit. Yarn and pnpm choices run `corepack enable` once, then invoke the selected manager without +a `corepack` prefix. npm runs +directly. The selected manager creates its own lockfile; commit it and use that manager's frozen/immutable install mode in CI. If Corepack +cannot write its shims, the generated project is preserved and the CLI prints the manual command. +Yarn uses `nodeLinker: node-modules`; pnpm uses `nodeLinker: hoisted` in +`pnpm-workspace.yaml`, so the build sees the conventional `node_modules` layout with either +manager. ## Next steps diff --git a/docs/filters/ci.md b/docs/filters/ci.md index 4dcdd8b..f00f80f 100644 --- a/docs/filters/ci.md +++ b/docs/filters/ci.md @@ -18,23 +18,80 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 24 + - name: Set up Regolith - uses: bedrock-core/setup-regolith@v1 + uses: bedrock-core/setup-regolith@1.0.1 with: - regolith-version: '1.6.1' + regolith-version: '1.8.0' resolvers: | github.com/bedrock-core/regolith-filters +``` + +Add the steps from your package manager after `Set up Regolith`: + + + +Commit the lockfile generated by the CLI before this workflow runs. npm CI expects +`package-lock.json`, Yarn's immutable install expects `yarn.lock`, and pnpm's frozen install expects +`pnpm-lock.yaml`. After the step completes, `regolith` is on `PATH` for every later step in the same job. The action -only registers resolvers: `regolith install-all` installs the filters in the project's -`filterDefinitions`. A `core` profile must declare `core` and its six delegated stages. +only registers resolvers: the project's `regolith-install` script installs the filters declared in +`filterDefinitions`. The template's `core` profile declares `core` and its six delegated stages. ## Inputs @@ -49,7 +106,7 @@ The binary for the runner's OS comes from the Regolith GitHub releases and is ke Pair it with [`bds-runner`](/docs/bds-runner) to run the addon's GameTests on a dedicated server in the same job: -```yaml - - name: Run GameTests - run: npx @bedrock-core/bds-runner run --packs ./build --tag my-suite -``` + + +Only the behavior pack is passed to the dedicated server. Render packs are client-side and are not +needed for GameTests. diff --git a/docs/server/installation.md b/docs/server/installation.md index cf465fc..a17c7f1 100644 --- a/docs/server/installation.md +++ b/docs/server/installation.md @@ -9,8 +9,8 @@ Get a bedrock-core addon online, then get a second one talking to it. ## Prerequisites -- Node.js 20+ and Yarn (or npm) — https://nodejs.org/ -- Regolith (recommended) — https://regolith-docs.readthedocs.io/en/stable +- Node.js 22.18+ and Git — [https://nodejs.org/](https://nodejs.org/) +- Regolith — [https://regolith-docs.readthedocs.io/en/stable](https://regolith-docs.readthedocs.io/en/stable) ## Quick start with the CLI @@ -33,7 +33,7 @@ That single dependency pins matching versions of the packages the runtime is bui ```ts import { core } from '@bedrock-core/server'; // the runtime import { computed } from '@bedrock-core/server/observable'; // the reactive primitive -import { createEngineDb } from '@bedrock-core/server/db'; // documents beyond core.db, rarely needed +import { schema } from '@bedrock-core/server/db'; // collection schema helpers import { createSync } from '@bedrock-core/server/sync'; // the raw transport, rarely needed import { createI18n } from '@bedrock-core/server/i18n'; // typed translations ``` diff --git a/docs/ui/guides/render-pack.md b/docs/ui/guides/render-pack.md index 678e7bd..606d420 100644 --- a/docs/ui/guides/render-pack.md +++ b/docs/ui/guides/render-pack.md @@ -15,7 +15,7 @@ The protocol version is a hard gate, not a negotiation. A behavior pack emitting ## Getting the matching pack -The render pack ships as the `core-ui-v*.mcpack` attached to each `@bedrock-core/ui` release, and the [CLI](/docs/cli) downloads the latest one into new projects automatically. **Take the pack from the same release as the library** — that pairing is the compatibility contract. +The render pack ships as `core-ui-.mcpack`, attached to the matching `@bedrock-core/ui` release. For example, UI `0.12.1` uses `core-ui-0.12.1.mcpack`. The [CLI](/docs/cli) downloads that matching asset into new projects. **Take the pack from the same release as the library** — that pairing is the compatibility contract. Its UUID never changes — `761ecd37-ad1c-4a64-862a-d6cc38767426` — so the dependency entry in your behavior pack's `manifest.json` stays as it is: diff --git a/docs/ui/installation.md b/docs/ui/installation.md index cf34293..6095366 100644 --- a/docs/ui/installation.md +++ b/docs/ui/installation.md @@ -8,8 +8,8 @@ Three things have to be in place: the package, the render pack in the world, and ## Prerequisites -- Node.js 22.18.0+ and Yarn or npm — https://nodejs.org -- Regolith — https://regolith-docs.readthedocs.io/en/stable +- Node.js 22.18+ and Git — [https://nodejs.org/](https://nodejs.org/) +- Regolith — [https://regolith-docs.readthedocs.io/en/stable](https://regolith-docs.readthedocs.io/en/stable) Regolith is not optional here. A screen is drawn from JSON UI the build writes, so a project with no build has no screens. @@ -61,7 +61,7 @@ The render pack decodes what the build wrote, so it must come from the **same re "dependencies": [ { "uuid": "761ecd37-ad1c-4a64-862a-d6cc38767426", - "version": [1, 11, 0] + "version": "1.12.0" } ] } @@ -119,7 +119,9 @@ export default function Hello(): JSX.Element { } ``` - +```bash +regolith run +``` The filter logs one line per screen it compiled. If `render()` throws `UncompiledScreenError` instead, the build did not see the file or `@bedrock-core/generated/ui` was never imported. diff --git a/src/components/Home/home.module.css b/src/components/Home/home.module.css index 2e9a989..7a641f6 100644 --- a/src/components/Home/home.module.css +++ b/src/components/Home/home.module.css @@ -105,6 +105,7 @@ .stepNo { font-family: var(--font-mono); color: var(--text-faint); } .stepOn { color: var(--text-strong); } .stepOn .stepNo { color: var(--accent-solid); } +[data-theme='light'] .stepOn .stepNo { color: var(--text-accent); } @media (max-width: 996px) { .tour { grid-template-columns: 1fr; gap: var(--space-6); } .hero { padding: var(--space-12) var(--space-5) var(--space-10); } diff --git a/src/components/PackageGrid/index.tsx b/src/components/PackageGrid/index.tsx index a285297..9fe575a 100644 --- a/src/components/PackageGrid/index.tsx +++ b/src/components/PackageGrid/index.tsx @@ -18,7 +18,7 @@ export default function PackageGrid(): ReactNode {
{categories.map((category) => (
-

+

{category.label}

{sectionsOf(category.id).map((section) => ( @@ -28,6 +28,7 @@ export default function PackageGrid(): ReactNode { description={section.description} icon={section.icon} accent={`var(${category.accent})`} + accentText={`var(${category.text})`} status={section.status} href={`/docs/${section.id}`} /> diff --git a/src/components/PackageManager.tsx b/src/components/PackageManager.tsx index 3f46aea..22ca68c 100644 --- a/src/components/PackageManager.tsx +++ b/src/components/PackageManager.tsx @@ -35,12 +35,18 @@ function execLine(manager: Manager, cmd: string): string { } } -function ManagerTabs({ line }: { line: (manager: Manager) => string }): ReactNode { +function ManagerTabs({ + line, + language = 'bash', +}: { + line: (manager: Manager) => string; + language?: string; +}): ReactNode { return ( {managers.map((manager) => ( - {line(manager.id)} + {line(manager.id)} ))} @@ -68,3 +74,17 @@ export interface ExecProps { export function Exec({ cmd }: ExecProps): ReactNode { return execLine(manager, cmd)} />; } + +export interface PackageCommandsProps { + npm: string; + yarn: string; + pnpm: string; + language?: string; +} + +/** Copyable command or configuration variants synchronized with the other package-manager tabs. */ +export function PackageCommands({ npm, yarn, pnpm, language = 'bash' }: PackageCommandsProps): ReactNode { + const commands = { npm, yarn, pnpm }; + + return commands[manager]} />; +} diff --git a/src/components/ds/ds.module.css b/src/components/ds/ds.module.css index 4e246ea..8a4870e 100644 --- a/src/components/ds/ds.module.css +++ b/src/components/ds/ds.module.css @@ -19,7 +19,7 @@ .accent { color: var(--accent-solid); border-color: var(--accent-soft-border); background: var(--accent-soft); } .info { color: var(--status-info); border-color: var(--status-info-soft); background: var(--status-info-soft); } .success { color: var(--status-success); border-color: var(--status-success-soft); background: var(--status-success-soft); } -.warning { color: var(--status-warning); border-color: var(--status-warning-soft); background: var(--status-warning-soft); } +.warning { color: var(--status-warning-text); border-color: var(--status-warning-soft); background: var(--status-warning-soft); } .danger { color: var(--status-danger); border-color: var(--status-danger-soft); background: var(--status-danger-soft); } /* Tag */ @@ -95,7 +95,7 @@ .scope { color: var(--text-faint); } .spacer { flex: 1; } .desc { margin: 0; color: var(--text-muted); font-size: var(--text-body-sm); line-height: var(--leading-relaxed); } -.cta { display: inline-flex; align-items: center; gap: 6px; color: var(--card-accent); font-size: var(--text-body-sm); font-weight: var(--weight-semibold); } +.cta { display: inline-flex; align-items: center; gap: 6px; color: var(--card-accent-text, var(--card-accent)); font-size: var(--text-body-sm); font-weight: var(--weight-semibold); } .arrow { display: inline-flex; transition: transform var(--duration-fast) var(--ease-standard); } /* Button */ diff --git a/src/components/ds/index.tsx b/src/components/ds/index.tsx index 8330d6c..2a811d8 100644 --- a/src/components/ds/index.tsx +++ b/src/components/ds/index.tsx @@ -52,6 +52,8 @@ export interface PackageCardProps { icon?: string; /** Any CSS colour; carries the 2px top rule, the glyph and the call to action. */ accent?: string; + /** Text-safe accent for readable labels; decorative accents keep `accent`. */ + accentText?: string; /** Short release-state label, e.g. `beta`. `planned` dims the card and disables it. */ status?: string; href?: string; @@ -62,6 +64,7 @@ export function PackageCard({ description, icon = 'package', accent = 'var(--cat-framework)', + accentText, status, href = '#', }: PackageCardProps): ReactNode { @@ -71,7 +74,7 @@ export function PackageCard({ diff --git a/src/css/bedrock/colors.css b/src/css/bedrock/colors.css index cc1fd5c..816fe89 100644 --- a/src/css/bedrock/colors.css +++ b/src/css/bedrock/colors.css @@ -64,6 +64,14 @@ --cat-tooling:var(--ore-amethyst-500); --cat-toolchain:var(--ore-redstone-500); + /* Text-safe category aliases. Decorative category accents stay saturated; + these aliases may darken in light mode when they carry readable text. */ + --cat-framework-text:var(--ore-emerald-400); + --cat-ui-text:var(--ore-gold-400); + --cat-data-text:var(--ore-lapis-400); + --cat-tooling-text:var(--ore-amethyst-400); + --cat-toolchain-text:var(--ore-redstone-400); + /* package aliases — resolve to their category */ --pkg-server:var(--cat-framework); --pkg-sync:var(--cat-framework); @@ -120,6 +128,7 @@ --status-success:var(--ore-emerald-400); --status-success-soft:rgba(79,209,137,.13); --status-warning:var(--ore-gold-400); + --status-warning-text:var(--status-warning); --status-warning-soft:rgba(255,193,83,.13); --status-danger:var(--ore-redstone-400); --status-danger-soft:rgba(239,111,116,.13); @@ -139,6 +148,12 @@ --bg-active:rgba(17,17,19,.08); --bg-selected:rgba(44,149,153,.12); + --cat-framework-text:var(--ore-emerald-700); + --cat-ui-text:var(--ore-gold-700); + --cat-data-text:var(--ore-lapis-600); + --cat-tooling-text:var(--ore-amethyst-600); + --cat-toolchain-text:var(--ore-redstone-600); + --text-strong:var(--stone-950); --text-body:var(--stone-700); --text-muted:var(--stone-500); @@ -170,6 +185,7 @@ --status-success:var(--ore-emerald-700); --status-success-soft:rgba(30,154,83,.1); --status-warning:var(--ore-gold-700); + --status-warning-text:#7a4b08; --status-warning-soft:rgba(242,168,59,.13); --status-danger:var(--ore-redstone-600); --status-danger-soft:rgba(224,72,79,.09); diff --git a/src/css/bedrock/infima-bridge.css b/src/css/bedrock/infima-bridge.css index 3380fd8..8775750 100644 --- a/src/css/bedrock/infima-bridge.css +++ b/src/css/bedrock/infima-bridge.css @@ -124,6 +124,10 @@ --docusaurus-highlighted-code-line-bg: rgba(60, 185, 190, 0.16); } +[data-theme='light'] { + --ifm-tabs-color-active: var(--text-accent); +} + /* ---- the handful of rules Infima variables cannot express ---- */ /* headings sit tighter than Infima's default */ @@ -197,6 +201,30 @@ h1, h2, h3, h4, .markdown h1, .markdown h2 { color: var(--ifm-alert-border-color); } +/* Warning headings and inline code use a darker light-mode ink than the + decorative gold rule and panel tint. */ +[data-theme='light'] .theme-admonition-caution [class*='admonitionHeading'], +[data-theme='light'] .theme-admonition-caution .alert__heading, +[data-theme='light'] .theme-admonition-caution [class*='admonitionHeading'] code, +[data-theme='light'] .theme-admonition-caution .alert__heading code { + color: var(--status-warning-text); +} + +[data-theme='light'] kbd { + color: var(--text-body); + background: var(--bg-sunken); + border-color: var(--border-default); +} + +/* Prose links remain visibly identifiable when their hue is close to body + text. Navigation and card links sit outside `.markdown` and keep their + compact, decoration-free treatment. */ +.markdown a { + text-decoration-line: underline; + text-decoration-thickness: 0.08em; + text-underline-offset: 0.14em; +} + /* code blocks: dark in both themes, hairline border, no shadow */ .theme-code-block { box-shadow: none !important; diff --git a/src/data/sections.ts b/src/data/sections.ts index b03e06a..33605e0 100644 --- a/src/data/sections.ts +++ b/src/data/sections.ts @@ -15,6 +15,7 @@ export interface Category { label: string; /** CSS custom property carrying the category colour, e.g. `--cat-framework`. */ accent: string; + text: string; } export interface Section { @@ -35,10 +36,10 @@ export interface Section { } export const categories: Category[] = [ - { id: 'framework', label: 'Framework', accent: '--cat-framework' }, - { id: 'ui', label: 'UI', accent: '--cat-ui' }, - { id: 'content', label: 'Content', accent: '--cat-data' }, - { id: 'tooling', label: 'Tooling', accent: '--cat-tooling' }, + { id: 'framework', label: 'Framework', accent: '--cat-framework', text: '--cat-framework-text' }, + { id: 'ui', label: 'UI', accent: '--cat-ui', text: '--cat-ui-text' }, + { id: 'content', label: 'Content', accent: '--cat-data', text: '--cat-data-text' }, + { id: 'tooling', label: 'Tooling', accent: '--cat-tooling', text: '--cat-tooling-text' }, ]; const GH = 'https://github.com/bedrock-core'; diff --git a/src/theme/MDXComponents.tsx b/src/theme/MDXComponents.tsx index 1cc02a9..b62fb1f 100644 --- a/src/theme/MDXComponents.tsx +++ b/src/theme/MDXComponents.tsx @@ -1,5 +1,5 @@ import MDXComponents from '@theme-original/MDXComponents'; -import { Exec, Install } from '../components/PackageManager'; +import { Exec, Install, PackageCommands } from '../components/PackageManager'; import { Badge, Icon, Kbd, PackageCard, Req, Tag } from '../components/ds'; // Components every docs page can use without importing them. @@ -7,6 +7,7 @@ export default { ...MDXComponents, Install, Exec, + PackageCommands, Badge, Tag, Kbd,