npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

isom-research-ui

v1.0.1

Published

Research UI - 简洁白色学术研究主题组件库

Readme

ISOM Research UI

简洁白色学术研究主题组件库,专为科研文献管理和学术应用设计。

版本: 1.0.1

特性

  • 🎨 简洁白色主题,专业学术风格
  • 🎭 多主题切换(默认蓝、DaKES、紫色、绿色、深色)
  • 📚 文献卡片、搜索结果展示
  • 💬 AI聊天集成
  • 🔔 Toast通知系统
  • 💬 悬浮窗系统(Popover、Dropdown、Tooltip)
  • ⏱️ 搜索历史时间线
  • 📁 文件预览与管理
  • 🎭 6种背景效果(网格、渐变、粒子、波浪、几何、图片)
  • 📌 侧边栏和滚动横幅
  • 📱 响应式设计

安装

npm install isom-research-ui

使用

CDN引入

<link rel="stylesheet" href="dist/research-ui.min.css">
<script src="dist/research-ui.min.js"></script>

NPM引入

import ResearchUI from 'isom-research-ui';
import 'isom-research-ui/dist/research-ui.css';

组件

导航栏

<nav class="research-navbar" id="researchNavbar">
    <a class="research-navbar-brand" href="#">BiMES</a>
    <div class="research-navbar-menu">
        <a class="research-navbar-item active" href="#">首页</a>
        <a class="research-navbar-item" href="#">文献</a>
    </div>
</nav>

自动隐藏导航栏:

<nav class="research-navbar auto-hide" id="researchNavbar">...</nav>
<script>ResearchUI.initNavbarAutoHide('researchNavbar');</script>

侧边栏

<aside class="research-sidebar" id="mainSidebar">
    <div class="research-sidebar-title">导航</div>
    <ul class="research-sidebar-nav">
        <li class="research-sidebar-item active">
            <a href="#"><span class="research-sidebar-item-icon">📚</span>文献库</a>
        </li>
        <li class="research-sidebar-item">
            <a href="#"><span class="research-sidebar-item-icon">🔍</span>搜索</a>
        </li>
        <li class="research-sidebar-item">
            <a href="#"><span class="research-sidebar-item-icon">⭐</span>收藏</a>
        </li>
    </ul>
    <div class="research-sidebar-divider"></div>
    <div class="research-sidebar-title">设置</div>
    <ul class="research-sidebar-nav">
        <li class="research-sidebar-item">
            <a href="#"><span class="research-sidebar-item-icon">⚙️</span>偏好设置</a>
        </li>
    </ul>
</aside>

右侧侧边栏:

<aside class="research-sidebar right" id="rightSidebar">...</aside>

控制侧边栏:

ResearchUI.toggleSidebar('mainSidebar');
ResearchUI.openSidebar('mainSidebar');
ResearchUI.closeSidebar('mainSidebar');

滚动横幅

<div class="research-marquee" id="marquee">
    <div class="research-marquee-content">
        <span>最新文献:Deep Learning Survey 2024</span>
        <span>系统更新:新增AI摘要功能</span>
        <span>通知:数据库维护将于周日进行</span>
    </div>
</div>

动态设置横幅内容:

ResearchUI.initMarquee('marquee', [
    '最新文献:Deep Learning Survey 2024',
    '系统更新:新增AI摘要功能',
    '通知:数据库维护将于周日进行'
]);

按钮

<button class="research-btn research-btn-primary">主要按钮</button>
<button class="research-btn research-btn-secondary">次要按钮</button>
<button class="research-btn research-btn-primary research-btn-sm">小按钮</button>

输入框

<input type="text" class="research-input" placeholder="搜索...">
<input type="text" class="research-input research-input-lg" placeholder="大输入框">
<textarea class="research-textarea" placeholder="多行文本"></textarea>

卡片

<div class="research-card">
    <h3 class="research-card-title">标题</h3>
    <div class="research-card-content">内容</div>
    <div class="research-card-footer">
        <button class="research-btn research-btn-primary">操作</button>
    </div>
</div>

文献卡片

<div class="research-literature-card">
    <h4>论文标题</h4>
    <p class="research-literature-meta">PMID: 12345 | 作者名</p>
    <p class="research-literature-abstract">摘要内容...</p>
    <div class="research-literature-actions">
        <button class="research-btn research-btn-sm research-btn-primary">查看</button>
    </div>
</div>

区块/面板

<section class="research-section">
    <div class="research-section-header">
        <span class="research-section-title">搜索结果</span>
        <span class="research-badge research-badge-primary">20 条</span>
    </div>
    <div class="research-section-body scrollable">
        <!-- 内容 -->
    </div>
</section>

Toast通知

ResearchUI.success('操作成功');
ResearchUI.error('操作失败', '详细错误信息');
ResearchUI.warning('警告');
ResearchUI.info('提示信息');

加载动画

ResearchUI.showLoading('加载中...');
// 完成后
ResearchUI.hideLoading();

确认对话框

const result = await ResearchUI.confirm('确认删除', '确定要删除这条记录吗?');
if (result) {
    // 用户点击了确认
}

时间线

const timeline = ResearchUI.initTimeline('timelineContainer', {
    storageKey: 'search_history',
    maxItems: 20,
    inputId: 'searchInput'
});

