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

@neystan/dsh-client-ui-skin-ths

v0.1.16

Published

Hot-pluggable Tonghuashun-style stock-trading skin for the dsh web GUI: red brand chrome, quote status bar, data-terminal surfaces

Readme

@neystan/dsh-client-ui-skin-ths

English | 中文

Tonghuashun-style (同花顺) stock-trading skin for the dsh web GUI. It plugs in as a client plugin: apply() sets the data-dsh-ths body attribute (the whole stylesheet's scope), renders the fixed brand-red title bar with a live-quote chip (上证指数), the quote status bar (上证指数 / 深证成指 / 创业板指, colored 红涨绿跌), a watchlist-style sidebar (red market rule, quote rows) and a terminal-style settings panel, pins the document title and injects the 同 favicon. Its effect disposer retracts every write — the attribute, both bars, the favicon, and the title unless a session title already replaced it. The stylesheet ships inside the bundle via CSS-modules auto-inject, so the loader removes it when the entry is disposed.

The skin is presentation-only: no services are injected, no cordis events are emitted, nothing reaches a model request. The dark palette (body[data-dsh-ths][data-ds-dark-theme]) is the night-trading variant, so the base theme system keeps flipping tokens underneath. Scrollbar aliases stay on the base theme, keeping the stock scrollbar contract under the skin.

Installing (official bundle)

Prefer the family aggregate package @neystan/dsh-skins — every skin at once; for this skin alone, install with link::

# All skins (recommended)
dsh plugin --profile web add @neystan/dsh-skins
# Or just this skin
dsh plugin --profile web add @neystan/dsh-client-ui-skin-ths
# Activate: dsh-skin use ths
# From the repo (dev): dsh plugin --profile web add link:$(pwd)/packages/skins/ths

$(pwd) is your clone of the dsh-web-ui monorepo.

A local link: install needs built artifacts first — lib/ is git-ignored and not committed, so run pnpm install && pnpm -r build in the monorepo before linking. Git installs (dsh plugin --profile web add github:<org>/dsh-web-ui#<sha>) build lib/ themselves via the prepare script; pnpm ≥10 blocks that until you copy the printed package key into the profile's pnpm-workspace.yaml allowBuilds list and re-run.

Activate or switch with dsh-skin use ths (helper script scripts/dsh-skin in the monorepo); only one skin is active at a time.

同一时刻只应激活一个皮肤行——两个皮肤会同时注入窗口 chrome。移除该行(连同包)即可回到默认外观。

Requirements

The pane-level chrome (sidebar gradient, conversation/details surfaces) keys on the data-pane attributes the AppFrame columns carry in ui-layout; without them the skin still applies, minus the per-pane surfaces.

Model Experience

None. The skin mutates only the browser DOM; nothing here reaches a model request.

KV Cache effect

None; this package neither assembles nor sends a provider request.

Known limitations

  • The loading page stays stock. The shell's boot page renders before plugin bundles exist, so the skin starts at the settled UI (the boot page still gets the window frame once the attribute is set, but its inner card keeps the modern look).
  • Theme switching is skin-internal. The skin pins its own palette under both data-ds-dark-theme states; switching Appearance themes flips between the light and dark terminal palettes, not to a non-skin look.
  • Quote cells are decorative. The index values in the status bar are static text for the look; they do not track live market data.