@bridgeline-digital/hawk-app-ui

中文文档
0.1.7发布于 2026/11/09UNLICENSEDTypeScriptES Module近 30 天下载 4542

对于 Bridgeline 开发者: Spark look for Hawk Apps: for React + MUI,主题(遵循主机的颜色和模式),应用程序提供者和共享组件;对于任何应用程序(vanilla,Preact,React,Next),一个样式表和自定义元素.

中文使用文档
文档目录5 节
  1. 用这个
  2. 构成部分
  3. 主题
  4. 没有反应和MUI
  5. 版本数

@bitchline-digital/hawk-app-ui (英语)

"Spark"寻找"Hawk Apps",以主机的颜色和模式. 为 Bridgeline 开发者. 在光线下看到每个部分 阴暗: UI 工具包画廊 (关于开发商网站).

  • 反应 + MUI 应用程序 (单位:千美元) next-mui 模板 : Spark的MUI主题,连接应用程序与其主机的提供者, 和组件应用 继续需要: 区域、 KPI 瓦片、 表格、 小图表、 确认对话框、 侧抽屉, 土司和格式化. 需要鹰Apps桥.
  • 其他应用程序 (单位:千美元) react, (中文(简体) ), preact, (中文(简体) ), next 财务报告和审定财务报表 vanilla 模板:样式表和一些自定义元素, 不需要反应或MUI。 见 没有反应和MUI。 。 。 .
npm install @bridgeline-digital/hawk-app-ui @mui/material@^9 @emotion/react @emotion/styled   # React + MUI
npm install @bridgeline-digital/hawk-app-ui                                                    # any other app

用这个

// app/layout.tsx (once): Montserrat, Spark's font, bundled with the app
import '@bridgeline-digital/hawk-app-ui/fonts';

// app/providers.tsx
'use client';
import { HawkAppProvider } from '@bridgeline-digital/hawk-app-ui';

export default function Providers({ children }: { children: React.ReactNode }) {
    return <HawkAppProvider>{children}</HawkAppProvider>;
}

// any page or component inside it
import { useHawk } from '@bridgeline-digital/hawk-app-ui';

