# @ai-matrx/detail 中文文档

规范地址：https://npmcn.com/package/%40ai-matrx/detail/

版本：0\.1\.178
npm 元数据更新时间：2026-10-27T23:54:13.822Z
中文译文更新时间：2026-11-05T19:03:07.389Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ai-matrx/detail
原文对照：https://npmcn.com/package/%40ai-matrx/detail/?lang=original
项目主页：https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/detail#readme
源码仓库：https://github.com/AI-Matrix-Engine/aidream

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：900 kB，31 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：3 个
- peer 依赖：react \>=18\.0\.0，react-dom \>=18\.0\.0
- 首次发布：2026-09-20T14:26:17.675Z
- 最新版本发布：2026-10-27T23:54:13.606Z
- 近 30 天下载量：48431（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：178（近 12 个月 178 个）

## 中文简介

THE 详细原始:每个记录类型——标题,源健康带,球场,协会,历史——一次被包裹,这样它就显示为窗口(默认),一个对接的侧面板,或者一个页面,所有三个内容都相同. 拥有现在a

## 安装

```sh
npm install @ai-matrx/detail
```

也可以使用：`pnpm add @ai-matrx/detail`、`yarn add @ai-matrx/detail`、`bun add @ai-matrx/detail`

## README

# @ai-matrx/detail——详细原始

> 亚鲁曼,2026-09-17: _"一个核心组件,然后作为一个Page, 一个灵活的抽屉,和 窗口面板。 默认为窗口. ...你只是做一个核心组件 一些核心 规则,然后把它包裹在这个可重复使用的东西 从包,然后立即给你 全3免费。"_

每个记录类型登记一次 —— 三场免费提供,内容一律相同 三个 键盘:越狱关闭,箭头在记录间移动(`[` 编号 : `]` (b) 为别名)和 Cmd/Ctrl+Enter 保存.

| 列报 | 这是什么 | 宿主的束缚 |
| --- | --- | --- |
| `window` (单位:千美元)**默认**(中文(简体) ) | 浮动、可拖动、可微缩; 手机底页 | `shells.Window` ——主机窗口管理器 |
| `docked` | 一个可调整的侧面面板对接右侧边缘, 无背景; 手机底页 | `shells.Docked` ——主机侧平面 |
| `page` | 应用程序标题下的完整路由正文 — 唯一更改 URL 的演示文稿; 向后提供窗口 | `shells.Page` ——主机路由头+滚动正文 |

冠军:逗号(侧取相/中取相/全页取相,每个数据库"开页入")和线条 (皮克,键盘-第一). 骨头匹配,皮肤我们的.

```
pnpm add @ai-matrx/detail        # every Matrx repo declares it "latest" (THE LATEST LAW)
```

## 收养状况

matrx 前端从 npm 安装此软件包 `latest` (通过2026-09-30) 将两者均匀保存的字节平分守护符删除。 原始的修补 在这里制作,发布,并按版本到达前端. 没有找到的状态使得 设计系统 `ErrorActions` 槽,所以一个主机的错误动作(前端的Alchemy菜单) 在那里出现时没有特定东道主的身体.

| 条目 | 船舶 | `"use client"` |
| --- | --- | --- |
| `@ai-matrx/detail` | 记录类型的合同、演示文稿设置形状及其每类型覆盖、带有最后URL字节预算的列表文本修饰、每个演示文稿的深链接拼写、行-字段 | 无——纯正,在服务器组件中合法 |
| `@ai-matrx/detail/react` | 端口和提供者、核心、键盘模型、加载器和保健解析器、一个开口器、头部分、正文、设置面板、三个演示文稿、头几何常数 | 对 |
| `@ai-matrx/detail/testing` | 接地站座椅: `makePortsWith(fn)`, (中文(简体) ), `mount`, (中文(简体) ), `instance`, (中文(简体) ), `clickByLabel`三个弹壳, `FILE_TYPE` ——该套装的座椅证明了自己,让一个主机证明它的约束性与 | 对 |

## 合同——每个记录类型登记一次

