orbcafe-ui 1.0.8 → 1.0.9

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.
package/README.md CHANGED
@@ -22,6 +22,7 @@
22
22
  | `StdReport` | 标准报表主容器(筛选、表格、分页、变体、布局) | `src/components/StdReport` | `src/components/StdReport/README.md` |
23
23
  | `GraphReport` | 图形报表弹窗(KPI、图表、联动、AI 输入区) | `src/components/GraphReport` | `src/components/GraphReport/README.md` |
24
24
  | `CustomizeAgent` | AI 参数与 Prompt 模板设置弹窗 | `src/components/CustomizeAgent` | `src/components/CustomizeAgent/README.md` |
25
+ | `DetailInfo` | 标准详情页容器(信息块 + Tabs + 底部表格 + AI/搜索) | `src/components/DetailInfo` | `src/components/DetailInfo/README.md` |
25
26
  | `PageLayout` | 页面壳层(Header + Navigation + Content) | `src/components/PageLayout` | `src/components/PageLayout/README.md` |
26
27
 
27
28
  ### 文档查阅顺序(推荐)
@@ -36,6 +37,7 @@
36
37
  - `GraphReport Hooks`:`src/components/GraphReport/Hooks/README.md`
37
38
  - `StdReport Hooks`:`src/components/StdReport/Hooks/README.md`
38
39
  - `PageLayout Hooks`:`src/components/PageLayout/Hooks/README.md`
40
+ - `DetailInfo` 模块文档:`src/components/DetailInfo/README.md`
39
41
 
40
42
  ---
41
43
 
@@ -105,6 +107,101 @@ module.exports = {
105
107
  }
106
108
  ```
107
109
 
110
+ ### Next.js App Router 最小接入(推荐)
111
+
112
+ ```tsx
113
+ // app/page.tsx (Server Component)
114
+ import HomeClientPage from './HomeClientPage';
115
+
116
+ export default function Page() {
117
+ return <HomeClientPage />;
118
+ }
119
+ ```
120
+
121
+ ```tsx
122
+ // app/HomeClientPage.tsx (Client Component)
123
+ 'use client';
124
+
125
+ import { CAppPageLayout } from 'orbcafe-ui';
126
+
127
+ export default function HomeClientPage() {
128
+ return <CAppPageLayout appTitle="ORBCAFE" menuData={[]} />;
129
+ }
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Next.js 16 兼容性说明(务必阅读)
135
+
136
+ 官方 example 已按 Next.js `16.1.6` 调整,接入时请遵循以下规则:
137
+
138
+ ### 1. 动态路由参数必须在 Server Page 解包
139
+
140
+ 在 Next 16 中,`params` / `searchParams` 是 Promise 语义。
141
+ 不要在 Client Page 里直接把它当普通对象枚举或访问属性。
142
+
143
+ 推荐写法:
144
+
145
+ ```tsx
146
+ // app/detail/[id]/page.tsx (Server Component)
147
+ import DetailClientPage from './DetailClientPage';
148
+
149
+ interface PageProps {
150
+ params: Promise<{ id: string }>;
151
+ }
152
+
153
+ export default async function Page({ params }: PageProps) {
154
+ const { id } = await params;
155
+ return <DetailClientPage rowId={id} />;
156
+ }
157
+ ```
158
+
159
+ ### 2. Client Component 避免首屏依赖不稳定值
160
+
161
+ Hydration mismatch 常见来源:
162
+
163
+ - 首屏直接使用 `usePathname()` 结果做高亮
164
+ - `Date.now()` / `Math.random()` 直接参与首屏渲染
165
+ - 仅在浏览器可用的数据(`window` / `localStorage`)首屏参与结构分支
166
+
167
+ 建议:
168
+
169
+ - 用 `mounted`(`useEffect` 后置为 `true`)再启用这类 UI 高亮/分支
170
+ - 浏览器侧状态在 `useEffect` 中读取
171
+ - 保持 SSR 首屏与 CSR 首帧 DOM 结构一致
172
+
173
+ ### 3. 常见报错对照
174
+
175
+ - `searchParams is a Promise and must be unwrapped with React.use()`
176
+ 根因:在错误层级直接同步访问了 `searchParams`。
177
+ - `params are being enumerated`
178
+ 根因:对 `params` 做了 `Object.keys/entries` 或扩展操作。
179
+ - `Hydration failed because the server rendered HTML didn't match the client`
180
+ 根因:SSR 与 CSR 首屏输出不一致(通常由路由状态或浏览器变量引起)。
181
+
182
+ ---
183
+
184
+ ## 官方 Example 验证命令
185
+
186
+ 提交前建议至少执行:
187
+
188
+ ```bash
189
+ # 1) 构建组件库
190
+ npm run build
191
+
192
+ # 2) 校验 examples
193
+ cd examples
194
+ npm run lint
195
+ npx tsc --noEmit
196
+ ```
197
+
198
+ 如果只想快速看运行效果:
199
+
200
+ ```bash
201
+ cd examples
202
+ npm run dev
203
+ ```
204
+
108
205
  ---
109
206
 
110
207
  ## Internationalization (i18n)
package/dist/index.d.mts CHANGED
@@ -932,6 +932,109 @@ interface CCustomizeAgentProps {
932
932
  }
