diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index b22f465..095a016 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -20,7 +20,18 @@ const config = {
i18n: {
defaultLocale: 'en',
- locales: ['en'],
+ locales: ['en', 'zh-CN'],
+ localeConfigs: {
+ en: {
+ label: 'English',
+ htmlLang: 'en-US',
+ },
+ 'zh-CN': {
+ label: '简体中文',
+ htmlLang: 'zh-CN',
+ path: "zh-CN"
+ }
+ }
},
markdown: {
format: 'md',
@@ -36,6 +47,11 @@ const config = {
sidebarCollapsed: false,
path: './ui',
routeBasePath: '/', // Serve the docs at the site's root
+ editUrl: ({version, versionDocsDirPath, docPath, permalink, locale}) => {
+ let githubDocPath = 'https://github.com/shdwmtr/steambrew/tree/main/docs';
+ if (locale == 'en') return `${githubDocPath}/${versionDocsDirPath}/${docPath}`;
+ return `${githubDocPath}/i18n/${locale}/docusaurus-plugin-content-docs/${version}/${docPath}`;
+ },
},
blog: false,
theme: {
@@ -92,6 +108,10 @@ const config = {
label: 'GitHub',
position: 'right',
},
+ {
+ type: 'localeDropdown',
+ position: 'right',
+ }
],
},
footer: {
diff --git a/docs/i18n/zh-CN/code.json b/docs/i18n/zh-CN/code.json
new file mode 100644
index 0000000..f15219f
--- /dev/null
+++ b/docs/i18n/zh-CN/code.json
@@ -0,0 +1,344 @@
+{
+ "theme.ErrorPageContent.title": {
+ "message": "页面已崩溃。",
+ "description": "The title of the fallback page when the page crashed"
+ },
+ "theme.BackToTopButton.buttonAriaLabel": {
+ "message": "回到顶部",
+ "description": "The ARIA label for the back to top button"
+ },
+ "theme.blog.archive.title": {
+ "message": "历史博文",
+ "description": "The page & hero title of the blog archive page"
+ },
+ "theme.blog.archive.description": {
+ "message": "历史博文",
+ "description": "The page & hero description of the blog archive page"
+ },
+ "theme.blog.paginator.navAriaLabel": {
+ "message": "博文列表分页导航",
+ "description": "The ARIA label for the blog pagination"
+ },
+ "theme.blog.paginator.newerEntries": {
+ "message": "较新的博文",
+ "description": "The label used to navigate to the newer blog posts page (previous page)"
+ },
+ "theme.blog.paginator.olderEntries": {
+ "message": "较旧的博文",
+ "description": "The label used to navigate to the older blog posts page (next page)"
+ },
+ "theme.blog.post.paginator.navAriaLabel": {
+ "message": "博文分页导航",
+ "description": "The ARIA label for the blog posts pagination"
+ },
+ "theme.blog.post.paginator.newerPost": {
+ "message": "较新一篇",
+ "description": "The blog post button label to navigate to the newer/previous post"
+ },
+ "theme.blog.post.paginator.olderPost": {
+ "message": "较旧一篇",
+ "description": "The blog post button label to navigate to the older/next post"
+ },
+ "theme.tags.tagsPageLink": {
+ "message": "查看所有标签",
+ "description": "The label of the link targeting the tag list page"
+ },
+ "theme.colorToggle.ariaLabel": {
+ "message": "切换浅色/暗黑模式(当前为{mode})",
+ "description": "The ARIA label for the navbar color mode toggle"
+ },
+ "theme.colorToggle.ariaLabel.mode.dark": {
+ "message": "暗黑模式",
+ "description": "The name for the dark color mode"
+ },
+ "theme.colorToggle.ariaLabel.mode.light": {
+ "message": "浅色模式",
+ "description": "The name for the light color mode"
+ },
+ "theme.docs.breadcrumbs.navAriaLabel": {
+ "message": "页面路径",
+ "description": "The ARIA label for the breadcrumbs"
+ },
+ "theme.docs.DocCard.categoryDescription.plurals": {
+ "message": "{count} 个项目",
+ "description": "The default description for a category card in the generated index about how many items this category includes"
+ },
+ "theme.docs.paginator.navAriaLabel": {
+ "message": "文件选项卡",
+ "description": "The ARIA label for the docs pagination"
+ },
+ "theme.docs.paginator.previous": {
+ "message": "上一页",
+ "description": "The label used to navigate to the previous doc"
+ },
+ "theme.docs.paginator.next": {
+ "message": "下一页",
+ "description": "The label used to navigate to the next doc"
+ },
+ "theme.docs.tagDocListPageTitle.nDocsTagged": {
+ "message": "{count} 篇文档带有标签",
+ "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.docs.tagDocListPageTitle": {
+ "message": "{nDocsTagged}「{tagName}」",
+ "description": "The title of the page for a docs tag"
+ },
+ "theme.docs.versionBadge.label": {
+ "message": "版本:{versionLabel}"
+ },
+ "theme.docs.versions.unreleasedVersionLabel": {
+ "message": "此为 {siteTitle} {versionLabel} 版尚未发行的文档。",
+ "description": "The label used to tell the user that he's browsing an unreleased doc version"
+ },
+ "theme.docs.versions.unmaintainedVersionLabel": {
+ "message": "此为 {siteTitle} {versionLabel} 版的文档,现已不再积极维护。",
+ "description": "The label used to tell the user that he's browsing an unmaintained doc version"
+ },
+ "theme.docs.versions.latestVersionSuggestionLabel": {
+ "message": "最新的文档请参阅 {latestVersionLink} ({versionLabel})。",
+ "description": "The label used to tell the user to check the latest version"
+ },
+ "theme.docs.versions.latestVersionLinkLabel": {
+ "message": "最新版本",
+ "description": "The label used for the latest version suggestion link label"
+ },
+ "theme.common.editThisPage": {
+ "message": "编辑此页",
+ "description": "The link label to edit the current page"
+ },
+ "theme.common.headingLinkTitle": {
+ "message": "{heading}的直接链接",
+ "description": "Title for link to heading"
+ },
+ "theme.lastUpdated.atDate": {
+ "message": "于 {date} ",
+ "description": "The words used to describe on which date a page has been last updated"
+ },
+ "theme.lastUpdated.byUser": {
+ "message": "由 {user} ",
+ "description": "The words used to describe by who the page has been last updated"
+ },
+ "theme.lastUpdated.lastUpdatedAtBy": {
+ "message": "最后{byUser}{atDate}更新",
+ "description": "The sentence used to display when a page has been last updated, and by who"
+ },
+ "theme.navbar.mobileVersionsDropdown.label": {
+ "message": "选择版本",
+ "description": "The label for the navbar versions dropdown on mobile view"
+ },
+ "theme.NotFound.title": {
+ "message": "找不到页面",
+ "description": "The title of the 404 page"
+ },
+ "theme.tags.tagsListLabel": {
+ "message": "标签:",
+ "description": "The label alongside a tag list"
+ },
+ "theme.admonition.caution": {
+ "message": "警告",
+ "description": "The default label used for the Caution admonition (:::caution)"
+ },
+ "theme.admonition.danger": {
+ "message": "危险",
+ "description": "The default label used for the Danger admonition (:::danger)"
+ },
+ "theme.admonition.info": {
+ "message": "信息",
+ "description": "The default label used for the Info admonition (:::info)"
+ },
+ "theme.admonition.note": {
+ "message": "备注",
+ "description": "The default label used for the Note admonition (:::note)"
+ },
+ "theme.admonition.tip": {
+ "message": "提示",
+ "description": "The default label used for the Tip admonition (:::tip)"
+ },
+ "theme.admonition.warning": {
+ "message": "注意",
+ "description": "The default label used for the Warning admonition (:::warning)"
+ },
+ "theme.AnnouncementBar.closeButtonAriaLabel": {
+ "message": "关闭",
+ "description": "The ARIA label for close button of announcement bar"
+ },
+ "theme.blog.sidebar.navAriaLabel": {
+ "message": "最近博文导航",
+ "description": "The ARIA label for recent posts in the blog sidebar"
+ },
+ "theme.CodeBlock.copied": {
+ "message": "复制成功",
+ "description": "The copied button label on code blocks"
+ },
+ "theme.CodeBlock.copyButtonAriaLabel": {
+ "message": "复制代码到剪贴板",
+ "description": "The ARIA label for copy code blocks button"
+ },
+ "theme.CodeBlock.copy": {
+ "message": "复制",
+ "description": "The copy button label on code blocks"
+ },
+ "theme.CodeBlock.wordWrapToggle": {
+ "message": "切换自动换行",
+ "description": "The title attribute for toggle word wrapping button of code block lines"
+ },
+ "theme.DocSidebarItem.expandCategoryAriaLabel": {
+ "message": "展开侧边栏分类 '{label}'",
+ "description": "The ARIA label to expand the sidebar category"
+ },
+ "theme.DocSidebarItem.collapseCategoryAriaLabel": {
+ "message": "折叠侧边栏分类 '{label}'",
+ "description": "The ARIA label to collapse the sidebar category"
+ },
+ "theme.NavBar.navAriaLabel": {
+ "message": "主导航",
+ "description": "The ARIA label for the main navigation"
+ },
+ "theme.navbar.mobileLanguageDropdown.label": {
+ "message": "选择语言",
+ "description": "The label for the mobile language switcher dropdown"
+ },
+ "theme.NotFound.p1": {
+ "message": "我们找不到您要找的页面。",
+ "description": "The first paragraph of the 404 page"
+ },
+ "theme.NotFound.p2": {
+ "message": "请联系原始链接来源网站的所有者,并告知他们链接已损坏。",
+ "description": "The 2nd paragraph of the 404 page"
+ },
+ "theme.TOCCollapsible.toggleButtonLabel": {
+ "message": "本页总览",
+ "description": "The label used by the button on the collapsible TOC component"
+ },
+ "theme.blog.post.readMore": {
+ "message": "阅读更多",
+ "description": "The label used in blog post item excerpts to link to full blog posts"
+ },
+ "theme.blog.post.readMoreLabel": {
+ "message": "阅读 {title} 的全文",
+ "description": "The ARIA label for the link to full blog posts from excerpts"
+ },
+ "theme.blog.post.readingTime.plurals": {
+ "message": "阅读需 {readingTime} 分钟",
+ "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.docs.breadcrumbs.home": {
+ "message": "主页面",
+ "description": "The ARIA label for the home page in the breadcrumbs"
+ },
+ "theme.docs.sidebar.collapseButtonTitle": {
+ "message": "收起侧边栏",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.collapseButtonAriaLabel": {
+ "message": "收起侧边栏",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.navAriaLabel": {
+ "message": "文档侧边栏",
+ "description": "The ARIA label for the sidebar navigation"
+ },
+ "theme.docs.sidebar.closeSidebarButtonAriaLabel": {
+ "message": "关闭导航栏",
+ "description": "The ARIA label for close button of mobile sidebar"
+ },
+ "theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
+ "message": "切换导航栏",
+ "description": "The ARIA label for hamburger menu button of mobile navigation"
+ },
+ "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
+ "message": "← 回到主菜单",
+ "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
+ },
+ "theme.docs.sidebar.expandButtonTitle": {
+ "message": "展开侧边栏",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.docs.sidebar.expandButtonAriaLabel": {
+ "message": "展开侧边栏",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.SearchBar.noResultsText": {
+ "message": "没有找到任何文档"
+ },
+ "theme.SearchBar.seeAllOutsideContext": {
+ "message": "See results outside {context}"
+ },
+ "theme.SearchBar.searchInContext": {
+ "message": "See all results in {context}"
+ },
+ "theme.SearchBar.seeAll": {
+ "message": "查看全部结果"
+ },
+ "theme.SearchBar.label": {
+ "message": "搜索",
+ "description": "The ARIA label and placeholder for search button"
+ },
+ "theme.SearchPage.existingResultsTitle": {
+ "message": "“{query}” 的搜索结果",
+ "description": "The search page title for non-empty query"
+ },
+ "theme.SearchPage.emptyResultsTitle": {
+ "message": "搜索文档",
+ "description": "The search page title for empty query"
+ },
+ "theme.SearchPage.searchContext.everywhere": {
+ "message": "everywhere"
+ },
+ "theme.SearchPage.documentsFound.plurals": {
+ "message": "共找到 {count} 篇文档",
+ "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.SearchPage.noResultsText": {
+ "message": "没有找到任何文档",
+ "description": "The paragraph for empty search result"
+ },
+ "theme.blog.post.plurals": {
+ "message": "{count} 篇博文",
+ "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.blog.tagTitle": {
+ "message": "{nPosts} 含有标签「{tagName}」",
+ "description": "The title of the page for a blog tag"
+ },
+ "theme.blog.author.pageTitle": {
+ "message": "{authorName} - {nPosts}",
+ "description": "The title of the page for a blog author"
+ },
+ "theme.blog.authorsList.pageTitle": {
+ "message": "Authors",
+ "description": "The title of the authors page"
+ },
+ "theme.blog.authorsList.viewAll": {
+ "message": "View All Authors",
+ "description": "The label of the link targeting the blog authors page"
+ },
+ "theme.contentVisibility.unlistedBanner.title": {
+ "message": "未列出页",
+ "description": "The unlisted content banner title"
+ },
+ "theme.contentVisibility.unlistedBanner.message": {
+ "message": "此页面未列出。搜索引擎不会对其索引,只有拥有直接链接的用户才能访问。",
+ "description": "The unlisted content banner message"
+ },
+ "theme.contentVisibility.draftBanner.title": {
+ "message": "Draft page",
+ "description": "The draft content banner title"
+ },
+ "theme.contentVisibility.draftBanner.message": {
+ "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.",
+ "description": "The draft content banner message"
+ },
+ "theme.ErrorPageContent.tryAgain": {
+ "message": "重试",
+ "description": "The label of the button to try again rendering when the React error boundary captures an error"
+ },
+ "theme.common.skipToMainContent": {
+ "message": "跳到主要内容",
+ "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
+ },
+ "theme.tags.tagsPageTitle": {
+ "message": "标签",
+ "description": "The title of the tag list page"
+ }
+}
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current.json b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 0000000..ae2911a
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,94 @@
+{
+ "version.label": {
+ "message": "下一个",
+ "description": "The label for version current"
+ },
+ "sidebar.homeSidebar.category.User Documentation": {
+ "message": "用户文档",
+ "description": "The label for category User Documentation in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.User Documentation.link.generated-index.description": {
+ "message": "Millennium 入门指南",
+ "description": "The generated-index page description for category User Documentation in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Development": {
+ "message": "开发",
+ "description": "The label for category Development in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Development.link.generated-index.description": {
+ "message": "让我们了解如何为 Millennium 社区做贡献!",
+ "description": "The generated-index page description for category Development in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Creating Themes": {
+ "message": "创建主题",
+ "description": "The label for category Creating Themes in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Creating Themes.link.generated-index.description": {
+ "message": "为 Millennium 创建主题既有趣又有成就感。让我们开始吧!",
+ "description": "The generated-index page description for category Creating Themes in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Creating Plugins": {
+ "message": "创建插件",
+ "description": "The label for category Creating Plugins in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Creating Plugins.link.generated-index.description": {
+ "message": "为 Millennium 开发插件既充满乐趣又富有成就感,让我们开始吧!",
+ "description": "The generated-index page description for category Creating Plugins in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Python Reference": {
+ "message": "Python 参考",
+ "description": "The label for category Python Reference in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Python Reference.link.generated-index.description": {
+ "message": "为 Millennium 开发插件既充满乐趣又富有成就感,让我们开始吧!",
+ "description": "The generated-index page description for category Python Reference in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.TypeScript Reference": {
+ "message": "TypeScript 参考",
+ "description": "The label for category TypeScript Reference in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.TypeScript Reference.link.generated-index.description": {
+ "message": "为 Millennium 开发插件既充满乐趣又富有成就感,让我们开始吧!",
+ "description": "The generated-index page description for category TypeScript Reference in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.@steambrew/client": {
+ "message": "@steambrew/client",
+ "description": "The label for category @steambrew/client in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.@steambrew/client.link.generated-index.description": {
+ "message": "一个用于 Steam 客户端侧的插件工具库。",
+ "description": "The generated-index page description for category @steambrew/client in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.UI Components": {
+ "message": "UI 组件",
+ "description": "The label for category UI Components in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Core": {
+ "message": "Core",
+ "description": "The label for category Core in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Enums": {
+ "message": "枚举",
+ "description": "The label for category Enums in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Functions": {
+ "message": "函数",
+ "description": "The label for category Functions in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Types": {
+ "message": "类型",
+ "description": "The label for category Types in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.Variables": {
+ "message": "变量",
+ "description": "The label for category Variables in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.@steambrew/webkit": {
+ "message": "@steambrew/webkit",
+ "description": "The label for category @steambrew/webkit in sidebar homeSidebar"
+ },
+ "sidebar.homeSidebar.category.@steambrew/webkit.link.generated-index.description": {
+ "message": "一个用于 Steam 网页/服务端的插件工具库。",
+ "description": "The generated-index page description for category @steambrew/webkit in sidebar homeSidebar"
+ }
+}
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/about.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/about.md
new file mode 100644
index 0000000..a9269d7
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/about.md
@@ -0,0 +1,16 @@
+# 关于 Millennium
+
+## Millennium 是什么?
+Millennium(于2023年4月正式发布)是一款开源的低代码修改框架,支持用户无需底层交互即可为 Steam 桌面客户端创建、管理和使用主题/插件。
+
+## Millennium 如何工作?
+Millennium 的运行机制基于 Steam 客户端内部的若干技术特性实现其功能。
+
+Steam客户端支持远程CEF调试功能,该功能将Chrome开发者工具本地暴露给用户系统。Millennium正是基于此特性,将其作为与客户端交互的通道。
+
+正如[非官方文档](https://chromedevtools.github.io/devtools-protocol/)所述,我们无需修改 Steam 内部内存即可通过编程方式与客户端交互。这使我们能够创建一个 SDK,用于向上下文窗口注入 CSS 和 JS。
+
+## 为什么 Millennium 采用 DLL 形式?
+正如前文所述,基于补丁机制的设计,我们需要一个持续运行的线程/进程来维持窗口控制。但我们强烈反对在后台运行独立进程与 Steam 客户端共存,因此选择了替代方案。
+
+Millennium 的核心二进制文件 **User32.dll** 并非通过独立的进程加载,而是借助 Steam 客户端自身的机制。它不实用任何 DLL 注入技术,也不会永久改变 Steam 客户端的状态。其实现方式是利用 Steam 开发者在很久以前遗留在应用中的一个特性。Steam 客户端尝试加载 user32.dll(Windows API 的主库)以支持一个已经被弃用但尚未删除的颜色接口。这意味着如果我们创建自己的库并模仿 Windows API 的入口点,我们就可以劫持这个连接,并在 Steam 进程中启动自己的线程。
\ No newline at end of file
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/intro.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/intro.md
new file mode 100644
index 0000000..f714e12
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/intro.md
@@ -0,0 +1,13 @@
+---
+sidebar_position: 2
+sidebar_collapsed: true
+title: 开始使用
+---
+
+# 概览
+
+目前,Millennium 支持一种主要的 Steam 客户端插件类型:主题。主题能够通过自定义 CSS 来改变 Steam 客户端的外观、去除杂乱元素或实现任何您想要的界面修改!
+
+## 主题
+
+主题的功能正如其名,无需过多背景知识。与其他应用程序的主题加载器类似,Millennium 旨在让主题制作变得尽可能简单。
\ No newline at end of file
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/learn.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/learn.md
new file mode 100644
index 0000000..a5a03a6
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/learn.md
@@ -0,0 +1,19 @@
+---
+title: 介绍
+---
+# 介绍
+
+Millennium 使我们能够通过插件修改 Steam 客户端的部分功能。这些插件包含两个主要部分:用 TypeScript 编写的前端和用 Python 编写的后端。前端负责与 Steam 用户界面交互,而后端则可以与终端用户的电脑系统进行交互。
+
+是否需要同时具备后端和前端?简而言之,并非必须。与 Steam 交互的大部分代码通过 TypeScript 即可实现。后端与前端的设计初衷是构建两种语言间的无缝衔接——后端主要用于与用户 PC 系统交互,而前端则专注于 Steam 客户端内部的功能调用。
+
+# 开始使用
+
+创建插件是一个非常简单直接的过程,只需按照 Millennium 代码库中[插件示例](https://github.com/SteamClientHomebrew/Millennium/tree/main/examples/plugin#readme)提供的 README 说明操作即可。
+
+## API 参考
+
+* [Python API](/developers/plugins/python)
+ * 主文件 `backend/main.py`
+* [TypeScript API](/developers/plugins/typescript)
+ * 主文件 `frontend/index.tsx`
\ No newline at end of file
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/packages.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/packages.md
new file mode 100644
index 0000000..ef9a1a4
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/packages.md
@@ -0,0 +1,26 @@
+---
+title: 包管理
+---
+# 包管理
+
+Python 包管理通过 PIP 实现。Millennium 会从插件根目录的 `requirements.txt` 文件中读取所需的 Python 包。
+该文件语法与 PIP 常规管理方式类似,但存在细微差异。
+
+## 示例
+
+每个所需包需独占一行写入文件。
+`|` 符号用于指定该包应安装的特定平台。
+
+```json title="Example format"
+package_name_to_be_installed_on_all_platforms
+windows_package | Windows
+macos_package | Darwin
+linux_package | Linux
+```
+
+```json title="Example requirements.txt"
+psutil
+pywin32 | Windows
+```
+
+将包添加至 requirements.txt 后,即可在 Python 代码中调用。
\ No newline at end of file
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/_category_.json b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/_category_.json
new file mode 100644
index 0000000..0fa1a3b
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Python API",
+ "position": 1,
+ "link": {
+ "type": "generated-index"
+ }
+}
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/add-css.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/add-css.md
new file mode 100644
index 0000000..7ea9498
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/add-css.md
@@ -0,0 +1,15 @@
+# add_browser_css()
+Add a CSS module to the steam store/community
+
+|Parameter|Type|Description|
+|-----|:------:|-----------|
+|css_relative_path|str|The desired css modules relative path|
+
+## Relative Paths
+
+CSS module path's are resolved from `%steam%/steamui` and all CSS modules must reside there.
+#### Example:
+```py
+# absolute path C:/Program Files (x86)/Steam/steamui/module.css
+Millennium.add_browser_css("module.css")
+```
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/add-js.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/add-js.md
new file mode 100644
index 0000000..bdf616e
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/add-js.md
@@ -0,0 +1,15 @@
+# add_browser_js()
+Add a JS module to the steam store/community
+
+|Parameter|Type|Description|
+|-----|:------:|-----------|
+|js_relative_path|str|The desired JS modules relative path|
+
+## Relative Paths
+
+JS module path's are resolved from `%steam%/steamui` and all JS modules must reside there.
+#### Example:
+```py
+# absolute path C:/Program Files (x86)/Steam/steamui/module.js
+Millennium.add_browser_js("module.js")
+```
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/call-method.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/call-method.md
new file mode 100644
index 0000000..99be538
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/call-method.md
@@ -0,0 +1,27 @@
+# call_frontend_method()
+
+Call a frontend method (Javascript Method) with list of params. The order of the parameters are important
+### Example usage:
+
+#### Backend Implementation
+```py title="backend/main.py"
+value = Millennium.call_frontend_method("classname.method", params=[18, "USA"])
+print(value) -> "method called"
+```
+
+#### Frontend Implementation:
+
+```js title="frontend/index.jsx"
+class classname {
+static method(country: string, age: number) {
+ console.log(`age: ${age}, country: ${country}`);
+ return "method called"
+ }
+}
+Millennium.exposeObj({ classname })
+```
+
+### Notes:
+- `call_frontend_method` will not abide by your types set in a function in typescript. For example if your age param was a string
+ `params=["18", "USA"]` undefined behaviour may occur.
+- if in python you call this method with [bool, string] instead of [string, number] you will have to manage that yourself
\ No newline at end of file
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/ready.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/ready.md
new file mode 100644
index 0000000..43b3300
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/ready.md
@@ -0,0 +1,32 @@
+# ready()
+
+:::important
+Calling this function is required if you have a python backend in your plugin. If you chose to not have a python backend, set `useBackend` to `false` in your `plugin.json`
+:::
+
+Posts a message to millennium core, letting it know that the plugin is ready to be mounted.
+
+This function should be called once and only once during plugin initialization.
+It does not take any parameters and will always return True.
+
+
+## Notes:
+- This function is typically called within `_load()` or after all necessary
+components have been loaded to verify all plugin backends are loaded before starting up steam.
+
+
+- returns `True`
+
+#### Example:
+```py title="backend/main.py"
+class Plugin:
+ def _front_end_loaded(self):
+ pass
+
+ def _load(self):
+ Millennium.ready()
+ print("ready was called!")
+
+ def _unload(self):
+ pass
+```
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/remove-module.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/remove-module.md
new file mode 100644
index 0000000..ca06387
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/remove-module.md
@@ -0,0 +1,10 @@
+# remove_browser_module()
+Remove a module from the steam store/community.
+inputs an id returned from [add_browser_js || add_browser_css]
+
+|Parameter|Type|Description|
+|-----|:------:|-----------|
+|id|int|The id if the inserted module. Returned from [add_browser_css()](./add-css) or [add_browser_js()](./add-js) |
+
+- type `method`
+- returns `None`
\ No newline at end of file
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/set-setting.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/set-setting.md
new file mode 100644
index 0000000..8207b9a
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/set-setting.md
@@ -0,0 +1,11 @@
+# set_user_settings_key()
+Set, or update a key value pair in the user settings. If the inputted key does not exist, it is created, otherwise it is modified.
+
+
+|Parameter|Type|Description|
+|-----|:------:|-----------|
+|key|str|The desired key to update/create in user settings|
+|value|str|The value associated with the key|
+
+- type `method`
+- returns `str`
\ No newline at end of file
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/steam-path.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/steam-path.md
new file mode 100644
index 0000000..2728790
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/steam-path.md
@@ -0,0 +1,5 @@
+# steam_path()
+Retrieves the current Steam path. This path is garunteed to be the location where Steam is installed.
+
+- type `method`
+- returns `str`
\ No newline at end of file
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/user-settings.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/user-settings.md
new file mode 100644
index 0000000..f229d32
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/user-settings.md
@@ -0,0 +1,5 @@
+# get_user_settings()
+Retrieve the users local json settings and returns as python key-value dictionary.
+
+- type `method`
+- returns `dict`
\ No newline at end of file
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/version.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/version.md
new file mode 100644
index 0000000..7824a3a
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/python/version.md
@@ -0,0 +1,8 @@
+# version()
+Gets the current version of millennium
+
+The version string will always be in the Semantic Versioning format `major.minor.patch`.
+Read more about it [here](https://semver.org/).
+
+- type `method`
+- returns `str`
\ No newline at end of file
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/_category_.json b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/_category_.json
new file mode 100644
index 0000000..757b7da
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Javascript API",
+ "position": 2,
+ "link": {
+ "type": "generated-index"
+ }
+}
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/README.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/README.md
new file mode 100644
index 0000000..4efdeb0
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/README.md
@@ -0,0 +1,226 @@
+**@steambrew/client v4.2.1**
+
+***
+
+# @steambrew/client v4.2.1
+
+## Enumerations
+
+- [DisplayStatus](enumerations/DisplayStatus.md)
+- [GamepadButton](enumerations/GamepadButton.md)
+- [NavEntryPositionPreferences](enumerations/NavEntryPositionPreferences.md)
+- [QuickAccessTab](enumerations/QuickAccessTab.md)
+- [SideMenu](enumerations/SideMenu.md)
+
+## Interfaces
+
+- [AppDetails](interfaces/AppDetails.md)
+- [Apps](interfaces/Apps.md)
+- [ButtonItemProps](interfaces/ButtonItemProps.md)
+- [ButtonProps](interfaces/ButtonProps.md)
+- [CarouselProps](interfaces/CarouselProps.md)
+- [ClassModule](interfaces/ClassModule.md)
+- [ColorPickerModalProps](interfaces/ColorPickerModalProps.md)
+- [ConfirmModalProps](interfaces/ConfirmModalProps.md)
+- [ControlsListProps](interfaces/ControlsListProps.md)
+- [DialogButtonProps](interfaces/DialogButtonProps.md)
+- [DialogCheckboxProps](interfaces/DialogCheckboxProps.md)
+- [DialogCommonProps](interfaces/DialogCommonProps.md)
+- [DropdownItemProps](interfaces/DropdownItemProps.md)
+- [DropdownMenuPositionOptions](interfaces/DropdownMenuPositionOptions.md)
+- [DropdownProps](interfaces/DropdownProps.md)
+- [FieldProps](interfaces/FieldProps.md)
+- [findInTreeOpts](interfaces/findInTreeOpts.md)
+- [FocusableProps](interfaces/FocusableProps.md)
+- [FocusRingProps](interfaces/FocusRingProps.md)
+- [FooterLegendProps](interfaces/FooterLegendProps.md)
+- [GamepadEventDetail](interfaces/GamepadEventDetail.md)
+- [LifetimeNotification](interfaces/LifetimeNotification.md)
+- [LogoPosition](interfaces/LogoPosition.md)
+- [MarqueeProps](interfaces/MarqueeProps.md)
+- [MenuGroupProps](interfaces/MenuGroupProps.md)
+- [MenuItemProps](interfaces/MenuItemProps.md)
+- [MenuProps](interfaces/MenuProps.md)
+- [MenuStore](interfaces/MenuStore.md)
+- [ModalRootProps](interfaces/ModalRootProps.md)
+- [MultiDropdownOption](interfaces/MultiDropdownOption.md)
+- [Navigation](interfaces/Navigation.md)
+- [NotchLabel](interfaces/NotchLabel.md)
+- [PanelSectionProps](interfaces/PanelSectionProps.md)
+- [PanelSectionRowProps](interfaces/PanelSectionRowProps.md)
+- [Patch](interfaces/Patch.md)
+- [PatchOptions](interfaces/PatchOptions.md)
+- [ProgressBarItemProps](interfaces/ProgressBarItemProps.md)
+- [ProgressBarProps](interfaces/ProgressBarProps.md)
+- [ProgressBarWithInfoProps](interfaces/ProgressBarWithInfoProps.md)
+- [Router](interfaces/Router.md)
+- [ShowModalProps](interfaces/ShowModalProps.md)
+- [ShowModalResult](interfaces/ShowModalResult.md)
+- [SidebarNavigationPage](interfaces/SidebarNavigationPage.md)
+- [SidebarNavigationProps](interfaces/SidebarNavigationProps.md)
+- [SimpleModalProps](interfaces/SimpleModalProps.md)
+- [SingleDropdownOption](interfaces/SingleDropdownOption.md)
+- [SliderFieldProps](interfaces/SliderFieldProps.md)
+- [SteamAppOverview](interfaces/SteamAppOverview.md)
+- [SteamClient](interfaces/SteamClient.md)
+- [SteamShortcut](interfaces/SteamShortcut.md)
+- [SteamSpinnerProps](interfaces/SteamSpinnerProps.md)
+- [SuspensefulImageProps](interfaces/SuspensefulImageProps.md)
+- [Tab](interfaces/Tab.md)
+- [TabsProps](interfaces/TabsProps.md)
+- [TextFieldProps](interfaces/TextFieldProps.md)
+- [ToggleFieldProps](interfaces/ToggleFieldProps.md)
+- [ToggleProps](interfaces/ToggleProps.md)
+- [Window](interfaces/Window.md)
+- [WindowRouter](interfaces/WindowRouter.md)
+- [WindowStore](interfaces/WindowStore.md)
+
+## Type Aliases
+
+- [AchievementListClasses](type-aliases/AchievementListClasses.md)
+- [AchievementPageClasses](type-aliases/AchievementPageClasses.md)
+- [ActionDescriptionMap](type-aliases/ActionDescriptionMap.md)
+- [AppAchievements](type-aliases/AppAchievements.md)
+- [AppActionButtonClasses](type-aliases/AppActionButtonClasses.md)
+- [AppDetailsClasses](type-aliases/AppDetailsClasses.md)
+- [AppDetailsHeaderClasses](type-aliases/AppDetailsHeaderClasses.md)
+- [AppLanguages](type-aliases/AppLanguages.md)
+- [AppOverview](type-aliases/AppOverview.md)
+- [BasicAppDetailsSectionStylerClasses](type-aliases/BasicAppDetailsSectionStylerClasses.md)
+- [DropdownOption](type-aliases/DropdownOption.md)
+- [findInTreeFilter](type-aliases/findInTreeFilter.md)
+- [FocusRingClasses](type-aliases/FocusRingClasses.md)
+- [FooterClasses](type-aliases/FooterClasses.md)
+- [GamepadContextMenuClasses](type-aliases/GamepadContextMenuClasses.md)
+- [GamepadDialogClasses](type-aliases/GamepadDialogClasses.md)
+- [GamepadEvent](type-aliases/GamepadEvent.md)
+- [GamepadLibraryClasses](type-aliases/GamepadLibraryClasses.md)
+- [GamepadSliderClasses](type-aliases/GamepadSliderClasses.md)
+- [GamepadTabbedPageClasses](type-aliases/GamepadTabbedPageClasses.md)
+- [GamepadUIClasses](type-aliases/GamepadUIClasses.md)
+- [GenericPatchHandler](type-aliases/GenericPatchHandler.md)
+- [IPC\_types](type-aliases/IPC_types.md)
+- [LibraryAssetImageClasses](type-aliases/LibraryAssetImageClasses.md)
+- [LogoPinPositions](type-aliases/LogoPinPositions.md)
+- [MainBrowserClasses](type-aliases/MainBrowserClasses.md)
+- [MainMenuAppRunningClasses](type-aliases/MainMenuAppRunningClasses.md)
+- [Millennium](type-aliases/Millennium.md)
+- [PlaySectionClasses](type-aliases/PlaySectionClasses.md)
+- [QuickAccessControlsClasses](type-aliases/QuickAccessControlsClasses.md)
+- [QuickAccessMenuClasses](type-aliases/QuickAccessMenuClasses.md)
+- [ReorderableEntry](type-aliases/ReorderableEntry.md)
+- [ReorderableListEntryProps](type-aliases/ReorderableListEntryProps.md)
+- [ReorderableListProps](type-aliases/ReorderableListProps.md)
+- [ScrollPanelClasses](type-aliases/ScrollPanelClasses.md)
+- [SearchBarClasses](type-aliases/SearchBarClasses.md)
+- [SteamSpinnerClasses](type-aliases/SteamSpinnerClasses.md)
+- [UpdaterFieldClasses](type-aliases/UpdaterFieldClasses.md)
+
+## Variables
+
+- [~~achievementClasses~~](variables/achievementClasses.md)
+- [achievementListClasses](variables/achievementListClasses.md)
+- [achievementPageClasses](variables/achievementPageClasses.md)
+- [appActionButtonClasses](variables/appActionButtonClasses.md)
+- [appDetailsClasses](variables/appDetailsClasses.md)
+- [appDetailsHeaderClasses](variables/appDetailsHeaderClasses.md)
+- [basicAppDetailsSectionStylerClasses](variables/basicAppDetailsSectionStylerClasses.md)
+- [callOriginal](variables/callOriginal.md)
+- [Classes](variables/Classes.md)
+- [classMap](variables/classMap.md)
+- [classMapList](variables/classMapList.md)
+- [focusRingClasses](variables/focusRingClasses.md)
+- [footerClasses](variables/footerClasses.md)
+- [gamepadContextMenuClasses](variables/gamepadContextMenuClasses.md)
+- [gamepadDialogClasses](variables/gamepadDialogClasses.md)
+- [gamepadLibraryClasses](variables/gamepadLibraryClasses.md)
+- [gamepadSliderClasses](variables/gamepadSliderClasses.md)
+- [gamepadTabbedPageClasses](variables/gamepadTabbedPageClasses.md)
+- [gamepadUIClasses](variables/gamepadUIClasses.md)
+- [libraryAssetImageClasses](variables/libraryAssetImageClasses.md)
+- [mainBrowserClasses](variables/mainBrowserClasses.md)
+- [mainMenuAppRunningClasses](variables/mainMenuAppRunningClasses.md)
+- [Millennium](variables/Millennium.md)
+- [Navigation](variables/Navigation.md)
+- [playSectionClasses](variables/playSectionClasses.md)
+- [pluginSelf](variables/pluginSelf.md)
+- [quickAccessControlsClasses](variables/quickAccessControlsClasses.md)
+- [quickAccessMenuClasses](variables/quickAccessMenuClasses.md)
+- [Router](variables/Router.md)
+- [~~scrollClasses~~](variables/scrollClasses.md)
+- [scrollPanelClasses](variables/scrollPanelClasses.md)
+- [searchBarClasses](variables/searchBarClasses.md)
+- [~~staticClasses~~](variables/staticClasses.md)
+- [steamSpinnerClasses](variables/steamSpinnerClasses.md)
+- [updaterFieldClasses](variables/updaterFieldClasses.md)
+
+## Functions
+
+- [afterPatch](functions/afterPatch.md)
+- [beforePatch](functions/beforePatch.md)
+- [Button](functions/Button.md)
+- [ButtonItem](functions/ButtonItem.md)
+- [callable](functions/callable.md)
+- [Carousel](functions/Carousel.md)
+- [ColorPickerModal](functions/ColorPickerModal.md)
+- [ConfirmModal](functions/ConfirmModal.md)
+- [ControlsList](functions/ControlsList.md)
+- [createPropListRegex](functions/createPropListRegex.md)
+- [DialogBody](functions/DialogBody.md)
+- [DialogBodyText](functions/DialogBodyText.md)
+- [DialogButton](functions/DialogButton.md)
+- [DialogButtonPrimary](functions/DialogButtonPrimary.md)
+- [DialogButtonSecondary](functions/DialogButtonSecondary.md)
+- [DialogCheckbox](functions/DialogCheckbox.md)
+- [DialogControlsSection](functions/DialogControlsSection.md)
+- [DialogControlsSectionHeader](functions/DialogControlsSectionHeader.md)
+- [DialogFooter](functions/DialogFooter.md)
+- [DialogHeader](functions/DialogHeader.md)
+- [DialogLabel](functions/DialogLabel.md)
+- [DialogSubHeader](functions/DialogSubHeader.md)
+- [Dropdown](functions/Dropdown.md)
+- [DropdownItem](functions/DropdownItem.md)
+- [fakeRenderComponent](functions/fakeRenderComponent.md)
+- [Field](functions/Field.md)
+- [findClass](functions/findClass.md)
+- [findClassModule](functions/findClassModule.md)
+- [findInReactTree](functions/findInReactTree.md)
+- [findInTree](functions/findInTree.md)
+- [findSP](functions/findSP.md)
+- [Focusable](functions/Focusable.md)
+- [FocusRing](functions/FocusRing.md)
+- [getFocusNavController](functions/getFocusNavController.md)
+- [getGamepadNavigationTrees](functions/getGamepadNavigationTrees.md)
+- [getReactInstance](functions/getReactInstance.md)
+- [getReactRoot](functions/getReactRoot.md)
+- [joinClassNames](functions/joinClassNames.md)
+- [Marquee](functions/Marquee.md)
+- [Menu](functions/Menu.md)
+- [MenuItem](functions/MenuItem.md)
+- [ModalPosition](functions/ModalPosition.md)
+- [ModalRoot](functions/ModalRoot.md)
+- [PanelSection](functions/PanelSection.md)
+- [PanelSectionRow](functions/PanelSectionRow.md)
+- [ProgressBar](functions/ProgressBar.md)
+- [ProgressBarItem](functions/ProgressBarItem.md)
+- [ProgressBarWithInfo](functions/ProgressBarWithInfo.md)
+- [ReorderableList](functions/ReorderableList.md)
+- [replacePatch](functions/replacePatch.md)
+- [ScrollPanel](functions/ScrollPanel.md)
+- [ScrollPanelGroup](functions/ScrollPanelGroup.md)
+- [showContextMenu](functions/showContextMenu.md)
+- [showModal](functions/showModal.md)
+- [SidebarNavigation](functions/SidebarNavigation.md)
+- [SimpleModal](functions/SimpleModal.md)
+- [sleep](functions/sleep.md)
+- [SliderField](functions/SliderField.md)
+- [Spinner](functions/Spinner.md)
+- [SteamSpinner](functions/SteamSpinner.md)
+- [SuspensefulImage](functions/SuspensefulImage.md)
+- [Tabs](functions/Tabs.md)
+- [TextField](functions/TextField.md)
+- [Toggle](functions/Toggle.md)
+- [ToggleField](functions/ToggleField.md)
+- [unminifyClass](functions/unminifyClass.md)
+- [wrapReactClass](functions/wrapReactClass.md)
+- [wrapReactType](functions/wrapReactType.md)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/DisplayStatus.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/DisplayStatus.md
new file mode 100644
index 0000000..7bf19c9
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/DisplayStatus.md
@@ -0,0 +1,48 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Enumeration: DisplayStatus
+
+Defined in: [src/modules/Router.ts:22](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/modules/Router.ts#L22)
+
+## Enumeration Members
+
+| Enumeration Member | Value |
+| ------ | ------ |
+| `AvailForFree` | `28` |
+| `AvailGuestPass` | `30` |
+| `AvailToBorrow` | `29` |
+| `BorrowerLocked` | `17` |
+| `CloudError` | `34` |
+| `CloudOutOfDate` | `35` |
+| `DownloadDisabled` | `25` |
+| `Downloading` | `7` |
+| `DownloadPaused` | `22` |
+| `DownloadQueued` | `23` |
+| `DownloadRequired` | `24` |
+| `Installing` | `3` |
+| `Invalid` | `0` |
+| `InvalidPlatform` | `14` |
+| `Launching` | `1` |
+| `LicenseExpired` | `27` |
+| `LicensePending` | `26` |
+| `NotLaunchable` | `33` |
+| `PreloadComplete` | `16` |
+| `PresaleOnly` | `13` |
+| `Purchase` | `31` |
+| `ReadyToInstall` | `9` |
+| `ReadyToLaunch` | `11` |
+| `ReadyToPreload` | `10` |
+| `RegionRestricted` | `12` |
+| `Running` | `4` |
+| `Synchronizing` | `8` |
+| `Terminating` | `36` |
+| `Unavailable` | `32` |
+| `Uninstalling` | `2` |
+| `UpdateDisabled` | `21` |
+| `UpdatePaused` | `18` |
+| `UpdateQueued` | `19` |
+| `UpdateRequired` | `20` |
+| `Updating` | `6` |
+| `Validating` | `5` |
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/GamepadButton.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/GamepadButton.md
new file mode 100644
index 0000000..d621147
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/GamepadButton.md
@@ -0,0 +1,41 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Enumeration: GamepadButton
+
+Defined in: [src/components/FooterLegend.ts:3](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L3)
+
+## Enumeration Members
+
+| Enumeration Member | Value |
+| ------ | ------ |
+| `BUMPER_LEFT` | `5` |
+| `BUMPER_RIGHT` | `6` |
+| `CANCEL` | `2` |
+| `DIR_DOWN` | `10` |
+| `DIR_LEFT` | `11` |
+| `DIR_RIGHT` | `12` |
+| `DIR_UP` | `9` |
+| `INVALID` | `0` |
+| `LPAD_CLICK` | `20` |
+| `LPAD_TOUCH` | `19` |
+| `LSTICK_CLICK` | `15` |
+| `LSTICK_TOUCH` | `17` |
+| `OK` | `1` |
+| `OPTIONS` | `4` |
+| `REAR_LEFT_LOWER` | `24` |
+| `REAR_LEFT_UPPER` | `23` |
+| `REAR_RIGHT_LOWER` | `26` |
+| `REAR_RIGHT_UPPER` | `25` |
+| `RPAD_CLICK` | `22` |
+| `RPAD_TOUCH` | `21` |
+| `RSTICK_CLICK` | `16` |
+| `RSTICK_TOUCH` | `18` |
+| `SECONDARY` | `3` |
+| `SELECT` | `13` |
+| `START` | `14` |
+| `STEAM_GUIDE` | `27` |
+| `STEAM_QUICK_MENU` | `28` |
+| `TRIGGER_LEFT` | `7` |
+| `TRIGGER_RIGHT` | `8` |
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/NavEntryPositionPreferences.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/NavEntryPositionPreferences.md
new file mode 100644
index 0000000..6321e2b
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/NavEntryPositionPreferences.md
@@ -0,0 +1,17 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Enumeration: NavEntryPositionPreferences
+
+Defined in: [src/components/FooterLegend.ts:34](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L34)
+
+## Enumeration Members
+
+| Enumeration Member | Value |
+| ------ | ------ |
+| `FIRST` | `number` |
+| `LAST` | `number` |
+| `MAINTAIN_X` | `number` |
+| `MAINTAIN_Y` | `number` |
+| `PREFERRED_CHILD` | `number` |
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/QuickAccessTab.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/QuickAccessTab.md
new file mode 100644
index 0000000..bb5c0ad
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/QuickAccessTab.md
@@ -0,0 +1,21 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Enumeration: QuickAccessTab
+
+Defined in: [src/modules/Router.ts:10](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/modules/Router.ts#L10)
+
+## Enumeration Members
+
+| Enumeration Member | Value |
+| ------ | ------ |
+| `Decky` | `999` |
+| `Friends` | `3` |
+| `Help` | `6` |
+| `Music` | `7` |
+| `Notifications` | `0` |
+| `Perf` | `5` |
+| `RemotePlayTogetherControls` | `1` |
+| `Settings` | `4` |
+| `VoiceChat` | `2` |
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/SideMenu.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/SideMenu.md
new file mode 100644
index 0000000..f00715e
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/enumerations/SideMenu.md
@@ -0,0 +1,15 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Enumeration: SideMenu
+
+Defined in: [src/modules/Router.ts:4](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/modules/Router.ts#L4)
+
+## Enumeration Members
+
+| Enumeration Member | Value |
+| ------ | ------ |
+| `Main` | `1` |
+| `None` | `0` |
+| `QuickAccess` | `2` |
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Button.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Button.md
new file mode 100644
index 0000000..cfdce9d
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Button.md
@@ -0,0 +1,33 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: Button()
+
+```ts
+function Button(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Button.ts:11](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Button.ts#L11)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`ButtonProps`](../interfaces/ButtonProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
+
+## Brief
+
+Button isn't exported, so call DialogButton to grab it
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ButtonItem.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ButtonItem.md
new file mode 100644
index 0000000..9e31313
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ButtonItem.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ButtonItem()
+
+```ts
+function ButtonItem(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/ButtonItem.ts:14](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ButtonItem.ts#L14)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`ButtonItemProps`](../interfaces/ButtonItemProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Carousel.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Carousel.md
new file mode 100644
index 0000000..2ea3ccf
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Carousel.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: Carousel()
+
+```ts
+function Carousel(props: PropsWithChildren>, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Carousel.ts:24](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L24)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`CarouselProps`](../interfaces/CarouselProps.md) & `RefAttributes`\<`HTMLDivElement`\>\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ColorPickerModal.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ColorPickerModal.md
new file mode 100644
index 0000000..54de5c4
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ColorPickerModal.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ColorPickerModal()
+
+```ts
+function ColorPickerModal(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/custom-components/ColorPickerModal.tsx:17](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/custom-components/ColorPickerModal.tsx#L17)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`ColorPickerModalProps`](../interfaces/ColorPickerModalProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ConfirmModal.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ConfirmModal.md
new file mode 100644
index 0000000..b350344
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ConfirmModal.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ConfirmModal()
+
+```ts
+function ConfirmModal(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Modal.tsx:88](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L88)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`ConfirmModalProps`](../interfaces/ConfirmModalProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ControlsList.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ControlsList.md
new file mode 100644
index 0000000..2dc371e
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ControlsList.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ControlsList()
+
+```ts
+function ControlsList(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/ControlsList.ts:12](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ControlsList.ts#L12)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`ControlsListProps`](../interfaces/ControlsListProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogBody.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogBody.md
new file mode 100644
index 0000000..b14c8d3
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogBody.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DialogBody()
+
+```ts
+function DialogBody(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dialog.ts:83](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L83)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DialogCommonProps`](../interfaces/DialogCommonProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogBodyText.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogBodyText.md
new file mode 100644
index 0000000..f38aec8
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogBodyText.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DialogBodyText()
+
+```ts
+function DialogBodyText(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dialog.ts:81](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L81)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DialogCommonProps`](../interfaces/DialogCommonProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogButton.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogButton.md
new file mode 100644
index 0000000..52bf5fa
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogButton.md
@@ -0,0 +1,34 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DialogButton()
+
+```ts
+function DialogButton(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dialog.ts:104](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L104)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DialogButtonProps`](../interfaces/DialogButtonProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
+
+## Brief
+
+This is the "main" button. The Primary can act as a submit button,
+therefore secondary is chosen (also for backwards comp. reasons)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogButtonPrimary.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogButtonPrimary.md
new file mode 100644
index 0000000..7148707
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogButtonPrimary.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DialogButtonPrimary()
+
+```ts
+function DialogButtonPrimary(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dialog.ts:90](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L90)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DialogButtonProps`](../interfaces/DialogButtonProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogButtonSecondary.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogButtonSecondary.md
new file mode 100644
index 0000000..88dc073
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogButtonSecondary.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DialogButtonSecondary()
+
+```ts
+function DialogButtonSecondary(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dialog.ts:94](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L94)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DialogButtonProps`](../interfaces/DialogButtonProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogCheckbox.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogCheckbox.md
new file mode 100644
index 0000000..1df761e
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogCheckbox.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DialogCheckbox()
+
+```ts
+function DialogCheckbox(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/DialogCheckbox.ts:22](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L22)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DialogCheckboxProps`](../interfaces/DialogCheckboxProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogControlsSection.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogControlsSection.md
new file mode 100644
index 0000000..bc02f8e
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogControlsSection.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DialogControlsSection()
+
+```ts
+function DialogControlsSection(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dialog.ts:85](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L85)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DialogCommonProps`](../interfaces/DialogCommonProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogControlsSectionHeader.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogControlsSectionHeader.md
new file mode 100644
index 0000000..5934eda
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogControlsSectionHeader.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DialogControlsSectionHeader()
+
+```ts
+function DialogControlsSectionHeader(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dialog.ts:87](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L87)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DialogCommonProps`](../interfaces/DialogCommonProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogFooter.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogFooter.md
new file mode 100644
index 0000000..6e19456
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogFooter.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DialogFooter()
+
+```ts
+function DialogFooter(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dialog.ts:77](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L77)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DialogCommonProps`](../interfaces/DialogCommonProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogHeader.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogHeader.md
new file mode 100644
index 0000000..3dacf4e
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogHeader.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DialogHeader()
+
+```ts
+function DialogHeader(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dialog.ts:73](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L73)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DialogCommonProps`](../interfaces/DialogCommonProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogLabel.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogLabel.md
new file mode 100644
index 0000000..3f721dd
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogLabel.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DialogLabel()
+
+```ts
+function DialogLabel(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dialog.ts:79](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L79)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DialogCommonProps`](../interfaces/DialogCommonProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogSubHeader.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogSubHeader.md
new file mode 100644
index 0000000..a0a76e1
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DialogSubHeader.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DialogSubHeader()
+
+```ts
+function DialogSubHeader(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dialog.ts:75](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L75)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DialogCommonProps`](../interfaces/DialogCommonProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Dropdown.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Dropdown.md
new file mode 100644
index 0000000..d67c576
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Dropdown.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: Dropdown()
+
+```ts
+function Dropdown(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dropdown.ts:43](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L43)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DropdownProps`](../interfaces/DropdownProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DropdownItem.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DropdownItem.md
new file mode 100644
index 0000000..41c6954
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/DropdownItem.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: DropdownItem()
+
+```ts
+function DropdownItem(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Dropdown.ts:52](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L52)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`DropdownItemProps`](../interfaces/DropdownItemProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Field.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Field.md
new file mode 100644
index 0000000..48080e4
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Field.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: Field()
+
+```ts
+function Field(props: PropsWithChildren>, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Field.ts:28](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L28)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`FieldProps`](../interfaces/FieldProps.md) & `RefAttributes`\<`HTMLDivElement`\>\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/FocusRing.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/FocusRing.md
new file mode 100644
index 0000000..dbddb82
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/FocusRing.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: FocusRing()
+
+```ts
+function FocusRing(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/FocusRing.ts:14](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FocusRing.ts#L14)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`FocusRingProps`](../interfaces/FocusRingProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Focusable.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Focusable.md
new file mode 100644
index 0000000..0774b27
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Focusable.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: Focusable()
+
+```ts
+function Focusable(props: PropsWithChildren>, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Focusable.ts:20](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Focusable.ts#L20)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`FocusableProps`](../interfaces/FocusableProps.md) & `RefAttributes`\<`HTMLDivElement`\>\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Marquee.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Marquee.md
new file mode 100644
index 0000000..08d0cab
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Marquee.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: Marquee()
+
+```ts
+function Marquee(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Marquee.ts:19](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Marquee.ts#L19)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`MarqueeProps`](../interfaces/MarqueeProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Menu.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Menu.md
new file mode 100644
index 0000000..28384c2
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Menu.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: Menu()
+
+```ts
+function Menu(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Menu.ts:21](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Menu.ts#L21)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`MenuProps`](../interfaces/MenuProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/MenuItem.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/MenuItem.md
new file mode 100644
index 0000000..8016d66
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/MenuItem.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: MenuItem()
+
+```ts
+function MenuItem(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Menu.ts:51](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Menu.ts#L51)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`MenuItemProps`](../interfaces/MenuItemProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ModalPosition.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ModalPosition.md
new file mode 100644
index 0000000..7ce1d4b
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ModalPosition.md
@@ -0,0 +1,25 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ModalPosition()
+
+```ts
+function ModalPosition(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Modal.tsx:122](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L122)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`SimpleModalProps`](../interfaces/SimpleModalProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ModalRoot.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ModalRoot.md
new file mode 100644
index 0000000..6e7e91c
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ModalRoot.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ModalRoot()
+
+```ts
+function ModalRoot(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Modal.tsx:93](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L93)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`ModalRootProps`](../interfaces/ModalRootProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/PanelSection.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/PanelSection.md
new file mode 100644
index 0000000..8f4d734
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/PanelSection.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: PanelSection()
+
+```ts
+function PanelSection(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Panel.ts:20](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Panel.ts#L20)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`PanelSectionProps`](../interfaces/PanelSectionProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/PanelSectionRow.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/PanelSectionRow.md
new file mode 100644
index 0000000..0a26279
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/PanelSectionRow.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: PanelSectionRow()
+
+```ts
+function PanelSectionRow(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Panel.ts:26](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Panel.ts#L26)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`PanelSectionRowProps`](../interfaces/PanelSectionRowProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ProgressBar.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ProgressBar.md
new file mode 100644
index 0000000..be16e03
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ProgressBar.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ProgressBar()
+
+```ts
+function ProgressBar(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/ProgressBar.ts:27](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ProgressBar.ts#L27)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`ProgressBarProps`](../interfaces/ProgressBarProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ProgressBarItem.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ProgressBarItem.md
new file mode 100644
index 0000000..9931b1c
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ProgressBarItem.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ProgressBarItem()
+
+```ts
+function ProgressBarItem(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/ProgressBar.ts:38](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ProgressBar.ts#L38)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`ProgressBarItemProps`](../interfaces/ProgressBarItemProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ProgressBarWithInfo.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ProgressBarWithInfo.md
new file mode 100644
index 0000000..9e2e37c
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ProgressBarWithInfo.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ProgressBarWithInfo()
+
+```ts
+function ProgressBarWithInfo(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/ProgressBar.ts:32](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ProgressBar.ts#L32)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`ProgressBarWithInfoProps`](../interfaces/ProgressBarWithInfoProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ReorderableList.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ReorderableList.md
new file mode 100644
index 0000000..dbc47ca
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ReorderableList.md
@@ -0,0 +1,33 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ReorderableList()
+
+```ts
+function ReorderableList(props: ReorderableListProps): Element
+```
+
+Defined in: [src/custom-components/ReorderableList.tsx:36](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/custom-components/ReorderableList.tsx#L36)
+
+## Type Parameters
+
+• **T**
+
+## Parameters
+
+### props
+
+[`ReorderableListProps`](../type-aliases/ReorderableListProps.md)\<`T`\>
+
+## Returns
+
+`Element`
+
+## Component
+
+UI Components
+
+## Brief
+
+A component for creating reorderable lists.
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ScrollPanel.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ScrollPanel.md
new file mode 100644
index 0000000..2ed5930
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ScrollPanel.md
@@ -0,0 +1,33 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ScrollPanel()
+
+```ts
+function ScrollPanel(props: PropsWithChildren<{
+ children: ReactNode;
+ }>, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Scroll.ts:10](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Scroll.ts#L10)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<\{
+ `children`: `ReactNode`;
+ \}\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ScrollPanelGroup.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ScrollPanelGroup.md
new file mode 100644
index 0000000..d1f5b3b
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ScrollPanelGroup.md
@@ -0,0 +1,33 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ScrollPanelGroup()
+
+```ts
+function ScrollPanelGroup(props: PropsWithChildren<{
+ children: ReactNode;
+ }>, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Scroll.ts:15](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Scroll.ts#L15)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<\{
+ `children`: `ReactNode`;
+ \}\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SidebarNavigation.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SidebarNavigation.md
new file mode 100644
index 0000000..3328c95
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SidebarNavigation.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: SidebarNavigation()
+
+```ts
+function SidebarNavigation(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/SidebarNavigation.ts:30](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/SidebarNavigation.ts#L30)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`SidebarNavigationProps`](../interfaces/SidebarNavigationProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SimpleModal.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SimpleModal.md
new file mode 100644
index 0000000..c6c17e4
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SimpleModal.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: SimpleModal()
+
+```ts
+function SimpleModal(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Modal.tsx:117](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L117)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`SimpleModalProps`](../interfaces/SimpleModalProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SliderField.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SliderField.md
new file mode 100644
index 0000000..db90aee
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SliderField.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: SliderField()
+
+```ts
+function SliderField(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/SliderField.ts:32](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/SliderField.ts#L32)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`SliderFieldProps`](../interfaces/SliderFieldProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Spinner.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Spinner.md
new file mode 100644
index 0000000..ace75db
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Spinner.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: Spinner()
+
+```ts
+function Spinner(props: PropsWithChildren>, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Spinner.ts:6](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Spinner.ts#L6)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<`SVGAttributes`\<`SVGElement`\>\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SteamSpinner.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SteamSpinner.md
new file mode 100644
index 0000000..ed90809
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SteamSpinner.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: SteamSpinner()
+
+```ts
+function SteamSpinner(props: PropsWithChildren & SteamSpinnerProps>, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/SteamSpinner.ts:11](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/SteamSpinner.ts#L11)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<`SVGAttributes`\<`SVGElement`\> & [`SteamSpinnerProps`](../interfaces/SteamSpinnerProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SuspensefulImage.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SuspensefulImage.md
new file mode 100644
index 0000000..d6e36d1
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/SuspensefulImage.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: SuspensefulImage()
+
+```ts
+function SuspensefulImage(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/custom-components/SuspensefulImage.tsx:12](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/custom-components/SuspensefulImage.tsx#L12)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`SuspensefulImageProps`](../interfaces/SuspensefulImageProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Tabs.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Tabs.md
new file mode 100644
index 0000000..65f4d5f
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Tabs.md
@@ -0,0 +1,34 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: Tabs()
+
+```ts
+function Tabs(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Tabs.tsx:113](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Tabs.tsx#L113)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`TabsProps`](../interfaces/TabsProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
+
+## Brief
+
+Tabs component as used in the library and media tabs. See [TabsProps](../interfaces/TabsProps.md).
+Unlike other components in `decky-frontend-lib`, this requires Decky Loader to be running.
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/TextField.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/TextField.md
new file mode 100644
index 0000000..a3b2d8d
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/TextField.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: TextField()
+
+```ts
+function TextField(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/TextField.ts:27](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/TextField.ts#L27)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`TextFieldProps`](../interfaces/TextFieldProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Toggle.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Toggle.md
new file mode 100644
index 0000000..df9c419
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/Toggle.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: Toggle()
+
+```ts
+function Toggle(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/Toggle.ts:13](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Toggle.ts#L13)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`ToggleProps`](../interfaces/ToggleProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ToggleField.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ToggleField.md
new file mode 100644
index 0000000..4a1e3f1
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/ToggleField.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: ToggleField()
+
+```ts
+function ToggleField(props: PropsWithChildren, context?: any): null | ReactElement
+```
+
+Defined in: [src/components/ToggleField.ts:14](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ToggleField.ts#L14)
+
+## Parameters
+
+### props
+
+`PropsWithChildren`\<[`ToggleFieldProps`](../interfaces/ToggleFieldProps.md)\>
+
+### context?
+
+`any`
+
+## Returns
+
+`null` \| `ReactElement`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/afterPatch.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/afterPatch.md
new file mode 100644
index 0000000..22adfb9
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/afterPatch.md
@@ -0,0 +1,37 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: afterPatch()
+
+```ts
+function afterPatch(
+ object: any,
+ property: string,
+ handler: (args: any[], ret: any) => any,
+ options: PatchOptions): Patch
+```
+
+Defined in: [src/utils/patcher.ts:43](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/patcher.ts#L43)
+
+## Parameters
+
+### object
+
+`any`
+
+### property
+
+`string`
+
+### handler
+
+(`args`: `any`[], `ret`: `any`) => `any`
+
+### options
+
+[`PatchOptions`](../interfaces/PatchOptions.md) = `{}`
+
+## Returns
+
+[`Patch`](../interfaces/Patch.md)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/beforePatch.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/beforePatch.md
new file mode 100644
index 0000000..f35ae5a
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/beforePatch.md
@@ -0,0 +1,37 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: beforePatch()
+
+```ts
+function beforePatch(
+ object: any,
+ property: string,
+ handler: (args: any[]) => any,
+ options: PatchOptions): Patch
+```
+
+Defined in: [src/utils/patcher.ts:24](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/patcher.ts#L24)
+
+## Parameters
+
+### object
+
+`any`
+
+### property
+
+`string`
+
+### handler
+
+(`args`: `any`[]) => `any`
+
+### options
+
+[`PatchOptions`](../interfaces/PatchOptions.md) = `{}`
+
+## Returns
+
+[`Patch`](../interfaces/Patch.md)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/callable.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/callable.md
new file mode 100644
index 0000000..b8872b2
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/callable.md
@@ -0,0 +1,58 @@
+---
+component: Core
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: callable()
+
+```ts
+function callable(route: string): (...args: Args) => Promise
+```
+
+Defined in: [src/api/index.ts:91](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/api/index.ts#L91)
+
+Make reusable IPC call declarations
+
+frontend:
+```typescript
+// declare a method with arg1 as a string and a return type of boolean
+const method = callable<[{ arg1: string }], boolean>("methodName");
+
+const result1 = await method({ arg1: 'value1' });
+const result2 = await method({ arg1: 'value2' });
+```
+
+backend:
+```python
+def methodName(arg1: str):
+ pass
+```
+
+## Type Parameters
+
+• **Args** *extends* `any`[] = \[\]
+
+• **T** = [`IPC_types`](../type-aliases/IPC_types.md)
+
+## Parameters
+
+### route
+
+`string`
+
+## Returns
+
+`Function`
+
+### Parameters
+
+#### args
+
+...`Args`
+
+### Returns
+
+`Promise`\<`T`\>
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/createPropListRegex.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/createPropListRegex.md
new file mode 100644
index 0000000..6d07fff
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/createPropListRegex.md
@@ -0,0 +1,33 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: createPropListRegex()
+
+```ts
+function createPropListRegex(propList: string[], fromStart: boolean): RegExp
+```
+
+Defined in: [src/utils/react.ts:18](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/react.ts#L18)
+
+Create a Regular Expression to search for a React component that uses certain props in order.
+
+## Parameters
+
+### propList
+
+`string`[]
+
+Ordererd list of properties to search for
+
+### fromStart
+
+`boolean` = `true`
+
+## Returns
+
+`RegExp`
+
+RegEx to call .test(component.toString()) on
+
+## Export
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/fakeRenderComponent.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/fakeRenderComponent.md
new file mode 100644
index 0000000..8b93cdd
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/fakeRenderComponent.md
@@ -0,0 +1,25 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: fakeRenderComponent()
+
+```ts
+function fakeRenderComponent(fun: Function, customHooks: any): any
+```
+
+Defined in: [src/utils/react.ts:33](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/react.ts#L33)
+
+## Parameters
+
+### fun
+
+`Function`
+
+### customHooks
+
+`any` = `{}`
+
+## Returns
+
+`any`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findClass.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findClass.md
new file mode 100644
index 0000000..7c77d22
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findClass.md
@@ -0,0 +1,21 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: findClass()
+
+```ts
+function findClass(name: string): string | void
+```
+
+Defined in: [src/class-mapper.ts:24](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/class-mapper.ts#L24)
+
+## Parameters
+
+### name
+
+`string`
+
+## Returns
+
+`string` \| `void`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findClassModule.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findClassModule.md
new file mode 100644
index 0000000..6e051eb
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findClassModule.md
@@ -0,0 +1,21 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: findClassModule()
+
+```ts
+function findClassModule(filter: (module: any) => boolean): ClassModule | void
+```
+
+Defined in: [src/class-mapper.ts:38](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/class-mapper.ts#L38)
+
+## Parameters
+
+### filter
+
+(`module`: `any`) => `boolean`
+
+## Returns
+
+[`ClassModule`](../interfaces/ClassModule.md) \| `void`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findInReactTree.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findInReactTree.md
new file mode 100644
index 0000000..9be957a
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findInReactTree.md
@@ -0,0 +1,25 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: findInReactTree()
+
+```ts
+function findInReactTree(node: any, filter: findInTreeFilter): any
+```
+
+Defined in: [src/utils/react.ts:137](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/react.ts#L137)
+
+## Parameters
+
+### node
+
+`any`
+
+### filter
+
+[`findInTreeFilter`](../type-aliases/findInTreeFilter.md)
+
+## Returns
+
+`any`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findInTree.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findInTree.md
new file mode 100644
index 0000000..52725da
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findInTree.md
@@ -0,0 +1,32 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: findInTree()
+
+```ts
+function findInTree(
+ parent: any,
+ filter: findInTreeFilter,
+ opts: findInTreeOpts): any
+```
+
+Defined in: [src/utils/react.ts:116](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/react.ts#L116)
+
+## Parameters
+
+### parent
+
+`any`
+
+### filter
+
+[`findInTreeFilter`](../type-aliases/findInTreeFilter.md)
+
+### opts
+
+[`findInTreeOpts`](../interfaces/findInTreeOpts.md)
+
+## Returns
+
+`any`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findSP.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findSP.md
new file mode 100644
index 0000000..65f5ae3
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/findSP.md
@@ -0,0 +1,17 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: findSP()
+
+```ts
+function findSP(): Window
+```
+
+Defined in: [src/utils/index.ts:21](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/index.ts#L21)
+
+Finds the SP window, since it is a render target as of 10-19-2022's beta
+
+## Returns
+
+`Window`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/getFocusNavController.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/getFocusNavController.md
new file mode 100644
index 0000000..c425f7a
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/getFocusNavController.md
@@ -0,0 +1,17 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: getFocusNavController()
+
+```ts
+function getFocusNavController(): any
+```
+
+Defined in: [src/utils/index.ts:32](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/index.ts#L32)
+
+Gets the correct FocusNavController, as the Feb 22 2023 beta has two for some reason.
+
+## Returns
+
+`any`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/getGamepadNavigationTrees.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/getGamepadNavigationTrees.md
new file mode 100644
index 0000000..b1f6eaf
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/getGamepadNavigationTrees.md
@@ -0,0 +1,17 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: getGamepadNavigationTrees()
+
+```ts
+function getGamepadNavigationTrees(): any
+```
+
+Defined in: [src/utils/index.ts:39](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/index.ts#L39)
+
+Gets the gamepad navigation trees as Valve seems to be moving them.
+
+## Returns
+
+`any`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/getReactInstance.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/getReactInstance.md
new file mode 100644
index 0000000..59a8313
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/getReactInstance.md
@@ -0,0 +1,21 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: getReactInstance()
+
+```ts
+function getReactInstance(o: Node | Element | HTMLElement): any
+```
+
+Defined in: [src/utils/react.ts:99](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/react.ts#L99)
+
+## Parameters
+
+### o
+
+`Node` | `Element` | `HTMLElement`
+
+## Returns
+
+`any`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/getReactRoot.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/getReactRoot.md
new file mode 100644
index 0000000..26fbff9
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/getReactRoot.md
@@ -0,0 +1,21 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: getReactRoot()
+
+```ts
+function getReactRoot(o: Node | Element | HTMLElement): any
+```
+
+Defined in: [src/utils/react.ts:90](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/react.ts#L90)
+
+## Parameters
+
+### o
+
+`Node` | `Element` | `HTMLElement`
+
+## Returns
+
+`any`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/joinClassNames.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/joinClassNames.md
new file mode 100644
index 0000000..25b7954
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/joinClassNames.md
@@ -0,0 +1,21 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: joinClassNames()
+
+```ts
+function joinClassNames(...classes: string[]): string
+```
+
+Defined in: [src/utils/index.ts:10](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/index.ts#L10)
+
+## Parameters
+
+### classes
+
+...`string`[]
+
+## Returns
+
+`string`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/replacePatch.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/replacePatch.md
new file mode 100644
index 0000000..d34e46c
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/replacePatch.md
@@ -0,0 +1,37 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: replacePatch()
+
+```ts
+function replacePatch(
+ object: any,
+ property: string,
+ handler: (args: any[]) => any,
+ options: PatchOptions): Patch
+```
+
+Defined in: [src/utils/patcher.ts:62](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/patcher.ts#L62)
+
+## Parameters
+
+### object
+
+`any`
+
+### property
+
+`string`
+
+### handler
+
+(`args`: `any`[]) => `any`
+
+### options
+
+[`PatchOptions`](../interfaces/PatchOptions.md) = `{}`
+
+## Returns
+
+[`Patch`](../interfaces/Patch.md)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/showContextMenu.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/showContextMenu.md
new file mode 100644
index 0000000..9360e90
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/showContextMenu.md
@@ -0,0 +1,29 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: showContextMenu()
+
+```ts
+function showContextMenu(children: ReactNode, parent?: EventTarget): void
+```
+
+Defined in: [src/components/Menu.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Menu.ts#L8)
+
+## Parameters
+
+### children
+
+`ReactNode`
+
+### parent?
+
+`EventTarget`
+
+## Returns
+
+`void`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/showModal.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/showModal.md
new file mode 100644
index 0000000..0b9ce70
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/showModal.md
@@ -0,0 +1,36 @@
+---
+component: UI Components
+---
+
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: showModal()
+
+```ts
+function showModal(
+ modal: ReactNode,
+ parent?: EventTarget,
+ props?: ShowModalProps): ShowModalResult
+```
+
+Defined in: [src/components/Modal.tsx:47](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L47)
+
+## Parameters
+
+### modal
+
+`ReactNode`
+
+### parent?
+
+`EventTarget`
+
+### props?
+
+[`ShowModalProps`](../interfaces/ShowModalProps.md) = `...`
+
+## Returns
+
+[`ShowModalResult`](../interfaces/ShowModalResult.md)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/sleep.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/sleep.md
new file mode 100644
index 0000000..0de2bb5
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/sleep.md
@@ -0,0 +1,21 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: sleep()
+
+```ts
+function sleep(ms: number): Promise
+```
+
+Defined in: [src/utils/index.ts:14](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/index.ts#L14)
+
+## Parameters
+
+### ms
+
+`number`
+
+## Returns
+
+`Promise`\<`unknown`\>
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/unminifyClass.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/unminifyClass.md
new file mode 100644
index 0000000..2182dcc
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/unminifyClass.md
@@ -0,0 +1,21 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: unminifyClass()
+
+```ts
+function unminifyClass(minifiedClass: string): string | void
+```
+
+Defined in: [src/class-mapper.ts:42](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/class-mapper.ts#L42)
+
+## Parameters
+
+### minifiedClass
+
+`string`
+
+## Returns
+
+`string` \| `void`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/wrapReactClass.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/wrapReactClass.md
new file mode 100644
index 0000000..83fa14a
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/wrapReactClass.md
@@ -0,0 +1,25 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: wrapReactClass()
+
+```ts
+function wrapReactClass(node: any, prop: any): any
+```
+
+Defined in: [src/utils/react.ts:78](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/react.ts#L78)
+
+## Parameters
+
+### node
+
+`any`
+
+### prop
+
+`any` = `'type'`
+
+## Returns
+
+`any`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/wrapReactType.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/wrapReactType.md
new file mode 100644
index 0000000..139fa8a
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/functions/wrapReactType.md
@@ -0,0 +1,25 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Function: wrapReactType()
+
+```ts
+function wrapReactType(node: any, prop: any): any
+```
+
+Defined in: [src/utils/react.ts:70](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/utils/react.ts#L70)
+
+## Parameters
+
+### node
+
+`any`
+
+### prop
+
+`any` = `'type'`
+
+## Returns
+
+`any`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/AppDetails.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/AppDetails.md
new file mode 100644
index 0000000..ceed614
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/AppDetails.md
@@ -0,0 +1,750 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: AppDetails
+
+Defined in: [src/globals/SteamClient.ts:232](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L232)
+
+## Properties
+
+### achievements
+
+```ts
+achievements: AppAchievements;
+```
+
+Defined in: [src/globals/SteamClient.ts:233](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L233)
+
+***
+
+### bCanMoveInstallFolder
+
+```ts
+bCanMoveInstallFolder: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:234](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L234)
+
+***
+
+### bCloudAvailable
+
+```ts
+bCloudAvailable: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:235](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L235)
+
+***
+
+### bCloudEnabledForAccount
+
+```ts
+bCloudEnabledForAccount: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:236](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L236)
+
+***
+
+### bCloudEnabledForApp
+
+```ts
+bCloudEnabledForApp: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:237](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L237)
+
+***
+
+### bCloudSyncOnSuspendAvailable
+
+```ts
+bCloudSyncOnSuspendAvailable: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:238](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L238)
+
+***
+
+### bCloudSyncOnSuspendEnabled
+
+```ts
+bCloudSyncOnSuspendEnabled: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:239](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L239)
+
+***
+
+### bCommunityMarketPresence
+
+```ts
+bCommunityMarketPresence: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:240](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L240)
+
+***
+
+### bEnableAllowDesktopConfiguration
+
+```ts
+bEnableAllowDesktopConfiguration: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:241](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L241)
+
+***
+
+### bFreeRemovableLicense
+
+```ts
+bFreeRemovableLicense: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:242](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L242)
+
+***
+
+### bHasAllLegacyCDKeys
+
+```ts
+bHasAllLegacyCDKeys: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:243](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L243)
+
+***
+
+### bHasAnyLocalContent
+
+```ts
+bHasAnyLocalContent: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:244](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L244)
+
+***
+
+### bHasLockedPrivateBetas
+
+```ts
+bHasLockedPrivateBetas: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:245](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L245)
+
+***
+
+### bIsExcludedFromSharing
+
+```ts
+bIsExcludedFromSharing: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:246](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L246)
+
+***
+
+### bIsSubscribedTo
+
+```ts
+bIsSubscribedTo: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:247](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L247)
+
+***
+
+### bOverlayEnabled
+
+```ts
+bOverlayEnabled: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:248](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L248)
+
+***
+
+### bOverrideInternalResolution
+
+```ts
+bOverrideInternalResolution: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:249](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L249)
+
+***
+
+### bRequiresLegacyCDKey
+
+```ts
+bRequiresLegacyCDKey: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:250](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L250)
+
+***
+
+### bShortcutIsVR
+
+```ts
+bShortcutIsVR: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:251](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L251)
+
+***
+
+### bShowCDKeyInMenus
+
+```ts
+bShowCDKeyInMenus: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:252](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L252)
+
+***
+
+### bShowControllerConfig
+
+```ts
+bShowControllerConfig: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:253](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L253)
+
+***
+
+### bSupportsCDKeyCopyToClipboard
+
+```ts
+bSupportsCDKeyCopyToClipboard: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:254](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L254)
+
+***
+
+### bVRGameTheatreEnabled
+
+```ts
+bVRGameTheatreEnabled: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:255](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L255)
+
+***
+
+### bWorkshopVisible
+
+```ts
+bWorkshopVisible: boolean;
+```
+
+Defined in: [src/globals/SteamClient.ts:256](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L256)
+
+***
+
+### eAppOwnershipFlags
+
+```ts
+eAppOwnershipFlags: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:257](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L257)
+
+***
+
+### eAutoUpdateValue
+
+```ts
+eAutoUpdateValue: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:258](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L258)
+
+***
+
+### eBackgroundDownloads
+
+```ts
+eBackgroundDownloads: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:259](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L259)
+
+***
+
+### eCloudSync
+
+```ts
+eCloudSync: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:260](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L260)
+
+***
+
+### eControllerRumblePreference
+
+```ts
+eControllerRumblePreference: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:261](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L261)
+
+***
+
+### eDisplayStatus
+
+```ts
+eDisplayStatus: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:262](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L262)
+
+***
+
+### eEnableThirdPartyControllerConfiguration
+
+```ts
+eEnableThirdPartyControllerConfiguration: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:263](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L263)
+
+***
+
+### eSteamInputControllerMask
+
+```ts
+eSteamInputControllerMask: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:264](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L264)
+
+***
+
+### iInstallFolder
+
+```ts
+iInstallFolder: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:265](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L265)
+
+***
+
+### lDiskUsageBytes
+
+```ts
+lDiskUsageBytes: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:266](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L266)
+
+***
+
+### lDlcUsageBytes
+
+```ts
+lDlcUsageBytes: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:267](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L267)
+
+***
+
+### libraryAssets?
+
+```ts
+optional libraryAssets: {
+ logoPosition: LogoPosition;
+};
+```
+
+Defined in: [src/globals/SteamClient.ts:307](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L307)
+
+#### logoPosition?
+
+```ts
+optional logoPosition: LogoPosition;
+```
+
+***
+
+### nBuildID
+
+```ts
+nBuildID: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:268](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L268)
+
+***
+
+### nCompatToolPriority
+
+```ts
+nCompatToolPriority: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:269](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L269)
+
+***
+
+### nPlaytimeForever
+
+```ts
+nPlaytimeForever: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:270](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L270)
+
+***
+
+### nScreenshots
+
+```ts
+nScreenshots: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:271](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L271)
+
+***
+
+### rtLastTimePlayed
+
+```ts
+rtLastTimePlayed: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:272](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L272)
+
+***
+
+### rtLastUpdated
+
+```ts
+rtLastUpdated: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:273](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L273)
+
+***
+
+### rtPurchased
+
+```ts
+rtPurchased: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:274](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L274)
+
+***
+
+### selectedLanguage
+
+```ts
+selectedLanguage: {
+ strDisplayName: string;
+ strShortName: string;
+};
+```
+
+Defined in: [src/globals/SteamClient.ts:275](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L275)
+
+#### strDisplayName
+
+```ts
+strDisplayName: string;
+```
+
+#### strShortName
+
+```ts
+strShortName: string;
+```
+
+***
+
+### strCloudBytesAvailable
+
+```ts
+strCloudBytesAvailable: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:279](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L279)
+
+***
+
+### strCloudBytesUsed
+
+```ts
+strCloudBytesUsed: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:280](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L280)
+
+***
+
+### strCompatToolDisplayName
+
+```ts
+strCompatToolDisplayName: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:281](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L281)
+
+***
+
+### strCompatToolName
+
+```ts
+strCompatToolName: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:282](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L282)
+
+***
+
+### strDeveloperName
+
+```ts
+strDeveloperName: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:283](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L283)
+
+***
+
+### strDeveloperURL
+
+```ts
+strDeveloperURL: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:284](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L284)
+
+***
+
+### strDisplayName
+
+```ts
+strDisplayName: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:285](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L285)
+
+***
+
+### strExternalSubscriptionURL
+
+```ts
+strExternalSubscriptionURL: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:286](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L286)
+
+***
+
+### strFlatpakAppID
+
+```ts
+strFlatpakAppID: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:287](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L287)
+
+***
+
+### strHomepageURL
+
+```ts
+strHomepageURL: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:288](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L288)
+
+***
+
+### strLaunchOptions
+
+```ts
+strLaunchOptions: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:289](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L289)
+
+***
+
+### strManualURL
+
+```ts
+strManualURL: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:290](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L290)
+
+***
+
+### strOwnerSteamID
+
+```ts
+strOwnerSteamID: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:291](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L291)
+
+***
+
+### strResolutionOverride
+
+```ts
+strResolutionOverride: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:292](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L292)
+
+***
+
+### strSelectedBeta
+
+```ts
+strSelectedBeta: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:293](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L293)
+
+***
+
+### strShortcutExe
+
+```ts
+strShortcutExe: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:294](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L294)
+
+***
+
+### strShortcutLaunchOptions
+
+```ts
+strShortcutLaunchOptions: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:295](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L295)
+
+***
+
+### strShortcutStartDir
+
+```ts
+strShortcutStartDir: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:296](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L296)
+
+***
+
+### strSteamDeckBlogURL
+
+```ts
+strSteamDeckBlogURL: string;
+```
+
+Defined in: [src/globals/SteamClient.ts:297](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L297)
+
+***
+
+### unAppID
+
+```ts
+unAppID: number;
+```
+
+Defined in: [src/globals/SteamClient.ts:298](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L298)
+
+***
+
+### vecBetas
+
+```ts
+vecBetas: any[];
+```
+
+Defined in: [src/globals/SteamClient.ts:299](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L299)
+
+***
+
+### vecDeckCompatTestResults
+
+```ts
+vecDeckCompatTestResults: any[];
+```
+
+Defined in: [src/globals/SteamClient.ts:301](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L301)
+
+***
+
+### vecDLC
+
+```ts
+vecDLC: any[];
+```
+
+Defined in: [src/globals/SteamClient.ts:300](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L300)
+
+***
+
+### vecLanguages
+
+```ts
+vecLanguages: AppLanguages[];
+```
+
+Defined in: [src/globals/SteamClient.ts:302](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L302)
+
+***
+
+### vecLegacyCDKeys
+
+```ts
+vecLegacyCDKeys: any[];
+```
+
+Defined in: [src/globals/SteamClient.ts:303](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L303)
+
+***
+
+### vecMusicAlbums
+
+```ts
+vecMusicAlbums: any[];
+```
+
+Defined in: [src/globals/SteamClient.ts:304](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L304)
+
+***
+
+### vecPlatforms
+
+```ts
+vecPlatforms: string[];
+```
+
+Defined in: [src/globals/SteamClient.ts:305](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L305)
+
+***
+
+### vecScreenShots
+
+```ts
+vecScreenShots: any[];
+```
+
+Defined in: [src/globals/SteamClient.ts:306](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L306)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/Apps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/Apps.md
new file mode 100644
index 0000000..a179d37
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/Apps.md
@@ -0,0 +1,1147 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: Apps
+
+Defined in: [src/globals/SteamClient.ts:5](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L5)
+
+## Properties
+
+### AddShortcut
+
+```ts
+AddShortcut: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:60](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L60)
+
+***
+
+### AddUserTagToApps
+
+```ts
+AddUserTagToApps: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:15](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L15)
+
+***
+
+### BackupFilesForApp
+
+```ts
+BackupFilesForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:35](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L35)
+
+***
+
+### BrowseLocalFilesForApp
+
+```ts
+BrowseLocalFilesForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:32](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L32)
+
+***
+
+### BrowseScreenshotForApp
+
+```ts
+BrowseScreenshotForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:34](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L34)
+
+***
+
+### BrowseScreenshotsForApp
+
+```ts
+BrowseScreenshotsForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:33](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L33)
+
+***
+
+### CancelGameAction
+
+```ts
+CancelGameAction: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:98](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L98)
+
+***
+
+### CancelLaunch
+
+```ts
+CancelLaunch: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:92](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L92)
+
+***
+
+### ClearAndSetUserTagsOnApp
+
+```ts
+ClearAndSetUserTagsOnApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:18](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L18)
+
+***
+
+### ClearCustomArtworkForApp
+
+```ts
+ClearCustomArtworkForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:75](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L75)
+
+***
+
+### ClearCustomLogoPositionForApp
+
+```ts
+ClearCustomLogoPositionForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:77](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L77)
+
+***
+
+### ClearProton
+
+```ts
+ClearProton: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:108](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L108)
+
+***
+
+### ClearUserTagsOnApps
+
+```ts
+ClearUserTagsOnApps: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:17](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L17)
+
+***
+
+### ContinueGameAction
+
+```ts
+ContinueGameAction: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:97](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L97)
+
+***
+
+### CreateDesktopShortcutForApp
+
+```ts
+CreateDesktopShortcutForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:37](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L37)
+
+***
+
+### DeleteLocalScreenshot
+
+```ts
+DeleteLocalScreenshot: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:49](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L49)
+
+***
+
+### DownloadWorkshopItem
+
+```ts
+DownloadWorkshopItem: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:44](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L44)
+
+***
+
+### FetchMarketingMessages
+
+```ts
+FetchMarketingMessages: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:110](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L110)
+
+***
+
+### GetAchievementsInTimeRange
+
+```ts
+GetAchievementsInTimeRange: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:40](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L40)
+
+***
+
+### GetActiveGameActions
+
+```ts
+GetActiveGameActions: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:99](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L99)
+
+***
+
+### GetAllShortcuts
+
+```ts
+GetAllShortcuts: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:58](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L58)
+
+***
+
+### GetAvailableCompatTools
+
+```ts
+GetAvailableCompatTools: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:80](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L80)
+
+***
+
+### GetCachedAppDetails
+
+```ts
+GetCachedAppDetails: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:69](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L69)
+
+***
+
+### GetCloudPendingRemoteOperations
+
+```ts
+GetCloudPendingRemoteOperations: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:107](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L107)
+
+***
+
+### GetConflictingFileTimestamps
+
+```ts
+GetConflictingFileTimestamps: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:106](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L106)
+
+***
+
+### GetDetailsForScreenshotUpload
+
+```ts
+GetDetailsForScreenshotUpload: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:47](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L47)
+
+***
+
+### GetDownloadedWorkshopItems
+
+```ts
+GetDownloadedWorkshopItems: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:43](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L43)
+
+***
+
+### GetFriendAchievementsForApp
+
+```ts
+GetFriendAchievementsForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:13](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L13)
+
+***
+
+### GetFriendsWhoPlay
+
+```ts
+GetFriendsWhoPlay: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:51](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L51)
+
+***
+
+### GetGameActionDetails
+
+```ts
+GetGameActionDetails: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:100](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L100)
+
+***
+
+### GetGameActionForApp
+
+```ts
+GetGameActionForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:101](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L101)
+
+***
+
+### GetLaunchOptionsForApp
+
+```ts
+GetLaunchOptionsForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:55](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L55)
+
+***
+
+### GetLibraryBootstrapData
+
+```ts
+GetLibraryBootstrapData: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:11](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L11)
+
+***
+
+### GetMyAchievementsForApp
+
+```ts
+GetMyAchievementsForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:14](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L14)
+
+***
+
+### GetResolutionOverrideForApp
+
+```ts
+GetResolutionOverrideForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:56](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L56)
+
+***
+
+### GetScreenshotsInTimeRange
+
+```ts
+GetScreenshotsInTimeRange: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:50](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L50)
+
+***
+
+### GetShortcutData
+
+```ts
+GetShortcutData: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:59](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L59)
+
+***
+
+### GetSoundtrackDetails
+
+```ts
+GetSoundtrackDetails: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:53](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L53)
+
+***
+
+### GetStoreTagLocalization
+
+```ts
+GetStoreTagLocalization: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:54](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L54)
+
+***
+
+### GetSubscribedWorkshopItems
+
+```ts
+GetSubscribedWorkshopItems: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:41](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L41)
+
+***
+
+### InstallApp
+
+```ts
+InstallApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:88](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L88)
+
+***
+
+### InstallFlatpakAppAndCreateShortcut
+
+```ts
+InstallFlatpakAppAndCreateShortcut: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:62](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L62)
+
+***
+
+### JoinAppContentBeta
+
+```ts
+JoinAppContentBeta: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:38](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L38)
+
+***
+
+### JoinAppContentBetaByPassword
+
+```ts
+JoinAppContentBetaByPassword: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:39](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L39)
+
+***
+
+### ListFlatpakApps
+
+```ts
+ListFlatpakApps: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:63](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L63)
+
+***
+
+### LoadEula
+
+```ts
+LoadEula: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:105](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L105)
+
+***
+
+### MarkEulaAccepted
+
+```ts
+MarkEulaAccepted: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:103](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L103)
+
+***
+
+### MarkEulaRejected
+
+```ts
+MarkEulaRejected: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:104](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L104)
+
+***
+
+### MarkMarketingMessageSeen
+
+```ts
+MarkMarketingMessageSeen: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:111](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L111)
+
+***
+
+### OpenAppSettingsDialog
+
+```ts
+OpenAppSettingsDialog: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:119](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L119)
+
+***
+
+### PromptToChangeShortcut
+
+```ts
+PromptToChangeShortcut: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:86](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L86)
+
+***
+
+### PromptToSelectShortcutIcon
+
+```ts
+PromptToSelectShortcutIcon: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:87](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L87)
+
+***
+
+### RegisterForAchievementChanges
+
+```ts
+RegisterForAchievementChanges: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:12](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L12)
+
+***
+
+### RegisterForAppDetails
+
+```ts
+RegisterForAppDetails: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L7)
+
+***
+
+### RegisterForAppOverviewChanges
+
+```ts
+RegisterForAppOverviewChanges: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:6](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L6)
+
+***
+
+### RegisterForGameActionEnd
+
+```ts
+RegisterForGameActionEnd: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:114](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L114)
+
+***
+
+### RegisterForGameActionShowError
+
+```ts
+RegisterForGameActionShowError: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:117](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L117)
+
+***
+
+### RegisterForGameActionShowUI
+
+```ts
+RegisterForGameActionShowUI: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:118](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L118)
+
+***
+
+### RegisterForGameActionStart
+
+```ts
+RegisterForGameActionStart: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:113](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L113)
+
+***
+
+### RegisterForGameActionTaskChange
+
+```ts
+RegisterForGameActionTaskChange: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:115](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L115)
+
+***
+
+### RegisterForGameActionUserRequest
+
+```ts
+RegisterForGameActionUserRequest: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:116](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L116)
+
+***
+
+### RegisterForLocalizationChanges
+
+```ts
+RegisterForLocalizationChanges: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L8)
+
+***
+
+### RegisterForMarketingMessages
+
+```ts
+RegisterForMarketingMessages: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:109](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L109)
+
+***
+
+### RegisterForWorkshopChanges
+
+```ts
+RegisterForWorkshopChanges: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L9)
+
+***
+
+### RegisterForWorkshopItemDownloads
+
+```ts
+RegisterForWorkshopItemDownloads: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:10](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L10)
+
+***
+
+### RemoveShortcut
+
+```ts
+RemoveShortcut: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:61](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L61)
+
+***
+
+### RemoveUserTagFromApps
+
+```ts
+RemoveUserTagFromApps: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:16](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L16)
+
+***
+
+### ReportLibraryAssetCacheMiss
+
+```ts
+ReportLibraryAssetCacheMiss: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:71](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L71)
+
+***
+
+### ReportMarketingMessageSeen
+
+```ts
+ReportMarketingMessageSeen: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:112](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L112)
+
+***
+
+### RequestIconDataForApp
+
+```ts
+RequestIconDataForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:78](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L78)
+
+***
+
+### RequestLegacyCDKeysForApp
+
+```ts
+RequestLegacyCDKeysForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:52](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L52)
+
+***
+
+### ResetHiddenState
+
+```ts
+ResetHiddenState: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:20](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L20)
+
+***
+
+### RunGame
+
+```ts
+RunGame: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:89](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L89)
+
+***
+
+### SaveAchievementProgressCache
+
+```ts
+SaveAchievementProgressCache: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:72](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L72)
+
+***
+
+### ScanForShortcuts
+
+```ts
+ScanForShortcuts: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:57](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L57)
+
+***
+
+### SetAppAutoUpdateBehavior
+
+```ts
+SetAppAutoUpdateBehavior: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:24](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L24)
+
+***
+
+### SetAppBackgroundDownloadsBehavior
+
+```ts
+SetAppBackgroundDownloadsBehavior: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:25](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L25)
+
+***
+
+### SetAppCurrentLanguage
+
+```ts
+SetAppCurrentLanguage: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:23](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L23)
+
+***
+
+### SetAppHidden
+
+```ts
+SetAppHidden: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:19](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L19)
+
+***
+
+### SetAppLaunchOptions
+
+```ts
+SetAppLaunchOptions: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:21](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L21)
+
+***
+
+### SetAppResolutionOverride
+
+```ts
+SetAppResolutionOverride: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:22](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L22)
+
+***
+
+### SetCachedAppDetails
+
+```ts
+SetCachedAppDetails: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:70](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L70)
+
+***
+
+### SetControllerRumblePreference
+
+```ts
+SetControllerRumblePreference: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:68](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L68)
+
+***
+
+### SetCustomArtworkForApp
+
+```ts
+SetCustomArtworkForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:74](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L74)
+
+***
+
+### SetCustomLogoPositionForApp
+
+```ts
+SetCustomLogoPositionForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:76](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L76)
+
+***
+
+### SetDLCEnabled
+
+```ts
+SetDLCEnabled: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:96](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L96)
+
+***
+
+### SetLocalScreenshotCaption
+
+```ts
+SetLocalScreenshotCaption: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:45](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L45)
+
+***
+
+### SetLocalScreenshotSpoiler
+
+```ts
+SetLocalScreenshotSpoiler: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:46](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L46)
+
+***
+
+### SetShortcutExe
+
+```ts
+SetShortcutExe: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:82](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L82)
+
+***
+
+### SetShortcutIsVR
+
+```ts
+SetShortcutIsVR: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:85](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L85)
+
+***
+
+### SetShortcutLaunchOptions
+
+```ts
+SetShortcutLaunchOptions: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:84](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L84)
+
+***
+
+### SetShortcutName
+
+```ts
+SetShortcutName: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:81](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L81)
+
+***
+
+### SetShortcutStartDir
+
+```ts
+SetShortcutStartDir: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:83](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L83)
+
+***
+
+### SetStreamingClientForApp
+
+```ts
+SetStreamingClientForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:73](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L73)
+
+***
+
+### SetThirdPartyControllerConfiguration
+
+```ts
+SetThirdPartyControllerConfiguration: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:66](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L66)
+
+***
+
+### ShowControllerConfigurator
+
+```ts
+ShowControllerConfigurator: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:65](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L65)
+
+***
+
+### ShowStore
+
+```ts
+ShowStore: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:95](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L95)
+
+***
+
+### SkipShaderProcessing
+
+```ts
+SkipShaderProcessing: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:102](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L102)
+
+***
+
+### SpecifyCompatTool
+
+```ts
+SpecifyCompatTool: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:79](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L79)
+
+***
+
+### StreamGame
+
+```ts
+StreamGame: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:91](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L91)
+
+***
+
+### SubscribeWorkshopItem
+
+```ts
+SubscribeWorkshopItem: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:42](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L42)
+
+***
+
+### TerminateApp
+
+```ts
+TerminateApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:93](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L93)
+
+***
+
+### ToggleAllowDesktopConfiguration
+
+```ts
+ToggleAllowDesktopConfiguration: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:67](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L67)
+
+***
+
+### ToggleAppFamilyBlockedState
+
+```ts
+ToggleAppFamilyBlockedState: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:26](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L26)
+
+***
+
+### ToggleAppSteamCloudEnabled
+
+```ts
+ToggleAppSteamCloudEnabled: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:27](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L27)
+
+***
+
+### ToggleAppSteamCloudSyncOnSuspendEnabled
+
+```ts
+ToggleAppSteamCloudSyncOnSuspendEnabled: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:28](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L28)
+
+***
+
+### ToggleEnableDesktopTheatreForApp
+
+```ts
+ToggleEnableDesktopTheatreForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:31](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L31)
+
+***
+
+### ToggleEnableSteamOverlayForApp
+
+```ts
+ToggleEnableSteamOverlayForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:30](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L30)
+
+***
+
+### ToggleOverrideResolutionForInternalDisplay
+
+```ts
+ToggleOverrideResolutionForInternalDisplay: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:29](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L29)
+
+***
+
+### UninstallApps
+
+```ts
+UninstallApps: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:94](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L94)
+
+***
+
+### UninstallFlatpakApp
+
+```ts
+UninstallFlatpakApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:64](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L64)
+
+***
+
+### UploadLocalScreenshot
+
+```ts
+UploadLocalScreenshot: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:48](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L48)
+
+***
+
+### VerifyApp
+
+```ts
+VerifyApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:90](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L90)
+
+***
+
+### VerifyFilesForApp
+
+```ts
+VerifyFilesForApp: any;
+```
+
+Defined in: [src/globals/SteamClient.ts:36](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/globals/SteamClient.ts#L36)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ButtonItemProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ButtonItemProps.md
new file mode 100644
index 0000000..adbaf8e
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ButtonItemProps.md
@@ -0,0 +1,185 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: ButtonItemProps
+
+Defined in: [src/components/ButtonItem.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ButtonItem.ts#L7)
+
+## Extends
+
+- `ItemProps`
+
+## Properties
+
+### bottomSeparator?
+
+```ts
+optional bottomSeparator: "standard" | "thick" | "none";
+```
+
+Defined in: [src/components/Item.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L9)
+
+#### Inherited from
+
+```ts
+ItemProps.bottomSeparator
+```
+
+***
+
+### children?
+
+```ts
+optional children: ReactNode;
+```
+
+Defined in: [src/components/Item.ts:6](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L6)
+
+#### Inherited from
+
+```ts
+ItemProps.children
+```
+
+***
+
+### description?
+
+```ts
+optional description: ReactNode;
+```
+
+Defined in: [src/components/Item.ts:5](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L5)
+
+#### Inherited from
+
+```ts
+ItemProps.description
+```
+
+***
+
+### disabled?
+
+```ts
+optional disabled: boolean;
+```
+
+Defined in: [src/components/ButtonItem.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ButtonItem.ts#L9)
+
+***
+
+### highlightOnFocus?
+
+```ts
+optional highlightOnFocus: boolean;
+```
+
+Defined in: [src/components/Item.ts:12](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L12)
+
+#### Inherited from
+
+```ts
+ItemProps.highlightOnFocus
+```
+
+***
+
+### icon?
+
+```ts
+optional icon: ReactNode;
+```
+
+Defined in: [src/components/Item.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L8)
+
+#### Inherited from
+
+```ts
+ItemProps.icon
+```
+
+***
+
+### indentLevel?
+
+```ts
+optional indentLevel: number;
+```
+
+Defined in: [src/components/Item.ts:10](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L10)
+
+#### Inherited from
+
+```ts
+ItemProps.indentLevel
+```
+
+***
+
+### label?
+
+```ts
+optional label: ReactNode;
+```
+
+Defined in: [src/components/Item.ts:4](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L4)
+
+#### Inherited from
+
+```ts
+ItemProps.label
+```
+
+***
+
+### layout?
+
+```ts
+optional layout: "below" | "inline";
+```
+
+Defined in: [src/components/Item.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L7)
+
+#### Inherited from
+
+```ts
+ItemProps.layout
+```
+
+***
+
+### tooltip?
+
+```ts
+optional tooltip: string;
+```
+
+Defined in: [src/components/Item.ts:11](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L11)
+
+#### Inherited from
+
+```ts
+ItemProps.tooltip
+```
+
+## Methods
+
+### onClick()?
+
+```ts
+optional onClick(e: MouseEvent): void
+```
+
+Defined in: [src/components/ButtonItem.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ButtonItem.ts#L8)
+
+#### Parameters
+
+##### e
+
+`MouseEvent`
+
+#### Returns
+
+`void`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ButtonProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ButtonProps.md
new file mode 100644
index 0000000..ee5cd47
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ButtonProps.md
@@ -0,0 +1,712 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: ButtonProps
+
+Defined in: [src/components/Button.ts:5](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Button.ts#L5)
+
+## Extends
+
+- [`DialogButtonProps`](DialogButtonProps.md)
+
+## Properties
+
+### actionDescriptionMap?
+
+```ts
+optional actionDescriptionMap: ActionDescriptionMap;
+```
+
+Defined in: [src/components/FooterLegend.ts:53](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L53)
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`actionDescriptionMap`](DialogButtonProps.md#actiondescriptionmap)
+
+***
+
+### children?
+
+```ts
+optional children: ReactNode;
+```
+
+Defined in: [src/components/Dialog.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L9)
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`children`](DialogButtonProps.md#children)
+
+***
+
+### className?
+
+```ts
+optional className: string;
+```
+
+Defined in: [src/components/Dialog.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L8)
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`className`](DialogButtonProps.md#classname)
+
+***
+
+### disabled?
+
+```ts
+optional disabled: boolean;
+```
+
+Defined in: [src/components/Dialog.ts:30](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L30)
+
+Disables the button - assigned `on*` methods will not be invoked if clicked.
+
+#### Note
+
+Depending on where it is, it might still get focus. In such case it can be
+partially disabled separately.
+
+#### See
+
+focusable.
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`disabled`](DialogButtonProps.md#disabled)
+
+***
+
+### focusable?
+
+```ts
+optional focusable: boolean;
+```
+
+Defined in: [src/components/Dialog.ts:40](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L40)
+
+Enables/disables the navigation based focus on button - you won't be able to navigate to
+it via the gamepad or keyboard.
+
+#### Note
+
+If set to `false`, it still can be clicked and **WILL** become focused until navigated away.
+Depending on the context of where the button is, even a disabled button can focused.
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`focusable`](DialogButtonProps.md#focusable)
+
+***
+
+### key?
+
+```ts
+optional key: null | Key;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:137
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`key`](DialogButtonProps.md#key)
+
+***
+
+### noFocusRing?
+
+```ts
+optional noFocusRing: boolean;
+```
+
+Defined in: [src/components/Dialog.ts:19](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L19)
+
+Enables/disables the focus around the button.
+
+#### Note
+
+Default value depends on context, so setting it to `false` will enable it.
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`noFocusRing`](DialogButtonProps.md#nofocusring)
+
+***
+
+### onButtonDown()?
+
+```ts
+optional onButtonDown: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:59](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L59)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onButtonDown`](DialogButtonProps.md#onbuttondown)
+
+***
+
+### onButtonUp()?
+
+```ts
+optional onButtonUp: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:60](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L60)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onButtonUp`](DialogButtonProps.md#onbuttonup)
+
+***
+
+### onCancelActionDescription?
+
+```ts
+optional onCancelActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:55](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L55)
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onCancelActionDescription`](DialogButtonProps.md#oncancelactiondescription)
+
+***
+
+### onCancelButton()?
+
+```ts
+optional onCancelButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:62](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L62)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onCancelButton`](DialogButtonProps.md#oncancelbutton)
+
+***
+
+### onGamepadBlur()?
+
+```ts
+optional onGamepadBlur: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:67](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L67)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onGamepadBlur`](DialogButtonProps.md#ongamepadblur)
+
+***
+
+### onGamepadDirection()?
+
+```ts
+optional onGamepadDirection: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:65](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L65)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onGamepadDirection`](DialogButtonProps.md#ongamepaddirection)
+
+***
+
+### onGamepadFocus()?
+
+```ts
+optional onGamepadFocus: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:66](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L66)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onGamepadFocus`](DialogButtonProps.md#ongamepadfocus)
+
+***
+
+### onMenuActionDescription?
+
+```ts
+optional onMenuActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:58](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L58)
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onMenuActionDescription`](DialogButtonProps.md#onmenuactiondescription)
+
+***
+
+### onMenuButton()?
+
+```ts
+optional onMenuButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:68](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L68)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onMenuButton`](DialogButtonProps.md#onmenubutton)
+
+***
+
+### onOKActionDescription?
+
+```ts
+optional onOKActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:54](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L54)
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onOKActionDescription`](DialogButtonProps.md#onokactiondescription)
+
+***
+
+### onOKButton()?
+
+```ts
+optional onOKButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:61](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L61)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onOKButton`](DialogButtonProps.md#onokbutton)
+
+***
+
+### onOptionsActionDescription?
+
+```ts
+optional onOptionsActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:57](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L57)
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onOptionsActionDescription`](DialogButtonProps.md#onoptionsactiondescription)
+
+***
+
+### onOptionsButton()?
+
+```ts
+optional onOptionsButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:64](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L64)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onOptionsButton`](DialogButtonProps.md#onoptionsbutton)
+
+***
+
+### onSecondaryActionDescription?
+
+```ts
+optional onSecondaryActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:56](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L56)
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onSecondaryActionDescription`](DialogButtonProps.md#onsecondaryactiondescription)
+
+***
+
+### onSecondaryButton()?
+
+```ts
+optional onSecondaryButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:63](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L63)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onSecondaryButton`](DialogButtonProps.md#onsecondarybutton)
+
+***
+
+### ref?
+
+```ts
+optional ref: Ref;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:140
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`ref`](DialogButtonProps.md#ref)
+
+***
+
+### style?
+
+```ts
+optional style: CSSProperties;
+```
+
+Defined in: [src/components/Dialog.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L7)
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`style`](DialogButtonProps.md#style)
+
+## Methods
+
+### onClick()?
+
+```ts
+optional onClick(e: MouseEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:42](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L42)
+
+#### Parameters
+
+##### e
+
+`MouseEvent`
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onClick`](DialogButtonProps.md#onclick)
+
+***
+
+### onMouseDown()?
+
+```ts
+optional onMouseDown(e: MouseEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:46](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L46)
+
+#### Parameters
+
+##### e
+
+`MouseEvent`
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onMouseDown`](DialogButtonProps.md#onmousedown)
+
+***
+
+### onMouseUp()?
+
+```ts
+optional onMouseUp(e: MouseEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:47](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L47)
+
+#### Parameters
+
+##### e
+
+`MouseEvent`
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onMouseUp`](DialogButtonProps.md#onmouseup)
+
+***
+
+### onPointerCancel()?
+
+```ts
+optional onPointerCancel(e: PointerEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:45](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L45)
+
+#### Parameters
+
+##### e
+
+`PointerEvent`
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onPointerCancel`](DialogButtonProps.md#onpointercancel)
+
+***
+
+### onPointerDown()?
+
+```ts
+optional onPointerDown(e: PointerEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:43](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L43)
+
+#### Parameters
+
+##### e
+
+`PointerEvent`
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onPointerDown`](DialogButtonProps.md#onpointerdown)
+
+***
+
+### onPointerUp()?
+
+```ts
+optional onPointerUp(e: PointerEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:44](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L44)
+
+#### Parameters
+
+##### e
+
+`PointerEvent`
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onPointerUp`](DialogButtonProps.md#onpointerup)
+
+***
+
+### onSubmit()?
+
+```ts
+optional onSubmit(e: SubmitEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:51](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L51)
+
+#### Parameters
+
+##### e
+
+`SubmitEvent`
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onSubmit`](DialogButtonProps.md#onsubmit)
+
+***
+
+### onTouchCancel()?
+
+```ts
+optional onTouchCancel(e: TouchEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:50](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L50)
+
+#### Parameters
+
+##### e
+
+`TouchEvent`
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onTouchCancel`](DialogButtonProps.md#ontouchcancel)
+
+***
+
+### onTouchEnd()?
+
+```ts
+optional onTouchEnd(e: TouchEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:49](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L49)
+
+#### Parameters
+
+##### e
+
+`TouchEvent`
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onTouchEnd`](DialogButtonProps.md#ontouchend)
+
+***
+
+### onTouchStart()?
+
+```ts
+optional onTouchStart(e: TouchEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:48](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L48)
+
+#### Parameters
+
+##### e
+
+`TouchEvent`
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DialogButtonProps`](DialogButtonProps.md).[`onTouchStart`](DialogButtonProps.md#ontouchstart)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/CarouselProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/CarouselProps.md
new file mode 100644
index 0000000..f6cd04f
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/CarouselProps.md
@@ -0,0 +1,4538 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: CarouselProps
+
+Defined in: [src/components/Carousel.ts:5](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L5)
+
+## Extends
+
+- `HTMLAttributes`\<`HTMLDivElement`\>
+
+## Properties
+
+### about?
+
+```ts
+optional about: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1776
+
+#### Inherited from
+
+```ts
+HTMLAttributes.about
+```
+
+***
+
+### accessKey?
+
+```ts
+optional accessKey: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1752
+
+#### Inherited from
+
+```ts
+HTMLAttributes.accessKey
+```
+
+***
+
+### aria-activedescendant?
+
+```ts
+optional aria-activedescendant: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1559
+
+Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-activedescendant
+```
+
+***
+
+### aria-atomic?
+
+```ts
+optional aria-atomic: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1561
+
+Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-atomic
+```
+
+***
+
+### aria-autocomplete?
+
+```ts
+optional aria-autocomplete: "inline" | "none" | "list" | "both";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1566
+
+Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be
+presented if they are made.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-autocomplete
+```
+
+***
+
+### aria-busy?
+
+```ts
+optional aria-busy: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1568
+
+Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-busy
+```
+
+***
+
+### aria-checked?
+
+```ts
+optional aria-checked: boolean | "true" | "false" | "mixed";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1573
+
+Indicates the current "checked" state of checkboxes, radio buttons, and other widgets.
+
+#### See
+
+ - aria-pressed
+ - aria-selected.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-checked
+```
+
+***
+
+### aria-colcount?
+
+```ts
+optional aria-colcount: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1578
+
+Defines the total number of columns in a table, grid, or treegrid.
+
+#### See
+
+aria-colindex.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-colcount
+```
+
+***
+
+### aria-colindex?
+
+```ts
+optional aria-colindex: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1583
+
+Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid.
+
+#### See
+
+ - aria-colcount
+ - aria-colspan.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-colindex
+```
+
+***
+
+### aria-colspan?
+
+```ts
+optional aria-colspan: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1588
+
+Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid.
+
+#### See
+
+ - aria-colindex
+ - aria-rowspan.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-colspan
+```
+
+***
+
+### aria-controls?
+
+```ts
+optional aria-controls: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1593
+
+Identifies the element (or elements) whose contents or presence are controlled by the current element.
+
+#### See
+
+aria-owns.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-controls
+```
+
+***
+
+### aria-current?
+
+```ts
+optional aria-current: boolean | "time" | "step" | "true" | "false" | "page" | "location" | "date";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1595
+
+Indicates the element that represents the current item within a container or set of related elements.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-current
+```
+
+***
+
+### aria-describedby?
+
+```ts
+optional aria-describedby: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1600
+
+Identifies the element (or elements) that describes the object.
+
+#### See
+
+aria-labelledby
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-describedby
+```
+
+***
+
+### aria-details?
+
+```ts
+optional aria-details: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1605
+
+Identifies the element that provides a detailed, extended description for the object.
+
+#### See
+
+aria-describedby.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-details
+```
+
+***
+
+### aria-disabled?
+
+```ts
+optional aria-disabled: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1610
+
+Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.
+
+#### See
+
+ - aria-hidden
+ - aria-readonly.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-disabled
+```
+
+***
+
+### ~~aria-dropeffect?~~
+
+```ts
+optional aria-dropeffect: "none" | "link" | "copy" | "execute" | "move" | "popup";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1615
+
+Indicates what functions can be performed when a dragged object is released on the drop target.
+
+#### Deprecated
+
+in ARIA 1.1
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-dropeffect
+```
+
+***
+
+### aria-errormessage?
+
+```ts
+optional aria-errormessage: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1620
+
+Identifies the element that provides an error message for the object.
+
+#### See
+
+ - aria-invalid
+ - aria-describedby.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-errormessage
+```
+
+***
+
+### aria-expanded?
+
+```ts
+optional aria-expanded: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1622
+
+Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-expanded
+```
+
+***
+
+### aria-flowto?
+
+```ts
+optional aria-flowto: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1627
+
+Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion,
+allows assistive technology to override the general default of reading in document source order.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-flowto
+```
+
+***
+
+### ~~aria-grabbed?~~
+
+```ts
+optional aria-grabbed: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1632
+
+Indicates an element's "grabbed" state in a drag-and-drop operation.
+
+#### Deprecated
+
+in ARIA 1.1
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-grabbed
+```
+
+***
+
+### aria-haspopup?
+
+```ts
+optional aria-haspopup:
+ | boolean
+ | "dialog"
+ | "menu"
+ | "grid"
+ | "true"
+ | "false"
+ | "listbox"
+ | "tree";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1634
+
+Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-haspopup
+```
+
+***
+
+### aria-hidden?
+
+```ts
+optional aria-hidden: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1639
+
+Indicates whether the element is exposed to an accessibility API.
+
+#### See
+
+aria-disabled.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-hidden
+```
+
+***
+
+### aria-invalid?
+
+```ts
+optional aria-invalid: boolean | "true" | "false" | "grammar" | "spelling";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1644
+
+Indicates the entered value does not conform to the format expected by the application.
+
+#### See
+
+aria-errormessage.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-invalid
+```
+
+***
+
+### aria-keyshortcuts?
+
+```ts
+optional aria-keyshortcuts: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1646
+
+Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-keyshortcuts
+```
+
+***
+
+### aria-label?
+
+```ts
+optional aria-label: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1651
+
+Defines a string value that labels the current element.
+
+#### See
+
+aria-labelledby.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-label
+```
+
+***
+
+### aria-labelledby?
+
+```ts
+optional aria-labelledby: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1656
+
+Identifies the element (or elements) that labels the current element.
+
+#### See
+
+aria-describedby.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-labelledby
+```
+
+***
+
+### aria-level?
+
+```ts
+optional aria-level: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1658
+
+Defines the hierarchical level of an element within a structure.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-level
+```
+
+***
+
+### aria-live?
+
+```ts
+optional aria-live: "off" | "assertive" | "polite";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1660
+
+Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-live
+```
+
+***
+
+### aria-modal?
+
+```ts
+optional aria-modal: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1662
+
+Indicates whether an element is modal when displayed.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-modal
+```
+
+***
+
+### aria-multiline?
+
+```ts
+optional aria-multiline: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1664
+
+Indicates whether a text box accepts multiple lines of input or only a single line.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-multiline
+```
+
+***
+
+### aria-multiselectable?
+
+```ts
+optional aria-multiselectable: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1666
+
+Indicates that the user may select more than one item from the current selectable descendants.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-multiselectable
+```
+
+***
+
+### aria-orientation?
+
+```ts
+optional aria-orientation: "horizontal" | "vertical";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1668
+
+Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-orientation
+```
+
+***
+
+### aria-owns?
+
+```ts
+optional aria-owns: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1674
+
+Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship
+between DOM elements where the DOM hierarchy cannot be used to represent the relationship.
+
+#### See
+
+aria-controls.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-owns
+```
+
+***
+
+### aria-placeholder?
+
+```ts
+optional aria-placeholder: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1679
+
+Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value.
+A hint could be a sample value or a brief description of the expected format.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-placeholder
+```
+
+***
+
+### aria-posinset?
+
+```ts
+optional aria-posinset: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1684
+
+Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.
+
+#### See
+
+aria-setsize.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-posinset
+```
+
+***
+
+### aria-pressed?
+
+```ts
+optional aria-pressed: boolean | "true" | "false" | "mixed";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1689
+
+Indicates the current "pressed" state of toggle buttons.
+
+#### See
+
+ - aria-checked
+ - aria-selected.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-pressed
+```
+
+***
+
+### aria-readonly?
+
+```ts
+optional aria-readonly: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1694
+
+Indicates that the element is not editable, but is otherwise operable.
+
+#### See
+
+aria-disabled.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-readonly
+```
+
+***
+
+### aria-relevant?
+
+```ts
+optional aria-relevant:
+ | "text"
+ | "all"
+ | "additions"
+ | "additions removals"
+ | "additions text"
+ | "removals"
+ | "removals additions"
+ | "removals text"
+ | "text additions"
+ | "text removals";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1699
+
+Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified.
+
+#### See
+
+aria-atomic.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-relevant
+```
+
+***
+
+### aria-required?
+
+```ts
+optional aria-required: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1701
+
+Indicates that user input is required on the element before a form may be submitted.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-required
+```
+
+***
+
+### aria-roledescription?
+
+```ts
+optional aria-roledescription: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1703
+
+Defines a human-readable, author-localized description for the role of an element.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-roledescription
+```
+
+***
+
+### aria-rowcount?
+
+```ts
+optional aria-rowcount: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1708
+
+Defines the total number of rows in a table, grid, or treegrid.
+
+#### See
+
+aria-rowindex.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-rowcount
+```
+
+***
+
+### aria-rowindex?
+
+```ts
+optional aria-rowindex: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1713
+
+Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid.
+
+#### See
+
+ - aria-rowcount
+ - aria-rowspan.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-rowindex
+```
+
+***
+
+### aria-rowspan?
+
+```ts
+optional aria-rowspan: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1718
+
+Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid.
+
+#### See
+
+ - aria-rowindex
+ - aria-colspan.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-rowspan
+```
+
+***
+
+### aria-selected?
+
+```ts
+optional aria-selected: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1723
+
+Indicates the current "selected" state of various widgets.
+
+#### See
+
+ - aria-checked
+ - aria-pressed.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-selected
+```
+
+***
+
+### aria-setsize?
+
+```ts
+optional aria-setsize: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1728
+
+Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.
+
+#### See
+
+aria-posinset.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-setsize
+```
+
+***
+
+### aria-sort?
+
+```ts
+optional aria-sort: "none" | "ascending" | "descending" | "other";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1730
+
+Indicates if items in a table or grid are sorted in ascending or descending order.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-sort
+```
+
+***
+
+### aria-valuemax?
+
+```ts
+optional aria-valuemax: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1732
+
+Defines the maximum allowed value for a range widget.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-valuemax
+```
+
+***
+
+### aria-valuemin?
+
+```ts
+optional aria-valuemin: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1734
+
+Defines the minimum allowed value for a range widget.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-valuemin
+```
+
+***
+
+### aria-valuenow?
+
+```ts
+optional aria-valuenow: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1739
+
+Defines the current value for a range widget.
+
+#### See
+
+aria-valuetext.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-valuenow
+```
+
+***
+
+### aria-valuetext?
+
+```ts
+optional aria-valuetext: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1741
+
+Defines the human readable text alternative of aria-valuenow for a range widget.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-valuetext
+```
+
+***
+
+### autoCapitalize?
+
+```ts
+optional autoCapitalize: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1786
+
+#### Inherited from
+
+```ts
+HTMLAttributes.autoCapitalize
+```
+
+***
+
+### autoCorrect?
+
+```ts
+optional autoCorrect: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1787
+
+#### Inherited from
+
+```ts
+HTMLAttributes.autoCorrect
+```
+
+***
+
+### autoFocus?
+
+```ts
+optional autoFocus: boolean;
+```
+
+Defined in: [src/components/Carousel.ts:6](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L6)
+
+***
+
+### autoSave?
+
+```ts
+optional autoSave: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1788
+
+#### Inherited from
+
+```ts
+HTMLAttributes.autoSave
+```
+
+***
+
+### children?
+
+```ts
+optional children: ReactNode;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1349
+
+#### Inherited from
+
+```ts
+HTMLAttributes.children
+```
+
+***
+
+### className?
+
+```ts
+optional className: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1753
+
+#### Inherited from
+
+```ts
+HTMLAttributes.className
+```
+
+***
+
+### color?
+
+```ts
+optional color: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1789
+
+#### Inherited from
+
+```ts
+HTMLAttributes.color
+```
+
+***
+
+### contentEditable?
+
+```ts
+optional contentEditable: "inherit" | Booleanish;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1754
+
+#### Inherited from
+
+```ts
+HTMLAttributes.contentEditable
+```
+
+***
+
+### contextMenu?
+
+```ts
+optional contextMenu: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1755
+
+#### Inherited from
+
+```ts
+HTMLAttributes.contextMenu
+```
+
+***
+
+### dangerouslySetInnerHTML?
+
+```ts
+optional dangerouslySetInnerHTML: {
+ __html: string;
+};
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1350
+
+#### \_\_html
+
+```ts
+__html: string;
+```
+
+#### Inherited from
+
+```ts
+HTMLAttributes.dangerouslySetInnerHTML
+```
+
+***
+
+### datatype?
+
+```ts
+optional datatype: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1777
+
+#### Inherited from
+
+```ts
+HTMLAttributes.datatype
+```
+
+***
+
+### defaultChecked?
+
+```ts
+optional defaultChecked: boolean;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1746
+
+#### Inherited from
+
+```ts
+HTMLAttributes.defaultChecked
+```
+
+***
+
+### defaultValue?
+
+```ts
+optional defaultValue: string | number | readonly string[];
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1747
+
+#### Inherited from
+
+```ts
+HTMLAttributes.defaultValue
+```
+
+***
+
+### dir?
+
+```ts
+optional dir: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1756
+
+#### Inherited from
+
+```ts
+HTMLAttributes.dir
+```
+
+***
+
+### draggable?
+
+```ts
+optional draggable: Booleanish;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1757
+
+#### Inherited from
+
+```ts
+HTMLAttributes.draggable
+```
+
+***
+
+### enableBumperPaging?
+
+```ts
+optional enableBumperPaging: boolean;
+```
+
+Defined in: [src/components/Carousel.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L7)
+
+***
+
+### fnDoesItemTakeFocus()?
+
+```ts
+optional fnDoesItemTakeFocus: (...unknown: any[]) => boolean;
+```
+
+Defined in: [src/components/Carousel.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L8)
+
+#### Parameters
+
+##### unknown
+
+...`any`[]
+
+#### Returns
+
+`boolean`
+
+***
+
+### fnGetColumnWidth()?
+
+```ts
+optional fnGetColumnWidth: (...unknown: any[]) => number;
+```
+
+Defined in: [src/components/Carousel.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L9)
+
+#### Parameters
+
+##### unknown
+
+...`any`[]
+
+#### Returns
+
+`number`
+
+***
+
+### fnGetId()?
+
+```ts
+optional fnGetId: (id: number) => number;
+```
+
+Defined in: [src/components/Carousel.ts:10](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L10)
+
+#### Parameters
+
+##### id
+
+`number`
+
+#### Returns
+
+`number`
+
+***
+
+### fnItemRenderer()?
+
+```ts
+optional fnItemRenderer: (id: number, ...unknown: any[]) => ReactNode;
+```
+
+Defined in: [src/components/Carousel.ts:11](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L11)
+
+#### Parameters
+
+##### id
+
+`number`
+
+##### unknown
+
+...`any`[]
+
+#### Returns
+
+`ReactNode`
+
+***
+
+### fnUpdateArrows()?
+
+```ts
+optional fnUpdateArrows: (...unknown: any[]) => any;
+```
+
+Defined in: [src/components/Carousel.ts:12](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L12)
+
+#### Parameters
+
+##### unknown
+
+...`any`[]
+
+#### Returns
+
+`any`
+
+***
+
+### hidden?
+
+```ts
+optional hidden: boolean;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1758
+
+#### Inherited from
+
+```ts
+HTMLAttributes.hidden
+```
+
+***
+
+### id?
+
+```ts
+optional id: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1759
+
+#### Inherited from
+
+```ts
+HTMLAttributes.id
+```
+
+***
+
+### initialColumn?
+
+```ts
+optional initialColumn: number;
+```
+
+Defined in: [src/components/Carousel.ts:13](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L13)
+
+***
+
+### inlist?
+
+```ts
+optional inlist: any;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1778
+
+#### Inherited from
+
+```ts
+HTMLAttributes.inlist
+```
+
+***
+
+### inputMode?
+
+```ts
+optional inputMode:
+ | "none"
+ | "text"
+ | "search"
+ | "tel"
+ | "url"
+ | "email"
+ | "numeric"
+ | "decimal";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1804
+
+Hints at the type of data that might be entered by the user while editing the element or its contents
+
+#### See
+
+https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute
+
+#### Inherited from
+
+```ts
+HTMLAttributes.inputMode
+```
+
+***
+
+### is?
+
+```ts
+optional is: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1809
+
+Specify that a standard HTML element should behave like a defined custom built-in element
+
+#### See
+
+https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is
+
+#### Inherited from
+
+```ts
+HTMLAttributes.is
+```
+
+***
+
+### itemID?
+
+```ts
+optional itemID: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1793
+
+#### Inherited from
+
+```ts
+HTMLAttributes.itemID
+```
+
+***
+
+### itemProp?
+
+```ts
+optional itemProp: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1790
+
+#### Inherited from
+
+```ts
+HTMLAttributes.itemProp
+```
+
+***
+
+### itemRef?
+
+```ts
+optional itemRef: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1794
+
+#### Inherited from
+
+```ts
+HTMLAttributes.itemRef
+```
+
+***
+
+### itemScope?
+
+```ts
+optional itemScope: boolean;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1791
+
+#### Inherited from
+
+```ts
+HTMLAttributes.itemScope
+```
+
+***
+
+### itemType?
+
+```ts
+optional itemType: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1792
+
+#### Inherited from
+
+```ts
+HTMLAttributes.itemType
+```
+
+***
+
+### lang?
+
+```ts
+optional lang: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1760
+
+#### Inherited from
+
+```ts
+HTMLAttributes.lang
+```
+
+***
+
+### name?
+
+```ts
+optional name: string;
+```
+
+Defined in: [src/components/Carousel.ts:19](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L19)
+
+***
+
+### nHeight?
+
+```ts
+optional nHeight: number;
+```
+
+Defined in: [src/components/Carousel.ts:14](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L14)
+
+***
+
+### nIndexLeftmost?
+
+```ts
+optional nIndexLeftmost: number;
+```
+
+Defined in: [src/components/Carousel.ts:15](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L15)
+
+***
+
+### nItemHeight?
+
+```ts
+optional nItemHeight: number;
+```
+
+Defined in: [src/components/Carousel.ts:16](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L16)
+
+***
+
+### nItemMarginX?
+
+```ts
+optional nItemMarginX: number;
+```
+
+Defined in: [src/components/Carousel.ts:17](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L17)
+
+***
+
+### nNumItems?
+
+```ts
+optional nNumItems: number;
+```
+
+Defined in: [src/components/Carousel.ts:18](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L18)
+
+***
+
+### onAbort?
+
+```ts
+optional onAbort: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1405
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAbort
+```
+
+***
+
+### onAbortCapture?
+
+```ts
+optional onAbortCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1406
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAbortCapture
+```
+
+***
+
+### onAnimationEnd?
+
+```ts
+optional onAnimationEnd: AnimationEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1535
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAnimationEnd
+```
+
+***
+
+### onAnimationEndCapture?
+
+```ts
+optional onAnimationEndCapture: AnimationEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1536
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAnimationEndCapture
+```
+
+***
+
+### onAnimationIteration?
+
+```ts
+optional onAnimationIteration: AnimationEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1537
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAnimationIteration
+```
+
+***
+
+### onAnimationIterationCapture?
+
+```ts
+optional onAnimationIterationCapture: AnimationEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1538
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAnimationIterationCapture
+```
+
+***
+
+### onAnimationStart?
+
+```ts
+optional onAnimationStart: AnimationEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1533
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAnimationStart
+```
+
+***
+
+### onAnimationStartCapture?
+
+```ts
+optional onAnimationStartCapture: AnimationEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1534
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAnimationStartCapture
+```
+
+***
+
+### onAuxClick?
+
+```ts
+optional onAuxClick: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1451
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAuxClick
+```
+
+***
+
+### onAuxClickCapture?
+
+```ts
+optional onAuxClickCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1452
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAuxClickCapture
+```
+
+***
+
+### onBeforeInput?
+
+```ts
+optional onBeforeInput: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1379
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onBeforeInput
+```
+
+***
+
+### onBeforeInputCapture?
+
+```ts
+optional onBeforeInputCapture: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1380
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onBeforeInputCapture
+```
+
+***
+
+### onBlur?
+
+```ts
+optional onBlur: FocusEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1373
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onBlur
+```
+
+***
+
+### onBlurCapture?
+
+```ts
+optional onBlurCapture: FocusEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1374
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onBlurCapture
+```
+
+***
+
+### onCanPlay?
+
+```ts
+optional onCanPlay: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1407
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCanPlay
+```
+
+***
+
+### onCanPlayCapture?
+
+```ts
+optional onCanPlayCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1408
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCanPlayCapture
+```
+
+***
+
+### onCanPlayThrough?
+
+```ts
+optional onCanPlayThrough: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1409
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCanPlayThrough
+```
+
+***
+
+### onCanPlayThroughCapture?
+
+```ts
+optional onCanPlayThroughCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1410
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCanPlayThroughCapture
+```
+
+***
+
+### onChange?
+
+```ts
+optional onChange: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1377
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onChange
+```
+
+***
+
+### onChangeCapture?
+
+```ts
+optional onChangeCapture: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1378
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onChangeCapture
+```
+
+***
+
+### onClick?
+
+```ts
+optional onClick: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1453
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onClick
+```
+
+***
+
+### onClickCapture?
+
+```ts
+optional onClickCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1454
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onClickCapture
+```
+
+***
+
+### onCompositionEnd?
+
+```ts
+optional onCompositionEnd: CompositionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1363
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCompositionEnd
+```
+
+***
+
+### onCompositionEndCapture?
+
+```ts
+optional onCompositionEndCapture: CompositionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1364
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCompositionEndCapture
+```
+
+***
+
+### onCompositionStart?
+
+```ts
+optional onCompositionStart: CompositionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1365
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCompositionStart
+```
+
+***
+
+### onCompositionStartCapture?
+
+```ts
+optional onCompositionStartCapture: CompositionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1366
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCompositionStartCapture
+```
+
+***
+
+### onCompositionUpdate?
+
+```ts
+optional onCompositionUpdate: CompositionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1367
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCompositionUpdate
+```
+
+***
+
+### onCompositionUpdateCapture?
+
+```ts
+optional onCompositionUpdateCapture: CompositionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1368
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCompositionUpdateCapture
+```
+
+***
+
+### onContextMenu?
+
+```ts
+optional onContextMenu: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1455
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onContextMenu
+```
+
+***
+
+### onContextMenuCapture?
+
+```ts
+optional onContextMenuCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1456
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onContextMenuCapture
+```
+
+***
+
+### onCopy?
+
+```ts
+optional onCopy: ClipboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1355
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCopy
+```
+
+***
+
+### onCopyCapture?
+
+```ts
+optional onCopyCapture: ClipboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1356
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCopyCapture
+```
+
+***
+
+### onCut?
+
+```ts
+optional onCut: ClipboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1357
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCut
+```
+
+***
+
+### onCutCapture?
+
+```ts
+optional onCutCapture: ClipboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1358
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCutCapture
+```
+
+***
+
+### onDoubleClick?
+
+```ts
+optional onDoubleClick: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1457
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDoubleClick
+```
+
+***
+
+### onDoubleClickCapture?
+
+```ts
+optional onDoubleClickCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1458
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDoubleClickCapture
+```
+
+***
+
+### onDrag?
+
+```ts
+optional onDrag: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1459
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDrag
+```
+
+***
+
+### onDragCapture?
+
+```ts
+optional onDragCapture: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1460
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragCapture
+```
+
+***
+
+### onDragEnd?
+
+```ts
+optional onDragEnd: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1461
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragEnd
+```
+
+***
+
+### onDragEndCapture?
+
+```ts
+optional onDragEndCapture: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1462
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragEndCapture
+```
+
+***
+
+### onDragEnter?
+
+```ts
+optional onDragEnter: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1463
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragEnter
+```
+
+***
+
+### onDragEnterCapture?
+
+```ts
+optional onDragEnterCapture: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1464
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragEnterCapture
+```
+
+***
+
+### onDragExit?
+
+```ts
+optional onDragExit: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1465
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragExit
+```
+
+***
+
+### onDragExitCapture?
+
+```ts
+optional onDragExitCapture: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1466
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragExitCapture
+```
+
+***
+
+### onDragLeave?
+
+```ts
+optional onDragLeave: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1467
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragLeave
+```
+
+***
+
+### onDragLeaveCapture?
+
+```ts
+optional onDragLeaveCapture: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1468
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragLeaveCapture
+```
+
+***
+
+### onDragOver?
+
+```ts
+optional onDragOver: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1469
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragOver
+```
+
+***
+
+### onDragOverCapture?
+
+```ts
+optional onDragOverCapture: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1470
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragOverCapture
+```
+
+***
+
+### onDragStart?
+
+```ts
+optional onDragStart: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1471
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragStart
+```
+
+***
+
+### onDragStartCapture?
+
+```ts
+optional onDragStartCapture: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1472
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragStartCapture
+```
+
+***
+
+### onDrop?
+
+```ts
+optional onDrop: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1473
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDrop
+```
+
+***
+
+### onDropCapture?
+
+```ts
+optional onDropCapture: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1474
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDropCapture
+```
+
+***
+
+### onDurationChange?
+
+```ts
+optional onDurationChange: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1411
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDurationChange
+```
+
+***
+
+### onDurationChangeCapture?
+
+```ts
+optional onDurationChangeCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1412
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDurationChangeCapture
+```
+
+***
+
+### onEmptied?
+
+```ts
+optional onEmptied: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1413
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onEmptied
+```
+
+***
+
+### onEmptiedCapture?
+
+```ts
+optional onEmptiedCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1414
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onEmptiedCapture
+```
+
+***
+
+### onEncrypted?
+
+```ts
+optional onEncrypted: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1415
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onEncrypted
+```
+
+***
+
+### onEncryptedCapture?
+
+```ts
+optional onEncryptedCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1416
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onEncryptedCapture
+```
+
+***
+
+### onEnded?
+
+```ts
+optional onEnded: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1417
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onEnded
+```
+
+***
+
+### onEndedCapture?
+
+```ts
+optional onEndedCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1418
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onEndedCapture
+```
+
+***
+
+### onError?
+
+```ts
+optional onError: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1393
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onError
+```
+
+***
+
+### onErrorCapture?
+
+```ts
+optional onErrorCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1394
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onErrorCapture
+```
+
+***
+
+### onFocus?
+
+```ts
+optional onFocus: FocusEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1371
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onFocus
+```
+
+***
+
+### onFocusCapture?
+
+```ts
+optional onFocusCapture: FocusEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1372
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onFocusCapture
+```
+
+***
+
+### onGotPointerCapture?
+
+```ts
+optional onGotPointerCapture: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1519
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onGotPointerCapture
+```
+
+***
+
+### onGotPointerCaptureCapture?
+
+```ts
+optional onGotPointerCaptureCapture: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1520
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onGotPointerCaptureCapture
+```
+
+***
+
+### onInput?
+
+```ts
+optional onInput: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1381
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onInput
+```
+
+***
+
+### onInputCapture?
+
+```ts
+optional onInputCapture: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1382
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onInputCapture
+```
+
+***
+
+### onInvalid?
+
+```ts
+optional onInvalid: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1387
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onInvalid
+```
+
+***
+
+### onInvalidCapture?
+
+```ts
+optional onInvalidCapture: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1388
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onInvalidCapture
+```
+
+***
+
+### onKeyDown?
+
+```ts
+optional onKeyDown: KeyboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1397
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onKeyDown
+```
+
+***
+
+### onKeyDownCapture?
+
+```ts
+optional onKeyDownCapture: KeyboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1398
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onKeyDownCapture
+```
+
+***
+
+### onKeyPress?
+
+```ts
+optional onKeyPress: KeyboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1399
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onKeyPress
+```
+
+***
+
+### onKeyPressCapture?
+
+```ts
+optional onKeyPressCapture: KeyboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1400
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onKeyPressCapture
+```
+
+***
+
+### onKeyUp?
+
+```ts
+optional onKeyUp: KeyboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1401
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onKeyUp
+```
+
+***
+
+### onKeyUpCapture?
+
+```ts
+optional onKeyUpCapture: KeyboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1402
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onKeyUpCapture
+```
+
+***
+
+### onLoad?
+
+```ts
+optional onLoad: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1391
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onLoad
+```
+
+***
+
+### onLoadCapture?
+
+```ts
+optional onLoadCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1392
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onLoadCapture
+```
+
+***
+
+### onLoadedData?
+
+```ts
+optional onLoadedData: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1419
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onLoadedData
+```
+
+***
+
+### onLoadedDataCapture?
+
+```ts
+optional onLoadedDataCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1420
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onLoadedDataCapture
+```
+
+***
+
+### onLoadedMetadata?
+
+```ts
+optional onLoadedMetadata: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1421
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onLoadedMetadata
+```
+
+***
+
+### onLoadedMetadataCapture?
+
+```ts
+optional onLoadedMetadataCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1422
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onLoadedMetadataCapture
+```
+
+***
+
+### onLoadStart?
+
+```ts
+optional onLoadStart: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1423
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onLoadStart
+```
+
+***
+
+### onLoadStartCapture?
+
+```ts
+optional onLoadStartCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1424
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onLoadStartCapture
+```
+
+***
+
+### onLostPointerCapture?
+
+```ts
+optional onLostPointerCapture: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1521
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onLostPointerCapture
+```
+
+***
+
+### onLostPointerCaptureCapture?
+
+```ts
+optional onLostPointerCaptureCapture: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1522
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onLostPointerCaptureCapture
+```
+
+***
+
+### onMouseDown?
+
+```ts
+optional onMouseDown: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1475
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onMouseDown
+```
+
+***
+
+### onMouseDownCapture?
+
+```ts
+optional onMouseDownCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1476
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onMouseDownCapture
+```
+
+***
+
+### onMouseEnter?
+
+```ts
+optional onMouseEnter: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1477
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onMouseEnter
+```
+
+***
+
+### onMouseLeave?
+
+```ts
+optional onMouseLeave: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1478
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onMouseLeave
+```
+
+***
+
+### onMouseMove?
+
+```ts
+optional onMouseMove: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1479
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onMouseMove
+```
+
+***
+
+### onMouseMoveCapture?
+
+```ts
+optional onMouseMoveCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1480
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onMouseMoveCapture
+```
+
+***
+
+### onMouseOut?
+
+```ts
+optional onMouseOut: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1481
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onMouseOut
+```
+
+***
+
+### onMouseOutCapture?
+
+```ts
+optional onMouseOutCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1482
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onMouseOutCapture
+```
+
+***
+
+### onMouseOver?
+
+```ts
+optional onMouseOver: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1483
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onMouseOver
+```
+
+***
+
+### onMouseOverCapture?
+
+```ts
+optional onMouseOverCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1484
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onMouseOverCapture
+```
+
+***
+
+### onMouseUp?
+
+```ts
+optional onMouseUp: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1485
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onMouseUp
+```
+
+***
+
+### onMouseUpCapture?
+
+```ts
+optional onMouseUpCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1486
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onMouseUpCapture
+```
+
+***
+
+### onPaste?
+
+```ts
+optional onPaste: ClipboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1359
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPaste
+```
+
+***
+
+### onPasteCapture?
+
+```ts
+optional onPasteCapture: ClipboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1360
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPasteCapture
+```
+
+***
+
+### onPause?
+
+```ts
+optional onPause: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1425
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPause
+```
+
+***
+
+### onPauseCapture?
+
+```ts
+optional onPauseCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1426
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPauseCapture
+```
+
+***
+
+### onPlay?
+
+```ts
+optional onPlay: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1427
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPlay
+```
+
+***
+
+### onPlayCapture?
+
+```ts
+optional onPlayCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1428
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPlayCapture
+```
+
+***
+
+### onPlaying?
+
+```ts
+optional onPlaying: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1429
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPlaying
+```
+
+***
+
+### onPlayingCapture?
+
+```ts
+optional onPlayingCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1430
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPlayingCapture
+```
+
+***
+
+### onPointerCancel?
+
+```ts
+optional onPointerCancel: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1509
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerCancel
+```
+
+***
+
+### onPointerCancelCapture?
+
+```ts
+optional onPointerCancelCapture: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1510
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerCancelCapture
+```
+
+***
+
+### onPointerDown?
+
+```ts
+optional onPointerDown: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1503
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerDown
+```
+
+***
+
+### onPointerDownCapture?
+
+```ts
+optional onPointerDownCapture: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1504
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerDownCapture
+```
+
+***
+
+### onPointerEnter?
+
+```ts
+optional onPointerEnter: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1511
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerEnter
+```
+
+***
+
+### onPointerEnterCapture?
+
+```ts
+optional onPointerEnterCapture: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1512
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerEnterCapture
+```
+
+***
+
+### onPointerLeave?
+
+```ts
+optional onPointerLeave: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1513
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerLeave
+```
+
+***
+
+### onPointerLeaveCapture?
+
+```ts
+optional onPointerLeaveCapture: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1514
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerLeaveCapture
+```
+
+***
+
+### onPointerMove?
+
+```ts
+optional onPointerMove: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1505
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerMove
+```
+
+***
+
+### onPointerMoveCapture?
+
+```ts
+optional onPointerMoveCapture: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1506
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerMoveCapture
+```
+
+***
+
+### onPointerOut?
+
+```ts
+optional onPointerOut: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1517
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerOut
+```
+
+***
+
+### onPointerOutCapture?
+
+```ts
+optional onPointerOutCapture: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1518
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerOutCapture
+```
+
+***
+
+### onPointerOver?
+
+```ts
+optional onPointerOver: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1515
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerOver
+```
+
+***
+
+### onPointerOverCapture?
+
+```ts
+optional onPointerOverCapture: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1516
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerOverCapture
+```
+
+***
+
+### onPointerUp?
+
+```ts
+optional onPointerUp: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1507
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerUp
+```
+
+***
+
+### onPointerUpCapture?
+
+```ts
+optional onPointerUpCapture: PointerEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1508
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onPointerUpCapture
+```
+
+***
+
+### onProgress?
+
+```ts
+optional onProgress: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1431
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onProgress
+```
+
+***
+
+### onProgressCapture?
+
+```ts
+optional onProgressCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1432
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onProgressCapture
+```
+
+***
+
+### onRateChange?
+
+```ts
+optional onRateChange: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1433
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onRateChange
+```
+
+***
+
+### onRateChangeCapture?
+
+```ts
+optional onRateChangeCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1434
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onRateChangeCapture
+```
+
+***
+
+### onReset?
+
+```ts
+optional onReset: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1383
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onReset
+```
+
+***
+
+### onResetCapture?
+
+```ts
+optional onResetCapture: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1384
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onResetCapture
+```
+
+***
+
+### onScroll?
+
+```ts
+optional onScroll: UIEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1525
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onScroll
+```
+
+***
+
+### onScrollCapture?
+
+```ts
+optional onScrollCapture: UIEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1526
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onScrollCapture
+```
+
+***
+
+### onSeeked?
+
+```ts
+optional onSeeked: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1435
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onSeeked
+```
+
+***
+
+### onSeekedCapture?
+
+```ts
+optional onSeekedCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1436
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onSeekedCapture
+```
+
+***
+
+### onSeeking?
+
+```ts
+optional onSeeking: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1437
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onSeeking
+```
+
+***
+
+### onSeekingCapture?
+
+```ts
+optional onSeekingCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1438
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onSeekingCapture
+```
+
+***
+
+### onSelect?
+
+```ts
+optional onSelect: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1489
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onSelect
+```
+
+***
+
+### onSelectCapture?
+
+```ts
+optional onSelectCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1490
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onSelectCapture
+```
+
+***
+
+### onStalled?
+
+```ts
+optional onStalled: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1439
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onStalled
+```
+
+***
+
+### onStalledCapture?
+
+```ts
+optional onStalledCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1440
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onStalledCapture
+```
+
+***
+
+### onSubmit?
+
+```ts
+optional onSubmit: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1385
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onSubmit
+```
+
+***
+
+### onSubmitCapture?
+
+```ts
+optional onSubmitCapture: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1386
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onSubmitCapture
+```
+
+***
+
+### onSuspend?
+
+```ts
+optional onSuspend: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1441
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onSuspend
+```
+
+***
+
+### onSuspendCapture?
+
+```ts
+optional onSuspendCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1442
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onSuspendCapture
+```
+
+***
+
+### onTimeUpdate?
+
+```ts
+optional onTimeUpdate: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1443
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onTimeUpdate
+```
+
+***
+
+### onTimeUpdateCapture?
+
+```ts
+optional onTimeUpdateCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1444
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onTimeUpdateCapture
+```
+
+***
+
+### onTouchCancel?
+
+```ts
+optional onTouchCancel: TouchEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1493
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onTouchCancel
+```
+
+***
+
+### onTouchCancelCapture?
+
+```ts
+optional onTouchCancelCapture: TouchEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1494
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onTouchCancelCapture
+```
+
+***
+
+### onTouchEnd?
+
+```ts
+optional onTouchEnd: TouchEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1495
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onTouchEnd
+```
+
+***
+
+### onTouchEndCapture?
+
+```ts
+optional onTouchEndCapture: TouchEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1496
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onTouchEndCapture
+```
+
+***
+
+### onTouchMove?
+
+```ts
+optional onTouchMove: TouchEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1497
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onTouchMove
+```
+
+***
+
+### onTouchMoveCapture?
+
+```ts
+optional onTouchMoveCapture: TouchEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1498
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onTouchMoveCapture
+```
+
+***
+
+### onTouchStart?
+
+```ts
+optional onTouchStart: TouchEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1499
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onTouchStart
+```
+
+***
+
+### onTouchStartCapture?
+
+```ts
+optional onTouchStartCapture: TouchEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1500
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onTouchStartCapture
+```
+
+***
+
+### onTransitionEnd?
+
+```ts
+optional onTransitionEnd: TransitionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1541
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onTransitionEnd
+```
+
+***
+
+### onTransitionEndCapture?
+
+```ts
+optional onTransitionEndCapture: TransitionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1542
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onTransitionEndCapture
+```
+
+***
+
+### onVolumeChange?
+
+```ts
+optional onVolumeChange: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1445
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onVolumeChange
+```
+
+***
+
+### onVolumeChangeCapture?
+
+```ts
+optional onVolumeChangeCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1446
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onVolumeChangeCapture
+```
+
+***
+
+### onWaiting?
+
+```ts
+optional onWaiting: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1447
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onWaiting
+```
+
+***
+
+### onWaitingCapture?
+
+```ts
+optional onWaitingCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1448
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onWaitingCapture
+```
+
+***
+
+### onWheel?
+
+```ts
+optional onWheel: WheelEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1529
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onWheel
+```
+
+***
+
+### onWheelCapture?
+
+```ts
+optional onWheelCapture: WheelEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1530
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onWheelCapture
+```
+
+***
+
+### placeholder?
+
+```ts
+optional placeholder: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1761
+
+#### Inherited from
+
+```ts
+HTMLAttributes.placeholder
+```
+
+***
+
+### prefix?
+
+```ts
+optional prefix: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1779
+
+#### Inherited from
+
+```ts
+HTMLAttributes.prefix
+```
+
+***
+
+### property?
+
+```ts
+optional property: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1780
+
+#### Inherited from
+
+```ts
+HTMLAttributes.property
+```
+
+***
+
+### radioGroup?
+
+```ts
+optional radioGroup: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1770
+
+#### Inherited from
+
+```ts
+HTMLAttributes.radioGroup
+```
+
+***
+
+### resource?
+
+```ts
+optional resource: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1781
+
+#### Inherited from
+
+```ts
+HTMLAttributes.resource
+```
+
+***
+
+### results?
+
+```ts
+optional results: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1795
+
+#### Inherited from
+
+```ts
+HTMLAttributes.results
+```
+
+***
+
+### role?
+
+```ts
+optional role: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1773
+
+#### Inherited from
+
+```ts
+HTMLAttributes.role
+```
+
+***
+
+### scrollToAlignment?
+
+```ts
+optional scrollToAlignment: "center";
+```
+
+Defined in: [src/components/Carousel.ts:20](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Carousel.ts#L20)
+
+***
+
+### security?
+
+```ts
+optional security: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1796
+
+#### Inherited from
+
+```ts
+HTMLAttributes.security
+```
+
+***
+
+### slot?
+
+```ts
+optional slot: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1762
+
+#### Inherited from
+
+```ts
+HTMLAttributes.slot
+```
+
+***
+
+### spellCheck?
+
+```ts
+optional spellCheck: Booleanish;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1763
+
+#### Inherited from
+
+```ts
+HTMLAttributes.spellCheck
+```
+
+***
+
+### style?
+
+```ts
+optional style: CSSProperties;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1764
+
+#### Inherited from
+
+```ts
+HTMLAttributes.style
+```
+
+***
+
+### suppressContentEditableWarning?
+
+```ts
+optional suppressContentEditableWarning: boolean;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1748
+
+#### Inherited from
+
+```ts
+HTMLAttributes.suppressContentEditableWarning
+```
+
+***
+
+### suppressHydrationWarning?
+
+```ts
+optional suppressHydrationWarning: boolean;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1749
+
+#### Inherited from
+
+```ts
+HTMLAttributes.suppressHydrationWarning
+```
+
+***
+
+### tabIndex?
+
+```ts
+optional tabIndex: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1765
+
+#### Inherited from
+
+```ts
+HTMLAttributes.tabIndex
+```
+
+***
+
+### title?
+
+```ts
+optional title: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1766
+
+#### Inherited from
+
+```ts
+HTMLAttributes.title
+```
+
+***
+
+### translate?
+
+```ts
+optional translate: "yes" | "no";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1767
+
+#### Inherited from
+
+```ts
+HTMLAttributes.translate
+```
+
+***
+
+### typeof?
+
+```ts
+optional typeof: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1782
+
+#### Inherited from
+
+```ts
+HTMLAttributes.typeof
+```
+
+***
+
+### unselectable?
+
+```ts
+optional unselectable: "on" | "off";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1797
+
+#### Inherited from
+
+```ts
+HTMLAttributes.unselectable
+```
+
+***
+
+### vocab?
+
+```ts
+optional vocab: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1783
+
+#### Inherited from
+
+```ts
+HTMLAttributes.vocab
+```
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ClassModule.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ClassModule.md
new file mode 100644
index 0000000..dcfd4a5
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ClassModule.md
@@ -0,0 +1,13 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: ClassModule
+
+Defined in: [src/class-mapper.ts:3](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/class-mapper.ts#L3)
+
+## Indexable
+
+```ts
+[name: string]: string
+```
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ColorPickerModalProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ColorPickerModalProps.md
new file mode 100644
index 0000000..51c3db6
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ColorPickerModalProps.md
@@ -0,0 +1,91 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: ColorPickerModalProps
+
+Defined in: [src/custom-components/ColorPickerModal.tsx:6](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/custom-components/ColorPickerModal.tsx#L6)
+
+## Properties
+
+### closeModal()
+
+```ts
+closeModal: () => void;
+```
+
+Defined in: [src/custom-components/ColorPickerModal.tsx:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/custom-components/ColorPickerModal.tsx#L7)
+
+#### Returns
+
+`void`
+
+***
+
+### defaultA?
+
+```ts
+optional defaultA: number;
+```
+
+Defined in: [src/custom-components/ColorPickerModal.tsx:13](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/custom-components/ColorPickerModal.tsx#L13)
+
+***
+
+### defaultH?
+
+```ts
+optional defaultH: number;
+```
+
+Defined in: [src/custom-components/ColorPickerModal.tsx:10](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/custom-components/ColorPickerModal.tsx#L10)
+
+***
+
+### defaultL?
+
+```ts
+optional defaultL: number;
+```
+
+Defined in: [src/custom-components/ColorPickerModal.tsx:12](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/custom-components/ColorPickerModal.tsx#L12)
+
+***
+
+### defaultS?
+
+```ts
+optional defaultS: number;
+```
+
+Defined in: [src/custom-components/ColorPickerModal.tsx:11](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/custom-components/ColorPickerModal.tsx#L11)
+
+***
+
+### title?
+
+```ts
+optional title: string;
+```
+
+Defined in: [src/custom-components/ColorPickerModal.tsx:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/custom-components/ColorPickerModal.tsx#L9)
+
+## Methods
+
+### onConfirm()?
+
+```ts
+optional onConfirm(HSLString: string): any
+```
+
+Defined in: [src/custom-components/ColorPickerModal.tsx:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/custom-components/ColorPickerModal.tsx#L8)
+
+#### Parameters
+
+##### HSLString
+
+`string`
+
+#### Returns
+
+`any`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ConfirmModalProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ConfirmModalProps.md
new file mode 100644
index 0000000..d3ace99
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ConfirmModalProps.md
@@ -0,0 +1,293 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: ConfirmModalProps
+
+Defined in: [src/components/Modal.tsx:76](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L76)
+
+## Extends
+
+- [`ModalRootProps`](ModalRootProps.md)
+
+## Properties
+
+### bAlertDialog?
+
+```ts
+optional bAlertDialog: boolean;
+```
+
+Defined in: [src/components/Modal.tsx:83](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L83)
+
+***
+
+### bAllowFullSize?
+
+```ts
+optional bAllowFullSize: boolean;
+```
+
+Defined in: [src/components/Modal.tsx:68](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L68)
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`bAllowFullSize`](ModalRootProps.md#ballowfullsize)
+
+***
+
+### bCancelDisabled?
+
+```ts
+optional bCancelDisabled: boolean;
+```
+
+Defined in: [src/components/Modal.tsx:73](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L73)
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`bCancelDisabled`](ModalRootProps.md#bcanceldisabled)
+
+***
+
+### bDestructiveWarning?
+
+```ts
+optional bDestructiveWarning: boolean;
+```
+
+Defined in: [src/components/Modal.tsx:69](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L69)
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`bDestructiveWarning`](ModalRootProps.md#bdestructivewarning)
+
+***
+
+### bDisableBackgroundDismiss?
+
+```ts
+optional bDisableBackgroundDismiss: boolean;
+```
+
+Defined in: [src/components/Modal.tsx:70](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L70)
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`bDisableBackgroundDismiss`](ModalRootProps.md#bdisablebackgrounddismiss)
+
+***
+
+### bHideCloseIcon?
+
+```ts
+optional bHideCloseIcon: boolean;
+```
+
+Defined in: [src/components/Modal.tsx:71](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L71)
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`bHideCloseIcon`](ModalRootProps.md#bhidecloseicon)
+
+***
+
+### bMiddleDisabled?
+
+```ts
+optional bMiddleDisabled: boolean;
+```
+
+Defined in: [src/components/Modal.tsx:84](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L84)
+
+***
+
+### bOKDisabled?
+
+```ts
+optional bOKDisabled: boolean;
+```
+
+Defined in: [src/components/Modal.tsx:72](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L72)
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`bOKDisabled`](ModalRootProps.md#bokdisabled)
+
+***
+
+### children?
+
+```ts
+optional children: ReactNode;
+```
+
+Defined in: [src/components/Modal.tsx:61](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L61)
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`children`](ModalRootProps.md#children)
+
+***
+
+### className?
+
+```ts
+optional className: string;
+```
+
+Defined in: [src/components/Modal.tsx:66](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L66)
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`className`](ModalRootProps.md#classname)
+
+***
+
+### modalClassName?
+
+```ts
+optional modalClassName: string;
+```
+
+Defined in: [src/components/Modal.tsx:67](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L67)
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`modalClassName`](ModalRootProps.md#modalclassname)
+
+***
+
+### strCancelButtonText?
+
+```ts
+optional strCancelButtonText: ReactNode;
+```
+
+Defined in: [src/components/Modal.tsx:81](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L81)
+
+***
+
+### strDescription?
+
+```ts
+optional strDescription: ReactNode;
+```
+
+Defined in: [src/components/Modal.tsx:79](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L79)
+
+***
+
+### strMiddleButtonText?
+
+```ts
+optional strMiddleButtonText: ReactNode;
+```
+
+Defined in: [src/components/Modal.tsx:82](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L82)
+
+***
+
+### strOKButtonText?
+
+```ts
+optional strOKButtonText: ReactNode;
+```
+
+Defined in: [src/components/Modal.tsx:80](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L80)
+
+***
+
+### strTitle?
+
+```ts
+optional strTitle: ReactNode;
+```
+
+Defined in: [src/components/Modal.tsx:78](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L78)
+
+## Methods
+
+### closeModal()?
+
+```ts
+optional closeModal(): void
+```
+
+Defined in: [src/components/Modal.tsx:63](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L63)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`closeModal`](ModalRootProps.md#closemodal)
+
+***
+
+### onCancel()?
+
+```ts
+optional onCancel(): void
+```
+
+Defined in: [src/components/Modal.tsx:62](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L62)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`onCancel`](ModalRootProps.md#oncancel)
+
+***
+
+### onEscKeypress()?
+
+```ts
+optional onEscKeypress(): void
+```
+
+Defined in: [src/components/Modal.tsx:65](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L65)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`onEscKeypress`](ModalRootProps.md#onesckeypress)
+
+***
+
+### onMiddleButton()?
+
+```ts
+optional onMiddleButton(): void
+```
+
+Defined in: [src/components/Modal.tsx:77](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L77)
+
+#### Returns
+
+`void`
+
+***
+
+### onOK()?
+
+```ts
+optional onOK(): void
+```
+
+Defined in: [src/components/Modal.tsx:64](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Modal.tsx#L64)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`ModalRootProps`](ModalRootProps.md).[`onOK`](ModalRootProps.md#onok)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ControlsListProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ControlsListProps.md
new file mode 100644
index 0000000..c01edf1
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/ControlsListProps.md
@@ -0,0 +1,37 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: ControlsListProps
+
+Defined in: [src/components/ControlsList.ts:5](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ControlsList.ts#L5)
+
+## Properties
+
+### alignItems?
+
+```ts
+optional alignItems: "center" | "left" | "right";
+```
+
+Defined in: [src/components/ControlsList.ts:6](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ControlsList.ts#L6)
+
+***
+
+### children?
+
+```ts
+optional children: ReactNode;
+```
+
+Defined in: [src/components/ControlsList.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ControlsList.ts#L8)
+
+***
+
+### spacing?
+
+```ts
+optional spacing: "standard" | "extra";
+```
+
+Defined in: [src/components/ControlsList.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/ControlsList.ts#L7)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DialogButtonProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DialogButtonProps.md
new file mode 100644
index 0000000..d51a5ca
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DialogButtonProps.md
@@ -0,0 +1,664 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: DialogButtonProps
+
+Defined in: [src/components/Dialog.ts:12](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L12)
+
+## Extends
+
+- [`DialogCommonProps`](DialogCommonProps.md).[`FooterLegendProps`](FooterLegendProps.md)
+
+## Extended by
+
+- [`ButtonProps`](ButtonProps.md)
+
+## Properties
+
+### actionDescriptionMap?
+
+```ts
+optional actionDescriptionMap: ActionDescriptionMap;
+```
+
+Defined in: [src/components/FooterLegend.ts:53](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L53)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`actionDescriptionMap`](FooterLegendProps.md#actiondescriptionmap)
+
+***
+
+### children?
+
+```ts
+optional children: ReactNode;
+```
+
+Defined in: [src/components/Dialog.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L9)
+
+#### Inherited from
+
+[`DialogCommonProps`](DialogCommonProps.md).[`children`](DialogCommonProps.md#children)
+
+***
+
+### className?
+
+```ts
+optional className: string;
+```
+
+Defined in: [src/components/Dialog.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L8)
+
+#### Inherited from
+
+[`DialogCommonProps`](DialogCommonProps.md).[`className`](DialogCommonProps.md#classname)
+
+***
+
+### disabled?
+
+```ts
+optional disabled: boolean;
+```
+
+Defined in: [src/components/Dialog.ts:30](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L30)
+
+Disables the button - assigned `on*` methods will not be invoked if clicked.
+
+#### Note
+
+Depending on where it is, it might still get focus. In such case it can be
+partially disabled separately.
+
+#### See
+
+focusable.
+
+***
+
+### focusable?
+
+```ts
+optional focusable: boolean;
+```
+
+Defined in: [src/components/Dialog.ts:40](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L40)
+
+Enables/disables the navigation based focus on button - you won't be able to navigate to
+it via the gamepad or keyboard.
+
+#### Note
+
+If set to `false`, it still can be clicked and **WILL** become focused until navigated away.
+Depending on the context of where the button is, even a disabled button can focused.
+
+***
+
+### key?
+
+```ts
+optional key: null | Key;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:137
+
+#### Inherited from
+
+[`DialogCommonProps`](DialogCommonProps.md).[`key`](DialogCommonProps.md#key)
+
+***
+
+### noFocusRing?
+
+```ts
+optional noFocusRing: boolean;
+```
+
+Defined in: [src/components/Dialog.ts:19](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L19)
+
+Enables/disables the focus around the button.
+
+#### Note
+
+Default value depends on context, so setting it to `false` will enable it.
+
+***
+
+### onButtonDown()?
+
+```ts
+optional onButtonDown: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:59](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L59)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onButtonDown`](FooterLegendProps.md#onbuttondown)
+
+***
+
+### onButtonUp()?
+
+```ts
+optional onButtonUp: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:60](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L60)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onButtonUp`](FooterLegendProps.md#onbuttonup)
+
+***
+
+### onCancelActionDescription?
+
+```ts
+optional onCancelActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:55](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L55)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onCancelActionDescription`](FooterLegendProps.md#oncancelactiondescription)
+
+***
+
+### onCancelButton()?
+
+```ts
+optional onCancelButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:62](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L62)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onCancelButton`](FooterLegendProps.md#oncancelbutton)
+
+***
+
+### onGamepadBlur()?
+
+```ts
+optional onGamepadBlur: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:67](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L67)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onGamepadBlur`](FooterLegendProps.md#ongamepadblur)
+
+***
+
+### onGamepadDirection()?
+
+```ts
+optional onGamepadDirection: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:65](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L65)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onGamepadDirection`](FooterLegendProps.md#ongamepaddirection)
+
+***
+
+### onGamepadFocus()?
+
+```ts
+optional onGamepadFocus: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:66](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L66)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onGamepadFocus`](FooterLegendProps.md#ongamepadfocus)
+
+***
+
+### onMenuActionDescription?
+
+```ts
+optional onMenuActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:58](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L58)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onMenuActionDescription`](FooterLegendProps.md#onmenuactiondescription)
+
+***
+
+### onMenuButton()?
+
+```ts
+optional onMenuButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:68](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L68)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onMenuButton`](FooterLegendProps.md#onmenubutton)
+
+***
+
+### onOKActionDescription?
+
+```ts
+optional onOKActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:54](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L54)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onOKActionDescription`](FooterLegendProps.md#onokactiondescription)
+
+***
+
+### onOKButton()?
+
+```ts
+optional onOKButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:61](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L61)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onOKButton`](FooterLegendProps.md#onokbutton)
+
+***
+
+### onOptionsActionDescription?
+
+```ts
+optional onOptionsActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:57](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L57)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onOptionsActionDescription`](FooterLegendProps.md#onoptionsactiondescription)
+
+***
+
+### onOptionsButton()?
+
+```ts
+optional onOptionsButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:64](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L64)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onOptionsButton`](FooterLegendProps.md#onoptionsbutton)
+
+***
+
+### onSecondaryActionDescription?
+
+```ts
+optional onSecondaryActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:56](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L56)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onSecondaryActionDescription`](FooterLegendProps.md#onsecondaryactiondescription)
+
+***
+
+### onSecondaryButton()?
+
+```ts
+optional onSecondaryButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:63](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L63)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onSecondaryButton`](FooterLegendProps.md#onsecondarybutton)
+
+***
+
+### ref?
+
+```ts
+optional ref: Ref;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:140
+
+#### Inherited from
+
+[`DialogCommonProps`](DialogCommonProps.md).[`ref`](DialogCommonProps.md#ref)
+
+***
+
+### style?
+
+```ts
+optional style: CSSProperties;
+```
+
+Defined in: [src/components/Dialog.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L7)
+
+#### Inherited from
+
+[`DialogCommonProps`](DialogCommonProps.md).[`style`](DialogCommonProps.md#style)
+
+## Methods
+
+### onClick()?
+
+```ts
+optional onClick(e: MouseEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:42](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L42)
+
+#### Parameters
+
+##### e
+
+`MouseEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onMouseDown()?
+
+```ts
+optional onMouseDown(e: MouseEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:46](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L46)
+
+#### Parameters
+
+##### e
+
+`MouseEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onMouseUp()?
+
+```ts
+optional onMouseUp(e: MouseEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:47](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L47)
+
+#### Parameters
+
+##### e
+
+`MouseEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onPointerCancel()?
+
+```ts
+optional onPointerCancel(e: PointerEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:45](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L45)
+
+#### Parameters
+
+##### e
+
+`PointerEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onPointerDown()?
+
+```ts
+optional onPointerDown(e: PointerEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:43](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L43)
+
+#### Parameters
+
+##### e
+
+`PointerEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onPointerUp()?
+
+```ts
+optional onPointerUp(e: PointerEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:44](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L44)
+
+#### Parameters
+
+##### e
+
+`PointerEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onSubmit()?
+
+```ts
+optional onSubmit(e: SubmitEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:51](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L51)
+
+#### Parameters
+
+##### e
+
+`SubmitEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onTouchCancel()?
+
+```ts
+optional onTouchCancel(e: TouchEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:50](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L50)
+
+#### Parameters
+
+##### e
+
+`TouchEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onTouchEnd()?
+
+```ts
+optional onTouchEnd(e: TouchEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:49](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L49)
+
+#### Parameters
+
+##### e
+
+`TouchEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onTouchStart()?
+
+```ts
+optional onTouchStart(e: TouchEvent): void
+```
+
+Defined in: [src/components/Dialog.ts:48](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L48)
+
+#### Parameters
+
+##### e
+
+`TouchEvent`
+
+#### Returns
+
+`void`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DialogCheckboxProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DialogCheckboxProps.md
new file mode 100644
index 0000000..9475878
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DialogCheckboxProps.md
@@ -0,0 +1,535 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: DialogCheckboxProps
+
+Defined in: [src/components/DialogCheckbox.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L7)
+
+## Extends
+
+- [`DialogCommonProps`](DialogCommonProps.md).[`FooterLegendProps`](FooterLegendProps.md)
+
+## Properties
+
+### actionDescriptionMap?
+
+```ts
+optional actionDescriptionMap: ActionDescriptionMap;
+```
+
+Defined in: [src/components/FooterLegend.ts:53](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L53)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`actionDescriptionMap`](FooterLegendProps.md#actiondescriptionmap)
+
+***
+
+### bottomSeparator?
+
+```ts
+optional bottomSeparator: "standard" | "thick" | "none";
+```
+
+Defined in: [src/components/DialogCheckbox.ts:15](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L15)
+
+***
+
+### checked?
+
+```ts
+optional checked: boolean;
+```
+
+Defined in: [src/components/DialogCheckbox.ts:17](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L17)
+
+***
+
+### children?
+
+```ts
+optional children: ReactNode;
+```
+
+Defined in: [src/components/Dialog.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L9)
+
+#### Inherited from
+
+[`DialogCommonProps`](DialogCommonProps.md).[`children`](DialogCommonProps.md#children)
+
+***
+
+### className?
+
+```ts
+optional className: string;
+```
+
+Defined in: [src/components/Dialog.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L8)
+
+#### Inherited from
+
+[`DialogCommonProps`](DialogCommonProps.md).[`className`](DialogCommonProps.md#classname)
+
+***
+
+### color?
+
+```ts
+optional color: string;
+```
+
+Defined in: [src/components/DialogCheckbox.ts:13](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L13)
+
+***
+
+### controlled?
+
+```ts
+optional controlled: boolean;
+```
+
+Defined in: [src/components/DialogCheckbox.ts:16](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L16)
+
+***
+
+### description?
+
+```ts
+optional description: ReactNode;
+```
+
+Defined in: [src/components/DialogCheckbox.ts:10](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L10)
+
+***
+
+### disabled?
+
+```ts
+optional disabled: boolean;
+```
+
+Defined in: [src/components/DialogCheckbox.ts:11](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L11)
+
+***
+
+### highlightColor?
+
+```ts
+optional highlightColor: string;
+```
+
+Defined in: [src/components/DialogCheckbox.ts:14](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L14)
+
+***
+
+### key?
+
+```ts
+optional key: null | Key;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:137
+
+#### Inherited from
+
+[`DialogCommonProps`](DialogCommonProps.md).[`key`](DialogCommonProps.md#key)
+
+***
+
+### label?
+
+```ts
+optional label: ReactNode;
+```
+
+Defined in: [src/components/DialogCheckbox.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L9)
+
+***
+
+### onButtonDown()?
+
+```ts
+optional onButtonDown: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:59](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L59)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onButtonDown`](FooterLegendProps.md#onbuttondown)
+
+***
+
+### onButtonUp()?
+
+```ts
+optional onButtonUp: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:60](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L60)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onButtonUp`](FooterLegendProps.md#onbuttonup)
+
+***
+
+### onCancelActionDescription?
+
+```ts
+optional onCancelActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:55](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L55)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onCancelActionDescription`](FooterLegendProps.md#oncancelactiondescription)
+
+***
+
+### onCancelButton()?
+
+```ts
+optional onCancelButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:62](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L62)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onCancelButton`](FooterLegendProps.md#oncancelbutton)
+
+***
+
+### onGamepadBlur()?
+
+```ts
+optional onGamepadBlur: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:67](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L67)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onGamepadBlur`](FooterLegendProps.md#ongamepadblur)
+
+***
+
+### onGamepadDirection()?
+
+```ts
+optional onGamepadDirection: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:65](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L65)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onGamepadDirection`](FooterLegendProps.md#ongamepaddirection)
+
+***
+
+### onGamepadFocus()?
+
+```ts
+optional onGamepadFocus: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:66](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L66)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onGamepadFocus`](FooterLegendProps.md#ongamepadfocus)
+
+***
+
+### onMenuActionDescription?
+
+```ts
+optional onMenuActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:58](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L58)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onMenuActionDescription`](FooterLegendProps.md#onmenuactiondescription)
+
+***
+
+### onMenuButton()?
+
+```ts
+optional onMenuButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:68](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L68)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onMenuButton`](FooterLegendProps.md#onmenubutton)
+
+***
+
+### onOKActionDescription?
+
+```ts
+optional onOKActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:54](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L54)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onOKActionDescription`](FooterLegendProps.md#onokactiondescription)
+
+***
+
+### onOKButton()?
+
+```ts
+optional onOKButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:61](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L61)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onOKButton`](FooterLegendProps.md#onokbutton)
+
+***
+
+### onOptionsActionDescription?
+
+```ts
+optional onOptionsActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:57](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L57)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onOptionsActionDescription`](FooterLegendProps.md#onoptionsactiondescription)
+
+***
+
+### onOptionsButton()?
+
+```ts
+optional onOptionsButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:64](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L64)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onOptionsButton`](FooterLegendProps.md#onoptionsbutton)
+
+***
+
+### onSecondaryActionDescription?
+
+```ts
+optional onSecondaryActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:56](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L56)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onSecondaryActionDescription`](FooterLegendProps.md#onsecondaryactiondescription)
+
+***
+
+### onSecondaryButton()?
+
+```ts
+optional onSecondaryButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:63](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L63)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onSecondaryButton`](FooterLegendProps.md#onsecondarybutton)
+
+***
+
+### ref?
+
+```ts
+optional ref: Ref;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:140
+
+#### Inherited from
+
+[`DialogCommonProps`](DialogCommonProps.md).[`ref`](DialogCommonProps.md#ref)
+
+***
+
+### style?
+
+```ts
+optional style: CSSProperties;
+```
+
+Defined in: [src/components/Dialog.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L7)
+
+#### Inherited from
+
+[`DialogCommonProps`](DialogCommonProps.md).[`style`](DialogCommonProps.md#style)
+
+***
+
+### tooltip?
+
+```ts
+optional tooltip: string;
+```
+
+Defined in: [src/components/DialogCheckbox.ts:12](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L12)
+
+## Methods
+
+### onChange()?
+
+```ts
+optional onChange(checked: boolean): void
+```
+
+Defined in: [src/components/DialogCheckbox.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L8)
+
+#### Parameters
+
+##### checked
+
+`boolean`
+
+#### Returns
+
+`void`
+
+***
+
+### onClick()?
+
+```ts
+optional onClick(evt: Event): void
+```
+
+Defined in: [src/components/DialogCheckbox.ts:18](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/DialogCheckbox.ts#L18)
+
+#### Parameters
+
+##### evt
+
+`Event`
+
+#### Returns
+
+`void`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DialogCommonProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DialogCommonProps.md
new file mode 100644
index 0000000..bbab257
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DialogCommonProps.md
@@ -0,0 +1,78 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: DialogCommonProps
+
+Defined in: [src/components/Dialog.ts:6](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L6)
+
+## Extends
+
+- `RefAttributes`\<`HTMLDivElement`\>
+
+## Extended by
+
+- [`DialogButtonProps`](DialogButtonProps.md)
+- [`DialogCheckboxProps`](DialogCheckboxProps.md)
+
+## Properties
+
+### children?
+
+```ts
+optional children: ReactNode;
+```
+
+Defined in: [src/components/Dialog.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L9)
+
+***
+
+### className?
+
+```ts
+optional className: string;
+```
+
+Defined in: [src/components/Dialog.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L8)
+
+***
+
+### key?
+
+```ts
+optional key: null | Key;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:137
+
+#### Inherited from
+
+```ts
+RefAttributes.key
+```
+
+***
+
+### ref?
+
+```ts
+optional ref: Ref;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:140
+
+#### Inherited from
+
+```ts
+RefAttributes.ref
+```
+
+***
+
+### style?
+
+```ts
+optional style: CSSProperties;
+```
+
+Defined in: [src/components/Dialog.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dialog.ts#L7)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DropdownItemProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DropdownItemProps.md
new file mode 100644
index 0000000..f3eb241
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DropdownItemProps.md
@@ -0,0 +1,343 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: DropdownItemProps
+
+Defined in: [src/components/Dropdown.ts:47](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L47)
+
+## Extends
+
+- [`DropdownProps`](DropdownProps.md).`ItemProps`
+
+## Properties
+
+### bottomSeparator?
+
+```ts
+optional bottomSeparator: "standard" | "thick" | "none";
+```
+
+Defined in: [src/components/Item.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L9)
+
+#### Inherited from
+
+```ts
+ItemProps.bottomSeparator
+```
+
+***
+
+### children?
+
+```ts
+optional children: ReactNode;
+```
+
+Defined in: [src/components/Item.ts:6](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L6)
+
+#### Inherited from
+
+```ts
+ItemProps.children
+```
+
+***
+
+### contextMenuPositionOptions?
+
+```ts
+optional contextMenuPositionOptions: DropdownMenuPositionOptions;
+```
+
+Defined in: [src/components/Dropdown.ts:35](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L35)
+
+#### Inherited from
+
+[`DropdownProps`](DropdownProps.md).[`contextMenuPositionOptions`](DropdownProps.md#contextmenupositionoptions)
+
+***
+
+### description?
+
+```ts
+optional description: ReactNode;
+```
+
+Defined in: [src/components/Item.ts:5](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L5)
+
+#### Inherited from
+
+```ts
+ItemProps.description
+```
+
+***
+
+### disabled?
+
+```ts
+optional disabled: boolean;
+```
+
+Defined in: [src/components/Dropdown.ts:31](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L31)
+
+#### Inherited from
+
+[`DropdownProps`](DropdownProps.md).[`disabled`](DropdownProps.md#disabled)
+
+***
+
+### focusable?
+
+```ts
+optional focusable: boolean;
+```
+
+Defined in: [src/components/Dropdown.ts:39](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L39)
+
+#### Inherited from
+
+[`DropdownProps`](DropdownProps.md).[`focusable`](DropdownProps.md#focusable)
+
+***
+
+### highlightOnFocus?
+
+```ts
+optional highlightOnFocus: boolean;
+```
+
+Defined in: [src/components/Item.ts:12](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L12)
+
+#### Inherited from
+
+```ts
+ItemProps.highlightOnFocus
+```
+
+***
+
+### icon?
+
+```ts
+optional icon: ReactNode;
+```
+
+Defined in: [src/components/Item.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L8)
+
+#### Inherited from
+
+```ts
+ItemProps.icon
+```
+
+***
+
+### indentLevel?
+
+```ts
+optional indentLevel: number;
+```
+
+Defined in: [src/components/Item.ts:10](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L10)
+
+#### Inherited from
+
+```ts
+ItemProps.indentLevel
+```
+
+***
+
+### label?
+
+```ts
+optional label: ReactNode;
+```
+
+Defined in: [src/components/Item.ts:4](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L4)
+
+#### Inherited from
+
+```ts
+ItemProps.label
+```
+
+***
+
+### layout?
+
+```ts
+optional layout: "below" | "inline";
+```
+
+Defined in: [src/components/Item.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L7)
+
+#### Inherited from
+
+```ts
+ItemProps.layout
+```
+
+***
+
+### menuLabel?
+
+```ts
+optional menuLabel: string;
+```
+
+Defined in: [src/components/Dropdown.ts:36](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L36)
+
+#### Inherited from
+
+[`DropdownProps`](DropdownProps.md).[`menuLabel`](DropdownProps.md#menulabel)
+
+***
+
+### rgOptions
+
+```ts
+rgOptions: DropdownOption[];
+```
+
+Defined in: [src/components/Dropdown.ts:29](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L29)
+
+#### Inherited from
+
+[`DropdownProps`](DropdownProps.md).[`rgOptions`](DropdownProps.md#rgoptions)
+
+***
+
+### selectedOption
+
+```ts
+selectedOption: any;
+```
+
+Defined in: [src/components/Dropdown.ts:30](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L30)
+
+#### Inherited from
+
+[`DropdownProps`](DropdownProps.md).[`selectedOption`](DropdownProps.md#selectedoption)
+
+***
+
+### strDefaultLabel?
+
+```ts
+optional strDefaultLabel: string;
+```
+
+Defined in: [src/components/Dropdown.ts:37](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L37)
+
+#### Inherited from
+
+[`DropdownProps`](DropdownProps.md).[`strDefaultLabel`](DropdownProps.md#strdefaultlabel)
+
+***
+
+### tooltip?
+
+```ts
+optional tooltip: string;
+```
+
+Defined in: [src/components/Item.ts:11](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Item.ts#L11)
+
+#### Inherited from
+
+```ts
+ItemProps.tooltip
+```
+
+## Methods
+
+### onChange()?
+
+```ts
+optional onChange(data: SingleDropdownOption): void
+```
+
+Defined in: [src/components/Dropdown.ts:34](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L34)
+
+#### Parameters
+
+##### data
+
+[`SingleDropdownOption`](SingleDropdownOption.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DropdownProps`](DropdownProps.md).[`onChange`](DropdownProps.md#onchange)
+
+***
+
+### onMenuOpened()?
+
+```ts
+optional onMenuOpened(): void
+```
+
+Defined in: [src/components/Dropdown.ts:33](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L33)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DropdownProps`](DropdownProps.md).[`onMenuOpened`](DropdownProps.md#onmenuopened)
+
+***
+
+### onMenuWillOpen()?
+
+```ts
+optional onMenuWillOpen(showMenu: () => void): void
+```
+
+Defined in: [src/components/Dropdown.ts:32](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L32)
+
+#### Parameters
+
+##### showMenu
+
+() => `void`
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`DropdownProps`](DropdownProps.md).[`onMenuWillOpen`](DropdownProps.md#onmenuwillopen)
+
+***
+
+### renderButtonValue()?
+
+```ts
+optional renderButtonValue(element: ReactNode): ReactNode
+```
+
+Defined in: [src/components/Dropdown.ts:38](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L38)
+
+#### Parameters
+
+##### element
+
+`ReactNode`
+
+#### Returns
+
+`ReactNode`
+
+#### Inherited from
+
+[`DropdownProps`](DropdownProps.md).[`renderButtonValue`](DropdownProps.md#renderbuttonvalue)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DropdownMenuPositionOptions.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DropdownMenuPositionOptions.md
new file mode 100644
index 0000000..4c45a77
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DropdownMenuPositionOptions.md
@@ -0,0 +1,23 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: DropdownMenuPositionOptions
+
+Defined in: [src/components/Dropdown.ts:23](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L23)
+
+## Indexable
+
+```ts
+[_: string]: unknown
+```
+
+## Properties
+
+### bMatchWidth?
+
+```ts
+optional bMatchWidth: boolean;
+```
+
+Defined in: [src/components/Dropdown.ts:25](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L25)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DropdownProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DropdownProps.md
new file mode 100644
index 0000000..5d16f2c
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/DropdownProps.md
@@ -0,0 +1,155 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: DropdownProps
+
+Defined in: [src/components/Dropdown.ts:28](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L28)
+
+## Extended by
+
+- [`DropdownItemProps`](DropdownItemProps.md)
+
+## Properties
+
+### contextMenuPositionOptions?
+
+```ts
+optional contextMenuPositionOptions: DropdownMenuPositionOptions;
+```
+
+Defined in: [src/components/Dropdown.ts:35](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L35)
+
+***
+
+### disabled?
+
+```ts
+optional disabled: boolean;
+```
+
+Defined in: [src/components/Dropdown.ts:31](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L31)
+
+***
+
+### focusable?
+
+```ts
+optional focusable: boolean;
+```
+
+Defined in: [src/components/Dropdown.ts:39](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L39)
+
+***
+
+### menuLabel?
+
+```ts
+optional menuLabel: string;
+```
+
+Defined in: [src/components/Dropdown.ts:36](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L36)
+
+***
+
+### rgOptions
+
+```ts
+rgOptions: DropdownOption[];
+```
+
+Defined in: [src/components/Dropdown.ts:29](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L29)
+
+***
+
+### selectedOption
+
+```ts
+selectedOption: any;
+```
+
+Defined in: [src/components/Dropdown.ts:30](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L30)
+
+***
+
+### strDefaultLabel?
+
+```ts
+optional strDefaultLabel: string;
+```
+
+Defined in: [src/components/Dropdown.ts:37](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L37)
+
+## Methods
+
+### onChange()?
+
+```ts
+optional onChange(data: SingleDropdownOption): void
+```
+
+Defined in: [src/components/Dropdown.ts:34](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L34)
+
+#### Parameters
+
+##### data
+
+[`SingleDropdownOption`](SingleDropdownOption.md)
+
+#### Returns
+
+`void`
+
+***
+
+### onMenuOpened()?
+
+```ts
+optional onMenuOpened(): void
+```
+
+Defined in: [src/components/Dropdown.ts:33](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L33)
+
+#### Returns
+
+`void`
+
+***
+
+### onMenuWillOpen()?
+
+```ts
+optional onMenuWillOpen(showMenu: () => void): void
+```
+
+Defined in: [src/components/Dropdown.ts:32](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L32)
+
+#### Parameters
+
+##### showMenu
+
+() => `void`
+
+#### Returns
+
+`void`
+
+***
+
+### renderButtonValue()?
+
+```ts
+optional renderButtonValue(element: ReactNode): ReactNode
+```
+
+Defined in: [src/components/Dropdown.ts:38](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Dropdown.ts#L38)
+
+#### Parameters
+
+##### element
+
+`ReactNode`
+
+#### Returns
+
+`ReactNode`
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/FieldProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/FieldProps.md
new file mode 100644
index 0000000..0362392
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/FieldProps.md
@@ -0,0 +1,535 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: FieldProps
+
+Defined in: [src/components/Field.ts:6](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L6)
+
+## Extends
+
+- [`FooterLegendProps`](FooterLegendProps.md)
+
+## Properties
+
+### actionDescriptionMap?
+
+```ts
+optional actionDescriptionMap: ActionDescriptionMap;
+```
+
+Defined in: [src/components/FooterLegend.ts:53](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L53)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`actionDescriptionMap`](FooterLegendProps.md#actiondescriptionmap)
+
+***
+
+### bottomSeparator?
+
+```ts
+optional bottomSeparator: "standard" | "thick" | "none";
+```
+
+Defined in: [src/components/Field.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L9)
+
+***
+
+### children?
+
+```ts
+optional children: ReactNode;
+```
+
+Defined in: [src/components/Field.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L7)
+
+***
+
+### childrenContainerWidth?
+
+```ts
+optional childrenContainerWidth: "min" | "max" | "fixed";
+```
+
+Defined in: [src/components/Field.ts:15](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L15)
+
+***
+
+### childrenLayout?
+
+```ts
+optional childrenLayout: "below" | "inline";
+```
+
+Defined in: [src/components/Field.ts:14](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L14)
+
+***
+
+### className?
+
+```ts
+optional className: string;
+```
+
+Defined in: [src/components/Field.ts:18](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L18)
+
+***
+
+### description?
+
+```ts
+optional description: ReactNode;
+```
+
+Defined in: [src/components/Field.ts:10](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L10)
+
+***
+
+### disabled?
+
+```ts
+optional disabled: boolean;
+```
+
+Defined in: [src/components/Field.ts:11](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L11)
+
+***
+
+### focusable?
+
+```ts
+optional focusable: boolean;
+```
+
+Defined in: [src/components/Field.ts:22](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L22)
+
+***
+
+### highlightOnFocus?
+
+```ts
+optional highlightOnFocus: boolean;
+```
+
+Defined in: [src/components/Field.ts:19](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L19)
+
+***
+
+### icon?
+
+```ts
+optional icon: ReactNode;
+```
+
+Defined in: [src/components/Field.ts:12](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L12)
+
+***
+
+### indentLevel?
+
+```ts
+optional indentLevel: number;
+```
+
+Defined in: [src/components/Field.ts:20](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L20)
+
+***
+
+### inlineWrap?
+
+```ts
+optional inlineWrap: "keep-inline" | "shift-children-below";
+```
+
+Defined in: [src/components/Field.ts:13](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L13)
+
+***
+
+### label?
+
+```ts
+optional label: ReactNode;
+```
+
+Defined in: [src/components/Field.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L8)
+
+***
+
+### onActivate()?
+
+```ts
+optional onActivate: (e: MouseEvent | CustomEvent) => void;
+```
+
+Defined in: [src/components/Field.ts:23](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L23)
+
+#### Parameters
+
+##### e
+
+`MouseEvent` | `CustomEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onButtonDown()?
+
+```ts
+optional onButtonDown: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:59](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L59)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onButtonDown`](FooterLegendProps.md#onbuttondown)
+
+***
+
+### onButtonUp()?
+
+```ts
+optional onButtonUp: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:60](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L60)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onButtonUp`](FooterLegendProps.md#onbuttonup)
+
+***
+
+### onCancelActionDescription?
+
+```ts
+optional onCancelActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:55](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L55)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onCancelActionDescription`](FooterLegendProps.md#oncancelactiondescription)
+
+***
+
+### onCancelButton()?
+
+```ts
+optional onCancelButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:62](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L62)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onCancelButton`](FooterLegendProps.md#oncancelbutton)
+
+***
+
+### onClick()?
+
+```ts
+optional onClick: (e: MouseEvent | CustomEvent) => void;
+```
+
+Defined in: [src/components/Field.ts:24](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L24)
+
+#### Parameters
+
+##### e
+
+`MouseEvent` | `CustomEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onGamepadBlur()?
+
+```ts
+optional onGamepadBlur: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:67](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L67)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onGamepadBlur`](FooterLegendProps.md#ongamepadblur)
+
+***
+
+### onGamepadDirection()?
+
+```ts
+optional onGamepadDirection: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:65](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L65)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onGamepadDirection`](FooterLegendProps.md#ongamepaddirection)
+
+***
+
+### onGamepadFocus()?
+
+```ts
+optional onGamepadFocus: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:66](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L66)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onGamepadFocus`](FooterLegendProps.md#ongamepadfocus)
+
+***
+
+### onMenuActionDescription?
+
+```ts
+optional onMenuActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:58](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L58)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onMenuActionDescription`](FooterLegendProps.md#onmenuactiondescription)
+
+***
+
+### onMenuButton()?
+
+```ts
+optional onMenuButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:68](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L68)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onMenuButton`](FooterLegendProps.md#onmenubutton)
+
+***
+
+### onOKActionDescription?
+
+```ts
+optional onOKActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:54](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L54)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onOKActionDescription`](FooterLegendProps.md#onokactiondescription)
+
+***
+
+### onOKButton()?
+
+```ts
+optional onOKButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:61](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L61)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onOKButton`](FooterLegendProps.md#onokbutton)
+
+***
+
+### onOptionsActionDescription?
+
+```ts
+optional onOptionsActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:57](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L57)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onOptionsActionDescription`](FooterLegendProps.md#onoptionsactiondescription)
+
+***
+
+### onOptionsButton()?
+
+```ts
+optional onOptionsButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:64](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L64)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onOptionsButton`](FooterLegendProps.md#onoptionsbutton)
+
+***
+
+### onSecondaryActionDescription?
+
+```ts
+optional onSecondaryActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:56](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L56)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onSecondaryActionDescription`](FooterLegendProps.md#onsecondaryactiondescription)
+
+***
+
+### onSecondaryButton()?
+
+```ts
+optional onSecondaryButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:63](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L63)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onSecondaryButton`](FooterLegendProps.md#onsecondarybutton)
+
+***
+
+### padding?
+
+```ts
+optional padding: "standard" | "none" | "compact";
+```
+
+Defined in: [src/components/Field.ts:17](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L17)
+
+***
+
+### spacingBetweenLabelAndChild?
+
+```ts
+optional spacingBetweenLabelAndChild: "none";
+```
+
+Defined in: [src/components/Field.ts:16](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L16)
+
+***
+
+### verticalAlignment?
+
+```ts
+optional verticalAlignment: "none" | "center";
+```
+
+Defined in: [src/components/Field.ts:21](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Field.ts#L21)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/FocusRingProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/FocusRingProps.md
new file mode 100644
index 0000000..237c14c
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/FocusRingProps.md
@@ -0,0 +1,57 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: FocusRingProps
+
+Defined in: [src/components/FocusRing.ts:5](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FocusRing.ts#L5)
+
+## Properties
+
+### children?
+
+```ts
+optional children: ReactNode;
+```
+
+Defined in: [src/components/FocusRing.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FocusRing.ts#L9)
+
+***
+
+### className?
+
+```ts
+optional className: string;
+```
+
+Defined in: [src/components/FocusRing.ts:6](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FocusRing.ts#L6)
+
+***
+
+### NavigationManager?
+
+```ts
+optional NavigationManager: any;
+```
+
+Defined in: [src/components/FocusRing.ts:10](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FocusRing.ts#L10)
+
+***
+
+### render?
+
+```ts
+optional render: ElementType;
+```
+
+Defined in: [src/components/FocusRing.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FocusRing.ts#L8)
+
+***
+
+### rootClassName?
+
+```ts
+optional rootClassName: string;
+```
+
+Defined in: [src/components/FocusRing.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FocusRing.ts#L7)
diff --git a/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/FocusableProps.md b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/FocusableProps.md
new file mode 100644
index 0000000..9f3b285
--- /dev/null
+++ b/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/plugins/typescript/client/interfaces/FocusableProps.md
@@ -0,0 +1,4738 @@
+[**@steambrew/client v4.2.1**](../README.md)
+
+***
+
+# Interface: FocusableProps
+
+Defined in: [src/components/Focusable.ts:7](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Focusable.ts#L7)
+
+## Extends
+
+- `HTMLAttributes`\<`HTMLDivElement`\>.[`FooterLegendProps`](FooterLegendProps.md)
+
+## Properties
+
+### about?
+
+```ts
+optional about: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1776
+
+#### Inherited from
+
+```ts
+HTMLAttributes.about
+```
+
+***
+
+### accessKey?
+
+```ts
+optional accessKey: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1752
+
+#### Inherited from
+
+```ts
+HTMLAttributes.accessKey
+```
+
+***
+
+### actionDescriptionMap?
+
+```ts
+optional actionDescriptionMap: ActionDescriptionMap;
+```
+
+Defined in: [src/components/FooterLegend.ts:53](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L53)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`actionDescriptionMap`](FooterLegendProps.md#actiondescriptionmap)
+
+***
+
+### aria-activedescendant?
+
+```ts
+optional aria-activedescendant: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1559
+
+Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-activedescendant
+```
+
+***
+
+### aria-atomic?
+
+```ts
+optional aria-atomic: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1561
+
+Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-atomic
+```
+
+***
+
+### aria-autocomplete?
+
+```ts
+optional aria-autocomplete: "inline" | "none" | "list" | "both";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1566
+
+Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be
+presented if they are made.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-autocomplete
+```
+
+***
+
+### aria-busy?
+
+```ts
+optional aria-busy: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1568
+
+Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-busy
+```
+
+***
+
+### aria-checked?
+
+```ts
+optional aria-checked: boolean | "true" | "false" | "mixed";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1573
+
+Indicates the current "checked" state of checkboxes, radio buttons, and other widgets.
+
+#### See
+
+ - aria-pressed
+ - aria-selected.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-checked
+```
+
+***
+
+### aria-colcount?
+
+```ts
+optional aria-colcount: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1578
+
+Defines the total number of columns in a table, grid, or treegrid.
+
+#### See
+
+aria-colindex.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-colcount
+```
+
+***
+
+### aria-colindex?
+
+```ts
+optional aria-colindex: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1583
+
+Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid.
+
+#### See
+
+ - aria-colcount
+ - aria-colspan.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-colindex
+```
+
+***
+
+### aria-colspan?
+
+```ts
+optional aria-colspan: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1588
+
+Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid.
+
+#### See
+
+ - aria-colindex
+ - aria-rowspan.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-colspan
+```
+
+***
+
+### aria-controls?
+
+```ts
+optional aria-controls: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1593
+
+Identifies the element (or elements) whose contents or presence are controlled by the current element.
+
+#### See
+
+aria-owns.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-controls
+```
+
+***
+
+### aria-current?
+
+```ts
+optional aria-current: boolean | "time" | "step" | "true" | "false" | "page" | "location" | "date";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1595
+
+Indicates the element that represents the current item within a container or set of related elements.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-current
+```
+
+***
+
+### aria-describedby?
+
+```ts
+optional aria-describedby: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1600
+
+Identifies the element (or elements) that describes the object.
+
+#### See
+
+aria-labelledby
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-describedby
+```
+
+***
+
+### aria-details?
+
+```ts
+optional aria-details: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1605
+
+Identifies the element that provides a detailed, extended description for the object.
+
+#### See
+
+aria-describedby.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-details
+```
+
+***
+
+### aria-disabled?
+
+```ts
+optional aria-disabled: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1610
+
+Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.
+
+#### See
+
+ - aria-hidden
+ - aria-readonly.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-disabled
+```
+
+***
+
+### ~~aria-dropeffect?~~
+
+```ts
+optional aria-dropeffect: "none" | "link" | "copy" | "execute" | "move" | "popup";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1615
+
+Indicates what functions can be performed when a dragged object is released on the drop target.
+
+#### Deprecated
+
+in ARIA 1.1
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-dropeffect
+```
+
+***
+
+### aria-errormessage?
+
+```ts
+optional aria-errormessage: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1620
+
+Identifies the element that provides an error message for the object.
+
+#### See
+
+ - aria-invalid
+ - aria-describedby.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-errormessage
+```
+
+***
+
+### aria-expanded?
+
+```ts
+optional aria-expanded: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1622
+
+Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-expanded
+```
+
+***
+
+### aria-flowto?
+
+```ts
+optional aria-flowto: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1627
+
+Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion,
+allows assistive technology to override the general default of reading in document source order.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-flowto
+```
+
+***
+
+### ~~aria-grabbed?~~
+
+```ts
+optional aria-grabbed: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1632
+
+Indicates an element's "grabbed" state in a drag-and-drop operation.
+
+#### Deprecated
+
+in ARIA 1.1
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-grabbed
+```
+
+***
+
+### aria-haspopup?
+
+```ts
+optional aria-haspopup:
+ | boolean
+ | "dialog"
+ | "menu"
+ | "grid"
+ | "true"
+ | "false"
+ | "listbox"
+ | "tree";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1634
+
+Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-haspopup
+```
+
+***
+
+### aria-hidden?
+
+```ts
+optional aria-hidden: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1639
+
+Indicates whether the element is exposed to an accessibility API.
+
+#### See
+
+aria-disabled.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-hidden
+```
+
+***
+
+### aria-invalid?
+
+```ts
+optional aria-invalid: boolean | "true" | "false" | "grammar" | "spelling";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1644
+
+Indicates the entered value does not conform to the format expected by the application.
+
+#### See
+
+aria-errormessage.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-invalid
+```
+
+***
+
+### aria-keyshortcuts?
+
+```ts
+optional aria-keyshortcuts: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1646
+
+Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-keyshortcuts
+```
+
+***
+
+### aria-label?
+
+```ts
+optional aria-label: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1651
+
+Defines a string value that labels the current element.
+
+#### See
+
+aria-labelledby.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-label
+```
+
+***
+
+### aria-labelledby?
+
+```ts
+optional aria-labelledby: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1656
+
+Identifies the element (or elements) that labels the current element.
+
+#### See
+
+aria-describedby.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-labelledby
+```
+
+***
+
+### aria-level?
+
+```ts
+optional aria-level: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1658
+
+Defines the hierarchical level of an element within a structure.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-level
+```
+
+***
+
+### aria-live?
+
+```ts
+optional aria-live: "off" | "assertive" | "polite";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1660
+
+Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-live
+```
+
+***
+
+### aria-modal?
+
+```ts
+optional aria-modal: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1662
+
+Indicates whether an element is modal when displayed.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-modal
+```
+
+***
+
+### aria-multiline?
+
+```ts
+optional aria-multiline: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1664
+
+Indicates whether a text box accepts multiple lines of input or only a single line.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-multiline
+```
+
+***
+
+### aria-multiselectable?
+
+```ts
+optional aria-multiselectable: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1666
+
+Indicates that the user may select more than one item from the current selectable descendants.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-multiselectable
+```
+
+***
+
+### aria-orientation?
+
+```ts
+optional aria-orientation: "horizontal" | "vertical";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1668
+
+Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-orientation
+```
+
+***
+
+### aria-owns?
+
+```ts
+optional aria-owns: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1674
+
+Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship
+between DOM elements where the DOM hierarchy cannot be used to represent the relationship.
+
+#### See
+
+aria-controls.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-owns
+```
+
+***
+
+### aria-placeholder?
+
+```ts
+optional aria-placeholder: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1679
+
+Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value.
+A hint could be a sample value or a brief description of the expected format.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-placeholder
+```
+
+***
+
+### aria-posinset?
+
+```ts
+optional aria-posinset: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1684
+
+Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.
+
+#### See
+
+aria-setsize.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-posinset
+```
+
+***
+
+### aria-pressed?
+
+```ts
+optional aria-pressed: boolean | "true" | "false" | "mixed";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1689
+
+Indicates the current "pressed" state of toggle buttons.
+
+#### See
+
+ - aria-checked
+ - aria-selected.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-pressed
+```
+
+***
+
+### aria-readonly?
+
+```ts
+optional aria-readonly: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1694
+
+Indicates that the element is not editable, but is otherwise operable.
+
+#### See
+
+aria-disabled.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-readonly
+```
+
+***
+
+### aria-relevant?
+
+```ts
+optional aria-relevant:
+ | "text"
+ | "all"
+ | "additions"
+ | "additions removals"
+ | "additions text"
+ | "removals"
+ | "removals additions"
+ | "removals text"
+ | "text additions"
+ | "text removals";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1699
+
+Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified.
+
+#### See
+
+aria-atomic.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-relevant
+```
+
+***
+
+### aria-required?
+
+```ts
+optional aria-required: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1701
+
+Indicates that user input is required on the element before a form may be submitted.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-required
+```
+
+***
+
+### aria-roledescription?
+
+```ts
+optional aria-roledescription: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1703
+
+Defines a human-readable, author-localized description for the role of an element.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-roledescription
+```
+
+***
+
+### aria-rowcount?
+
+```ts
+optional aria-rowcount: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1708
+
+Defines the total number of rows in a table, grid, or treegrid.
+
+#### See
+
+aria-rowindex.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-rowcount
+```
+
+***
+
+### aria-rowindex?
+
+```ts
+optional aria-rowindex: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1713
+
+Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid.
+
+#### See
+
+ - aria-rowcount
+ - aria-rowspan.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-rowindex
+```
+
+***
+
+### aria-rowspan?
+
+```ts
+optional aria-rowspan: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1718
+
+Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid.
+
+#### See
+
+ - aria-rowindex
+ - aria-colspan.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-rowspan
+```
+
+***
+
+### aria-selected?
+
+```ts
+optional aria-selected: boolean | "true" | "false";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1723
+
+Indicates the current "selected" state of various widgets.
+
+#### See
+
+ - aria-checked
+ - aria-pressed.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-selected
+```
+
+***
+
+### aria-setsize?
+
+```ts
+optional aria-setsize: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1728
+
+Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.
+
+#### See
+
+aria-posinset.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-setsize
+```
+
+***
+
+### aria-sort?
+
+```ts
+optional aria-sort: "none" | "ascending" | "descending" | "other";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1730
+
+Indicates if items in a table or grid are sorted in ascending or descending order.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-sort
+```
+
+***
+
+### aria-valuemax?
+
+```ts
+optional aria-valuemax: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1732
+
+Defines the maximum allowed value for a range widget.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-valuemax
+```
+
+***
+
+### aria-valuemin?
+
+```ts
+optional aria-valuemin: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1734
+
+Defines the minimum allowed value for a range widget.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-valuemin
+```
+
+***
+
+### aria-valuenow?
+
+```ts
+optional aria-valuenow: number;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1739
+
+Defines the current value for a range widget.
+
+#### See
+
+aria-valuetext.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-valuenow
+```
+
+***
+
+### aria-valuetext?
+
+```ts
+optional aria-valuetext: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1741
+
+Defines the human readable text alternative of aria-valuenow for a range widget.
+
+#### Inherited from
+
+```ts
+HTMLAttributes.aria-valuetext
+```
+
+***
+
+### autoCapitalize?
+
+```ts
+optional autoCapitalize: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1786
+
+#### Inherited from
+
+```ts
+HTMLAttributes.autoCapitalize
+```
+
+***
+
+### autoCorrect?
+
+```ts
+optional autoCorrect: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1787
+
+#### Inherited from
+
+```ts
+HTMLAttributes.autoCorrect
+```
+
+***
+
+### autoSave?
+
+```ts
+optional autoSave: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1788
+
+#### Inherited from
+
+```ts
+HTMLAttributes.autoSave
+```
+
+***
+
+### children
+
+```ts
+children: ReactNode;
+```
+
+Defined in: [src/components/Focusable.ts:8](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Focusable.ts#L8)
+
+#### Overrides
+
+```ts
+HTMLAttributes.children
+```
+
+***
+
+### className?
+
+```ts
+optional className: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1753
+
+#### Inherited from
+
+```ts
+HTMLAttributes.className
+```
+
+***
+
+### color?
+
+```ts
+optional color: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1789
+
+#### Inherited from
+
+```ts
+HTMLAttributes.color
+```
+
+***
+
+### contentEditable?
+
+```ts
+optional contentEditable: "inherit" | Booleanish;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1754
+
+#### Inherited from
+
+```ts
+HTMLAttributes.contentEditable
+```
+
+***
+
+### contextMenu?
+
+```ts
+optional contextMenu: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1755
+
+#### Inherited from
+
+```ts
+HTMLAttributes.contextMenu
+```
+
+***
+
+### dangerouslySetInnerHTML?
+
+```ts
+optional dangerouslySetInnerHTML: {
+ __html: string;
+};
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1350
+
+#### \_\_html
+
+```ts
+__html: string;
+```
+
+#### Inherited from
+
+```ts
+HTMLAttributes.dangerouslySetInnerHTML
+```
+
+***
+
+### datatype?
+
+```ts
+optional datatype: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1777
+
+#### Inherited from
+
+```ts
+HTMLAttributes.datatype
+```
+
+***
+
+### defaultChecked?
+
+```ts
+optional defaultChecked: boolean;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1746
+
+#### Inherited from
+
+```ts
+HTMLAttributes.defaultChecked
+```
+
+***
+
+### defaultValue?
+
+```ts
+optional defaultValue: string | number | readonly string[];
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1747
+
+#### Inherited from
+
+```ts
+HTMLAttributes.defaultValue
+```
+
+***
+
+### dir?
+
+```ts
+optional dir: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1756
+
+#### Inherited from
+
+```ts
+HTMLAttributes.dir
+```
+
+***
+
+### draggable?
+
+```ts
+optional draggable: Booleanish;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1757
+
+#### Inherited from
+
+```ts
+HTMLAttributes.draggable
+```
+
+***
+
+### flow-children?
+
+```ts
+optional flow-children: string;
+```
+
+Defined in: [src/components/Focusable.ts:9](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Focusable.ts#L9)
+
+***
+
+### focusClassName?
+
+```ts
+optional focusClassName: string;
+```
+
+Defined in: [src/components/Focusable.ts:10](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Focusable.ts#L10)
+
+***
+
+### focusWithinClassName?
+
+```ts
+optional focusWithinClassName: string;
+```
+
+Defined in: [src/components/Focusable.ts:11](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Focusable.ts#L11)
+
+***
+
+### hidden?
+
+```ts
+optional hidden: boolean;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1758
+
+#### Inherited from
+
+```ts
+HTMLAttributes.hidden
+```
+
+***
+
+### id?
+
+```ts
+optional id: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1759
+
+#### Inherited from
+
+```ts
+HTMLAttributes.id
+```
+
+***
+
+### inlist?
+
+```ts
+optional inlist: any;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1778
+
+#### Inherited from
+
+```ts
+HTMLAttributes.inlist
+```
+
+***
+
+### inputMode?
+
+```ts
+optional inputMode:
+ | "none"
+ | "text"
+ | "search"
+ | "tel"
+ | "url"
+ | "email"
+ | "numeric"
+ | "decimal";
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1804
+
+Hints at the type of data that might be entered by the user while editing the element or its contents
+
+#### See
+
+https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute
+
+#### Inherited from
+
+```ts
+HTMLAttributes.inputMode
+```
+
+***
+
+### is?
+
+```ts
+optional is: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1809
+
+Specify that a standard HTML element should behave like a defined custom built-in element
+
+#### See
+
+https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is
+
+#### Inherited from
+
+```ts
+HTMLAttributes.is
+```
+
+***
+
+### itemID?
+
+```ts
+optional itemID: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1793
+
+#### Inherited from
+
+```ts
+HTMLAttributes.itemID
+```
+
+***
+
+### itemProp?
+
+```ts
+optional itemProp: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1790
+
+#### Inherited from
+
+```ts
+HTMLAttributes.itemProp
+```
+
+***
+
+### itemRef?
+
+```ts
+optional itemRef: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1794
+
+#### Inherited from
+
+```ts
+HTMLAttributes.itemRef
+```
+
+***
+
+### itemScope?
+
+```ts
+optional itemScope: boolean;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1791
+
+#### Inherited from
+
+```ts
+HTMLAttributes.itemScope
+```
+
+***
+
+### itemType?
+
+```ts
+optional itemType: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1792
+
+#### Inherited from
+
+```ts
+HTMLAttributes.itemType
+```
+
+***
+
+### lang?
+
+```ts
+optional lang: string;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1760
+
+#### Inherited from
+
+```ts
+HTMLAttributes.lang
+```
+
+***
+
+### noFocusRing?
+
+```ts
+optional noFocusRing: boolean;
+```
+
+Defined in: [src/components/Focusable.ts:12](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Focusable.ts#L12)
+
+***
+
+### onAbort?
+
+```ts
+optional onAbort: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1405
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAbort
+```
+
+***
+
+### onAbortCapture?
+
+```ts
+optional onAbortCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1406
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAbortCapture
+```
+
+***
+
+### onActivate()?
+
+```ts
+optional onActivate: (e: CustomEvent) => void;
+```
+
+Defined in: [src/components/Focusable.ts:13](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Focusable.ts#L13)
+
+#### Parameters
+
+##### e
+
+`CustomEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onAnimationEnd?
+
+```ts
+optional onAnimationEnd: AnimationEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1535
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAnimationEnd
+```
+
+***
+
+### onAnimationEndCapture?
+
+```ts
+optional onAnimationEndCapture: AnimationEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1536
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAnimationEndCapture
+```
+
+***
+
+### onAnimationIteration?
+
+```ts
+optional onAnimationIteration: AnimationEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1537
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAnimationIteration
+```
+
+***
+
+### onAnimationIterationCapture?
+
+```ts
+optional onAnimationIterationCapture: AnimationEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1538
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAnimationIterationCapture
+```
+
+***
+
+### onAnimationStart?
+
+```ts
+optional onAnimationStart: AnimationEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1533
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAnimationStart
+```
+
+***
+
+### onAnimationStartCapture?
+
+```ts
+optional onAnimationStartCapture: AnimationEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1534
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAnimationStartCapture
+```
+
+***
+
+### onAuxClick?
+
+```ts
+optional onAuxClick: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1451
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAuxClick
+```
+
+***
+
+### onAuxClickCapture?
+
+```ts
+optional onAuxClickCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1452
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onAuxClickCapture
+```
+
+***
+
+### onBeforeInput?
+
+```ts
+optional onBeforeInput: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1379
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onBeforeInput
+```
+
+***
+
+### onBeforeInputCapture?
+
+```ts
+optional onBeforeInputCapture: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1380
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onBeforeInputCapture
+```
+
+***
+
+### onBlur?
+
+```ts
+optional onBlur: FocusEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1373
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onBlur
+```
+
+***
+
+### onBlurCapture?
+
+```ts
+optional onBlurCapture: FocusEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1374
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onBlurCapture
+```
+
+***
+
+### onButtonDown()?
+
+```ts
+optional onButtonDown: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:59](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L59)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onButtonDown`](FooterLegendProps.md#onbuttondown)
+
+***
+
+### onButtonUp()?
+
+```ts
+optional onButtonUp: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:60](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L60)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onButtonUp`](FooterLegendProps.md#onbuttonup)
+
+***
+
+### onCancel()?
+
+```ts
+optional onCancel: (e: CustomEvent) => void;
+```
+
+Defined in: [src/components/Focusable.ts:14](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/Focusable.ts#L14)
+
+#### Parameters
+
+##### e
+
+`CustomEvent`
+
+#### Returns
+
+`void`
+
+***
+
+### onCancelActionDescription?
+
+```ts
+optional onCancelActionDescription: ReactNode;
+```
+
+Defined in: [src/components/FooterLegend.ts:55](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L55)
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onCancelActionDescription`](FooterLegendProps.md#oncancelactiondescription)
+
+***
+
+### onCancelButton()?
+
+```ts
+optional onCancelButton: (evt: GamepadEvent) => void;
+```
+
+Defined in: [src/components/FooterLegend.ts:62](https://github.com/shdwmtr/plugutil/blob/b52230e3bd417b9353d983856323dee8a90c4f70/client/src/components/FooterLegend.ts#L62)
+
+#### Parameters
+
+##### evt
+
+[`GamepadEvent`](../type-aliases/GamepadEvent.md)
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+[`FooterLegendProps`](FooterLegendProps.md).[`onCancelButton`](FooterLegendProps.md#oncancelbutton)
+
+***
+
+### onCanPlay?
+
+```ts
+optional onCanPlay: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1407
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCanPlay
+```
+
+***
+
+### onCanPlayCapture?
+
+```ts
+optional onCanPlayCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1408
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCanPlayCapture
+```
+
+***
+
+### onCanPlayThrough?
+
+```ts
+optional onCanPlayThrough: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1409
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCanPlayThrough
+```
+
+***
+
+### onCanPlayThroughCapture?
+
+```ts
+optional onCanPlayThroughCapture: ReactEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1410
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCanPlayThroughCapture
+```
+
+***
+
+### onChange?
+
+```ts
+optional onChange: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1377
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onChange
+```
+
+***
+
+### onChangeCapture?
+
+```ts
+optional onChangeCapture: FormEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1378
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onChangeCapture
+```
+
+***
+
+### onClick?
+
+```ts
+optional onClick: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1453
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onClick
+```
+
+***
+
+### onClickCapture?
+
+```ts
+optional onClickCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1454
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onClickCapture
+```
+
+***
+
+### onCompositionEnd?
+
+```ts
+optional onCompositionEnd: CompositionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1363
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCompositionEnd
+```
+
+***
+
+### onCompositionEndCapture?
+
+```ts
+optional onCompositionEndCapture: CompositionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1364
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCompositionEndCapture
+```
+
+***
+
+### onCompositionStart?
+
+```ts
+optional onCompositionStart: CompositionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1365
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCompositionStart
+```
+
+***
+
+### onCompositionStartCapture?
+
+```ts
+optional onCompositionStartCapture: CompositionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1366
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCompositionStartCapture
+```
+
+***
+
+### onCompositionUpdate?
+
+```ts
+optional onCompositionUpdate: CompositionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1367
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCompositionUpdate
+```
+
+***
+
+### onCompositionUpdateCapture?
+
+```ts
+optional onCompositionUpdateCapture: CompositionEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1368
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCompositionUpdateCapture
+```
+
+***
+
+### onContextMenu?
+
+```ts
+optional onContextMenu: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1455
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onContextMenu
+```
+
+***
+
+### onContextMenuCapture?
+
+```ts
+optional onContextMenuCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1456
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onContextMenuCapture
+```
+
+***
+
+### onCopy?
+
+```ts
+optional onCopy: ClipboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1355
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCopy
+```
+
+***
+
+### onCopyCapture?
+
+```ts
+optional onCopyCapture: ClipboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1356
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCopyCapture
+```
+
+***
+
+### onCut?
+
+```ts
+optional onCut: ClipboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1357
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCut
+```
+
+***
+
+### onCutCapture?
+
+```ts
+optional onCutCapture: ClipboardEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1358
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onCutCapture
+```
+
+***
+
+### onDoubleClick?
+
+```ts
+optional onDoubleClick: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1457
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDoubleClick
+```
+
+***
+
+### onDoubleClickCapture?
+
+```ts
+optional onDoubleClickCapture: MouseEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1458
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDoubleClickCapture
+```
+
+***
+
+### onDrag?
+
+```ts
+optional onDrag: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1459
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDrag
+```
+
+***
+
+### onDragCapture?
+
+```ts
+optional onDragCapture: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1460
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragCapture
+```
+
+***
+
+### onDragEnd?
+
+```ts
+optional onDragEnd: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1461
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragEnd
+```
+
+***
+
+### onDragEndCapture?
+
+```ts
+optional onDragEndCapture: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1462
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragEndCapture
+```
+
+***
+
+### onDragEnter?
+
+```ts
+optional onDragEnter: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1463
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragEnter
+```
+
+***
+
+### onDragEnterCapture?
+
+```ts
+optional onDragEnterCapture: DragEventHandler;
+```
+
+Defined in: node\_modules/@types/react/index.d.ts:1464
+
+#### Inherited from
+
+```ts
+HTMLAttributes.onDragEnterCapture
+```
+
+***
+
+### onDragExit?
+
+```ts
+optional onDragExit: DragEventHandler