# @cloud-ru/ds-uikit-product-modal-predefined 中文文档

规范地址：https://npmcn.com/package/%40cloud-ru/ds-uikit-product-modal-predefined/

版本：1\.1\.4
npm 元数据更新时间：2026-11-11T15:07:33.765Z
中文译文更新时间：2026-11-11T15:59:34.206Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40cloud-ru/ds-uikit-product-modal-predefined
原文对照：https://npmcn.com/package/%40cloud-ru/ds-uikit-product-modal-predefined/?lang=original
项目主页：https://github.com/cloud-ru-tech/snack-v2/tree/master/packages/uikit-product-modal-predefined
源码仓库：https://github.com/cloud-ru-tech/snack-v2

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

- 包体积（解压后）：636 kB，157 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：19 个
- 首次发布：2026-08-18T12:43:11.466Z
- 最新版本发布：2026-11-11T15:07:33.476Z
- 近 30 天下载量：7653（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：212（近 12 个月 212 个）

## 中文简介

产品预设-QQ删除, 提醒 {发布注释}}}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.

## 安装

```sh
npm install @cloud-ru/ds-uikit-product-modal-predefined
```

也可以使用：`pnpm add @cloud-ru/ds-uikit-product-modal-predefined`、`yarn add @cloud-ru/ds-uikit-product-modal-predefined`、`bun add @cloud-ru/ds-uikit-product-modal-predefined`

## README

# 预定义

`@cloud-ru/ds-uikit-product-modal-predefined` ——产品预设-QQ删除,召回##发布注释#####Modal #BottomSheet.

Пакет `@cloud-ru/ds-uikit-product-modal-predefined` 产品 `@cloud-ru/ds-modal` и `@cloud-ru/ds-bottom-sheet`。 。 。 .