933
933
  declare const CCustomizeAgent: ({ open, onClose, value, onSaveAll, modelOptions, promptLangOptions, analysisTemplateOptions, responseTemplateOptions, defaultAnalysisTemplateId, defaultResponseTemplateId, }: CCustomizeAgentProps) => react_jsx_runtime.JSX.Element;
934
934
 
935
+ interface DetailInfoField {
936
+ id: string;
937
+ label: string;
938
+ value: ReactNode;
939
+ searchableText?: string;
940
+ }
941
+ interface DetailInfoSection {
942
+ id: string;
943
+ title: string;
944
+ fields: DetailInfoField[];
945
+ columns?: 1 | 2 | 3;
946
+ }
947
+ interface DetailInfoTab {
948
+ id: string;
949
+ label: string;
950
+ description?: string;
951
+ content?: ReactNode;
952
+ sections?: DetailInfoSection[];
953
+ fields?: DetailInfoField[];
954
+ }
955
+ interface DetailInfoSearchHit {
956
+ source: 'section' | 'tab';
957
+ sourceId: string;
958
+ sourceSectionId?: string;
959
+ sourceTitle: string;
960
+ fieldId: string;
961
+ fieldLabel: string;
962
+ fieldValue: string;
963
+ }
964
+ interface DetailInfoAiConfig {
965
+ enabled?: boolean;
966
+ placeholder?: string;
967
+ onSubmit?: (query: string, context: {
968
+ query: string;
969
+ hits: DetailInfoSearchHit[];
970
+ activeTabId?: string;
971
+ sections: DetailInfoSection[];
972
+ tabs: DetailInfoTab[];
973
+ }) => Promise<string | void> | string | void;
974
+ onVoiceInput?: () => void;
975
+ }
976
+ interface DetailInfoTableConfig {
977
+ title?: string;
978
+ tableProps: Omit<CTableProps, 'filterConfig'>;
979
+ }
980
+ interface CDetailInfoPageProps {
981
+ title: string;
982
+ subtitle?: string;
983
+ sections: DetailInfoSection[];
984
+ tabs?: DetailInfoTab[];
985
+ defaultTabId?: string;
986
+ table?: DetailInfoTableConfig;
987
+ ai?: DetailInfoAiConfig;
988
+ rightHeaderSlot?: ReactNode;
989
+ searchBarWidth?: number | string;
990
+ onClose?: () => void;
991
+ closeLabel?: string;
992
+ }
993
+
994
+ declare const CDetailInfoPage: ({ title, subtitle, sections, tabs, defaultTabId, table, ai, rightHeaderSlot, searchBarWidth, onClose, closeLabel, }: CDetailInfoPageProps) => react_jsx_runtime.JSX.Element;
995
+
996
+ type DetailInfoSearchMode = 'idle' | 'search' | 'ai';
997
+ interface UseDetailInfoOptions {
998
+ sections: DetailInfoSection[];
999
+ tabs?: DetailInfoTab[];
1000
+ defaultTabId?: string;
1001
+ ai?: DetailInfoAiConfig;
1002
+ }
1003
+ interface UseDetailInfoResult {
1004
+ query: string;
1005
+ setQuery: (value: string) => void;
1006
+ activeTabId?: string;
1007
+ setActiveTabId: (value: string) => void;
1008
+ searchMode: DetailInfoSearchMode;
1009
+ hits: DetailInfoSearchHit[];
1010
+ statusText: string;
1011
+ aiResponse: string;
1012
+ searching: boolean;
1013
+ handleSubmit: () => Promise<void>;
1014
+ clearResult: () => void;
1015
+ }
1016
+ declare const useDetailInfo: ({ sections, tabs, defaultTabId, ai, }: UseDetailInfoOptions) => UseDetailInfoResult;
1017
+
1018
+ interface CDetailSearchAiBarProps {
1019
+ value: string;
1020
+ onChange: (value: string) => void;
1021
+ onSubmit: () => void;
1022
+ onVoiceInput?: () => void;
1023
+ onClear?: () => void;
1024
+ placeholder: string;
1025
+ statusText?: string;
1026
+ loading?: boolean;
1027
+ compact?: boolean;
1028
+ showStatusText?: boolean;
1029
+ }
1030
+ declare const CDetailSearchAiBar: ({ value, onChange, onSubmit, onVoiceInput, onClear, placeholder, statusText, loading, compact, showStatusText, }: CDetailSearchAiBarProps) => react_jsx_runtime.JSX.Element;
1031
+
1032
+ interface CDetailSectionCardProps {
1033
+ section: DetailInfoSection;
1034
+ highlightQuery?: string;
1035
+ }
1036
+ declare const CDetailSectionCard: ({ section, highlightQuery }: CDetailSectionCardProps) => react_jsx_runtime.JSX.Element;
1037
+
935
1038
  type OrbcafeLocale = 'en' | 'zh' | 'fr' | 'de' | 'ja' | 'ko';