export function Page() {
    const { app, context } = useHawk(); // the connected app and its context (client, engine, dates, theme)
    // …app.data.query(...), app.analytics.report(...)
}
  • HawkAppProvider 连接到主机( n)createApp({ autoResize: true }),修改后 options),显示a 同时回旋器和当应用程序在主机外打开时的解释(connecting 财务报告和审定财务报表 error 代替他们, 然后让孩子成为主题 它跟随主机在主题改变时. 旋转和解释 为 a <main> 所以访问检查在每个州都能找到一个.
  • useHawk() 返回时 { app, context },总是互相连接(提供方只让孩子在那时). useHawkAppState() 这是下面的钩子, 对于一个应用 想要使国家本身.
  • <HawkComments target label?> (单位:千美元) comments 范围)是一个带有“!”的注释图标,当有注释时(其工具提示中的计数);单击打开 抽屉中的线程,客户端的每个人都会读取并添加评论(作者编辑并删除自己的评论). 这个 页面的徽章共享一个计数请求. 见"通桥指南""评论".
  • usePdfExport(options | false) 让用户在挂载时导出该页面为 PDF: 主机显示 PDF 图标,单击后下载整个页面. usePdfExport({ fileName: 'Zero results' }),或 false 在装入时. 删除按钮和过滤器 data-hawk-pdf-ignore. 见"桥梁指南""输出一页作为PDF".
  • useSavedState(initial) 实值 useState 对于保存的视图( 过滤器、 范围、 标签、 排序) : 值是 页面对主机“视图”菜单的状态,打开已保存的视图或其链接将其放回. const [filters, setFilters] = useSavedState({ range: 'l13', target: null })一个小JSON对象,每页一次. 见"通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通.
  • useRoute() 是该应用的深链接和回路 : const [route, setRoute] = useRoute()页面 路线名称,以及 setRoute('/widgets/12') 当用户打开一个( w){ replace: true } 没有退后一步。 这个 主机将它保存在它的URL中,所以重新加载或链接打开同一个页面. 在预览( 没有主机) 中, 路由在 页 次 见"通桥指南""深通与后通".
  • useScreen(name | null) 计算路线不显示的屏幕, 如标签, 每次显示时: useScreen('Logs') 在标签的组件中。 路由和视图在桥边计数,点击也 data-hawk-usage="Export CSV" 要素。 见 hawk-app usage --screens 和桥导"错误与用".
  • usePageContext(object | null) 说页面显示的,为主机 解释此页面 按钮(及其 助理人员: usePageContext(rows ? { page: 'Zero-result searches', dateRange, top10 } : null)。普通名称和 数字,最多50 KB; 变化后不久发送, 当组件卸载时清除。 见桥指向 "说出页面显示的".
  • useTour() 是一个"Take the tour"按钮: { available, active, start }。桥显示巡演 (单位:千美元)tour 在鹰app.json,卡由 data-hawk-tour (b) 单靠首次开放; start() 显示每个步骤 再说一遍, available 一旦该版本有步骤, active 在它显示。 没有预览 看桥 指南"图".
  • 您自己增加的主题 : <HawkAppProvider theme={{ components: { … } }}>最后合并.

构成部分

import { ConfirmDialog, DataTable, EmptyState, KpiRow, KpiTile, LoadingSection, Notice, Section, SideDrawer, useFormat, useToast } from '@bridgeline-digital/hawk-app-ui';
import { BarList, ColumnChart, Sparkline, StackedColumnChart } from '@bridgeline-digital/hawk-app-ui/charts';
import { DataGrid } from '@bridgeline-digital/hawk-app-ui/data-grid'; // needs @mui/x-data-grid@^9

const f = useFormat(); // in the host's locale
<KpiRow>
    <KpiTile highlight label="Revenue" value={f.money(rev)} change={rev / prevRev - 1} trend={weekly} />
    <KpiTile label="No-result searches" value={f.integer(zero)} change={zero / prevZero - 1} goodWhen="down" />
</KpiRow>
<Section title="Searches per day" subtitle="UTC days" action={<Button>Refresh</Button>}>
    <ColumnChart label="Searches per day" columns={days.map((d) => ({ label: f.date(d.date, { year: false }), value: d.searches }))} />
</Section>
<DataTable rows={terms} columns={[{ key: 'term', label: 'Term' }, { key: 'searches', label: 'Searches', align: 'right' }]}
    defaultSort={{ key: 'searches', direction: 'desc' }} totals={{ term: 'Total', searches: f.integer(total) }} download="terms.csv" />
构成部分对于
Section一个有标题的卡片(Spark的卡片头和贴纸),可选字幕和动作
KpiTile, (中文(简体) ), KpiRow其变化与前一时期(绿色当良好时: goodWhen),一种可选趋势;并列瓦片
DataTable最多几百行:可分类列,总行,粘取头(maxHeight),CSV下载其显示的内容(文本,电子表格将作为一个公式运行,例如从 =,以文本打开)
DataGrid (单位:千美元)/data-grid(中文(简体) )上千行, 呼出并过滤: MUI X 的社区网格带有 Spark 的默认值
BarList, (中文(简体) ), ColumnChart, (中文(简体) ), StackedColumnChart, (中文(简体) ), Sparkline (单位:千美元)/charts(中文(简体) )主题颜色中的小图表,没有图表库;每个图都有 label 用于屏幕阅读器和带有值的工具提示
EmptyState, (中文(简体) ), LoadingSection, (中文(简体) ), Notice无可显示; 一节仍在装入; 有信件(onRetry 添加 再试一次)
ConfirmDialog在行动前询问; destructive 让它红; 承诺从 onConfirm 用旋转器打开
SideDrawer一个项目的细节, 从右边, 有标题, 关闭按钮和动作
useToast()toast(message, severity):主持人的祝酒词在全方位的应用中,一个小吃栏在一景中
useFormat() 编号 : createFormat(locale)integer, (中文(简体) ), number, (中文(简体) ), compact, (中文(简体) ), percent, (中文(简体) ), change (+12.3%), money, (中文(简体) ), date (a"2026-10-03"日期停留当天), dateTime日期: a Date 或 ISO / Athena 字符串; 其它任何显示“ -” 的字符串

主机在打开一个对话框或抽屉时会在整个页面上显示框架,所以它们总是完全可见.

每个部件,光和暗,都是在 UI 工具包画廊 在开发者网站(仓库) 画廊应用, examples/ui-kit页:1. <HawkAppProvider preview={{ mode: 'dark' }}> 在没有主机的情况下制作,并带有样本上下文 (单位:千美元)previewContext()),用于画廊,文档和截图. 新的应用程序从CLI那里得到工具箱 next-mui 模板 (单位:千美元)hawk-app create my-app --template next-mui); 已有的下一条 mui 应用程序得到它 hawk-app upgrade。 。 。 .