```ts
import type { DetailRecordType } from "@ai-matrx/detail";

const task: DetailRecordType = {
  type: "task", label: "Task", icon: TaskIcon, accent: null,
  entityToken: "task",          // doors · associations · history key off this; null = none
  load: (id, signal) => …,      // null = no single source → renders from the seed, and says so
  title: (row, seed) => …,
  fields: (row) => […],
  health?: (row, ctx) => …,     // the source health strip for a SYNCED record (sync or async)
  associationTokens?: […],      // null hides the section; omitted → the host default minus self
  history?: true,               // default: when entityToken is set
  extraSections?: (row, ctx) => […],
  Frame?: ({ ctx, children }) => …,   // wraps the body: surface runtime, right-click menu, …
};
```

固定部分,顺序: **源健康带** · 大约 **字段** • 妇女 **协会** (单位:千美元)`AssociationCardGrid` a 项下 `PrimaryEntityProvider`从 `@ai-matrx/associations`· **历史** ^ 额外 ^ “ 如何详细打开” 面板 . 不适用的一节没有,绝不是一个空框.

**一个开口者:** `useOpenDetail()({ type, id, presentation?, seed?, list? })`没有 `presentation` 它问主机 `resolvePresentation(type)` - 这个人的 `ui.detail.default_presentation`,与 `ui.detail.presentation_by_type` 首先读取 类型。 升起的解析器被宣布(主机 `notify.error`,命名密钥)和 窗口打开。 没有东西可以航行 `page`。 。 。 .

## 装订港口

所有应用的形状都通过 `DetailHostPorts` (单位:千美元)`@ai-matrx/detail/react`) (中文(简体) ). 供应商 巢并合并:将亮端口 ONCE 绑在后端 `useOpenDetail` 到处工作,让 每个演示文稿的懒散加载条目在上方添加自己的外壳和记录类型地图 演示文稿,所以窗口外壳 从来没有达到一个靴子捆绑。 少了个口袋, 命名本身.

| 端口 | 主机注入的是什么 | 需求 |
| --- | --- | --- |
| `resolveType(type)` | 记录类型的地图——一个登记册,从来没有第二次 | 每个列报条目 |
| `usePresentationSetting(type)` • 妇女 `resolvePresentation(type)` • 妇女 `warmPresentation(type)` | 设置阶梯的答案 `ui.detail.default_presentation` 财务报告和审定财务报表 `ui.detail.presentation_by_type` (反应脸,等待脸,缓存温暖) | 对 |
| `reReadPresentation(type)` | 一个写后读取的 FRESH 梯子, 命名现在的答题 | 选项 |
| `savePresentation({ presentation, forType, clear? })` | 设置及其每类地图条目的一款写入器;拒绝返回为 `{ ok: false, reason }` | 可选的——没有 qq 窗格不存在 |
| `open` • 妇女 `close` | 在主机上覆盖系统进行现场演示(窗口/对接) | 对 |
| `navigate.pageHref` • 妇女 `toPage` • 妇女 `back` • 妇女 `canGoBack` • 妇女 `toRecordHome` | 页面路由; `canGoBack` 回答“此标签是否按下页面”和 `toRecordHome` 将页面取而代之的是记录的家——从不生动 `back()` 进入空历史 | 对 |
| `shells.Window` • 妇女 `Docked` • 妇女 `Page` | 铬; 包装 `title`, (中文(简体) ), `titleNode`, (中文(简体) ), `actions`, (中文(简体) ), `children`, (中文(简体) ), `onClose` (+ 数) `onBack` 页面,+ `list` 为窗口的深层链接) | 每个列报条目 |
| `doors.RecordDoors` • 妇女 `RefCell` • 妇女 `tokenFromColumnName` • 妇女 `isUuidValue` • 妇女 `hasDoor` | a. 主机的实体门(打开/ 新标签/ 偷看); `hasDoor` 决定缺席状态是否可声称"上面的控制仍在打开" | 对 |
| `associations.defaultTokens` • 妇女 `canAnchor` | 表示关联部分的显示, 并且可以锁定 | 对 |
| `history.list(token, id, signal)` | 行版本 | 对 |
| `notify.error` • 妇女 `success` • 妇女 `copyText` | 主机的土司和剪贴板 | 对 |
| `reconnectSource(ref, source)` | 同样的连接器行提供, 用于同步记录的条 | 选项 |
| `remedy.typeMap` | 开发者去注册一个类型——控制台补救名称 | 选项 |

