@attabot/complaint-app

中文文档
1.0.52发布于 2026/11/06MITTypeScriptESM + CJS近 30 天下载 4096

申诉管理 UI 软件包 — 运行在父应用程序的认证和 API 上的原子反应组件

中文使用文档
文档目录12 节
  1. 安装
  2. 使用量
  3. 主题暗模式( 父控) (C)
  4. 传递父数据( 无获取)
  5. 道具
  6. 原子结构
  7. 认证 & API
  8. Redux 和路由器集成
  9. 发展
  10. 许可证
  11. 父母拥有的目录
  12. 公司环境

@attabot/申诉应用程序

投诉管理 UI 作为 npm 软件包 。 与 原子设计 因此,母应用程序可以挂载一个随时可以使用的仪表板 父认证符和 API 基础 URL。 。 。 .

安装

npm install @attabot/complaint-app

同伴依赖性 :

npm install react react-dom react-redux @reduxjs/toolkit

使用量

import ComplaintApp from '@attabot/complaint-app';
import '@attabot/complaint-app/style.css';
import brandTheme from './brandTheme.json'; // static theme file

function App() {
  const [darkMode, setDarkMode] = useState(false); // owned by parent

  return (
    <ComplaintApp
      apiUrl="https://your-api.example.com"
      authToken={sessionToken}
      theme={brandTheme}
      darkMode={darkMode}
      systemsEndpoint="/api/v1/complaint-systems"
      onCreateForm={() => navigate('/forms/new')}
      onConfigure={(system) => navigate(`/systems/${system.id}`)}
    />
  );
}

主题暗模式( 父控) (C)

通过静态主题文件( JSON/ JS)并切换 darkMode 从父母。 该软件包在整个UI应用CSS变量.

import brandTheme from './brandTheme.json';

<ComplaintApp theme={brandTheme} darkMode={isDark} />

主题文件形状 :

{
  "light": { "colors": { "primary": "#2D64B8", "background": "#F5F5F5" } },
  "dark":  { "colors": { "primary": "#5B8DEF", "background": "#0F1115" } }
}

或通过平面覆盖(合并为两种模式):

<ComplaintApp theme={{ colors: { primary: '#0F766E' } }} darkMode={false} />

导出帮助/ 默认值 : lightTheme, (中文(简体) ), darkTheme, (中文(简体) ), defaultThemeFile, (中文(简体) ), useTheme。 。 。 .

传递父数据( 无获取)

<ComplaintApp
  apiUrl={apiUrl}
  authToken={authToken}
  useDemoData={false}
  systems={[
    {
      id: 'qms',
      title: 'QMS - Query Management System',
      status: 'active',
      description: 'Description of the template',
      departments: 3,
      workflows: 12,
      fields: 55,
      formsFilled: 234,
      updatedOn: '12 Mar 2024',
      titleAsLink: true,
    },
  ]}
  onCreateForm={handleCreate}
  onConfigure={handleConfigure}
/>

道具

Prop类型默认说明
apiUrlstring环境 VITE_API_URLAxios 请求的基础 URL
authTokenstring—— 说为 API 调用而存储的接听符
themeobject内置光/暗静态主题文件或符号覆盖
darkModebooleanfalse父控暗模式
basePathstring'/'嵌入时反应路由器基名
systemsarray—— 说父母控制的系统列表
systemsEndpointstring—— 说获取路径相对 apiUrl
useDemoDatabooleantrue没有数据时显示设计演示卡
titlestring'Complaint Management'页面标题
descriptionstring隐形占位符页面字幕
createLabelstring'Create New Form'主 CTA 标签
onCreateFormfn—— 说创建按钮处理器
onConfigurefn(system)—— 说配置按钮处理器
onTitleClickfn(system)—— 说标题链接单击
onDescriptionClickfn—— 说描述链接点击
onSearchfn(query)—— 说搜索更改回调
onPublishfn—— 说复检出版处理器( P)
onStepChangefn—— 说设置步骤更改回调

原子结构

src/components/
  atoms/       Button, Input, Typography, StatusBadge, Divider, Icons, Loading
  molecules/   SearchBar, DataPoint, CardHeader, CardFooter
  organisms/   PageHeader, SystemCard, SystemCardGrid

