@aglyn/shared-ui-next

中文文档
1.19.0发布于 2026/11/07Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 1.2万

React components and hooks that depend on Next.js: a two-column tab hub whose active tab lives in the URL, a route-based section rail, a next/image wrapper with a shimmer placeholder, and a page title provider. The Aglyn console and the console pages th

原始使用文档
文档目录5 节
  1. Install
  2. What's in it
  3. Usage
  4. How it fits
  5. License

@aglyn/shared-ui-next

React components and hooks that depend on Next.js: a two-column tab hub whose active tab lives in the URL, a route-based section rail, a next/image wrapper with a shimmer placeholder, and a page title provider. The Aglyn console and the console pages that plugins ship are built with it. It assumes the App Router (next/navigation).

Published to npm from the Aglyn monorepo. Versions follow semantic versioning.

Install

npm install @aglyn/shared-ui-next

Peer dependencies: react, next, @mui/material and @mui/lab (the tab components use TabContext, TabList and TabPanel from @mui/lab).

What's in it

From the root entry:

  • HubTabs — a navigation card with vertical tabs on the left and the active panel on the right, collapsing to horizontal tabs on small screens. Takes tabs: { id, label, content }[], an optional navHeader, and lazy to defer mounting a panel until it is first opened. The active tab is mirrored into the ?tab= query parameter, so a tab can be linked to and survives back and forward. Panels stay mounted once shown.
  • HubSections — the same rail, choosing a section by route instead of by panel. Takes sections: { href, label, visible?, locked? }[] and renders children (the current route's page) beside the rail. Use it when each section should be its own code-split route. Pass wide for a page that needs the whole row, such as a wide table or a record's detail: the rail is then drawn above it as a horizontal strip.
  • useActiveSection(sections) — the section the current pathname is inside, matched by longest href prefix on a path-separator boundary, or null. Useful for a breadcrumb that must agree with the rail.
  • Image — next/image wrapped as an Emotion styled component, with an animated SVG shimmer as the blur placeholder. width and height default to 100; pass disableShimmer to turn the placeholder off.
  • NextPageTitleProvider, NextPageTitle, useNextPageTitle, useNextPageTitleContext — compose a document title from parts and render it through next/head.
  • PageDecorated and the NextPageWithLayout types — render a page inside the layout the page itself declares.

By subpath:

  • @aglyn/shared-ui-next/hooks/use-tab-param — useTabParam({ ids, param?, fallback?, onChange? }) returns { tab, onTabChange }, the URL-backed tab state HubTabs is built on. onTabChange is a drop-in for a Material UI TabList's onChange.

Usage

'use client'

import { HubTabs } from '@aglyn/shared-ui-next'

export function SettingsHub() {
  return (
    <HubTabs
      navHeader="Settings"
      tabs={[
        { id: 'general', label: 'General', content: <p>General settings</p> },
        { id: 'members', label: 'Members', content: <p>Members</p> },
      ]}
    />
  )
}

/settings?tab=members opens the second tab.

How it fits

A shared UI package. It depends on @aglyn/shared-ui-jsx, @aglyn/shared-ui-theme, @aglyn/shared-data-enums, @aglyn/shared-util-dom and @aglyn/shared-util-tools; the feature plugins depend on it for their console pages. Shared packages are generic: they import only other shared packages and hold no plugin's domain.

License

Apache-2.0. Source: https://github.com/aglyn/aglyn/tree/main/libs/shared/ui/next

版本与发布记录

@aglyn/shared-ui-next 共发布 161 个版本,首次发布于 2026/09/21;过去 12 个月发布了 161 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.19.0latest2026/11/07今天
1.18.02026/11/07今天
1.17.02026/11/07今天
1.16.02026/11/07今天
1.15.22026/11/061 天前
1.15.12026/11/061 天前

其他发布通道:beta → 1.0.0-beta.296。

关于 @aglyn/shared-ui-next 的常见问题

@aglyn/shared-ui-next 是什么?

React components and hooks that depend on Next.js: a two-column tab hub whose active tab lives in the URL, a route-based section rail, a next/image wrapper with a shimmer placeholder, and a page title provider. The Aglyn console and the console pages th

如何安装 @aglyn/shared-ui-next?

在项目目录运行 npm install @aglyn/shared-ui-next,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:next(^16.3.3)、react(^19.2.8)、@mui/lab(^9.0.0-beta.8)、@mui/material(^9.3.1)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aglyn/shared-ui-next 支持 TypeScript 吗?

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

@aglyn/shared-ui-next 支持 ESM 还是 CommonJS?

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

@aglyn/shared-ui-next 可以商用吗?

@aglyn/shared-ui-next 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aglyn/shared-ui-next 的下载量有多少?

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

@aglyn/shared-ui-next 还在维护吗?

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