主题

createHawkTheme(context.theme, ...overrides) (亦见 @bridgeline-digital/hawk-app-ui/theme:

编从
字法 (Montserrat, 14 px base, h1–h3, 14 px base, 14 px base, h1–h3), featuredValue),断点(sm 640号.. 2xl 1536),间距,卡片和列表覆盖斯派克的主题( S)sparkThemeOptions(中文(简体) )
主颜色及其文本、背景、文本颜色、分隔符、边框半径、光或暗主机主题符号( Q)color-button-accent-background, (中文(简体) ), color-background, (中文(简体) ), color-background-container, (中文(简体) ), color-text-default, (中文(简体) ), color-text-secondary, (中文(简体) ), color-border-default, (中文(简体) ), border-radius, (中文(简体) ), mode),否则Spark's. A 类 color-border-default 在主机表面太微弱无法看见(在1.2下相接,如HawkSearch's #f5f7fa 在白色上)被忽略,所以分隔符,表格行和被概括的卡片保留了MUI的分隔符
框架部分的对话框和小吃栏工具包frameThemeOptions从桥的 --hawk-visible-* 变量)
菜单和选择不锁定帧滚动(一个锁会调整帧和页面闪存)工具包frameThemeOptions(中文(简体) )
表格行和页眉(分页颜色的边框,页上背景的页眉行,上下行为10px,其他行为有色;样式表的 .hawk-table 都一样)工具包tableThemeOptions(中文(简体) )

字体总是Spark's的,无论主机使用什么,所以应用在HawkSearch和Spark中看起来都是一样的.

没有反应和MUI

对于香草, Preact, React 或 Next apps 不使用 MUI : 与样式表相同的外观, 以及一些自定义的元素 CSS一个人办不到的. 没有依附关系:没有反应,没有MUI,没有桥.

// With a bundler (Vite, Next): once, where the app starts (Next: the css in app/layout.tsx).
import '@bridgeline-digital/hawk-app-ui/css';
import '@bridgeline-digital/hawk-app-ui/elements';
<!-- Without a build step: from the CDN, at the bridge's version (the vanilla template does this). -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@bridgeline-digital/[email protected]/dist/css/hawk.css" />
<script type="module" src="https://cdn.jsdelivr.net/npm/@bridgeline-digital/[email protected]/dist/elements/index.js"></script>

样式表 (单位:千美元)/css, (中文(简体) ), dist/css/hawk.css)携带蒙特塞拉特(不向Google字体提出要求)并绘制东道主地图 主题符号,桥架设置为 --hawk-* 变量和 <html data-hawk-theme>,作为 createHawkTheme 是否为: 口音,背景,文字,边框,半径和暗模式, 否则Spark's. 用它来 --hawk-ui-* 变量 (单位:千美元)--hawk-ui-accent, (中文(简体) ), --hawk-ui-surface, (中文(简体) ), --hawk-ui-text, (中文(简体) ), --hawk-ui-text-secondary, (中文(简体) ), --hawk-ui-border, (中文(简体) ), --hawk-ui-radius,... 为你自己的风格。 视图的一页<html data-hawk-view>保持透明.

类对于
hawk-section (单位:千美元)hawk-section-header, (中文(简体) ), -title, (中文(简体) ), -subtitle(中文(简体) )一张名片, Spark's
hawk-kpi-row, (中文(简体) ), hawk-stack, (中文(简体) ), hawk-row, (中文(简体) ), hawk-spacer并排; 列或行块
hawk-button (单位:千美元)is-outlined, (中文(简体) ), is-text, (中文(简体) ), is-small(中文(简体) )主机口音中的按钮
hawk-field, (中文(简体) ), hawk-input, (中文(简体) ), hawk-select窗体字段
hawk-notice (单位:千美元)is-error, (中文(简体) ), is-warning, (中文(简体) ), is-success(中文(简体) )一个消息
hawk-chip (单位:千美元)is-accent, (中文(简体) ), hawk-empty, (中文(简体) ), hawk-spinner, (中文(简体) ), hawk-skeleton标签, 没有要显示的, 装入
hawk-table (单位:千美元) hawk-table-wrap(中文(简体) )普通表格(或使用) <hawk-data-table>(中文(简体) )
hawk-h1. hawk-h3, (中文(简体) ), hawk-value, (中文(简体) ), hawk-muted, (中文(简体) ), hawk-caption, (中文(简体) ), hawk-num类型:标题、标题编号、次要文本