-   **删除模式** {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢.
-   **召回莫达尔** {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢.
-   **发布注释** ——qq发布注释:qqq桌面,下表qq手机;qq `data`, (中文(简体) ), `noData`, (中文(简体) ), `error`。 。 。 .

## Установка

```bash
pnpm add @cloud-ru/ds-uikit-product-modal-predefined
```

```ts
import { DeleteModal, RecallModal, ReleaseNotes } from '@cloud-ru/ds-uikit-product-modal-predefined'
```

## 图片

Источник: `Product UI Kit (variables)`,根节点 `3179:1987`。 。 。 .

Figma-First API : 互联网电影数据库(IMDb)上"Figma-first API"的资料(英文) `contentState` - визуальная, поле, включается `confirmText`. 遗产 `@cloud-ru/uikit-product-modal-predefined` {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得怎样.

## 删除模式

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢.

`DeleteModal` - готовый удаления объекта объекта объекта {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `deleteModalConfirmable` включается `confirmText`{\\fn黑体\\fs20\\shad2\\2ah82\\3ah20\\4ah33\\fscx95\\3ch592001\\be1}你觉得怎样.

### Примеры

#### Базовое

```tsx
import { Button } from '@cloud-ru/ds-button';
import { DeleteModal } from '@cloud-ru/ds-uikit-product-modal-predefined';
import { useState } from 'react';

export function DeleteBasic() {
  const [open, setOpen] = useState(false);

  return (
    <>
      <Button label='Open delete modal' view='filled' appearance='primary' onClick={() => setOpen(true)} />
      <DeleteModal
        open={open}
        onClose={() => setOpen(false)}
        objectType='виртуальную машину'
        onDelete={close => close()}
      />
    </>
  );
}
```

#### {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢

```tsx
import { Button } from '@cloud-ru/ds-button';
import { DeleteModal } from '@cloud-ru/ds-uikit-product-modal-predefined';
import { useState } from 'react';

export function DeleteConfirmable() {
  const [open, setOpen] = useState(false);

  return (
    <>
      <Button label='Open confirmable delete modal' view='filled' appearance='primary' onClick={() => setOpen(true)} />
      <DeleteModal
        open={open}
        onClose={() => setOpen(false)}
        objectType='виртуальную машину'
        confirmText='vm-production-01'
        onDelete={close => close()}
      />
    </>
  );
}
```

### 道具

**删除模式**

| Prop | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `closeOnPopstate` | `boolean` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `confirmText` | `string` | —— 说 | Текст,который也. - Если модалка показывает подтверждения |
| `confirmTextVariant` | `"name"` | `"text"` | `name` | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `content` | `ReactNode` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `data-test-id` | `string` | —— 说 |  |
| `deleting` | `boolean` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `hideConfirmCopyButton` | `boolean` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `mode` | `"aggressive"` | `"forced"` | `"regular"` | `MODE.Regular` | . |
| `objectType` | `string` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `onClose` | `() => void` | —— 说 | Колбэк |
| `onDelete` | `(onClose: () => void) => void` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `open` | `boolean` | —— 说 | Управление/не |
| `subtitle` | `ReactNode` | —— 说 | Подзаголовок |
| `titleTooltip` | `ReactNode` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |

##### 相关类型

-   `ConfirmTextVariant` =: `"name"` | `"text"`

## 召回莫达尔

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢.

`RecallModal` - готовый отзыва действия действия действия {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `recallModalConfirmable` включается `confirmText`{\\fn黑体\\fs20\\shad2\\2ah82\\3ah20\\4ah33\\fscx95\\3ch592001\\be1}你觉得怎样.

### Примеры

#### Базовый

```tsx
import { Button } from '@cloud-ru/ds-button';
import { RecallModal } from '@cloud-ru/ds-uikit-product-modal-predefined';
import { useState } from 'react';

export function RecallBasic() {
  const [open, setOpen] = useState(false);

  return (
    <>
      <Button label='Open recall modal' view='filled' appearance='primary' onClick={() => setOpen(true)} />
      <RecallModal open={open} onClose={() => setOpen(false)} onRecall={close => close()} />
    </>
  );
}
```

#### {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢

```tsx
import { Button } from '@cloud-ru/ds-button';
import { RecallModal } from '@cloud-ru/ds-uikit-product-modal-predefined';
import { useState } from 'react';

export function RecallConfirmable() {
  const [open, setOpen] = useState(false);

  return (
    <>
      <Button label='Open confirmable recall modal' view='filled' appearance='primary' onClick={() => setOpen(true)} />
      <RecallModal
        open={open}
        onClose={() => setOpen(false)}
        confirmText='recall-operation-01'
        onRecall={close => close()}
      />
    </>
  );
}
```

### 道具

**回顾 Modal 程序**

| Prop | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `closeOnPopstate` | `boolean` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `confirmText` | `string` | —— 说 | Текст,который也. - Если модалка показывает подтверждения |
| `content` | `ReactNode` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `data-test-id` | `string` | —— 说 |  |
| `hideConfirmCopyButton` | `boolean` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `loading` | `boolean` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `mode` | `"aggressive"` | `"forced"` | `"regular"` | `MODE.Regular` | . |
| `onClose` | `() => void` | —— 说 | Колбэк |
| `onRecall` | `(onClose: () => void) => void` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `open` | `boolean` | —— 说 | Управление/не |
| `subtitle` | `ReactNode` | —— 说 | Подзаголовок |
| `titleTooltip` | `ReactNode` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |

## 发布注释

QQ发布注释预设——QQQ桌面,底页QQ手机.

`ReleaseNotes` -=YTET -伊甸园字幕组=- 翻译: QQ桌面 QQQQ, QQ移动-下页; QQ: QQ. {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `contentState` принимает `data`, (中文(简体) ), `noData`, (中文(简体) ), `error`。 。 。 .

### Примеры

#### Данные

```tsx
import { Button } from '@cloud-ru/ds-button';
import { ReleaseNotes } from '@cloud-ru/ds-uikit-product-modal-predefined';
import { useState } from 'react';

import { releaseNotesItems } from './releaseNotesItems';

export function ReleaseNotesData() {
  const [open, setOpen] = useState(false);

  return (
    <>
      <Button label='Open release notes' view='filled' appearance='primary' onClick={() => setOpen(true)} />
      <ReleaseNotes open={open} onClose={() => setOpen(false)} items={releaseNotesItems} />
    </>
  );
}
```

#### Нет

```tsx
import { Button } from '@cloud-ru/ds-button';
import { ReleaseNotes } from '@cloud-ru/ds-uikit-product-modal-predefined';
import { useState } from 'react';

import { releaseNotesItems } from './releaseNotesItems';

export function ReleaseNotesNoData() {
  const [open, setOpen] = useState(false);

  return (
    <>
      <Button label='Open no-data release notes' view='filled' appearance='primary' onClick={() => setOpen(true)} />
      <ReleaseNotes open={open} onClose={() => setOpen(false)} contentState='noData' items={releaseNotesItems} />
    </>
  );
}
```

#### Ошибка

```tsx
import { Button } from '@cloud-ru/ds-button';
import { ReleaseNotes } from '@cloud-ru/ds-uikit-product-modal-predefined';
import { useState } from 'react';

import { releaseNotesItems } from './releaseNotesItems';

export function ReleaseNotesError() {
  const [open, setOpen] = useState(false);

  return (
    <>
      <Button label='Open error release notes' view='filled' appearance='primary' onClick={() => setOpen(true)} />
      <ReleaseNotes
        open={open}
        onClose={() => setOpen(false)}
        contentState='error'
        items={releaseNotesItems}
        onDataErrorRetryClick={() => undefined}
      />
    </>
  );
}
```

#### {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢

```tsx
import { Button } from '@cloud-ru/ds-button';
import { ReleaseNotes } from '@cloud-ru/ds-uikit-product-modal-predefined';
import { useState } from 'react';

import { releaseNotesItems } from './releaseNotesItems';

export function ReleaseNotesVideo() {
  const [open, setOpen] = useState(false);

  return (
    <>
      <Button label='Open video release notes' view='filled' appearance='primary' onClick={() => setOpen(true)} />
      <ReleaseNotes
        open={open}
        onClose={() => setOpen(false)}
        items={[
          {
            ...releaseNotesItems[0],
            video: 'https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4',
          },
        ]}
      />
    </>
  );
}
```

### 道具

**释放注释**

| Prop | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `closeOnPopstate` | `boolean` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `contentState` | `"data"` | `"error"` | `"noData"` | —— 说 | 图片 |
| `data-test-id` | `string` | —— 说 |  |
| `items` | `NoteItemProps` | —— 说 | Массив |
| `loading` | `boolean` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `onClose` | `() => void` | —— 说 | Колбэк |
| `onDataErrorRetryClick` | `(() => void)` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `onReadLaterClick` | `(() => void)` | —— 说 | Действие"Ознакомиться" |
| `onSlideChange` | `((slide: number) => void)` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `open` | `boolean` | —— 说 | Управление/не |
| `readLaterButtonProps` | `ButtonProps` | —— 说 | QQ手机:QQ动作-"QQ"(QQ桌面QQ). |
| `snapPoint` | `SnapPoint` | `0.85` | QQ手机:QQ底页QQ (QQ桌面QQ).  
(原始内容存档于2017-09-29). QQ, QQ取景口--. `SnapPoint` из `@cloud-ru/ds-bottom-sheet`。 。 。 . |

##### 相关类型

**说明 项目方案**

| Prop | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `description` | `string` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}我.. |
| `image` | `{ src: string; alt: string; }` | —— 说 | Иллюстрация |
| `title` | `string` | —— 说 | Заголовок |
| `video` | `string | undefined` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |

-   `ReleaseNotesContentState` =: `"data"` | `"error"` | `"noData"`

### {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢

(原始内容存档于2018-09-26). 腾讯网. 腾讯. 唵(引一)фиксирован(二合引一)во(二合引一)贺. 腾讯动漫. {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `snapPoint` . . . . . `1`, весь.

腾讯网 腾讯网 腾讯网 腾讯网 腾讯网 腾讯网 腾讯网 腾讯网 腾讯网 腾讯网. {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得怎样? {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `object-fit: cover`: всё,相去相去.

### Адаптивность

`ReleaseNotes` ——"с"("地上"-"花"). {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `AdaptiveProvider` 页:1 `@cloud-ru/ds-adaptive`API :

-   **桌面** (по)- (модальное`ModalCustom` из `@cloud-ru/ds-modal`{\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢.
-   **移动** - контент рендерится рендерится `BottomSheet` из `@cloud-ru/ds-bottom-sheet` (панель也.

\* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* `<AdaptiveProvider>` \[永久失效連結\] (中文(简体) ). Пропа `layoutType` у:источник也.

#### {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢

\- Форс,не:

-   Поддерево:
    
    ```tsx
    import { AdaptiveProvider } from '@cloud-ru/ds-adaptive'
    
    <AdaptiveProvider layoutType='mobile'>
      <ReleaseNotes open={open} onClose={close} items={items} />
    </AdaptiveProvider>
    ```
    
-   – Отдельный – `withLayoutType` (模块-镜, сахар:
    
    ```tsx
    import { withLayoutType } from '@cloud-ru/ds-adaptive'
    import { ReleaseNotes } from '@cloud-ru/ds-uikit-product-modal-predefined'
    
    const MobileReleaseNotes = withLayoutType(ReleaseNotes, 'mobile')
    ```
    

#### Платформенные

\========================================================================================================================================================= `ReleaseNotesProps`。 。 。 .

| Пропы | 桌面 | 移动 |
| --- | --- | --- |
| `readLaterButtonProps`, (中文(简体) ), `snapPoint` | игнорируются | используются |
| `open`, (中文(简体) ), `onClose`, (中文(简体) ), `container`, (中文(简体) ), `closeOnPopstate`, (中文(简体) ), `contentState`, (中文(简体) ), `items`, (中文(简体) ), `loading`, (中文(简体) ), `onReadLaterClick`, (中文(简体) ), `onDataErrorRetryClick`, (中文(简体) ), `onSlideChange` | используется | используется |

Подробнее модели- **适应性**。 。 。 .

## 常见问题

### @cloud-ru/ds-uikit-product-modal-predefined 是什么？

产品预设-QQ删除, 提醒 \{发布注释\}\}\}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.

### 如何安装 @cloud-ru/ds-uikit-product-modal-predefined？

在项目目录运行 npm install @cloud-ru/ds-uikit-product-modal-predefined，或使用 pnpm add / yarn add / bun add。

### @cloud-ru/ds-uikit-product-modal-predefined 支持 TypeScript 吗？

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

### @cloud-ru/ds-uikit-product-modal-predefined 支持 ESM 还是 CommonJS？

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

### @cloud-ru/ds-uikit-product-modal-predefined 可以商用吗？

@cloud-ru/ds-uikit-product-modal-predefined 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @cloud-ru/ds-uikit-product-modal-predefined 的下载量有多少？

根据 npm 官方下载统计，@cloud-ru/ds-uikit-product-modal-predefined 在 2026/10/10 – 2026/11/08 这 30 天内被下载 7,653 次，日均约 255 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @cloud-ru/ds-uikit-product-modal-predefined 还在维护吗？

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