936
1039
  declare const en: {
937
1040
  readonly 'common.cancel': "Cancel";
@@ -1061,6 +1164,12 @@ declare const en: {
1061
1164
  readonly 'graph.unassigned': "Unassigned";
1062
1165
  readonly 'graph.column.reportHours': "Report Hours";
1063
1166
  readonly 'graph.column.billableHours': "Billable Hours";
1167
+ readonly 'detail.searchAi.placeholder': "Search fields, or ask AI if no match...";
1168
+ readonly 'detail.searchAi.matches': "{count} matches found";
1169
+ readonly 'detail.searchAi.noMatch': "No matching field found.";
1170
+ readonly 'detail.searchAi.autoAiFallback': "No direct match. Triggering AI analysis...";
1171
+ readonly 'detail.searchAi.aiResultTitle': "AI Insight";
1172
+ readonly 'detail.table.title': "Related Records";
1064
1173
  readonly 'quickCreate.newItem': "New Item";
1065
1174
  readonly 'quickCreate.createWithTitle': "Create {title}";
1066
1175
  readonly 'quickEdit.editWithTitle': "Edit {title}";
@@ -1152,4 +1261,98 @@ declare const usePageLayout: ({ menuData, initialNavigationCollapsed, }?: UsePag
1152
1261
  navigationMaxHeight: number;
1153
1262
  };
1154
1263
 
1155
- export { type AmapEmbedOptions, Button, type ButtonProps, CAmapChart, type CAmapChartProps, CAppHeader, type CAppHeaderProps, type CAppHeaderUser, type CAppHeaderUserMenuItem, CAppPageLayout, type CAppPageLayoutProps, CBarChart, type CBarChartProps, CChartCard, type CChartCardProps, CComboChart, type CComboChartProps, CCustomizeAgent, type CCustomizeAgentProps, CFishboneChart, type CFishboneChartProps, CGoogleMapChart, type CGoogleMapChartProps, CGraphCharts, CGraphKpiCards, CGraphReport, type CGraphReportProps, CHeatmapChart, type CHeatmapChartProps, CLayoutManagement, type CLayoutManagementProps, CLayoutManager, type CLayoutManagerProps, CLineChart, type CLineChartProps, CMessageBox, type CMessageBoxProps, type CMessageBoxType, CPageLayout, type CPageLayoutProps, CPieChart, type CPieChartProps, CSmartFilter, type CSmartFilterProps, CSmartTable, CStandardPage, type CStandardPageProps, CTable, CTableBody, type CTableBodyProps, CTableCell, type CTableCellProps, CTableContainer, type CTableContainerProps, CTableHead, type CTableHeadProps, type CTableProps, type CTableQuickCreateConfig, type CTableQuickDeleteConfig, type CTableQuickEditConfig, CTableRow, type CTableRowProps, CVariantManagement, type CVariantManagementProps, CVariantManager, CWaterfallChart, type CWaterfallChartProps, type CustomizeAgentSavePayload, type CustomizeAgentSettings, type CustomizeAgentTemplateOption, type DateOperator, type FilterField, type FilterOperator, type FilterType, type FilterValue, type GoogleMapEmbedOptions, type GraphBarDatum, type GraphComboDatum, type GraphFishboneBranch, type GraphHeatmapDatum, type GraphLineDatum, type GraphMapLocation, type GraphPieDatum, type GraphReportConfig, type GraphReportFieldMapping, type GraphReportInteractionState, type GraphReportKpis, type GraphReportModel, type GraphRow, type GraphTableColumn, type GraphWaterfallDatum, type IVariantService, type LayoutMetadata, NavigationIsland, type NavigationIslandProps, type NumberOperator, ORBCAFE_I18N_MESSAGES, type OrbcafeI18nContextValue, OrbcafeI18nProvider, type OrbcafeI18nProviderProps, type OrbcafeLocale, type OrbcafeLocaleMessages, type OrbcafeMessageKey, type OrbcafeMessageParams, type ReportColumn, type ReportFilter, type ReportMetadata, type SelectOperator, type TextOperator, TreeMenu, type TreeMenuItem, type UseAmapEmbedUrlOptions, type UseGoogleMapEmbedUrlOptions, type UseGraphChartDataOptions, type UseGraphChartDataResult, type UseGraphInteractionResult, type UseGraphReportOptions, type UseGraphReportResult, type UseNavigationIslandOptions, type UseNavigationIslandResult, type UsePageLayoutOptions, type UseStandardReportOptions, type VariantMetadata, buildAmapEmbedUrl, buildGoogleMapEmbedUrl, buildGoogleMapIframe, buttonVariants, useAmapEmbedUrl, useGoogleMapEmbedUrl, useGraphChartData, useGraphInteraction, useGraphReport, useNavigationIsland, useOrbcafeI18n, usePageLayout, useStandardReport };
1264
+ interface MarkdownRendererProps {
1265
+ markdown?: string;
1266
+ content?: string;
1267
+ className?: string;
1268
+ enableMath?: boolean;
1269
+ enableMermaid?: boolean;
1270
+ enableThinkBlock?: boolean;
1271
+ codeCopyable?: boolean;
1272
+ codeLineNumbers?: boolean;
1273
+ }
1274
+ declare const MarkdownRenderer: ({ markdown, content, className, enableMath, enableMermaid, enableThinkBlock, codeCopyable, codeLineNumbers, }: MarkdownRendererProps) => react_jsx_runtime.JSX.Element;
1275
+
1276
+ interface CodeBlockProps {
1277
+ code: string;
1278
+ language?: string;
1279
+ copyable?: boolean;
1280
+ showLineNumbers?: boolean;
1281
+ wrapLongLines?: boolean;
1282
+ maxHeight?: number | string;
1283
+ }
1284
+ declare const CodeBlock: ({ code, language, copyable, showLineNumbers, wrapLongLines, maxHeight, }: CodeBlockProps) => react_jsx_runtime.JSX.Element;
1285
+
1286
+ interface MathBlockProps {
1287
+ expression: string;
1288
+ inline?: boolean;
1289
+ allowKatex?: boolean;
1290
+ }
1291
+ declare const MathBlock: ({ expression, inline, allowKatex }: MathBlockProps) => react_jsx_runtime.JSX.Element | null;
1292
+
1293
+ interface MermaidBlockProps {
1294
+ code: string;
1295
+ title?: string;
1296
+ height?: number | string;
1297
+ enabled?: boolean;
1298
+ }
1299
+ declare const MermaidBlock: ({ code, title, height, enabled, }: MermaidBlockProps) => react_jsx_runtime.JSX.Element;
1300
+
1301
+ type TableAlign = 'left' | 'center' | 'right';
1302
+ interface ParsedMarkdownTable {
1303
+ headers: string[];
1304
+ aligns: TableAlign[];
1305
+ rows: string[][];
1306
+ }
1307
+ interface TableBlockProps {
1308
+ markdown?: string;
1309
+ table?: ParsedMarkdownTable;
1310
+ maxHeight?: number | string;
1311
+ }
1312
+ declare const parseMarkdownTable: (markdown: string) => ParsedMarkdownTable | null;
1313
+ declare const TableBlock: ({ markdown, table, maxHeight }: TableBlockProps) => react_jsx_runtime.JSX.Element;
1314
+
1315
+ interface ThinkBlockProps {
1316
+ content: string;
1317
+ title?: string;
1318
+ defaultExpanded?: boolean;
1319
+ isStreaming?: boolean;
1320
+ }
1321
+ declare const ThinkBlock: ({ content, title, defaultExpanded, isStreaming, }: ThinkBlockProps) => react_jsx_runtime.JSX.Element;
1322
+
1323
+ declare const renderMarkdown: (markdown: string, options?: Omit<MarkdownRendererProps, "markdown" | "content">) => ReactNode;
1324
+
1325
+ type PageTransitionVariant = 'none' | 'fade' | 'slide-up' | 'slide-left' | 'scale';
1326
+ interface CPageTransitionProps {
1327
+ children: ReactNode;
1328
+ transitionKey?: string | number;
1329
+ variant?: PageTransitionVariant;
1330
+ durationMs?: number;
1331
+ delayMs?: number;
1332
+ easing?: string;
1333
+ disabled?: boolean;
1334
+ sx?: SxProps<Theme>;
1335
+ }
1336
+ /**
1337
+ * Lightweight page transition wrapper.
1338
+ * - GPU-friendly properties only (opacity/transform)
1339
+ * - no layout-thrashing animation
1340
+ * - respects reduced-motion automatically
1341
+ */
1342
+ declare const CPageTransition: ({ children, transitionKey, variant, durationMs, delayMs, easing, disabled, sx, }: CPageTransitionProps) => react_jsx_runtime.JSX.Element;
1343
+ declare const PAGE_TRANSITION_PRESETS: {
1344
+ subtle: {
1345
+ variant: "fade";
1346
+ durationMs: number;
1347
+ };
1348
+ smooth: {
1349
+ variant: "slide-up";
1350
+ durationMs: number;
1351
+ };
1352
+ snappy: {
1353
+ variant: "scale";
1354
+ durationMs: number;
1355
+ };
1356
+ };
1357
+
1358
+ export { type AmapEmbedOptions, Button, type ButtonProps, CAmapChart, type CAmapChartProps, CAppHeader, type CAppHeaderProps, type CAppHeaderUser, type CAppHeaderUserMenuItem, CAppPageLayout, type CAppPageLayoutProps, CBarChart, type CBarChartProps, CChartCard, type CChartCardProps, CComboChart, type CComboChartProps, CCustomizeAgent, type CCustomizeAgentProps, CDetailInfoPage, type CDetailInfoPageProps, CDetailSearchAiBar, type CDetailSearchAiBarProps, CDetailSectionCard, type CDetailSectionCardProps, CFishboneChart, type CFishboneChartProps, CGoogleMapChart, type CGoogleMapChartProps, CGraphCharts, CGraphKpiCards, CGraphReport, type CGraphReportProps, CHeatmapChart, type CHeatmapChartProps, CLayoutManagement, type CLayoutManagementProps, CLayoutManager, type CLayoutManagerProps, CLineChart, type CLineChartProps, CMessageBox, type CMessageBoxProps, type CMessageBoxType, CPageLayout, type CPageLayoutProps, CPageTransition, type CPageTransitionProps, CPieChart, type CPieChartProps, CSmartFilter, type CSmartFilterProps, CSmartTable, CStandardPage, type CStandardPageProps, CTable, CTableBody, type CTableBodyProps, CTableCell, type CTableCellProps, CTableContainer, type CTableContainerProps, CTableHead, type CTableHeadProps, type CTableProps, type CTableQuickCreateConfig, type CTableQuickDeleteConfig, type CTableQuickEditConfig, CTableRow, type CTableRowProps, CVariantManagement, type CVariantManagementProps, CVariantManager, CWaterfallChart, type CWaterfallChartProps, CodeBlock, type CodeBlockProps, type CustomizeAgentSavePayload, type CustomizeAgentSettings, type CustomizeAgentTemplateOption, type DateOperator, type DetailInfoAiConfig, type DetailInfoField, type DetailInfoSearchHit, type DetailInfoSearchMode, type DetailInfoSection, type DetailInfoTab, type DetailInfoTableConfig, type FilterField, type FilterOperator, type FilterType, type FilterValue, type GoogleMapEmbedOptions, type GraphBarDatum, type GraphComboDatum, type GraphFishboneBranch, type GraphHeatmapDatum, type GraphLineDatum, type GraphMapLocation, type GraphPieDatum, type GraphReportConfig, type GraphReportFieldMapping, type GraphReportInteractionState, type GraphReportKpis, type GraphReportModel, type GraphRow, type GraphTableColumn, type GraphWaterfallDatum, type IVariantService, type LayoutMetadata, MarkdownRenderer, type MarkdownRendererProps, MathBlock, type MathBlockProps, MermaidBlock, type MermaidBlockProps, NavigationIsland, type NavigationIslandProps, type NumberOperator, ORBCAFE_I18N_MESSAGES, type OrbcafeI18nContextValue, OrbcafeI18nProvider, type OrbcafeI18nProviderProps, type OrbcafeLocale, type OrbcafeLocaleMessages, type OrbcafeMessageKey, type OrbcafeMessageParams, PAGE_TRANSITION_PRESETS, type PageTransitionVariant, type ParsedMarkdownTable, type ReportColumn, type ReportFilter, type ReportMetadata, type SelectOperator, type TableAlign, TableBlock, type TableBlockProps, type TextOperator, ThinkBlock, type ThinkBlockProps, TreeMenu, type TreeMenuItem, type UseAmapEmbedUrlOptions, type UseDetailInfoOptions, type UseDetailInfoResult, type UseGoogleMapEmbedUrlOptions, type UseGraphChartDataOptions, type UseGraphChartDataResult, type UseGraphInteractionResult, type UseGraphReportOptions, type UseGraphReportResult, type UseNavigationIslandOptions, type UseNavigationIslandResult, type UsePageLayoutOptions, type UseStandardReportOptions, type VariantMetadata, buildAmapEmbedUrl, buildGoogleMapEmbedUrl, buildGoogleMapIframe, buttonVariants, parseMarkdownTable, renderMarkdown, useAmapEmbedUrl, useDetailInfo, useGoogleMapEmbedUrl, useGraphChartData, useGraphInteraction, useGraphReport, useNavigationIsland, useOrbcafeI18n, usePageLayout, useStandardReport };
package/dist/index.d.ts CHANGED
@@ -932,6 +932,109 @@ interface CCustomizeAgentProps {
932
932
  }
933
933
  declare const CCustomizeAgent: ({ open, onClose, value, onSaveAll, modelOptions, promptLangOptions, analysisTemplateOptions, responseTemplateOptions, defaultAnalysisTemplateId, defaultResponseTemplateId, }: CCustomizeAgentProps) => react_jsx_runtime.JSX.Element;
934
934
 
935
+ interface DetailInfoField {
936
+ id: string;
937
+ label: string;
938
+ value: ReactNode;
939
+ searchableText?: string;
940
+ }
941
+ interface DetailInfoSection {
942
+ id: string;
943
+ title: string;
944
+ fields: DetailInfoField[];
945
+ columns?: 1 | 2 | 3;
946
+ }
947
+ interface DetailInfoTab {
948
+ id: string;
949
+ label: string;
950
+ description?: string;
951
+ content?: ReactNode;
952
+ sections?: DetailInfoSection[];
953
+ fields?: DetailInfoField[];
954
+ }
955
+ interface DetailInfoSearchHit {
956
+ source: 'section' | 'tab';
957
+ sourceId: string;
958
+ sourceSectionId?: string;
959
+ sourceTitle: string;
960
+ fieldId: string;
961
+ fieldLabel: string;
962
+ fieldValue: string;
963
+ }
964
+ interface DetailInfoAiConfig {
965
+ enabled?: boolean;
966
+ placeholder?: string;
967
+ onSubmit?: (query: string, context: {
968
+ query: string;
969
+ hits: DetailInfoSearchHit[];
970
+ activeTabId?: string;
971
+ sections: DetailInfoSection[];
972
+ tabs: DetailInfoTab[];
973
+ }) => Promise<string | void> | string | void;
974
+ onVoiceInput?: () => void;
975
+ }
976
+ interface DetailInfoTableConfig {
977
+ title?: string;
978
+ tableProps: Omit<CTableProps, 'filterConfig'>;
979
+ }
980
+ interface CDetailInfoPageProps {
981
+ title: string;
982
+ subtitle?: string;
983
+ sections: DetailInfoSection[];
984
+ tabs?: DetailInfoTab[];
985
+ defaultTabId?: string;
986
+ table?: DetailInfoTableConfig;
987
+ ai?: DetailInfoAiConfig;
988
+ rightHeaderSlot?: ReactNode;
989
+ searchBarWidth?: number | string;
990
+ onClose?: () => void;
991
+ closeLabel?: string;
992
+ }
993
+
994
+ declare const CDetailInfoPage: ({ title, subtitle, sections, tabs, defaultTabId, table, ai, rightHeaderSlot, searchBarWidth, onClose, closeLabel, }: CDetailInfoPageProps) => react_jsx_runtime.JSX.Element;
995
+
996
+ type DetailInfoSearchMode = 'idle' | 'search' | 'ai';
997
+ interface UseDetailInfoOptions {
998
+ sections: DetailInfoSection[];
999
+ tabs?: DetailInfoTab[];
1000
+ defaultTabId?: string;
1001
+ ai?: DetailInfoAiConfig;
1002
+ }
1003
+ interface UseDetailInfoResult {
1004
+ query: string;
1005
+ setQuery: (value: string) => void;
1006
+ activeTabId?: string;
1007
+ setActiveTabId: (value: string) => void;
1008
+ searchMode: DetailInfoSearchMode;
1009
+ hits: DetailInfoSearchHit[];
1010
+ statusText: string;
1011
+ aiResponse: string;
1012
+ searching: boolean;
1013
+ handleSubmit: () => Promise<void>;
1014
+ clearResult: () => void;
1015
+ }
1016
+ declare const useDetailInfo: ({ sections, tabs, defaultTabId, ai, }: UseDetailInfoOptions) => UseDetailInfoResult;
1017
+
1018
+ interface CDetailSearchAiBarProps {
1019
+ value: string;
1020
+ onChange: (value: string) => void;
1021
+ onSubmit: () => void;
1022
+ onVoiceInput?: () => void;
1023
+ onClear?: () => void;
1024
+ placeholder: string;
1025
+ statusText?: string;
1026
+ loading?: boolean;
1027
+ compact?: boolean;
1028
+ showStatusText?: boolean;
1029
+ }
1030
+ declare const CDetailSearchAiBar: ({ value, onChange, onSubmit, onVoiceInput, onClear, placeholder, statusText, loading, compact, showStatusText, }: CDetailSearchAiBarProps) => react_jsx_runtime.JSX.Element;
1031
+
1032
+ interface CDetailSectionCardProps {
1033
+ section: DetailInfoSection;
1034
+ highlightQuery?: string;
1035
+ }
1036
+ declare const CDetailSectionCard: ({ section, highlightQuery }: CDetailSectionCardProps) => react_jsx_runtime.JSX.Element;
1037
+
935
1038
  type OrbcafeLocale = 'en' | 'zh' | 'fr' | 'de' | 'ja' | 'ko';
936
1039
  declare const en: {
937
1040
  readonly 'common.cancel': "Cancel";
@@ -1061,6 +1164,12 @@ declare const en: {
1061
1164
  readonly 'graph.unassigned': "Unassigned";
1062
1165
  readonly 'graph.column.reportHours': "Report Hours";
1063
1166
  readonly 'graph.column.billableHours': "Billable Hours";
1167
+ readonly 'detail.searchAi.placeholder': "Search fields, or ask AI if no match...";
1168
+ readonly 'detail.searchAi.matches': "{count} matches found";
1169
+ readonly 'detail.searchAi.noMatch': "No matching field found.";
1170
+ readonly 'detail.searchAi.autoAiFallback': "No direct match. Triggering AI analysis...";
1171
+ readonly 'detail.searchAi.aiResultTitle': "AI Insight";
1172
+ readonly 'detail.table.title': "Related Records";
1064
1173
  readonly 'quickCreate.newItem': "New Item";
1065
1174
  readonly 'quickCreate.createWithTitle': "Create {title}";
1066
1175
  readonly 'quickEdit.editWithTitle': "Edit {title}";
@@ -1152,4 +1261,98 @@ declare const usePageLayout: ({ menuData, initialNavigationCollapsed, }?: UsePag
1152
1261
  navigationMaxHeight: number;
1153
1262
  };
1154
1263
 
1155
- export { type AmapEmbedOptions, Button, type ButtonProps, CAmapChart, type CAmapChartProps, CAppHeader, type CAppHeaderProps, type CAppHeaderUser, type CAppHeaderUserMenuItem, CAppPageLayout, type CAppPageLayoutProps, CBarChart, type CBarChartProps, CChartCard, type CChartCardProps, CComboChart, type CComboChartProps, CCustomizeAgent, type CCustomizeAgentProps, CFishboneChart, type CFishboneChartProps, CGoogleMapChart, type CGoogleMapChartProps, CGraphCharts, CGraphKpiCards, CGraphReport, type CGraphReportProps, CHeatmapChart, type CHeatmapChartProps, CLayoutManagement, type CLayoutManagementProps, CLayoutManager, type CLayoutManagerProps, CLineChart, type CLineChartProps, CMessageBox, type CMessageBoxProps, type CMessageBoxType, CPageLayout, type CPageLayoutProps, CPieChart, type CPieChartProps, CSmartFilter, type CSmartFilterProps, CSmartTable, CStandardPage, type CStandardPageProps, CTable, CTableBody, type CTableBodyProps, CTableCell, type CTableCellProps, CTableContainer, type CTableContainerProps, CTableHead, type CTableHeadProps, type CTableProps, type CTableQuickCreateConfig, type CTableQuickDeleteConfig, type CTableQuickEditConfig, CTableRow, type CTableRowProps, CVariantManagement, type CVariantManagementProps, CVariantManager, CWaterfallChart, type CWaterfallChartProps, type CustomizeAgentSavePayload, type CustomizeAgentSettings, type CustomizeAgentTemplateOption, type DateOperator, type FilterField, type FilterOperator, type FilterType, type FilterValue, type GoogleMapEmbedOptions, type GraphBarDatum, type GraphComboDatum, type GraphFishboneBranch, type GraphHeatmapDatum, type GraphLineDatum, type GraphMapLocation, type GraphPieDatum, type GraphReportConfig, type GraphReportFieldMapping, type GraphReportInteractionState, type GraphReportKpis, type GraphReportModel, type GraphRow, type GraphTableColumn, type GraphWaterfallDatum, type IVariantService, type LayoutMetadata, NavigationIsland, type NavigationIslandProps, type NumberOperator, ORBCAFE_I18N_MESSAGES, type OrbcafeI18nContextValue, OrbcafeI18nProvider, type OrbcafeI18nProviderProps, type OrbcafeLocale, type OrbcafeLocaleMessages, type OrbcafeMessageKey, type OrbcafeMessageParams, type ReportColumn, type ReportFilter, type ReportMetadata, type SelectOperator, type TextOperator, TreeMenu, type TreeMenuItem, type UseAmapEmbedUrlOptions, type UseGoogleMapEmbedUrlOptions, type UseGraphChartDataOptions, type UseGraphChartDataResult, type UseGraphInteractionResult, type UseGraphReportOptions, type UseGraphReportResult, type UseNavigationIslandOptions, type UseNavigationIslandResult, type UsePageLayoutOptions, type UseStandardReportOptions, type VariantMetadata, buildAmapEmbedUrl, buildGoogleMapEmbedUrl, buildGoogleMapIframe, buttonVariants, useAmapEmbedUrl, useGoogleMapEmbedUrl, useGraphChartData, useGraphInteraction, useGraphReport, useNavigationIsland, useOrbcafeI18n, usePageLayout, useStandardReport };
1264
+ interface MarkdownRendererProps {
1265
+ markdown?: string;
1266
+ content?: string;
1267
+ className?: string;
1268
+ enableMath?: boolean;
1269
+ enableMermaid?: boolean;
1270
+ enableThinkBlock?: boolean;
1271
+ codeCopyable?: boolean;
1272
+ codeLineNumbers?: boolean;
1273
+ }
1274
+ declare const MarkdownRenderer: ({ markdown, content, className, enableMath, enableMermaid, enableThinkBlock, codeCopyable, codeLineNumbers, }: MarkdownRendererProps) => react_jsx_runtime.JSX.Element;
1275
+
1276
+ interface CodeBlockProps {
1277
+ code: string;
1278
+ language?: string;
1279
+ copyable?: boolean;
1280
+ showLineNumbers?: boolean;
1281
+ wrapLongLines?: boolean;
1282
+ maxHeight?: number | string;
1283
+ }
1284
+ declare const CodeBlock: ({ code, language, copyable, showLineNumbers, wrapLongLines, maxHeight, }: CodeBlockProps) => react_jsx_runtime.JSX.Element;
1285
+
1286
+ interface MathBlockProps {
1287
+ expression: string;
1288
+ inline?: boolean;
1289
+ allowKatex?: boolean;
1290
+ }
1291
+ declare const MathBlock: ({ expression, inline, allowKatex }: MathBlockProps) => react_jsx_runtime.JSX.Element | null;
1292
+
1293
+ interface MermaidBlockProps {
1294
+ code: string;
1295
+ title?: string;
1296
+ height?: number | string;
1297
+ enabled?: boolean;
1298
+ }
1299
+ declare const MermaidBlock: ({ code, title, height, enabled, }: MermaidBlockProps) => react_jsx_runtime.JSX.Element;
1300
+
1301
+ type TableAlign = 'left' | 'center' | 'right';
1302
+ interface ParsedMarkdownTable {
1303
+ headers: string[];
1304
+ aligns: TableAlign[];
1305
+ rows: string[][];
1306
+ }
1307
+ interface TableBlockProps {
1308
+ markdown?: string;
1309
+ table?: ParsedMarkdownTable;
1310
+ maxHeight?: number | string;
1311
+ }
1312
+ declare const parseMarkdownTable: (markdown: string) => ParsedMarkdownTable | null;
1313
+ declare const TableBlock: ({ markdown, table, maxHeight }: TableBlockProps) => react_jsx_runtime.JSX.Element;
1314
+
1315
+ interface ThinkBlockProps {
1316
+ content: string;
1317
+ title?: string;
1318
+ defaultExpanded?: boolean;
1319
+ isStreaming?: boolean;
1320
+ }
1321
+ declare const ThinkBlock: ({ content, title, defaultExpanded, isStreaming, }: ThinkBlockProps) => react_jsx_runtime.JSX.Element;
1322
+
1323
+ declare const renderMarkdown: (markdown: string, options?: Omit<MarkdownRendererProps, "markdown" | "content">) => ReactNode;
1324
+
1325
+ type PageTransitionVariant = 'none' | 'fade' | 'slide-up' | 'slide-left' | 'scale';
1326
+ interface CPageTransitionProps {
1327
+ children: ReactNode;
1328
+ transitionKey?: string | number;
1329
+ variant?: PageTransitionVariant;
1330
+ durationMs?: number;
1331
+ delayMs?: number;
1332
+ easing?: string;
1333
+ disabled?: boolean;
1334
+ sx?: SxProps<Theme>;
1335
+ }
1336
+ /**
1337
+ * Lightweight page transition wrapper.
1338
+ * - GPU-friendly properties only (opacity/transform)
1339
+ * - no layout-thrashing animation
1340
+ * - respects reduced-motion automatically
1341
+ */
1342
+ declare const CPageTransition: ({ children, transitionKey, variant, durationMs, delayMs, easing, disabled, sx, }: CPageTransitionProps) => react_jsx_runtime.JSX.Element;
1343
+ declare const PAGE_TRANSITION_PRESETS: {
1344
+ subtle: {
1345
+ variant: "fade";
1346
+ durationMs: number;
1347
+ };
1348
+ smooth: {
1349
+ variant: "slide-up";
1350
+ durationMs: number;
1351
+ };
1352
+ snappy: {
1353
+ variant: "scale";
1354
+ durationMs: number;
1355
+ };
1356
+ };
1357
+
1358
+ export { type AmapEmbedOptions, Button, type ButtonProps, CAmapChart, type CAmapChartProps, CAppHeader, type CAppHeaderProps, type CAppHeaderUser, type CAppHeaderUserMenuItem, CAppPageLayout, type CAppPageLayoutProps, CBarChart, type CBarChartProps, CChartCard, type CChartCardProps, CComboChart, type CComboChartProps, CCustomizeAgent, type CCustomizeAgentProps, CDetailInfoPage, type CDetailInfoPageProps, CDetailSearchAiBar, type CDetailSearchAiBarProps, CDetailSectionCard, type CDetailSectionCardProps, CFishboneChart, type CFishboneChartProps, CGoogleMapChart, type CGoogleMapChartProps, CGraphCharts, CGraphKpiCards, CGraphReport, type CGraphReportProps, CHeatmapChart, type CHeatmapChartProps, CLayoutManagement, type CLayoutManagementProps, CLayoutManager, type CLayoutManagerProps, CLineChart, type CLineChartProps, CMessageBox, type CMessageBoxProps, type CMessageBoxType, CPageLayout, type CPageLayoutProps, CPageTransition, type CPageTransitionProps, CPieChart, type CPieChartProps, CSmartFilter, type CSmartFilterProps, CSmartTable, CStandardPage, type CStandardPageProps, CTable, CTableBody, type CTableBodyProps, CTableCell, type CTableCellProps, CTableContainer, type CTableContainerProps, CTableHead, type CTableHeadProps, type CTableProps, type CTableQuickCreateConfig, type CTableQuickDeleteConfig, type CTableQuickEditConfig, CTableRow, type CTableRowProps, CVariantManagement, type CVariantManagementProps, CVariantManager, CWaterfallChart, type CWaterfallChartProps, CodeBlock, type CodeBlockProps, type CustomizeAgentSavePayload, type CustomizeAgentSettings, type CustomizeAgentTemplateOption, type DateOperator, type DetailInfoAiConfig, type DetailInfoField, type DetailInfoSearchHit, type DetailInfoSearchMode, type DetailInfoSection, type DetailInfoTab, type DetailInfoTableConfig, type FilterField, type FilterOperator, type FilterType, type FilterValue, type GoogleMapEmbedOptions, type GraphBarDatum, type GraphComboDatum, type GraphFishboneBranch, type GraphHeatmapDatum, type GraphLineDatum, type GraphMapLocation, type GraphPieDatum, type GraphReportConfig, type GraphReportFieldMapping, type GraphReportInteractionState, type GraphReportKpis, type GraphReportModel, type GraphRow, type GraphTableColumn, type GraphWaterfallDatum, type IVariantService, type LayoutMetadata, MarkdownRenderer, type MarkdownRendererProps, MathBlock, type MathBlockProps, MermaidBlock, type MermaidBlockProps, NavigationIsland, type NavigationIslandProps, type NumberOperator, ORBCAFE_I18N_MESSAGES, type OrbcafeI18nContextValue, OrbcafeI18nProvider, type OrbcafeI18nProviderProps, type OrbcafeLocale, type OrbcafeLocaleMessages, type OrbcafeMessageKey, type OrbcafeMessageParams, PAGE_TRANSITION_PRESETS, type PageTransitionVariant, type ParsedMarkdownTable, type ReportColumn, type ReportFilter, type ReportMetadata, type SelectOperator, type TableAlign, TableBlock, type TableBlockProps, type TextOperator, ThinkBlock, type ThinkBlockProps, TreeMenu, type TreeMenuItem, type UseAmapEmbedUrlOptions, type UseDetailInfoOptions, type UseDetailInfoResult, type UseGoogleMapEmbedUrlOptions, type UseGraphChartDataOptions, type UseGraphChartDataResult, type UseGraphInteractionResult, type UseGraphReportOptions, type UseGraphReportResult, type UseNavigationIslandOptions, type UseNavigationIslandResult, type UsePageLayoutOptions, type UseStandardReportOptions, type VariantMetadata, buildAmapEmbedUrl, buildGoogleMapEmbedUrl, buildGoogleMapIframe, buttonVariants, parseMarkdownTable, renderMarkdown, useAmapEmbedUrl, useDetailInfo, useGoogleMapEmbedUrl, useGraphChartData, useGraphInteraction, useGraphReport, useNavigationIsland, useOrbcafeI18n, usePageLayout, useStandardReport };