要点 (单位:千美元)/elements使标记。 数据作为属性输入( E)el.rows = [...],设置为 属性。 导入定义它们( 在浏览器中; 在服务器上导入是安全的, 例如在 Next) .

元素使用
<hawk-kpi label value hint change good-when highlight loading>其变化与前一个时期的比较change 作为一个分数, none 用于“没有先前的数据”; 绿色当良好时)
<hawk-data-table>columns (单位:千美元){ key, label, align?, format?, value?, sortable?, csvLabel? }· ; format数字 : integer, (中文(简体) ), number, (中文(简体) ), compact, (中文(简体) ), percent, (中文(简体) ), money, (中文(简体) ), date, (中文(简体) ), dateTime 或职能, rows, (中文(简体) ), totals, (中文(简体) ), sort; 属性 download="file.csv", (中文(简体) ), max-height, (中文(简体) ), clickable (单位:千美元)hawk-row-click 事件, empty可排序标题, CSV 以排序方式下载行( 公式制成的文本)
<hawk-bar-list>items (单位:千美元){ label, value }(三); selectable (单位:千美元)hawk-select 事件, value-format, (中文(简体) ), color, (中文(简体) ), label
<hawk-column-chart>columns (单位:千美元){ label, value, tooltip? }(三); height, (中文(简体) ), value-format, (中文(简体) ), color, (中文(简体) ), label
const table = document.querySelector('hawk-data-table');
table.columns = [{ key: 'keyword', label: 'Keyword' }, { key: 'search_count', label: 'Searches', format: 'integer' }];
table.rows = report.data;
table.setAttribute('download', 'searches.csv');

createFormat(locale) (从) /elements 格式数字、钱和日期 useFormat()在反应或预告中 使用 TypeScript 键入 JSX 中的元素 HawkElementTags (模板有: src/hawk-elements.d.ts:

import type { HawkElementTags } from '@bridgeline-digital/hawk-app-ui/elements';
declare module 'react' { namespace JSX { interface IntrinsicElements extends HawkElementTags {} } } // Preact: 'preact'

敬酒: app.toast(message, severity) 从桥上看主人自己.

版本数

与"桥"和"CLI"一并发布(三个版本各一). 反应 + MUI 部分的对等依赖性: 反应 19, MUI 9,"情感11"(样式表和元素的选择),和桥.

版本与发布记录

@bridgeline-digital/hawk-app-ui 共发布 36 个版本,首次发布于 2026/10/21;过去 12 个月发布了 36 个版本。

版本发布日期距今
0.1.7latest2026/11/09今天
0.2.0-dev.20261107235157dev2026/11/081 天前
0.2.0-dev.202611071348152026/11/081 天前
0.2.0-dev.202611062251282026/11/072 天前
0.2.0-dev.202611061535502026/11/062 天前
0.2.0-dev.202611061406042026/11/062 天前

关于 @bridgeline-digital/hawk-app-ui 的常见问题

@bridgeline-digital/hawk-app-ui 是什么?

对于 Bridgeline 开发者: Spark look for Hawk Apps: for React + MUI,主题(遵循主机的颜色和模式),应用程序提供者和共享组件;对于任何应用程序(vanilla,Preact,React,Next),一个样式表和自定义元素.

如何安装 @bridgeline-digital/hawk-app-ui?

在项目目录运行 npm install @bridgeline-digital/hawk-app-ui,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@bridgeline-digital/hawk-app-bridge(>=0.1.0 <1.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@bridgeline-digital/hawk-app-ui 支持 TypeScript 吗?

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

@bridgeline-digital/hawk-app-ui 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@bridgeline-digital/hawk-app-ui 可以商用吗?

@bridgeline-digital/hawk-app-ui 使用 UNLICENSED 许可。作者声明为 UNLICENSED,即不授予公开使用许可(与公共领域的 Unlicense 不同)。使用前需获得作者授权。以上为概括,不构成法律意见,请以许可原文为准。

@bridgeline-digital/hawk-app-ui 的下载量有多少?

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

@bridgeline-digital/hawk-app-ui 还在维护吗?

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