@morehao/ark-iam-react 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of @morehao/ark-iam-react might be problematic. Click here for more details.

Files changed (66) hide show
  1. package/README.md +83 -2
  2. package/dist/_types/api/index.d.ts +5 -0
  3. package/dist/_types/api/index.js +185 -0
  4. package/dist/_types/api/index.js.map +1 -0
  5. package/dist/_types/api/request.d.ts +34 -0
  6. package/dist/_types/api/resources/auth.d.ts +13 -0
  7. package/dist/_types/api/resources/platform.d.ts +80 -0
  8. package/dist/_types/api/sessionProbe.d.ts +13 -0
  9. package/dist/_types/auth/AuthProvider.d.ts +27 -0
  10. package/dist/_types/auth/config.d.ts +23 -0
  11. package/dist/_types/auth/guards.d.ts +1 -0
  12. package/dist/_types/auth/hooks.d.ts +11 -0
  13. package/dist/_types/auth/index.d.ts +8 -0
  14. package/dist/_types/auth/index.js +190 -0
  15. package/dist/_types/auth/index.js.map +1 -0
  16. package/dist/_types/auth/tenant.d.ts +3 -0
  17. package/dist/_types/types/auth.d.ts +62 -0
  18. package/dist/_types/types/department.d.ts +52 -0
  19. package/dist/_types/types/index.d.ts +5 -0
  20. package/dist/_types/types/index.js +14 -0
  21. package/dist/_types/types/index.js.map +1 -0
  22. package/dist/_types/types/platform.d.ts +347 -0
  23. package/dist/_types/types/response.d.ts +14 -0
  24. package/dist/_types/types/tenant.d.ts +243 -0
  25. package/dist/_types/ui/AppShell.d.ts +16 -0
  26. package/dist/_types/ui/EllipsisCell.d.ts +16 -0
  27. package/dist/_types/ui/IDCell.d.ts +14 -0
  28. package/dist/_types/ui/InitialPasswordModal.d.ts +18 -0
  29. package/dist/_types/ui/LoginPage.d.ts +6 -0
  30. package/dist/_types/ui/MainLayout.d.ts +14 -0
  31. package/dist/_types/ui/NameLink.d.ts +18 -0
  32. package/dist/_types/ui/PageContainer.d.ts +15 -0
  33. package/dist/_types/ui/ProfileCenter.d.ts +6 -0
  34. package/dist/_types/ui/RemoteSelect.d.ts +57 -0
  35. package/dist/_types/ui/RowActions.d.ts +36 -0
  36. package/dist/_types/ui/TenantSwitcher.d.ts +1 -0
  37. package/dist/_types/ui/TimeCell.d.ts +53 -0
  38. package/dist/_types/ui/columns.d.ts +116 -0
  39. package/dist/_types/ui/format.d.ts +20 -0
  40. package/dist/_types/ui/index.d.ts +25 -0
  41. package/dist/_types/ui/index.js +1233 -0
  42. package/dist/_types/ui/index.js.map +1 -0
  43. package/dist/_types/ui/status.d.ts +38 -0
  44. package/dist/_types/ui/theme.d.ts +49 -0
  45. package/dist/api.d.ts +1 -0
  46. package/dist/api.js +50 -0
  47. package/dist/api.js.map +1 -0
  48. package/dist/auth.d.ts +1 -0
  49. package/dist/auth.js +17 -0
  50. package/dist/auth.js.map +1 -0
  51. package/dist/index-BQuRl5A6.js +185 -0
  52. package/dist/index-BQuRl5A6.js.map +1 -0
  53. package/dist/index-D3uUqZ5c.js +190 -0
  54. package/dist/index-D3uUqZ5c.js.map +1 -0
  55. package/dist/index-DnhMUOxg.js +1233 -0
  56. package/dist/index-DnhMUOxg.js.map +1 -0
  57. package/dist/index.d.ts +4 -0
  58. package/dist/index.js +109 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/types.d.ts +1 -0
  61. package/dist/types.js +14 -0
  62. package/dist/types.js.map +1 -0
  63. package/dist/ui.d.ts +1 -0
  64. package/dist/ui.js +46 -0
  65. package/dist/ui.js.map +1 -0
  66. package/package.json +80 -3
