open-index/open-npm huggingface dataset:
npm package: @kordar-components/react
Description: 基于 React 的通用 Hook 集合，服务于 monorepo 生态（如 @kordar/easyui 等）。
Latest version: 2.0.0

# @kordar-components/react

基于 React 的通用 Hook 集合，服务于 monorepo 生态（如 @kordar/easyui 等）。

## 安装

```bash
npm install @kordar-components/react
# 安装 peer 依赖
npm install react react-dom react-router-dom
```

## 使用示例

### 引用对话框 Ref（useRefDialog）

```tsx
import React from 'react';
import { useRefDialog } from '@kordar-components/react';

function Demo() {
  const dialog = useRefDialog();
  return (
    <>
      <button onClick={() => dialog.open()}>Open</button>
      <MyDialog ref={dialog.ref} />
    </>
  );
}
```

### 路由重定向（useAppRedirect）

```tsx
import { useAppRedirect } from '@kordar-components/react';
import { useLocation } from 'react-router-dom';

function App() {
  const location = useLocation();
  useAppRedirect({
    location,
    history: null,
    isGuest: () => false,
    saveHistoryLocation: () => {},
  });
  return null;
}
```

### 表格 Hook（useTable/useLocalTable）

```ts
import { useTable, useLocalTable } from '@kordar-components/react';
```

## 导出一览

- 路由与权限
  - useAppRedirect
  - useCheckAccess
- 表格
  - useTable, useLocalTable
  - LocalTable, RemoteTable, LocalTableContext
- 表单/对话框
  - useFormData, useFormMData
  - useDialog, useFormDialog, useRefDialog
- 实用
  - useCheckboxAll, useTableSelection, useSwitchListToImg

## 构建

```bash
npm run build
```

产物输出在 `dist` 目录。
npm package: @kordar-lib/base
Description: 基础工具与抽象：包含表格上下文与查询、权限校验 Hook、条件过滤器、表单/排序/权限树等页面辅助方法，以及通用组件类型定义。
Latest version: 2.0.1

# @kordar-lib/base

基础工具与抽象：包含表格上下文与查询、权限校验 Hook、条件过滤器、表单/排序/权限树等页面辅助方法，以及通用组件类型定义。

## 模块概览

- 条件过滤（conditions）
  - 注册条件处理器（registerConditionHandler）
  - 预置 LIKE、NEQ 等处理器；默认回退 EQ
  - 可用于本地数据的筛选与分页
- 表格上下文（table）
  - TableContext 接口与 DefaultTableContext 实现
  - DefaultQuery：注入 fetch 后统一拼接固定条件/排序
  - CheckboxSelection：表格多选的值管理
  - 事件发布器（publishevent）：注册/触发组件间回调
- Hook（hook）
  - 权限校验（checkaccess）：AND/OR/FUNC 三种校验方式
  - 弹窗/选择/重定向等实用 Hook 定义与组合
- 页面辅助（page）
  - 表单项/搜索项定义与通用 helper（排序、默认条件/排序、权限树等）
- 组件类型（components）
  - 面包屑等通用 UI 的类型定义

## 快速使用

按需引入：
```ts
import { DefaultTableContext } from '@kordar-lib/base'
import type { TableConfig } from '@kordar-lib/base'

const cfg: TableConfig = {
  name: 'UserTable',
  defaultPageNumber: 1,
  defaultPageSize: 20,
  fetch: (searchBody) => api.listUsers(searchBody),
}

const ctx = new DefaultTableContext(cfg)
ctx.search()
```

注册条件处理器：
```ts
import executeCondition, { registerConditionHandler } from '@kordar-lib/base'

registerConditionHandler('EQ', { execute: (item, key, val) => item[key] === val })
const { data, count } = executeCondition(list, [{ key: 'name', type: 'LIKE', value: 'ab' }], 1, 20)
```

权限校验 Hook：
```ts
import createCheckAccess from '@kordar-lib/base'

const access = createCheckAccess([
  { key: 'user.edit', type: 'AND', value: ['user.update'] }
], { AndCan: Admin.can, OrCan: Admin.orCan, Permissions: Admin.permissions })

access.can('user.edit')
```

页面辅助：
```ts
import { toOptions, toSorts, defaultConditions } from '@kordar-lib/base'

toOptions({ a: 'A', b: 'B' })
toSorts('name', 'descending')
defaultConditions(undefined, [{ key: 'enabled', type: 'EQ', value: 1 }])
```

## 构建与类型（Monorepo：npm）

在仓库根目录执行：
```bash
npm install
npm run -w @kordar-lib/base build
```

类型检查：
```bash
npm exec -w @kordar-lib/base -- tsc -p tsconfig.json --noEmit
```