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

@lokvis/ui-react

v0.10.0

Published

Lokvis Workspace UI - React components for Image/Video/PDF Workspace

Downloads

103

Readme

@lokvis/ui-react

React Workspace UI for Lokvis — local-first image/video/PDF processing in the browser.

@lokvis/ui-react renders the full Lokvis Workspace (asset panel, canvas, workflow editor, inspector, status bar…) on top of @lokvis/runtime / @lokvis/sdk.

Install

pnpm add @lokvis/ui-react @lokvis/sdk @lokvis/plugin-image
# peers: react react-dom

Quick start

import { Workspace } from '@lokvis/ui-react';
import { imageToolsPlugin } from '@lokvis/plugin-image';

<Workspace plugins={[imageToolsPlugin()]} />

i18n

The package ships a built-in 6-language dictionary — en (default) / zh / ja / es / de / fr — covering all Workspace UI copy (labels, aria-labels, placeholders, tooltips, and store status/error messages).

Language resolution priority

  1. Component locale prop (highest, per-instance)
  2. WorkspaceI18nProvider locale (app level)
  3. document.documentElement.lang
  4. URL path prefix (/zh/...)

Without any of these, the UI renders in English — identical to previous versions.

Usage

import { Workspace, WorkspaceI18nProvider } from '@lokvis/ui-react';

// Per-instance
<Workspace locale="zh" />

// App-level Provider (standalone components like ToolRunner inherit it too)
<WorkspaceI18nProvider locale="ja">
  <Workspace />
</WorkspaceI18nProvider>

ToolRunner and WorkflowTemplates also accept a standalone locale prop when used outside Workspace.

Overriding copy

Pass a partial translations map (key → language → text). Missing languages fall back to the built-in dictionary:

<Workspace
  locale="zh"
  translations={{
    'toolbar.run': { zh: '开始处理', en: 'Process' },
  }}
/>

// Or app-wide via the Provider
<WorkspaceI18nProvider locale="zh" translations={{ 'inspector.configure': { zh: '配置工具' } }}>
  <Workspace />
</WorkspaceI18nProvider>

Keys are namespaced as <component>.<field> (e.g. toolbar.run, statusBar.online, status.importing). See src/i18n/ui.ts for the full list.

Store messages

Store-side messages (statusMessage, error) are stored as { key, params } (I18nMessage), not plain strings — components translate them at render time via formatMessage. Raw strings (e.g. engine error text) pass through unchanged.

Exported i18n API

| Export | Description | |---|---| | WorkspaceI18nProvider | Injects locale + optional translations | | useWorkspaceLang(locale?) | Resolves current language via the priority chain | | useWorkspaceTranslations(lang, overrides?) | Returns a t(key, params?) translate function | | t(lang, key, overrides?, params?) | Pure translate function | | formatMessage(t, message) | Renders string \| I18nMessage | | languages / langList / defaultLang / Language | Language config |

Not in scope: runtime language-switcher UI, SSR locale negotiation. The dictionary is independent from @lokvis/embed-image's (separate key namespaces).

Testing

pnpm typecheck
npx vitest run packages/ui-react