@@ -0,0 +1,14 @@
1
+ export interface MainMenuItems {
2
+ key: string;
3
+ icon?: React.ReactNode;
4
+ label: string;
5
+ children?: MainMenuItems[];
6
+ }
7
+ interface Props {
8
+ title: string;
9
+ subtitle?: string;
10
+ menuItems: MainMenuItems[];
11
+ hasTenantSwitch?: boolean;
12
+ }
13
+ export declare function MainLayout({ title, subtitle, menuItems, hasTenantSwitch }: Props): import("react").JSX.Element;
14
+ export {};
@@ -0,0 +1,18 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface NameLinkProps {
3
+ /** 名称内容;空值展示为 - */
4
+ value?: ReactNode;
5
+ /** 点击查看详情;未提供时退化为普通文本 */
6
+ onClick?: () => void;
7
+ /** 悬浮提示;默认取 value 的字符串形式 */
8
+ title?: string;
9
+ /** 使用等宽字体(日志键 / 编码类名称) */
10
+ monospace?: boolean;
11
+ }
12
+ /**
13
+ * 名称单元格:列表行的「名称即详情入口」(列表页操作列规范,见 DESIGN.md §7.3)。
14
+ *
15
+ * 详情不再占用操作列,而是通过点击名称打开;因此名称渲染为主色链接
16
+ * (hover 下划线 + 手型光标),让用户一眼看出可点击。名称过长时省略号截断并悬浮展示全称。
17
+ */
18
+ export declare function NameLink({ value, onClick, title, monospace }: NameLinkProps): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import type { ReactNode } from 'react';
2
+ interface Props {
3
+ title: string;
4
+ description?: string;
5
+ extra?: ReactNode;
6
+ children: ReactNode;
7
+ loading?: boolean;
8
+ }
9
+ /**
10
+ * 统一页面容器:页面标题区(标题 + 描述 + 右侧操作按钮)+ 内容卡片。
11
+ * 所有管理页共用,保证页面骨架一致。
12
+ */
13
+ export declare function PageContainer({ title, description, extra, children, loading }: Props): import("react").JSX.Element;
14
+ export declare function pageTitleStyle(): React.CSSProperties;
15
+ export {};
@@ -0,0 +1,6 @@
1
+ interface Props {
2
+ open: boolean;
3
+ onClose: () => void;
4
+ }
5
+ export declare function ProfileCenter({ open, onClose }: Props): import("react").JSX.Element;
6
+ export {};
@@ -0,0 +1,57 @@
1
+ import { type CSSProperties } from 'react';
2
+ export interface RemoteSelectOption {
3
+ value: string;
4
+ label: string;
5
+ }
6
+ interface RemoteOptionsProps {
7
+ /** 远程取数:关键字为空表示取默认首页;返回值直接作为下拉选项 */
8
+ fetchOptions: (keyword: string) => Promise<RemoteSelectOption[]>;
9
+ /** 搜索去抖毫秒数,默认 300 */
10
+ debounceMs?: number;
11
+ /** 可选的外部名称缓存(`Map<值, 名称>`):多个下拉共享已知名称,如筛选区选过的服务账号在弹窗表单里直接显示名称 */
12
+ labelCache?: Map<string, string>;
13
+ }
14
+ export interface RemoteSelectProps extends RemoteOptionsProps {
15
+ /** 受控值(`Form.Item` 自动注入) */
16
+ value?: string;
17
+ /** 选中回调;第二参为选中项,便于调用方保存名称(平台端列表经常要回显名称) */
18
+ onChange?: (value?: string, option?: RemoteSelectOption) => void;
19
+ placeholder?: string;
20
+ disabled?: boolean;
21
+ allowClear?: boolean;
22
+ /** 固定宽度(筛选区用);表单内不传则由容器撑满 */
23
+ width?: number;
24
+ /** 额外样式(如 `{ width: '100%' }` 撑满表单) */
25
+ style?: CSSProperties;
26
+ /** 已知当前值对应的名称:编辑态回显,避免选项未加载时显示裸 ID */
27
+ initialLabel?: string;
28
+ id?: string;
29
+ }
30
+ /**
31
+ * 远程搜索下拉(单选):选项由 `fetchOptions` 按关键字从服务端取,不在前端一次性全量加载。
32
+ *
33
+ * 解决「下拉只取前 N 条 → 数据量上百后选不到目标」的问题(租户/应用/服务账号等可增长资源)。
34
+ * 不变量见 `useRemoteOptions`。
35
+ */
36
+ export declare function RemoteSelect({ value, onChange, initialLabel, placeholder, disabled, allowClear, width, style, id, ...rest }: RemoteSelectProps): import("react").JSX.Element;
37
+ export interface RemoteMultiSelectProps extends RemoteOptionsProps {
38
+ /** 受控值(多选,`Form.Item` 自动注入) */
39
+ value?: string[];
40
+ onChange?: (value?: string[], option?: RemoteSelectOption[]) => void;
41
+ /** 已知已选值的名称(如主体当前已分配的角色):避免搜索结果未命中时显示裸 ID */
42
+ initialLabels?: Record<string, string>;
43
+ placeholder?: string;
44
+ disabled?: boolean;
45
+ allowClear?: boolean;
46
+ /** 固定宽度(筛选区用);表单内不传则由容器撑满 */
47
+ width?: number;
48
+ /** 额外样式(如 `{ width: '100%' }` 撑满表单) */
49
+ style?: CSSProperties;
50
+ id?: string;
51
+ }
52
+ /**
53
+ * 远程搜索下拉(多选):与 `RemoteSelect` 共用同一套「服务端搜索 + 过期响应丢弃 + 已选值名称兜底」,
54
+ * 用于角色授权这类「候选集可增长 + 已选项必须回显名称」的多值场景。
55
+ */
56
+ export declare function RemoteMultiSelect({ value, onChange, initialLabels, placeholder, disabled, allowClear, width, style, id, ...rest }: RemoteMultiSelectProps): import("react").JSX.Element;
57
+ export {};
@@ -0,0 +1,36 @@
1
+ import type { ReactNode } from 'react';
2
+ /** 表格操作列中的单个操作。 */
3
+ export interface RowAction {
4
+ /** 操作唯一标识(React key / 菜单 key) */
5
+ key: string;
6
+ /** 操作文案 */
7
+ label: ReactNode;
8
+ /** 点击回调 */
9
+ onClick?: () => void;
10
+ /** 危险操作:按钮/菜单项渲染为语义红 */
11
+ danger?: boolean;
12
+ /** 禁用 */
13
+ disabled?: boolean;
14
+ /** 二次确认文案;提供时点击后先确认再执行 onClick */
15
+ confirm?: ReactNode;
16
+ /** 可选图标(下拉菜单项会展示) */
17
+ icon?: ReactNode;
18
+ /** 运行时隐藏该操作(如已吊销的密钥不再展示「吊销」) */
19
+ hidden?: boolean;
20
+ }
21
+ export interface RowActionsProps {
22
+ /** 操作列表,按重要程度从高到低排列 */
23
+ actions: RowAction[];
24
+ /** 横排上限,超过则收起为「更多」下拉;默认 3 */
25
+ max?: number;
26
+ }
27
+ /**
28
+ * 统一的表格「操作列」渲染器(列表页操作列规范,见 DESIGN.md §7.3):
29
+ * - 操作数 ≤ max(默认 3):全部以 `Button type="link" size="small"` 横排;
30
+ * - 操作数 > max:保留前 `max - 1` 个高频操作横排,其余收进「更多」下拉(菜单项纵向排列),
31
+ * 避免操作列被撑宽、行内按钮挤成一团。
32
+ *
33
+ * 二次确认:横排操作用 Popconfirm 就地气泡确认;下拉菜单项用 Modal.confirm
34
+ * (菜单点击会先关闭下拉,气泡无法稳定锚定)。
35
+ */
36
+ export declare function RowActions({ actions, max }: RowActionsProps): import("react").JSX.Element | null;
@@ -0,0 +1 @@
1
+ export declare function TenantSwitcher(): import("react").JSX.Element;
@@ -0,0 +1,53 @@
1
+ import type { ColumnType } from 'antd/es/table';
2
+ /**
3
+ * 时间列标准宽度(px)。
4
+ *
5
+ * 依据:完整时间串 `2026-09-03 17:19:46` 在 antd 表格 14px 字号 + 全站 `tabular-nums`
6
+ * 下实测 146.06px(macOS / Chrome / 系统字体栈,为常见平台里较宽的一种);
7
+ * antd v5 单元格水平内边距为 `token.padding` × 2 = 32px,故单行显示至少需要 178.06px,
8
+ * 取 180 留余量。低于该值的列宽会让时间恰好在唯一的空格处折行成「日期 / 时间」两行
9
+ * (规范见 frontend/DESIGN.md §7.3)。
10
+ */
11
+ export declare const TIME_COL_WIDTH = 180;
12
+ /**
13
+ * 相对时间列宽度(px):如「3 天前」实测 40.47px、最长档「10 个月前」约 63px,
14
+ * 加 32px 内边距后 120 有充足余量。
15
+ */
16
+ export declare const TIME_COL_WIDTH_RELATIVE = 120;
17
+ export interface TimeCellProps {
18
+ /** 秒级时间戳(约定见 AGENTS.md),兼容字符串与毫秒值 */
19
+ value?: number | string | null;
20
+ /** 空值占位文案(默认 '-'),如「永不过期」 */
21
+ placeholder?: string;
22
+ /** 相对时间模式:展示「3 天前」,悬浮给出完整 `YYYY-MM-DD HH:mm:ss` */
23
+ relative?: boolean;
24
+ }
25
+ /**
26
+ * 表格时间单元格:统一 `YYYY-MM-DD HH:mm:ss`,并强制单行不折行。
27
+ *
28
+ * 所有时间列都必须走本组件(或 `timeColumn` 工厂),禁止页面直接 `fmtTime` 且自定列宽 ——
29
+ * 列宽与 `whiteSpace: nowrap` 是一对,缺任何一半都会出现"折行"或"溢出串列"。
30
+ */
31
+ export declare function TimeCell({ value, placeholder, relative }: TimeCellProps): import("react").JSX.Element;
32
+ export interface TimeColumnConfig<T> {
33
+ title: string;
34
+ /** 记录字段名;同时作为列的 key */
35
+ dataIndex: keyof T & string;
36
+ /** 覆盖默认列宽(默认绝对时间 180 / 相对时间 120) */
37
+ width?: number;
38
+ placeholder?: string;
39
+ /** 次要时间字段(最后使用 / 登录时间等)用相对时间 + Tooltip */
40
+ relative?: boolean;
41
+ }
42
+ /**
43
+ * 时间列工厂:一次给出「标题 + 字段 + 标准列宽 + TimeCell 渲染」,
44
+ * 避免各页面手写列宽(历史 bug 根因就是每页各写 150/160/170)。
45
+ *
46
+ * ```tsx
47
+ * const columns: ColumnsType<TenantItem> = [
48
+ * timeColumn<TenantItem>({ title: '创建时间', dataIndex: 'createdAt' }),
49
+ * timeColumn<TenantUserLoginLogItem>({ title: '登录时间', dataIndex: 'loginTime', relative: true }),
50
+ * ]
51
+ * ```
52
+ */
53
+ export declare function timeColumn<T>({ title, dataIndex, width, placeholder, relative, }: TimeColumnConfig<T>): ColumnType<T>;
@@ -0,0 +1,116 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ColumnType } from 'antd/es/table';
3
+ import { type RowAction } from './RowActions';
4
+ /**
5
+ * 列表列宽标准(px)与列工厂(规范见 frontend/DESIGN.md §7.3)。
6
+ *
7
+ * 背景:历史 bug 是各页手写列宽 + 手写 `scroll.x`,列宽普遍偏大(ID 150、编码 180…)
8
+ * 叠加后总宽轻松超过内容区,导致「一进列表就有横向滚动条、操作列要横滑很久才看得到」。
9
+ * 这里把所有列宽收口成具名常量与工厂,页面不再出现魔法数字。
10
+ *
11
+ * 列宽 = 内容实测宽 + antd v5 单元格左右内边距(16 × 2 = 32)。
12
+ */
13
+ /** ID 列:`IDCell` 默认展示「首 8 + … + 尾 4」共 13 个 12px 等宽字符(≈93.6px)+ 内边距。 */
14
+ export declare const ID_COL_WIDTH = 130;
15
+ /** 名称列:约 10 个汉字;过长由 `NameLink` / `EllipsisCell` 省略号截断。 */
16
+ export declare const NAME_COL_WIDTH = 180;
17
+ /** 编码 / key / 域名等等宽短标识列。 */
18
+ export declare const CODE_COL_WIDTH = 150;
19
+ /** 分类 Tag 列(类型 / 可见性 / 来源等)。 */
20
+ export declare const TAG_COL_WIDTH = 110;
21
+ /** 状态 Tag 列(正常 / 挂起 / 启用 / 停用)。 */
22
+ export declare const STATUS_COL_WIDTH = 100;
23
+ /** 数字计数列(成员数、角色数、排序)。 */
24
+ export declare const COUNT_COL_WIDTH = 90;
25
+ /** 自由文本列(描述、备注等),一律省略号截断。 */
26
+ export declare const TEXT_COL_WIDTH = 200;
27
+ /** 长文本列(日志 payload、长描述):比 `TEXT_COL_WIDTH` 宽一档,仍省略号截断。 */
28
+ export declare const LONG_TEXT_COL_WIDTH = 320;
29
+ export interface IDColumnConfig<T> {
30
+ /** 记录中的 ID 字段 */
31
+ dataIndex: keyof T & string;
32
+ /** 列标题,默认 `ID` */
33
+ title?: string;
34
+ /** 覆盖默认列宽(默认 `ID_COL_WIDTH`) */
35
+ width?: number;
36
+ }
37
+ /**
38
+ * ID 列:`IDCell`(等宽 + 首 8 尾 4 + Tooltip 可拖选复制)。
39
+ *
40
+ * 同一行已有对外可读业务键(编码 / 客户端编码 / key / 域名)时,内部 UUID 列通常是噪声,
41
+ * 可按需省略;保留时一律用本工厂(默认 130,而非手写 150)。
42
+ */
43
+ export declare function idColumn<T>({ dataIndex, title, width }: IDColumnConfig<T>): ColumnType<T>;
44
+ export interface TextColumnConfig<T> {
45
+ title: ReactNode;
46
+ /** 记录字段名;同时作为列的 key */
47
+ dataIndex: keyof T & string;
48
+ /** 列宽;不传时取 `TEXT_COL_WIDTH` */
49
+ width?: number;
50
+ /** 空值占位文案,默认 `-` */
51
+ placeholder?: string;
52
+ /** 等宽字体(编码 / key / 路径等) */
53
+ monospace?: boolean;
54
+ }
55
+ /**
56
+ * 文本列:`EllipsisCell`(超出省略号截断 + 悬浮展示全文),列宽固定不随内容膨胀。
57
+ */
58
+ export declare function textColumn<T>({ title, dataIndex, width, placeholder, monospace, }: TextColumnConfig<T>): ColumnType<T>;
59
+ export interface NameColumnConfig<T> {
60
+ title: ReactNode;
61
+ /** 记录字段名;同时作为列的 key */
62
+ dataIndex: keyof T & string;
63
+ /** 列宽;不传时取 `NAME_COL_WIDTH` */
64
+ width?: number;
65
+ /** 等宽字体(日志键 / 编码类名称) */
66
+ monospace?: boolean;
67
+ /** 点击名称的回调(详情 / 下级入口);不传时退化为普通文本 */
68
+ onClick?: (record: T) => void;
69
+ }
70
+ /**
71
+ * 名称列:`NameLink`(主色链接,详情入口;见 DESIGN.md §7.3 R2)。
72
+ */
73
+ export declare function nameColumn<T>({ title, dataIndex, width, monospace, onClick, }: NameColumnConfig<T>): ColumnType<T>;
74
+ export interface ActionColumnConfig<T> {
75
+ /** 由记录生成操作列表,按重要程度从高到低排列 */
76
+ actions: (record: T) => RowAction[];
77
+ /** 横排上限,超过则收起为「更多」下拉;默认 3 */
78
+ max?: number;
79
+ /** 覆盖自动计算的列宽 */
80
+ width?: number;
81
+ }
82
+ /**
83
+ * 操作列工厂(列表页操作列规范,DESIGN.md §7.3 R1):
84
+ * - 统一 `RowActions` 渲染(≤ max 横排,> max 收「更多」);
85
+ * - **永远 `fixed: 'right'`**:即使表格出现横向滚动,操作列也钉在右侧可见,
86
+ * 不会再出现「横向滑动很久才看到操作」;
87
+ * - 列宽由 `actionColumnWidth(max)` 统一给出,页面禁止再手写 120/200/240。
88
+ */
89
+ export declare function actionColumn<T>({ actions, max, width }: ActionColumnConfig<T>): ColumnType<T>;
90
+ /**
91
+ * 操作列宽度估算(px):`单元格内边距 32 + 横排数 × 56 + 间距 4`,向上取整到 10。
92
+ *
93
+ * 56 = 约 3 个汉字(42px)+ link 按钮左右内边距(14px)。**横排按钮文案应保持简短
94
+ * (≤ 4 个汉字)**;文案更长时请降低 `max` 把它收进「更多」下拉,或显式传入 `width`。
95
+ */
96
+ export declare function actionColumnWidth(max: number): number;
97
+ type WidthableColumn<T> = ColumnType<T> & {
98
+ children?: WidthableColumn<T>[];
99
+ };
100
+ /**
101
+ * 由列定义计算表格 `scroll.x`:所有列宽之和。
102
+ *
103
+ * 取代各页手写的 `scroll={{ x: 1490 }}`——手写值会随列增删漂移(历史上 apiKey 页
104
+ * 实际列宽合计已到 1580 却仍写 1520),且写大了会让本可放下的表格也强制出现横滚条。
105
+ *
106
+ * 配合 `tableLayout="fixed"`:列宽严格生效(`EllipsisCell` / `TimeCell` 才能正确截断),
107
+ * 总宽小于容器时表格按 `min-width: 100%` 铺满,不会留白也不会出现滚动条。
108
+ *
109
+ * ```tsx
110
+ * <Table columns={columns} scroll={tableScrollX(columns)} tableLayout="fixed" />
111
+ * ```
112
+ */
113
+ export declare function tableScrollX<T>(columns: readonly WidthableColumn<T>[]): {
114
+ x: number;
115
+ };
116
+ export {};
@@ -0,0 +1,20 @@
1
+ /**
2
+ * 时间渲染:兼容秒级时间戳与字符串,统一为 `YYYY-MM-DD HH:mm:ss`。
3
+ * 前后端时间交互约定为秒级 int64 时间戳(见 AGENTS.md),前端展示统一走本函数。
4
+ */
5
+ export declare function fmtTime(value?: number | string | null): string;
6
+ /**
7
+ * 时间戳归一化为毫秒:约定入参是秒级时间戳(AGENTS.md),
8
+ * 同时兼容历史上传入的毫秒值(1e12 已远超秒级上限,可安全区分)。
9
+ */
10
+ export declare function toMillis(value: number): number;
11
+ /**
12
+ * 相对时间:`刚刚 / N 分钟前 / N 小时前 / N 天前 / N 个月前 / N 年前`。
13
+ *
14
+ * 只用于「最后使用 / 最近使用 / 登录时间」这类"最近"语义的次要时间字段
15
+ * (列窄、扫描时只需粒度感,精确时间由 TimeCell 的 Tooltip 兜底)。
16
+ * - 时间戳晚于当前时刻(时钟漂移等)不猜测为"N 分钟后",回退绝对时间;
17
+ * - 空值返回空串,由 TimeCell 负责占位文案(如「从未使用」);
18
+ * - `now` 仅用于测试注入。
19
+ */
20
+ export declare function fmtRelativeTime(value?: number | string | null, now?: number): string;
@@ -0,0 +1,25 @@
1
+ export { MainLayout } from './MainLayout';
2
+ export type { MainMenuItems } from './MainLayout';
3
+ export { LoginPage } from './LoginPage';
4
+ export { TenantSwitcher } from './TenantSwitcher';
5
+ export { ProfileCenter } from './ProfileCenter';
6
+ export { PageContainer } from './PageContainer';
7
+ export { IDCell } from './IDCell';
8
+ export { InitialPasswordModal } from './InitialPasswordModal';
9
+ export type { InitialPasswordModalProps } from './InitialPasswordModal';
10
+ export { EllipsisCell } from './EllipsisCell';
11
+ export type { EllipsisCellProps } from './EllipsisCell';
12
+ export { ID_COL_WIDTH, NAME_COL_WIDTH, CODE_COL_WIDTH, TAG_COL_WIDTH, STATUS_COL_WIDTH, COUNT_COL_WIDTH, TEXT_COL_WIDTH, LONG_TEXT_COL_WIDTH, idColumn, textColumn, nameColumn, actionColumn, actionColumnWidth, tableScrollX, } from './columns';
13
+ export type { IDColumnConfig, TextColumnConfig, NameColumnConfig, ActionColumnConfig, } from './columns';
14
+ export { RowActions } from './RowActions';
15
+ export type { RowAction, RowActionsProps } from './RowActions';
16
+ export { NameLink } from './NameLink';
17
+ export type { NameLinkProps } from './NameLink';
18
+ export { RemoteSelect, RemoteMultiSelect } from './RemoteSelect';
19
+ export type { RemoteMultiSelectProps, RemoteSelectOption, RemoteSelectProps, } from './RemoteSelect';
20
+ export { AppShell } from './AppShell';
21
+ export { themeConfig, brand, tokens } from './theme';
22
+ export { EnableTag, SuspendedTag, VerifiedTag, TypeTag, SourceTag } from './status';
23
+ export { fmtTime, fmtRelativeTime, toMillis } from './format';
24
+ export { TimeCell, TIME_COL_WIDTH, TIME_COL_WIDTH_RELATIVE, timeColumn } from './TimeCell';
25
+ export type { TimeCellProps, TimeColumnConfig } from './TimeCell';