timeline.add('搜索关键词');
timeline.clear();

CSS变量

可通过覆盖CSS变量自定义主题:

:root {
    --research-primary: #3b82f6;
    --research-primary-dark: #2563eb;
    --research-gray-800: #1f2937;
    /* ... */
}

配色方案

| 变量 | 默认值 | 说明 | |------|--------|------| | --research-primary | #3b82f6 | 主色调 | | --research-success | #10b981 | 成功状态 | | --research-error | #ef4444 | 错误状态 | | --research-warning | #f59e0b | 警告状态 | | --research-gray-50 | #f9fafb | 背景色 | | --research-gray-200 | #e5e7eb | 边框色 | | --research-gray-800 | #1f2937 | 文字色 |

主题系统

引入主题

<link rel="stylesheet" href="dist/themes/research-themes.css">

可用主题

| 主题类名 | 说明 | |----------|------| | research-theme | 默认蓝色主题 (#3b82f6) | | research-theme-dakes | DaKES 深蓝主题 (#007BB5) | | research-theme-purple | 紫色主题 (#8b5cf6) | | research-theme-green | 绿色主题 (#10b981) | | research-theme-dark | 深色主题 |

使用示例

<body class="research-theme-dakes">
    <!-- 页面内容 -->
</body>

切换主题:

document.body.className = 'research-theme-purple';

悬浮窗组件

气泡卡片 Popover

// 显示气泡卡片
ResearchUI.showPopover('buttonId', {
    title: '提示',
    content: '这是气泡内容',
    position: 'bottom'  // top, bottom, left, right
});

// 关闭气泡
ResearchUI.closePopover(popoverId);
ResearchUI.closeAllPopovers();

下拉菜单 Dropdown

<div class="research-dropdown" id="myDropdown">
    <button class="research-btn" onclick="ResearchUI.toggleDropdown('myDropdown')">
        菜单 ▾
    </button>
    <div class="research-dropdown-menu">
        <div class="research-dropdown-header">分组标题</div>
        <a class="research-dropdown-item" href="#">
            <span class="research-dropdown-item-icon">📄</span>选项一
        </a>
        <div class="research-dropdown-divider"></div>
        <a class="research-dropdown-item disabled">禁用选项</a>
    </div>
</div>
ResearchUI.toggleDropdown('myDropdown');
ResearchUI.openDropdown('myDropdown');
ResearchUI.closeDropdown('myDropdown');
ResearchUI.closeAllDropdowns();

工具提示 Tooltip

CSS 悬停方式:

<span class="research-tooltip-wrapper">
    <button class="research-btn">悬停显示</button>
    <span class="research-tooltip top">提示文字</span>
</span>

JS 编程方式:

ResearchUI.showTooltipAt('elementId', '提示文字', 'top');
ResearchUI.hideTooltipAt('elementId');

背景模块

Research UI 提供了多种学术风格的背景效果。

引入背景模块

<link rel="stylesheet" href="dist/backgrounds/research-backgrounds.css">
<script src="dist/backgrounds/research-backgrounds.js"></script>

背景类型

| 类型 | 说明 | |------|------| | grid | 网格背景,带动态网格线和交叉点 | | gradient | 渐变背景,带浮动光斑效果 | | particles | 粒子背景,带连接线动画 | | waves | 波浪背景,底部波浪动画 | | geometric | 几何背景,浮动几何图形 | | image | 图片背景,支持视差效果 |

使用示例

// 初始化网格背景
ResearchBG.init('grid');

// 初始化渐变背景
ResearchBG.init('gradient');

// 初始化粒子背景
ResearchBG.init('particles', { count: 50, lines: true });

// 初始化图片背景
ResearchBG.init('image', {
    src: 'path/to/image.jpg',
    blur: 2,
    opacity: 0.8,
    overlay: 'rgba(255,255,255,0.7)',
    vignette: true,
    parallax: true
});

// 切换背景
ResearchBG.switch('waves');

// 销毁背景
ResearchBG.destroy();

// 深色模式
ResearchBG.setDarkMode(true);

图片背景选项

| 选项 | 类型 | 默认值 | 说明 | |------|------|--------|------| | src | string | - | 图片URL (必需) | | position | string | 'center' | 背景位置 | | size | string | 'cover' | 背景尺寸 | | blur | number | 0 | 模糊程度(px) | | brightness | number | 1 | 亮度(0-2) | | opacity | number | 1 | 透明度(0-1) | | grayscale | number | 0 | 灰度(0-1) | | overlay | string | - | 叠加层颜色 | | vignette | boolean | false | 暗角效果 | | parallax | boolean | false | 滚动视差 | | mouseParallax | boolean | false | 鼠标视差 |

构建

npm install
npm run build

目录结构

research-ui/
├── src/
│   ├── css/
│   │   ├── research-ui.css
│   │   └── backgrounds/
│   │       └── research-backgrounds.css
│   └── js/
│       ├── research-ui.js
│       └── backgrounds/
│           └── research-backgrounds.js
├── dist/
│   ├── research-ui.css
│   ├── research-ui.min.css
│   ├── research-ui.min.js
│   └── backgrounds/
│       ├── research-backgrounds.css
│       └── research-backgrounds.min.js
└── package.json

License

MIT