命名出口可供母体再利用:

import { Button, SearchBar, SystemCard, api } from '@attabot/complaint-app';

认证 & API

  1. 父母证 apiUrl + 键 authToken 输入 ComplaintApp 编号 : ApiProvider。 。 。 .
  2. Axios 软件包客户端 (api)在记忆中保留被传递的符号并附加 Authorization: Bearer … 在每次请求之前 它不会覆盖母应用程序的认证饼干.
  3. 可选令牌刷新针对 POST /api/v1/auth/refresh 当 a refreshToken 饼干存在.
  4. 没有产品/企业的API是硬编码的——提供 systems 或者说 systemsEndpoint。 。 。 .

Redux 和路由器集成

当挂入父目录时 react-redux 提供商, ComplaintApp 自动 再利用提供方,而不是添加第二个相竞的Redux上下文. 使用时 独立它回到自己的商店。 通过 store 只有当你 明确想要一个孤立的商店.

同样的规则适用于反应路由器: 现有母路由器被再用; a BrowserRouter 仅用于独立使用.

发展

npm install
npm run dev      # preview Complaint Management UI
npm run build    # emit dist/ for publishing

许可证

麻省理工学院

父母拥有的目录

过 roleList, (中文(简体) ), userList,以及 storeList 从母应用程序(例如其Redux选择器)中选择。 每个条目都有 id (单位:千美元) name 或者说 label。父加载这些目录;软件包在类别/工作流程选择器中使用角色和用户,并在Story ID控制器中以投诉表和预览的形式存储. 道具的更新在回放时反映. 存储控件提交ID. 投诉类型、工作流程、领域、状况和投诉提交继续使用投诉API。 通过签名用户为 currentUser; 当 company 道具被省略,软件包也使用 currentUser.company 用于公司特定地点的标签.

<ComplaintApp apiUrl={complaintApiUrl} authToken={token}
  roleList={roleList} storeList={storeList} useDemoData={false} />

遗产 rolelist 道具仍为别名; roleList 以优先为准。 缺少角色默认为空列表 。 若为 storeList 省略,存储 ID 字段保留其 API 定义的控件/选项;一个明确提供的空数组使空的存储选择器。 软件包保留了自己的 Redux 提供者, 除非有明文 store 提供.

公司环境

通过母公司对象使用 company={company}。如果省略,则软件包将使用 currentUser.company 当可用时。 软件包用页面道具转发已解析对象并将其同步到 state.appDetails.details.company,因此嵌入组件可以通过现有的软件包Redux提供者读取. 父更新替换公司对象; 通过 null 释出. 软件包不会获取公司细节 .

使用可见位置标签 company.level4 (例如, Branch ID 财务报告和审定财务报表 Select Branch) (中文(简体) ). 缺少或空白名称又回到 Store。 字段密钥、 ID 、 保存的数据, 依赖值保留其原始值.

版本与发布记录

@attabot/complaint-app 共发布 52 个版本,首次发布于 2026/08/05;过去 12 个月发布了 52 个版本。

版本发布日期距今
1.0.52latest2026/11/061 天前
1.0.512026/11/052 天前
1.0.502026/11/043 天前
1.0.492026/11/025 天前
1.0.482026/10/317 天前
1.0.472026/10/318 天前

关于 @attabot/complaint-app 的常见问题

@attabot/complaint-app 是什么?

申诉管理 UI 软件包 — 运行在父应用程序的认证和 API 上的原子反应组件

如何安装 @attabot/complaint-app?

在项目目录运行 npm install @attabot/complaint-app,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^18.0.0 || ^19.0.0)、react-dom(^18.0.0 || ^19.0.0)、react-redux(>=8)、@reduxjs/toolkit(>=1.9)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@attabot/complaint-app 支持 TypeScript 吗?

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

@attabot/complaint-app 支持 ESM 还是 CommonJS?

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

@attabot/complaint-app 可以商用吗?

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

@attabot/complaint-app 的下载量有多少?

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

@attabot/complaint-app 还在维护吗?

最新版本 1.0.52 发布于 2026/11/06(1 天前);至今共发布 52 个版本,其中过去 12 个月发布了 52 个;首次发布于 2026/08/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。