diff --git a/.github/workflows/publish-main-docs.yml b/.github/workflows/publish-main-docs.yml
new file mode 100644
index 0000000000..15617feedc
--- /dev/null
+++ b/.github/workflows/publish-main-docs.yml
@@ -0,0 +1,19 @@
+name: Publish main branch docs to GitHub Pages
+
+on:
+ push:
+ branches:
+ - main
+
+jobs:
+ publish-to-gh-pages:
+ name: Publish docs to `staging` directory of `gh-pages` branch
+ permissions:
+ contents: write
+ uses: ./.github/workflows/publish-github-pages.yml
+ with:
+ build_script: yarn workspace @metamask/snaps-sdk build:docs
+ destination_dir: docs/staging
+ publish_dir: ./packages/snaps-sdk/docs
+ secrets:
+ PUBLISH_PAGES_TOKEN: ${{ secrets.PUBLISH_PAGES_TOKEN }}
diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml
index ecae76c2fb..93c638a223 100644
--- a/.github/workflows/publish-release.yml
+++ b/.github/workflows/publish-release.yml
@@ -122,6 +122,47 @@ jobs:
npm-token: ${{ secrets.NPM_TOKEN }}
npm-tag: ${{ needs.get-release-tag.outputs.tag }}
+ get-sdk-release-version:
+ needs: npm-publish
+ runs-on: ubuntu-latest
+ outputs:
+ RELEASE_VERSION: ${{ steps.get-release-version.outputs.RELEASE_VERSION }}
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ ref: ${{ github.sha }}
+ - id: get-release-version
+ shell: bash
+ run: |
+ RELEASE_VERSION="$(jq --raw-output '.version' packages/snaps-sdk/package.json)"
+ echo "RELEASE_VERSION=$RELEASE_VERSION" >> "$GITHUB_OUTPUT"
+
+ publish-release-to-gh-pages:
+ name: Publish docs to `docs/${{ needs.get-release-version.outputs.RELEASE_VERSION }}` directory of `gh-pages` branch
+ needs: get-sdk-release-version
+ permissions:
+ contents: write
+ uses: ./.github/workflows/publish-github-pages.yml
+ with:
+ build_script: yarn workspace @metamask/snaps-sdk build:docs
+ destination_dir: docs/${{ needs.get-sdk-release-version.outputs.RELEASE_VERSION }}
+ publish_dir: ./packages/snaps-sdk/docs
+ secrets:
+ PUBLISH_PAGES_TOKEN: ${{ secrets.PUBLISH_PAGES_TOKEN }}
+
+ publish-release-to-latest-gh-pages:
+ name: Publish docs to `latest` directory of `gh-pages` branch
+ needs: publish-release-to-gh-pages
+ permissions:
+ contents: write
+ uses: ./.github/workflows/publish-github-pages.yml
+ with:
+ build_script: yarn workspace @metamask/snaps-sdk build:docs
+ destination_dir: docs/latest
+ publish_dir: ./packages/snaps-sdk/docs
+ secrets:
+ PUBLISH_PAGES_TOKEN: ${{ secrets.PUBLISH_PAGES_TOKEN }}
+
is-environment-release:
name: Determine whether this release updates the iframe execution environment
runs-on: ubuntu-latest
diff --git a/eslint.config.mjs b/eslint.config.mjs
index 9589c3cefd..f6aea46a61 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -78,7 +78,15 @@ const config = createConfig([
'jsdoc/check-tag-names': [
'error',
{
- definedTags: ['property'],
+ definedTags: [
+ 'property',
+
+ // Typedoc tags
+ 'category',
+ 'primaryExport',
+ 'showCategories',
+ 'showGroups',
+ ],
},
],
diff --git a/packages/snaps-execution-environments/lavamoat/build-system/policy.json b/packages/snaps-execution-environments/lavamoat/build-system/policy.json
index dfdc4aa31a..6ea7ee8144 100644
--- a/packages/snaps-execution-environments/lavamoat/build-system/policy.json
+++ b/packages/snaps-execution-environments/lavamoat/build-system/policy.json
@@ -433,7 +433,7 @@
"html-webpack-plugin>pretty-error>renderkid>css-select>domutils>dom-serializer": {
"packages": {
"html-webpack-plugin>pretty-error>renderkid>htmlparser2>domelementtype": true,
- "html-webpack-plugin>pretty-error>renderkid>htmlparser2>entities": true
+ "html-webpack-plugin>pretty-error>renderkid>css-select>domutils>dom-serializer>entities": true
}
},
"html-webpack-plugin>pretty-error>renderkid>css-select>domhandler": {
diff --git a/packages/snaps-sdk/.depcheckrc.json b/packages/snaps-sdk/.depcheckrc.json
index c437c59cd2..5709342492 100644
--- a/packages/snaps-sdk/.depcheckrc.json
+++ b/packages/snaps-sdk/.depcheckrc.json
@@ -13,6 +13,7 @@
"prettier-plugin-packagejson",
"ts-node",
"typedoc",
+ "typedoc-theme-fresh",
"typescript"
]
}
diff --git a/packages/snaps-sdk/.gitignore b/packages/snaps-sdk/.gitignore
new file mode 100644
index 0000000000..d8f8d46921
--- /dev/null
+++ b/packages/snaps-sdk/.gitignore
@@ -0,0 +1 @@
+docs
diff --git a/packages/snaps-sdk/assets/favicon.svg b/packages/snaps-sdk/assets/favicon.svg
new file mode 100644
index 0000000000..990a37c657
--- /dev/null
+++ b/packages/snaps-sdk/assets/favicon.svg
@@ -0,0 +1,31 @@
+
diff --git a/packages/snaps-sdk/package.json b/packages/snaps-sdk/package.json
index 929b3a42a1..7a0e5f67e9 100644
--- a/packages/snaps-sdk/package.json
+++ b/packages/snaps-sdk/package.json
@@ -74,6 +74,7 @@
],
"scripts": {
"build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references",
+ "build:docs": "typedoc",
"changelog:update": "../../scripts/update-changelog.sh @metamask/snaps-sdk",
"changelog:validate": "../../scripts/validate-changelog.sh @metamask/snaps-sdk",
"lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies",
@@ -114,6 +115,8 @@
"jest-silent-reporter": "^0.6.0",
"prettier": "^3.3.3",
"ts-jest": "^29.1.1",
+ "typedoc": "^0.28.16",
+ "typedoc-theme-fresh": "^0.2.3",
"typescript": "~5.3.3"
},
"engines": {
diff --git a/packages/snaps-sdk/src/index.ts b/packages/snaps-sdk/src/index.ts
index b42dc6b833..776393c235 100644
--- a/packages/snaps-sdk/src/index.ts
+++ b/packages/snaps-sdk/src/index.ts
@@ -1,3 +1,12 @@
+/**
+ * The main entry point for the Snaps SDK, which can be accessed by importing
+ * from `@metamask/snaps-sdk`.
+ *
+ * @module Main
+ * @primaryExport
+ * @showGroups
+ */
+
// Only internals that are used by other Snaps packages should be exported here.
export type { EnumToUnion } from './internals';
export type { UriOptions } from './internals';
diff --git a/packages/snaps-sdk/src/jsx/components/Address.ts b/packages/snaps-sdk/src/jsx/components/Address.ts
index 4c40c35753..de8bb92f35 100644
--- a/packages/snaps-sdk/src/jsx/components/Address.ts
+++ b/packages/snaps-sdk/src/jsx/components/Address.ts
@@ -10,6 +10,7 @@ import { createSnapComponent } from '../component';
* @property truncate - Whether to truncate the address. Defaults to `true`.
* @property displayName - Whether to show the account name. Defaults to `false`.
* @property avatar - Whether to show the address avatar. Defaults to `true`.
+ * @category Component Props
*/
export type AddressProps = {
address: `0x${string}` | CaipAccountId;
@@ -42,12 +43,14 @@ const TYPE = 'Address';
*
* @example
*
+ * @category Components
*/
export const Address = createSnapComponent(TYPE);
/**
* An address element.
*
- * @see Address
+ * @see {@link Address}
+ * @category Elements
*/
export type AddressElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Avatar.ts b/packages/snaps-sdk/src/jsx/components/Avatar.ts
index d1f1a624fc..d29a60bce8 100644
--- a/packages/snaps-sdk/src/jsx/components/Avatar.ts
+++ b/packages/snaps-sdk/src/jsx/components/Avatar.ts
@@ -7,6 +7,7 @@ import { createSnapComponent } from '../component';
*
* @property address - The address to display. This should be a valid CAIP-10 address.
* @property size - The size of the avatar. Can be `sm`, `md`, or `lg`. Defaults to `md`.
+ * @category Component Props
*/
export type AvatarProps = {
address: CaipAccountId;
@@ -28,12 +29,14 @@ const TYPE = 'Avatar';
*
* @example
*
+ * @category Components
*/
export const Avatar = createSnapComponent(TYPE);
/**
* An avatar element.
*
- * @see Avatar
+ * @see {@link Avatar}
+ * @category Elements
*/
export type AvatarElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Banner.ts b/packages/snaps-sdk/src/jsx/components/Banner.ts
index 2be70444d0..01724b7dde 100644
--- a/packages/snaps-sdk/src/jsx/components/Banner.ts
+++ b/packages/snaps-sdk/src/jsx/components/Banner.ts
@@ -24,6 +24,7 @@ export type BannerChildren = SnapsChildren<
* @param children - The content to display in the banner.
* @param title - Title of the banner.
* @param severity - Severity level of the banner.
+ * @category Component Props
*/
export type BannerProps = {
children: BannerChildren;
@@ -44,12 +45,14 @@ const TYPE = 'Banner';
*
* Here is the banner content!
*
+ * @category Components
*/
export const Banner = createSnapComponent(TYPE);
/**
* A Banner element.
*
- * @see Banner
+ * @see {@link Banner}
+ * @category Elements
*/
export type BannerElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Box.ts b/packages/snaps-sdk/src/jsx/components/Box.ts
index bed06118b2..a95c3db5c1 100644
--- a/packages/snaps-sdk/src/jsx/components/Box.ts
+++ b/packages/snaps-sdk/src/jsx/components/Box.ts
@@ -9,6 +9,7 @@ import { createSnapComponent } from '../component';
* @property alignment - The alignment mode to use within the box. Defaults to `start`.
* @property crossAlignment - The cross alignment mode to use within the box.
* @property center - Whether to center the children within the box. Defaults to `false`.
+ * @category Component Props
*/
export type BoxProps = {
// We can't use `JSXElement` because it causes a circular reference.
@@ -41,12 +42,14 @@ const TYPE = 'Box';
*
* Hello world!
*
+ * @category Components
*/
export const Box = createSnapComponent(TYPE);
/**
* A box element.
*
- * @see Box
+ * @see {@link Box}
+ * @category Elements
*/
export type BoxElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Card.ts b/packages/snaps-sdk/src/jsx/components/Card.ts
index 811f65df5d..14e7846188 100644
--- a/packages/snaps-sdk/src/jsx/components/Card.ts
+++ b/packages/snaps-sdk/src/jsx/components/Card.ts
@@ -9,6 +9,7 @@ import { createSnapComponent } from '../component';
* @property description - The description, shown below the title.
* @property value - The value, shown on the right side.
* @property extra - An additional optional value shown below the value.
+ * @category Component Props
*/
export type CardProps = {
image?: string | undefined;
@@ -32,12 +33,14 @@ const TYPE = 'Card';
* @returns A card element.
* @example
*
+ * @category Components
*/
export const Card = createSnapComponent(TYPE);
/**
* A card element.
*
- * @see Card
+ * @see {@link Card}
+ * @category Elements
*/
export type CardElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Container.ts b/packages/snaps-sdk/src/jsx/components/Container.ts
index 2f1c4b1b25..5e9c099983 100644
--- a/packages/snaps-sdk/src/jsx/components/Container.ts
+++ b/packages/snaps-sdk/src/jsx/components/Container.ts
@@ -11,6 +11,7 @@ export type ContainerBackgroundColor = 'default' | 'alternative';
* The props of the {@link Container} component.
*
* @property children - The Box and the Footer or the Box element.
+ * @category Component Props
*/
export type ContainerProps = {
children: [GenericSnapElement, FooterElement] | GenericSnapElement;
@@ -36,12 +37,14 @@ const TYPE = 'Container';
*
*
*
+ * @category Components
*/
export const Container = createSnapComponent(TYPE);
/**
* A container element.
*
- * @see Container
+ * @see {@link Container}
+ * @category Elements
*/
export type ContainerElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Copyable.ts b/packages/snaps-sdk/src/jsx/components/Copyable.ts
index 0fe333fac4..658020c5f5 100644
--- a/packages/snaps-sdk/src/jsx/components/Copyable.ts
+++ b/packages/snaps-sdk/src/jsx/components/Copyable.ts
@@ -7,6 +7,7 @@ import { createSnapComponent } from '../component';
* element.
* @property sensitive - Whether the value is sensitive. If `true`, the value
* will be hidden when the user is not interacting with the copyable element.
+ * @category Component Props
*/
export type CopyableProps = {
value: string;
@@ -27,12 +28,14 @@ const TYPE = 'Copyable';
* @example
*
*
+ * @category Components
*/
export const Copyable = createSnapComponent(TYPE);
/**
* A copyable element.
*
- * @see Copyable
+ * @see {@link Copyable}
+ * @category Elements
*/
export type CopyableElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Divider.ts b/packages/snaps-sdk/src/jsx/components/Divider.ts
index 3ae27e403e..9fef441458 100644
--- a/packages/snaps-sdk/src/jsx/components/Divider.ts
+++ b/packages/snaps-sdk/src/jsx/components/Divider.ts
@@ -11,12 +11,14 @@ const TYPE = 'Divider';
* @returns A divider element.
* @example
*
+ * @category Components
*/
export const Divider = createSnapComponent(TYPE);
/**
* A divider element.
*
- * @see Divider
+ * @see {@link Divider}
+ * @category Elements
*/
export type DividerElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Footer.ts b/packages/snaps-sdk/src/jsx/components/Footer.ts
index 5fd9ac2652..f787890bc6 100644
--- a/packages/snaps-sdk/src/jsx/components/Footer.ts
+++ b/packages/snaps-sdk/src/jsx/components/Footer.ts
@@ -5,6 +5,7 @@ import { createSnapComponent } from '../component';
* The props of the {@link Footer} component.
*
* @property children - The single or multiple buttons in the footer.
+ * @category Component Props
*/
export type FooterProps = {
children: ButtonElement | [ButtonElement, ButtonElement];
@@ -23,12 +24,14 @@ const TYPE = 'Footer';
*
*
*
+ * @category Components
*/
export const Footer = createSnapComponent(TYPE);
/**
* A footer element.
*
- * @see Footer
+ * @see {@link Footer}
+ * @category Elements
*/
export type FooterElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Heading.ts b/packages/snaps-sdk/src/jsx/components/Heading.ts
index 33546a4d22..ee866d8d1a 100644
--- a/packages/snaps-sdk/src/jsx/components/Heading.ts
+++ b/packages/snaps-sdk/src/jsx/components/Heading.ts
@@ -6,6 +6,7 @@ import { createSnapComponent } from '../component';
*
* @property children - The text to display in the heading.
* @property size - The size of the heading. Defaults to `sm`.
+ * @category Component Props
*/
type HeadingProps = {
children: StringElement;
@@ -25,12 +26,14 @@ const TYPE = 'Heading';
* Hello world!
* @example
* Hello world!
+ * @category Components
*/
export const Heading = createSnapComponent(TYPE);
/**
* A heading element.
*
- * @see Heading
+ * @see {@link Heading}
+ * @category Elements
*/
export type HeadingElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Icon.ts b/packages/snaps-sdk/src/jsx/components/Icon.ts
index 048845ac90..cb0dae69b0 100644
--- a/packages/snaps-sdk/src/jsx/components/Icon.ts
+++ b/packages/snaps-sdk/src/jsx/components/Icon.ts
@@ -284,6 +284,7 @@ export enum IconName {
* @property name - The name of the icon to display from a pre-defined list.
* @property color - The color of the displayed icon.
* @property size - The size of the displayed icon. Use `inherit` to size it the same as the text.
+ * @category Component Props
*/
export type IconProps = {
name: `${IconName}`;
@@ -303,12 +304,14 @@ const TYPE = 'Icon';
* @returns An icon element.
* @example
*
+ * @category Components
*/
export const Icon = createSnapComponent(TYPE);
/**
* An icon element.
*
- * @see Icon
+ * @see {@link Icon}
+ * @category Elements
*/
export type IconElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Image.ts b/packages/snaps-sdk/src/jsx/components/Image.ts
index 3fa023d3bb..6caab1e3d8 100644
--- a/packages/snaps-sdk/src/jsx/components/Image.ts
+++ b/packages/snaps-sdk/src/jsx/components/Image.ts
@@ -9,6 +9,7 @@ import { createSnapComponent } from '../component';
* the `data:` URL scheme to embed images inside the SVG.
* @property alt - The alternative text of the image, which describes the image
* for users who cannot see it.
+ * @category Component Props
*/
type ImageProps = {
src: string;
@@ -37,12 +38,14 @@ const TYPE = 'Image';
* @returns An image element.
* @example
*
+ * @category Components
*/
export const Image = createSnapComponent(TYPE);
/**
* An image element.
*
- * @see Image
+ * @see {@link Image}
+ * @category Elements
*/
export type ImageElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Link.ts b/packages/snaps-sdk/src/jsx/components/Link.ts
index 5b6262e2dc..1b3c486b7d 100644
--- a/packages/snaps-sdk/src/jsx/components/Link.ts
+++ b/packages/snaps-sdk/src/jsx/components/Link.ts
@@ -22,6 +22,7 @@ export type LinkChildren = SnapsChildren<
* @property children - The text to display in the link.
* @property href - The URL to link to. This must be an `https` or `mailto` URL.
* `http` is not allowed.
+ * @category Component Props
*/
export type LinkProps = {
children: LinkChildren;
@@ -40,12 +41,14 @@ const TYPE = 'Link';
* @returns A link element.
* @example
* Click here
+ * @category Components
*/
export const Link = createSnapComponent(TYPE);
/**
* A link element.
*
- * @see Link
+ * @see {@link Link}
+ * @category Elements
*/
export type LinkElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Row.ts b/packages/snaps-sdk/src/jsx/components/Row.ts
index 12d286ad92..07cb840316 100644
--- a/packages/snaps-sdk/src/jsx/components/Row.ts
+++ b/packages/snaps-sdk/src/jsx/components/Row.ts
@@ -13,6 +13,7 @@ export type RowChildren = GenericSnapElement;
* @property children - The content of the row. This can be any component.
* @property variant - The variant of the row.
* @property tooltip - An optional tooltip to show for the row.
+ * @category Component Props
*/
export type RowProps = {
label: string;
@@ -37,12 +38,14 @@ const TYPE = 'Row';
*
*
*
+ * @category Components
*/
export const Row = createSnapComponent(TYPE);
/**
* A row element.
*
- * @see Row
+ * @see {@link Row}
+ * @category Elements
*/
export type RowElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Section.ts b/packages/snaps-sdk/src/jsx/components/Section.ts
index abeb084609..b21ae3819c 100644
--- a/packages/snaps-sdk/src/jsx/components/Section.ts
+++ b/packages/snaps-sdk/src/jsx/components/Section.ts
@@ -5,6 +5,7 @@ import { createSnapComponent } from '../component';
* The props of the {@link Section} component.
*
* @property children - The children of the section.
+ * @category Component Props
*/
export type SectionProps = {
// We can't use `JSXElement` because it causes a circular reference.
@@ -39,12 +40,14 @@ const TYPE = 'Section';
*
*
*
+ * @category Components
*/
export const Section = createSnapComponent(TYPE);
/**
* A section element.
*
- * @see Section
+ * @see {@link Section}
+ * @category Elements
*/
export type SectionElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Skeleton.ts b/packages/snaps-sdk/src/jsx/components/Skeleton.ts
index adf72774b7..80b9967fdd 100644
--- a/packages/snaps-sdk/src/jsx/components/Skeleton.ts
+++ b/packages/snaps-sdk/src/jsx/components/Skeleton.ts
@@ -7,6 +7,7 @@ import { createSnapComponent } from '../component';
* @param width - Width of the Skeleton.
* @param width - Height of the Skeleton.
* @param borderRadius - Border radius of the Skeleton.
+ * @category Component Props
*/
export type SkeletonProps = {
width?: number | string | undefined;
@@ -25,12 +26,14 @@ const TYPE = 'Skeleton';
* @param props.borderRadius - Border radius of the Skeleton.
* @example
*
+ * @category Components
*/
export const Skeleton = createSnapComponent(TYPE);
/**
* A Skeleton element.
*
- * @see Skeleton
+ * @see {@link Skeleton}
+ * @category Elements
*/
export type SkeletonElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Spinner.ts b/packages/snaps-sdk/src/jsx/components/Spinner.ts
index f28c263752..071385ae26 100644
--- a/packages/snaps-sdk/src/jsx/components/Spinner.ts
+++ b/packages/snaps-sdk/src/jsx/components/Spinner.ts
@@ -11,12 +11,14 @@ const TYPE = 'Spinner';
* @returns A spinner element.
* @example
*
+ * @category Components
*/
export const Spinner = createSnapComponent(TYPE);
/**
* A spinner element.
*
- * @see Spinner
+ * @see {@link Spinner}
+ * @category Elements
*/
export type SpinnerElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Text.ts b/packages/snaps-sdk/src/jsx/components/Text.ts
index a5f94962e2..80d101af46 100644
--- a/packages/snaps-sdk/src/jsx/components/Text.ts
+++ b/packages/snaps-sdk/src/jsx/components/Text.ts
@@ -35,6 +35,7 @@ export type TextColors =
* @property color - The color of the text.
* @property size - The size of the text. Defaults to `md`.
* @property fontWeight - The font weight of the text. Defaults to `regular`.
+ * @category Component Props
*/
export type TextProps = {
children: TextChildren;
@@ -72,12 +73,14 @@ const TYPE = 'Text';
*
* Hello world!
*
+ * @category Components
*/
export const Text = createSnapComponent(TYPE);
/**
* A text element.
*
- * @see Text
+ * @see {@link Text}
+ * @category Elements
*/
export type TextElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Tooltip.ts b/packages/snaps-sdk/src/jsx/components/Tooltip.ts
index ca59d33373..2d191bcd3f 100644
--- a/packages/snaps-sdk/src/jsx/components/Tooltip.ts
+++ b/packages/snaps-sdk/src/jsx/components/Tooltip.ts
@@ -19,6 +19,7 @@ export type TooltipChildren =
*
* @property children - The children of the box.
* @property content - The text to display in the tooltip.
+ * @category Component Props
*/
export type TooltipProps = {
children: TooltipChildren;
@@ -47,12 +48,14 @@ const TYPE = 'Tooltip';
* Text with formatting}>
* Hello world!
*
+ * @category Components
*/
export const Tooltip = createSnapComponent(TYPE);
/**
* A tooltip element.
*
- * @see Tooltip
+ * @see {@link Tooltip}
+ * @category Elements
*/
export type TooltipElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/Value.ts b/packages/snaps-sdk/src/jsx/components/Value.ts
index 026ef54401..3175e92b12 100644
--- a/packages/snaps-sdk/src/jsx/components/Value.ts
+++ b/packages/snaps-sdk/src/jsx/components/Value.ts
@@ -6,6 +6,7 @@ import { createSnapComponent } from '../component';
*
* @property value - The value shown on the right side.
* @property extra - The extra text shown on the left side.
+ * @category Component Props
*/
export type ValueProps = {
value: TextElement | string;
@@ -29,12 +30,14 @@ const TYPE = 'Value';
*
* @example
* 0.05 ETH} extra={$200} />
+ * @category Components
*/
export const Value = createSnapComponent(TYPE);
/**
* A value element.
*
- * @see Value
+ * @see {@link Value}
+ * @category Elements
*/
export type ValueElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/AccountSelector.ts b/packages/snaps-sdk/src/jsx/components/form/AccountSelector.ts
index b36e7b56c5..2c0af478ba 100644
--- a/packages/snaps-sdk/src/jsx/components/form/AccountSelector.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/AccountSelector.ts
@@ -12,6 +12,7 @@ import { createSnapComponent } from '../../component';
* @property switchGlobalAccount - Whether to switch the selected account in the client.
* @property disabled - Whether the account selector is disabled.
* @property value - The selected address.
+ * @category Component Props
*/
export type AccountSelectorProps = {
name: string;
@@ -48,6 +49,7 @@ const TYPE = 'AccountSelector';
*
* @example
*
+ * @category Components
*/
export const AccountSelector = createSnapComponent<
AccountSelectorProps,
@@ -57,6 +59,7 @@ export const AccountSelector = createSnapComponent<
/**
* An account selector element.
*
- * @see AccountSelector
+ * @see {@link AccountSelector}
+ * @category Elements
*/
export type AccountSelectorElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/AddressInput.ts b/packages/snaps-sdk/src/jsx/components/form/AddressInput.ts
index 2d1595d5dc..b23e9692d8 100644
--- a/packages/snaps-sdk/src/jsx/components/form/AddressInput.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/AddressInput.ts
@@ -2,6 +2,17 @@ import type { CaipChainId } from '@metamask/utils';
import { createSnapComponent } from '../../component';
+/**
+ * The props of the {@link AddressInput} component.
+ *
+ * @property name - The name of the input field.
+ * @property value - The value of the input field.
+ * @property chainId - The CAIP-2 chain ID of the address.
+ * @property placeholder - The placeholder text of the input field.
+ * @property disabled - Whether the input field is disabled.
+ * @property displayAvatar - Whether to display the avatar of the address.
+ * @category Component Props
+ */
export type AddressInputProps = {
name: string;
value?: string | undefined;
@@ -26,9 +37,16 @@ const TYPE = 'AddressInput';
* @returns An input element.
* @example
*
+ * @category Components
*/
export const AddressInput = createSnapComponent(
TYPE,
);
+/**
+ * An address input element.
+ *
+ * @see {@link AddressInput}
+ * @category Elements
+ */
export type AddressInputElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/AssetSelector.ts b/packages/snaps-sdk/src/jsx/components/form/AssetSelector.ts
index 54a9a729d0..34f9222b51 100644
--- a/packages/snaps-sdk/src/jsx/components/form/AssetSelector.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/AssetSelector.ts
@@ -19,6 +19,7 @@ import { createSnapComponent } from '../../component';
* @property value - The selected value of the asset selector.
* Only non-EIP-155 namespaces are supported for now.
* @property disabled - Whether the asset selector is disabled.
+ * @category Component Props
*/
export type AssetSelectorProps = {
name: string;
@@ -59,10 +60,17 @@ const TYPE = 'AssetSelector';
* ]}
* chainIds={['solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp']}
* />
+ * @category Components
*/
export const AssetSelector = createSnapComponent<
AssetSelectorProps,
typeof TYPE
>(TYPE);
+/**
+ * An asset selector element.
+ *
+ * @see {@link AssetSelector}
+ * @category Elements
+ */
export type AssetSelectorElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/Button.ts b/packages/snaps-sdk/src/jsx/components/form/Button.ts
index f165bb30db..95d2773344 100644
--- a/packages/snaps-sdk/src/jsx/components/form/Button.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/Button.ts
@@ -19,6 +19,7 @@ import type { ImageElement } from '../Image';
* @property disabled - Whether the button is disabled. Defaults to `false`.
* @property loading - Whether the button is loading. Defaults to `false`.
* @property form - The name of the form component to associate the button with.
+ * @category Component Props
*/
export type ButtonProps = {
children: SnapsChildren;
@@ -42,12 +43,14 @@ const TYPE = 'Button';
* @returns A button element.
* @example
*
+ * @category Components
*/
export const Button = createSnapComponent(TYPE);
/**
* A button element.
*
- * @see Button
+ * @see {@link Button}
+ * @category Elements
*/
export type ButtonElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/Checkbox.ts b/packages/snaps-sdk/src/jsx/components/form/Checkbox.ts
index df462ef5cf..3fb27d783d 100644
--- a/packages/snaps-sdk/src/jsx/components/form/Checkbox.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/Checkbox.ts
@@ -9,6 +9,7 @@ import { createSnapComponent } from '../../component';
* @property label - An optional label for the checkbox.
* @property variant - An optional variant for the checkbox.
* @property disabled - Whether the checkbox is disabled.
+ * @category Component Props
*/
export type CheckboxProps = {
name: string;
@@ -33,12 +34,14 @@ const TYPE = 'Checkbox';
* @returns A checkbox element.
* @example
*
+ * @category Components
*/
export const Checkbox = createSnapComponent(TYPE);
/**
* A checkbox element.
*
- * @see Checkbox
+ * @see {@link Checkbox}
+ * @category Elements
*/
export type CheckboxElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/DateTimePicker.ts b/packages/snaps-sdk/src/jsx/components/form/DateTimePicker.ts
index 31a102eafd..05369d9416 100644
--- a/packages/snaps-sdk/src/jsx/components/form/DateTimePicker.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/DateTimePicker.ts
@@ -13,6 +13,7 @@ import { createSnapComponent } from '../../component';
* @property disabled - Whether the date/time picker field is disabled.
* @property disablePast - Whether to allow selection of past dates. Defaults to false.
* @property disableFuture - Whether to allow selection of future dates. Defaults to false.
+ * @category Component Props
*/
export type DateTimePickerProps = {
name: string;
@@ -39,6 +40,7 @@ const TYPE = 'DateTimePicker';
* @param props.disabled - Whether the date/time picker field is disabled.
* @param props.disablePast - Whether to allow selection of past dates. Defaults to false.
* @param props.disableFuture - Whether to allow selection of future dates. Defaults to false.
+ * @category Components
*/
export const DateTimePicker = createSnapComponent<
DateTimePickerProps,
@@ -48,6 +50,7 @@ export const DateTimePicker = createSnapComponent<
/**
* A DateTimePicker element.
*
- * @see DateTimePicker
+ * @see {@link DateTimePicker}
+ * @category Elements
*/
export type DateTimePickerElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/Dropdown.ts b/packages/snaps-sdk/src/jsx/components/form/Dropdown.ts
index 22e556523c..2b8133f37d 100644
--- a/packages/snaps-sdk/src/jsx/components/form/Dropdown.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/Dropdown.ts
@@ -10,6 +10,7 @@ import { createSnapComponent } from '../../component';
* @property value - The selected value of the dropdown.
* @property children - The children of the dropdown.
* @property disabled - Whether the dropdown is disabled.
+ * @category Component Props
*/
export type DropdownProps = {
name: string;
@@ -36,12 +37,14 @@ const TYPE = 'Dropdown';
*
*
*
+ * @category Components
*/
export const Dropdown = createSnapComponent(TYPE);
/**
* A dropdown element.
*
- * @see Dropdown
+ * @see {@link Dropdown}
+ * @category Elements
*/
export type DropdownElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/Field.ts b/packages/snaps-sdk/src/jsx/components/form/Field.ts
index 7d9caf33dd..b691b0d8fa 100644
--- a/packages/snaps-sdk/src/jsx/components/form/Field.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/Field.ts
@@ -17,6 +17,7 @@ import { createSnapComponent } from '../../component';
* @property label - The label of the field.
* @property error - The error message of the field.
* @property children - The input field and the submit button.
+ * @category Component Props
*/
export type FieldProps = {
label?: string | undefined;
@@ -56,12 +57,14 @@ const TYPE = 'Field';
*
*
*
+ * @category Components
*/
export const Field = createSnapComponent(TYPE);
/**
* A field element.
*
- * @see Field
+ * @see {@link Field}
+ * @category Elements
*/
export type FieldElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/FileInput.ts b/packages/snaps-sdk/src/jsx/components/form/FileInput.ts
index 56bc6b9b95..16169e33bc 100644
--- a/packages/snaps-sdk/src/jsx/components/form/FileInput.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/FileInput.ts
@@ -11,6 +11,7 @@ import { createSnapComponent } from '../../component';
* @property compact - Whether the file input field is compact. Default is
* `false`.
* @property disabled - whether the file input is disabled.
+ * @category Component Props
*/
export type FileInputProps = {
name: string;
@@ -45,12 +46,14 @@ const TYPE = 'FileInput';
*
*
*
+ * @category Components
*/
export const FileInput = createSnapComponent(TYPE);
/**
* A file input element.
*
- * @see FileInput
+ * @see {@link FileInput}
+ * @category Elements
*/
export type FileInputElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/Form.ts b/packages/snaps-sdk/src/jsx/components/form/Form.ts
index 879d0c2b84..a39759c18b 100644
--- a/packages/snaps-sdk/src/jsx/components/form/Form.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/Form.ts
@@ -9,6 +9,7 @@ import { createSnapComponent } from '../../component';
* @property children - The children of the form.
* @property name - The name of the form. This is used to identify the form in
* the event handler.
+ * @category Component Props
*/
export type FormProps = {
children: SnapsChildren;
@@ -33,12 +34,14 @@ const TYPE = 'Form';
*
*
*
+ * @category Components
*/
export const Form = createSnapComponent(TYPE);
/**
* A form element.
*
- * @see Form
+ * @see {@link Form}
+ * @category Elements
*/
export type FormElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/Input.ts b/packages/snaps-sdk/src/jsx/components/form/Input.ts
index 6897019687..752193b724 100644
--- a/packages/snaps-sdk/src/jsx/components/form/Input.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/Input.ts
@@ -2,6 +2,9 @@ import { createSnapComponent } from '../../component';
// TODO: Add the `onChange` prop to the `InputProps` type.
+/**
+ * @category Component Props
+ */
export type GenericInputProps = {
name: string;
value?: string | undefined;
@@ -9,10 +12,19 @@ export type GenericInputProps = {
disabled?: boolean | undefined;
};
+/**
+ * @category Component Props
+ */
export type TextInputProps = { type: 'text' } & GenericInputProps;
+/**
+ * @category Component Props
+ */
export type PasswordInputProps = { type: 'password' } & GenericInputProps;
+/**
+ * @category Component Props
+ */
export type NumberInputProps = {
type: 'number';
min?: number;
@@ -34,6 +46,7 @@ export type NumberInputProps = {
* Only applicable to the type `number` input.
* @property step - The step value of the input field.
* Only applicable to the type `number` input.
+ * @category Component Props
*/
export type InputProps =
| GenericInputProps
@@ -64,12 +77,14 @@ const TYPE = 'Input';
*
* @example
*
+ * @category Components
*/
export const Input = createSnapComponent(TYPE);
/**
* An input element.
*
- * @see Input
+ * @see {@link Input}
+ * @category Elements
*/
export type InputElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/Option.ts b/packages/snaps-sdk/src/jsx/components/form/Option.ts
index 631f9e74cf..91bfc3b0af 100644
--- a/packages/snaps-sdk/src/jsx/components/form/Option.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/Option.ts
@@ -11,6 +11,7 @@ import { createSnapComponent } from '../../component';
* state in the form data.
* @property children - The text to display.
* @property disabled - Whether the option is disabled.
+ * @category Component Props
*/
type OptionProps = {
value: string;
@@ -36,12 +37,14 @@ const TYPE = 'Option';
*
*
*
+ * @category Components
*/
export const Option = createSnapComponent(TYPE);
/**
* A dropdown option element.
*
- * @see Option
+ * @see {@link Option}
+ * @category Elements
*/
export type OptionElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/Radio.ts b/packages/snaps-sdk/src/jsx/components/form/Radio.ts
index f52998725e..0478bc334a 100644
--- a/packages/snaps-sdk/src/jsx/components/form/Radio.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/Radio.ts
@@ -7,6 +7,7 @@ import { createSnapComponent } from '../../component';
* state in the form data.
* @property children - The text to display.
* @property disabled - Whether the radio is disabled.
+ * @category Component Props
*/
type RadioProps = {
value: string;
@@ -32,12 +33,14 @@ const TYPE = 'Radio';
* Option 2
* Option 3
*
+ * @category Components
*/
export const Radio = createSnapComponent(TYPE);
/**
* A radio element.
*
- * @see Radio
+ * @see {@link Radio}
+ * @category Elements
*/
export type RadioElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/RadioGroup.ts b/packages/snaps-sdk/src/jsx/components/form/RadioGroup.ts
index 88fe599bd9..9012d1f67e 100644
--- a/packages/snaps-sdk/src/jsx/components/form/RadioGroup.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/RadioGroup.ts
@@ -12,6 +12,7 @@ const TYPE = 'RadioGroup';
* @property value - The value of the radio group element.
* @property children - Radio options in form of elements.
* @property disabled - Whether the radio group is disabled.
+ * @category Component Props
*/
type RadioGroupProps = {
name: string;
@@ -31,6 +32,7 @@ type RadioGroupProps = {
* @returns A RadioGroup element.
* @example
*
+ * @category Components
*/
export const RadioGroup = createSnapComponent(
TYPE,
@@ -39,6 +41,7 @@ export const RadioGroup = createSnapComponent(
/**
* A RadioGroup element.
*
- * @see RadioGroup
+ * @see {@link RadioGroup}
+ * @category Elements
*/
export type RadioGroupElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/Selector.ts b/packages/snaps-sdk/src/jsx/components/form/Selector.ts
index 908d765a25..4fae17587e 100644
--- a/packages/snaps-sdk/src/jsx/components/form/Selector.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/Selector.ts
@@ -11,6 +11,7 @@ import { createSnapComponent } from '../../component';
* @property value - The selected value of the selector.
* @property children - The children of the selector.
* @property disabled - Whether the selector is disabled.
+ * @category Component Props
*/
export type SelectorProps = {
name: string;
@@ -39,12 +40,14 @@ const TYPE = 'Selector';
*
*
*
+ * @category Components
*/
export const Selector = createSnapComponent(TYPE);
/**
* A selector element.
*
- * @see Selector
+ * @see {@link Selector}
+ * @category Elements
*/
export type SelectorElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/form/SelectorOption.ts b/packages/snaps-sdk/src/jsx/components/form/SelectorOption.ts
index 00c847c01c..38e9e8e13d 100644
--- a/packages/snaps-sdk/src/jsx/components/form/SelectorOption.ts
+++ b/packages/snaps-sdk/src/jsx/components/form/SelectorOption.ts
@@ -8,6 +8,7 @@ import type { CardElement } from '../Card';
* state in the form data.
* @property children - The component to display.
* @property disabled - Whether the selector option is disabled.
+ * @category Component Props
*/
export type SelectorOptionProps = {
value: string;
@@ -33,6 +34,7 @@ const TYPE = 'SelectorOption';
*
*
*
+ * @category Components
*/
export const SelectorOption = createSnapComponent<
SelectorOptionProps,
@@ -42,6 +44,7 @@ export const SelectorOption = createSnapComponent<
/**
* A selector option element.
*
- * @see SelectorOption
+ * @see {@link SelectorOption}
+ * @category Elements
*/
export type SelectorOptionElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/formatting/Bold.ts b/packages/snaps-sdk/src/jsx/components/formatting/Bold.ts
index c98eb27c34..f981f3d827 100644
--- a/packages/snaps-sdk/src/jsx/components/formatting/Bold.ts
+++ b/packages/snaps-sdk/src/jsx/components/formatting/Bold.ts
@@ -16,6 +16,7 @@ export type BoldChildren = SnapsChildren<
* The props of the {@link Bold} component.
*
* @property children - The text to display in bold.
+ * @category Component Props
*/
export type BoldProps = {
children: BoldChildren;
@@ -34,12 +35,14 @@ const TYPE = 'Bold';
*
* Hello world!
*
+ * @category Components
*/
export const Bold = createSnapComponent(TYPE);
/**
* A bold element.
*
- * @see Bold
+ * @see {@link Bold}
+ * @category Elements
*/
export type BoldElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/components/formatting/Italic.ts b/packages/snaps-sdk/src/jsx/components/formatting/Italic.ts
index 5d68913576..1ba770e725 100644
--- a/packages/snaps-sdk/src/jsx/components/formatting/Italic.ts
+++ b/packages/snaps-sdk/src/jsx/components/formatting/Italic.ts
@@ -15,6 +15,7 @@ export type ItalicChildren = SnapsChildren<
*
* @property children - The text to display in italic. This should be a string
* or an array of strings.
+ * @category Component Props
*/
export type ItalicProps = {
children: ItalicChildren;
@@ -34,12 +35,14 @@ const TYPE = 'Italic';
*
* Hello world!
*
+ * @category Components
*/
export const Italic = createSnapComponent(TYPE);
/**
* An italic element.
*
- * @see Italic
+ * @see {@link Italic}
+ * @category Elements
*/
export type ItalicElement = ReturnType;
diff --git a/packages/snaps-sdk/src/jsx/index.ts b/packages/snaps-sdk/src/jsx/index.ts
index b5cb2e6a51..6d8993e8a9 100644
--- a/packages/snaps-sdk/src/jsx/index.ts
+++ b/packages/snaps-sdk/src/jsx/index.ts
@@ -1,3 +1,26 @@
+/**
+ * The JSX entry point for the Snaps SDK, which can be accessed by importing
+ * from `@metamask/snaps-sdk/jsx`.
+ *
+ * To use the JSX features, ensure your project is set up to handle JSX syntax,
+ * and configure the JSX import source to point to `@metamask/snaps-sdk/jsx`.
+ * For example, in a TypeScript project, you can set the `jsxImportSource`
+ * compiler option in your `tsconfig.json`:
+ *
+ * ```json
+ * {
+ * "compilerOptions": {
+ * "jsx": "react-jsx",
+ * "jsxImportSource": "@metamask/snaps-sdk/jsx"
+ * }
+ * }
+ * ```
+ *
+ * @module Main/JSX
+ * @primaryExport
+ * @showCategories
+ */
+
export * from './component';
export * from './components';
export * from './jsx-runtime';
diff --git a/packages/snaps-sdk/typedoc.jsonc b/packages/snaps-sdk/typedoc.jsonc
new file mode 100644
index 0000000000..09f0015989
--- /dev/null
+++ b/packages/snaps-sdk/typedoc.jsonc
@@ -0,0 +1,37 @@
+{
+ "name": "Snaps SDK",
+ "entryPoints": [
+ "./src/index.ts",
+ "./src/jsx/index.ts"
+ ],
+
+ // Hide the internal APIs.
+ "exclude": [
+ "./src/internals/**"
+ ],
+
+ // Exclude internal and private members.
+ "excludeInternal": true,
+ "excludePrivate": true,
+
+ // Customise the favicon to use the MetaMask fox icon.
+ "favicon": "./assets/favicon.svg",
+
+ // Hide the TypeDoc generator from the footer.
+ "hideGenerator": true,
+
+ // Add additional links to the header.
+ "navigationLinks": {
+ "MetaMask Documentation": "https://docs.metamask.io/",
+ "GitHub": "https://github.com/MetaMask/snaps"
+ },
+
+ // Specify the output directory for the generated documentation.
+ "out": "docs",
+
+ // Configuration for the theme to use.
+ "plugin": [
+ "typedoc-theme-fresh"
+ ],
+ "theme": "fresh"
+}
diff --git a/yarn.lock b/yarn.lock
index c06ea29471..a8453ec082 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2071,6 +2071,19 @@ __metadata:
languageName: node
linkType: hard
+"@gerrit0/mini-shiki@npm:^3.17.0":
+ version: 3.22.0
+ resolution: "@gerrit0/mini-shiki@npm:3.22.0"
+ dependencies:
+ "@shikijs/engine-oniguruma": "npm:^3.22.0"
+ "@shikijs/langs": "npm:^3.22.0"
+ "@shikijs/themes": "npm:^3.22.0"
+ "@shikijs/types": "npm:^3.22.0"
+ "@shikijs/vscode-textmate": "npm:^10.0.2"
+ checksum: 10/c81a6320f9286ecbd77084687da9a30a4fbd3041ad280b5bc72835fec588e3968df30bde8007ae43924371f1cb1c767a2e65dce68669973bca8b6f866e6f288d
+ languageName: node
+ linkType: hard
+
"@humanfs/core@npm:^0.19.1":
version: 0.19.1
resolution: "@humanfs/core@npm:0.19.1"
@@ -4575,6 +4588,8 @@ __metadata:
luxon: "npm:^3.5.0"
prettier: "npm:^3.3.3"
ts-jest: "npm:^29.1.1"
+ typedoc: "npm:^0.28.16"
+ typedoc-theme-fresh: "npm:^0.2.3"
typescript: "npm:~5.3.3"
languageName: unknown
linkType: soft
@@ -5591,6 +5606,51 @@ __metadata:
languageName: node
linkType: hard
+"@shikijs/engine-oniguruma@npm:^3.22.0":
+ version: 3.22.0
+ resolution: "@shikijs/engine-oniguruma@npm:3.22.0"
+ dependencies:
+ "@shikijs/types": "npm:3.22.0"
+ "@shikijs/vscode-textmate": "npm:^10.0.2"
+ checksum: 10/611654868bc2538ab4d7c3770ad2829a623fcf354ce5c09ba8fde29ecc106b5e4a6270de7d970da4524c1ad00d4f7ed3e5afef2be2ff0b94f8bb8541d0775320
+ languageName: node
+ linkType: hard
+
+"@shikijs/langs@npm:^3.22.0":
+ version: 3.22.0
+ resolution: "@shikijs/langs@npm:3.22.0"
+ dependencies:
+ "@shikijs/types": "npm:3.22.0"
+ checksum: 10/091cdaeda7763e1170a6a289315a8371f07af541ad4d8fe17a247b45c4a3be82dc9d321a1e4589cdc8464a694692a5c8bfdd1909372b6ec52b0caa53d69e4a1f
+ languageName: node
+ linkType: hard
+
+"@shikijs/themes@npm:^3.22.0":
+ version: 3.22.0
+ resolution: "@shikijs/themes@npm:3.22.0"
+ dependencies:
+ "@shikijs/types": "npm:3.22.0"
+ checksum: 10/ba60849b4056ea4e243e2c2047382312e504d10f8e1ee09d73041d9de54bce30e28c79168406d8a8e3b7a7ab19d0f9c610e3469679f96145aa975460ac7e1407
+ languageName: node
+ linkType: hard
+
+"@shikijs/types@npm:3.22.0, @shikijs/types@npm:^3.22.0":
+ version: 3.22.0
+ resolution: "@shikijs/types@npm:3.22.0"
+ dependencies:
+ "@shikijs/vscode-textmate": "npm:^10.0.2"
+ "@types/hast": "npm:^3.0.4"
+ checksum: 10/c5abd9050d4645bbf9f6c9af1a3df31d24d823d21c232e47b171cc68bd4865adab20533503a5c97ffb9e87eae2f88e7a3835d64a0a8aa11a69dbfd45aabd58bf
+ languageName: node
+ linkType: hard
+
+"@shikijs/vscode-textmate@npm:^10.0.2":
+ version: 10.0.2
+ resolution: "@shikijs/vscode-textmate@npm:10.0.2"
+ checksum: 10/d924cba8a01cd9ca12f56ba097d628fdb81455abb85884c8d8a5ae85b628a37dd5907e7691019b97107bd6608c866adf91ba04a1c3bba391281c88e386c044ea
+ languageName: node
+ linkType: hard
+
"@sinclair/typebox@npm:^0.27.8":
version: 0.27.8
resolution: "@sinclair/typebox@npm:0.27.8"
@@ -6164,6 +6224,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/hast@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "@types/hast@npm:3.0.4"
+ dependencies:
+ "@types/unist": "npm:*"
+ checksum: 10/732920d81bb7605895776841b7658b4d8cc74a43a8fa176017cc0fb0ecc1a4c82a2b75a4fe6b71aa262b649d3fb62858c6789efa3793ea1d40269953af96ecb5
+ languageName: node
+ linkType: hard
+
"@types/hoist-non-react-statics@npm:^3.3.1":
version: 3.3.1
resolution: "@types/hoist-non-react-statics@npm:3.3.1"
@@ -6494,6 +6563,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/unist@npm:*":
+ version: 3.0.3
+ resolution: "@types/unist@npm:3.0.3"
+ checksum: 10/96e6453da9e075aaef1dc22482463898198acdc1eeb99b465e65e34303e2ec1e3b1ed4469a9118275ec284dc98019f63c3f5d49422f0e4ac707e5ab90fb3b71a
+ languageName: node
+ linkType: hard
+
"@types/use-sync-external-store@npm:^0.0.3":
version: 0.0.3
resolution: "@types/use-sync-external-store@npm:0.0.3"
@@ -13671,6 +13747,15 @@ __metadata:
languageName: node
linkType: hard
+"linkify-it@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "linkify-it@npm:5.0.0"
+ dependencies:
+ uc.micro: "npm:^2.0.0"
+ checksum: 10/ef3b7609dda6ec0c0be8a7b879cea195f0d36387b0011660cd6711bba0ad82137f59b458b7e703ec74f11d88e7c1328e2ad9b855a8500c0ded67461a8c4519e6
+ languageName: node
+ linkType: hard
+
"lint-staged@npm:^12.4.1":
version: 12.4.1
resolution: "lint-staged@npm:12.4.1"
@@ -13859,6 +13944,13 @@ __metadata:
languageName: node
linkType: hard
+"lunr@npm:^2.3.9":
+ version: 2.3.9
+ resolution: "lunr@npm:2.3.9"
+ checksum: 10/f2f6db34c046f5a767782fe2454e6dd69c75ba3c5cf5c1cb9cacca2313a99c2ba78ff8fa67dac866fb7c4ffd5f22e06684793f5f15ba14bddb598b94513d54bf
+ languageName: node
+ linkType: hard
+
"luxon@npm:3.3.0":
version: 3.3.0
resolution: "luxon@npm:3.3.0"
@@ -13978,6 +14070,22 @@ __metadata:
languageName: node
linkType: hard
+"markdown-it@npm:^14.1.0":
+ version: 14.1.0
+ resolution: "markdown-it@npm:14.1.0"
+ dependencies:
+ argparse: "npm:^2.0.1"
+ entities: "npm:^4.4.0"
+ linkify-it: "npm:^5.0.0"
+ mdurl: "npm:^2.0.0"
+ punycode.js: "npm:^2.3.1"
+ uc.micro: "npm:^2.1.0"
+ bin:
+ markdown-it: bin/markdown-it.mjs
+ checksum: 10/f34f921be178ed0607ba9e3e27c733642be445e9bb6b1dba88da7aafe8ba1bc5d2f1c3aa8f3fc33b49a902da4e4c08c2feadfafb290b8c7dda766208bb6483a9
+ languageName: node
+ linkType: hard
+
"marked@npm:^12.0.1":
version: 12.0.1
resolution: "marked@npm:12.0.1"
@@ -14005,6 +14113,13 @@ __metadata:
languageName: node
linkType: hard
+"mdurl@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "mdurl@npm:2.0.0"
+ checksum: 10/1720349d4a53e401aa993241368e35c0ad13d816ad0b28388928c58ca9faa0cf755fa45f18ccbf64f4ce54a845a50ddce5c84e4016897b513096a68dac4b0158
+ languageName: node
+ linkType: hard
+
"media-typer@npm:0.3.0":
version: 0.3.0
resolution: "media-typer@npm:0.3.0"
@@ -15514,6 +15629,13 @@ __metadata:
languageName: node
linkType: hard
+"punycode.js@npm:^2.3.1":
+ version: 2.3.1
+ resolution: "punycode.js@npm:2.3.1"
+ checksum: 10/f0e946d1edf063f9e3d30a32ca86d8ff90ed13ca40dad9c75d37510a04473340cfc98db23a905cc1e517b1e9deb0f6021dce6f422ace235c60d3c9ac47c5a16a
+ languageName: node
+ linkType: hard
+
"punycode@npm:2.1.0":
version: 2.1.0
resolution: "punycode@npm:2.1.0"
@@ -17892,6 +18014,32 @@ __metadata:
languageName: node
linkType: hard
+"typedoc-theme-fresh@npm:^0.2.3":
+ version: 0.2.3
+ resolution: "typedoc-theme-fresh@npm:0.2.3"
+ peerDependencies:
+ typedoc: ^0.28.14
+ checksum: 10/53d0e7682a99b0e3abffef8da3e1897d677837618f428bbeb4ee7f83ba93ac1435bfbf275cfc99ad3610cd9ba81947c313b893769dff8170c07987fd835da8f0
+ languageName: node
+ linkType: hard
+
+"typedoc@npm:^0.28.16":
+ version: 0.28.16
+ resolution: "typedoc@npm:0.28.16"
+ dependencies:
+ "@gerrit0/mini-shiki": "npm:^3.17.0"
+ lunr: "npm:^2.3.9"
+ markdown-it: "npm:^14.1.0"
+ minimatch: "npm:^9.0.5"
+ yaml: "npm:^2.8.1"
+ peerDependencies:
+ typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x
+ bin:
+ typedoc: bin/typedoc
+ checksum: 10/657afd087d88a14cf77ad941de8913041a6a025e87c78833a5ee58a52b8252b685730394ab7920781b0b2faa0507b1c9d87fcf82dd86d1b788420716fc17ded3
+ languageName: node
+ linkType: hard
+
"typescript-compare@npm:^0.0.2":
version: 0.0.2
resolution: "typescript-compare@npm:0.0.2"
@@ -17951,6 +18099,13 @@ __metadata:
languageName: node
linkType: hard
+"uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "uc.micro@npm:2.1.0"
+ checksum: 10/37197358242eb9afe367502d4638ac8c5838b78792ab218eafe48287b0ed28aaca268ec0392cc5729f6c90266744de32c06ae938549aee041fc93b0f9672d6b2
+ languageName: node
+ linkType: hard
+
"uncontrollable@npm:^7.2.1":
version: 7.2.1
resolution: "uncontrollable@npm:7.2.1"
@@ -18870,10 +19025,12 @@ __metadata:
languageName: node
linkType: hard
-"yaml@npm:^2.2.2":
- version: 2.3.4
- resolution: "yaml@npm:2.3.4"
- checksum: 10/f8207ce43065a22268a2806ea6a0fa3974c6fde92b4b2fa0082357e487bc333e85dc518910007e7ac001b532c7c84bd3eccb6c7757e94182b564028b0008f44b
+"yaml@npm:^2.2.2, yaml@npm:^2.8.1":
+ version: 2.8.2
+ resolution: "yaml@npm:2.8.2"
+ bin:
+ yaml: bin.mjs
+ checksum: 10/4eab0074da6bc5a5bffd25b9b359cf7061b771b95d1b3b571852098380db3b1b8f96e0f1f354b56cc7216aa97cea25163377ccbc33a2e9ce00316fe8d02f4539
languageName: node
linkType: hard