套接字通过Ports读取,从未解决: `ui.detail.default_presentation` (欧元) `window|docked|page`组织-用户), `ui.detail.presentation_by_type` (杰森地图, 同样的梯子, `ui.detail.list_context_max_ids` (组织;主机解决后通过) 数字输入 `encodeListQuery` 编号 : `detailListToUrlArgs`,将它夹住 `DETAIL_LIST_CONTEXT_MAX_IDS_CEILING`) (中文(简体) ). 他们的行由matrx-frontend的迁徙所生.

## 深层链接

窗口和对接的深层链接在主机的 ONE 面板- URL 机制的键下 `detail`实例 `type.id`参数 `as`数字 : `?panels=detail:task.<uuid>:as-window` 编号 : `:as-docked`, (中文(简体) ), 载有该清单的记录是从(b)`l` 编号 : `i` 编号 : `lt`) (中文(简体) ). 页面是主机的路线 (单位:千美元)`/detail/<type>/<id>` 在 matrx-前端)与 `?l=type.id,…&i=<n>&lt=<total>`两种拼写 由一剪接剪接`trimListContext`——8 000个字 将 URL 序列化, 加上其余的地址成本 —— 并且记录说 列表已修剪. `.` `:` `,` 在类型符号或id中逃脱, 所以外部的id是这样的 作为 `sc-domain:example.com` 圆通为同录.

## 键盘

`useDetailKeyboard`,将演示文稿填入的每个槽(标题和正文): 越狱关闭 除了打开菜单 / 选择 / 组合框和未承诺的文本字段 编辑; ArowUp/Down/Left/Right 仅在主体不是滚动目标时在记录之间移动, `[` 编号 : `]` 总是移动; Cmd/Ctrl+ 输入保存已注册的区段, 并说没有 在什么也没有发生的时候保存.

## 测试主机绑定

```ts
import { makePortsWith, mount, instance, StubPageShell } from "@ai-matrx/detail/testing";
const makePorts = makePortsWith(jest.fn);   // or vi.fn — the seat takes the runner's factory
const ports = makePorts({ shells: { Page: StubPageShell } });
const m = mount(<DetailPagePresentation data={instance()} />, ports);
```

每个端口都是个模拟,所以一个测试就证明了核心 要求HOST去做什么—— 在那里每个人都 记录了这个原始生物的缺陷.

## 故意不在这里

-   主机的窗口管理器,侧面板和路由头——它们是贝壳,绑定为端口.
-   设置阶梯,土司,剪贴板,路由器,实体注册-端口.
-   图标库:原始画作中的十七格是内嵌的 SVG (Luside- 衍生出, (原始内容存档于2018-09-25). ISC. 一个记录类型自己的图标是其注册上的主机数据.
-   Tailwind CSS 生成:组件被命名为通用类. 注册已建 带有消费者Tailwind扫描的软件包(`@source "../node_modules/@ai-matrx/detail/dist";` 以 matrx 前端为单位 `globals.css`,设计系统先例).

执行真相、文件地图和改变历史: `FEATURE.md` 除了这个文件。 包装 法律: `common-docs/policies/typescript-package-standard.md`。 。 。 .

## 常见问题

### @ai-matrx/detail 是什么？

THE 详细原始:每个记录类型——标题,源健康带,球场,协会,历史——一次被包裹,这样它就显示为窗口\(默认\),一个对接的侧面板,或者一个页面,所有三个内容都相同\. 拥有现在a

### 如何安装 @ai-matrx/detail？

在项目目录运行 npm install @ai-matrx/detail，或使用 pnpm add / yarn add / bun add。

### @ai-matrx/detail 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @ai-matrx/detail 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @ai-matrx/detail 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=20。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @ai-matrx/detail 可以商用吗？

@ai-matrx/detail 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @ai-matrx/detail 的下载量有多少？

根据 npm 官方下载统计，@ai-matrx/detail 在 2026/10/05 – 2026/11/03 这 30 天内被下载 48,431 次，日均约 1,614 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @ai-matrx/detail 还在维护吗？

最新版本 0\.1\.178 发布于 2026/10/28（9 天前）；至今共发布 178 个版本，其中过去 12 个月发布了 178 个；首次发布于 2026/09/20。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

