Skip to main content

Shared frontend UI components for the SciTeX ecosystem

Project description

SciTeX UI (scitex-ui)

SciTeX

Shared frontend UI components for the SciTeX ecosystem

PyPI version Documentation Tests License: AGPL-3.0

Full Documentation · pip install scitex-ui


Problem

The SciTeX ecosystem comprises multiple web applications (cloud dashboard, documentation hub, workspace editor) that share common frontend patterns — navigation sidebars, package browsers, status indicators. Without a shared component library, each application re-implements these patterns independently, leading to visual inconsistency and duplicated effort.

Solution

SciTeX UI provides a library of reusable TypeScript + CSS components designed for SciTeX web applications. Components are packaged as a Django app with static assets discoverable via AppDirectoriesFinder, and a Python registry for component metadata.

Each component ships with:

  • TypeScript source — framework-agnostic, vanilla DOM API
  • CSS styles — scoped via BEM-like class prefixes (stx-shell-*, stx-app-*)
  • Python metadata — version, file paths, descriptions

Architecture

graph TB
    subgraph shell ["Shell (stx-shell-*) — Workspace Frame"]
        theme["ThemeProvider<br/>Light/Dark + Tokens"]
        appshell["AppShell<br/>Sidebar + Content"]
        statusbar["StatusBar<br/>L | C | R Sections"]
    end

    subgraph app ["App (stx-app-*) — In-App Components"]
        filebrowser["FileBrowser<br/>Tree Navigation"]
        pkgsidebar["PackageDocsSidebar<br/>Package Browser"]
    end

    base{{"BaseComponent<br/>Container + Events + Lifecycle"}}

    appshell -->|extends| base
    statusbar -->|extends| base
    filebrowser -->|extends| base
    pkgsidebar -->|extends| base

Figure 1. Component architecture. Shell components provide workspace framing (theme, layout, status bar). App components are reusable in-app widgets. All extend BaseComponent for shared container resolution, event dispatch, and lifecycle management.

Current Components

Category Component Prefix Description
Shell ThemeProvider stx-shell- Light/dark theme manager with semantic color tokens
Shell AppShell stx-shell- Workspace layout with collapsible sidebar and accent colors
Shell StatusBar stx-shell- Bottom status bar with left/center/right sections
App FileBrowser stx-app- Tree view for navigating file hierarchies
App PackageDocsSidebar stx-app- Navigable sidebar for Python package documentation

Table 1. Available UI components. Shell components provide workspace framing; App components are for in-app use. Each is registered in the Python metadata registry.

Installation

Requires Python >= 3.10.

pip install scitex-ui

Quick Start

Django Setup

Add scitex_ui to your INSTALLED_APPS:

INSTALLED_APPS = [
    # ...
    "scitex_ui",
]

Static assets are automatically discoverable by Django's AppDirectoriesFinder.

Python API

import scitex_ui

# List all registered components
for name in scitex_ui.list_components():
    meta = scitex_ui.get_component(name)
    print(f"{name} v{meta.version}{meta.description}")

# Get specific component metadata
sidebar = scitex_ui.get_component("package-docs-sidebar")
print(sidebar.ts_entry)   # TypeScript entry point
print(sidebar.css_file)   # CSS stylesheet path

TypeScript Usage

// Workspace shell
import { ThemeProvider } from "scitex_ui/ts/shell/theme-provider";
import { AppShell } from "scitex_ui/ts/shell/app-shell";
import { StatusBar } from "scitex_ui/ts/shell/status-bar";

const theme = new ThemeProvider();
const shell = new AppShell({
  container: "#app",
  accent: "writer",        // Preset accent color
  collapsible: true,
});
const statusBar = new StatusBar({ container: "#status" });

// In-app components
import { FileBrowser } from "scitex_ui/ts/app/file-browser";

const browser = new FileBrowser({
  container: "#files",
  onFileSelect: (node) => console.log(node.path),
});

Three Interfaces

Python API
Function Description
list_components() List all registered component names
get_component(name) Get metadata for a registered component
register_component(name, metadata) Register a new component
CLI Commands (planned)
scitex-ui --help              # Show help
scitex-ui list-components     # List registered components
scitex-ui version             # Show version
MCP Server (planned)

MCP (Model Context Protocol) tools for AI agents to discover and query available UI components.

Role in SciTeX Ecosystem

scitex-ui is the shared TypeScript + CSS component library for all SciTeX web applications. It provides the visual building blocks that maintain consistency across the cloud dashboard, workspace editor, and third-party apps.

scitex (orchestrator, templates, CLI, MCP)
  |-- scitex-app              -- runtime SDK for apps
  |-- scitex-ui (this package) -- TS + CSS component library
  |     |-- Shell (stx-shell-*) -- ThemeProvider, AppShell, StatusBar
  |     |-- App (stx-app-*)     -- FileBrowser, PackageDocsSidebar
  |     +-- Design tokens        -- spacing, typography, z-index, colors
  +-- figrecipe                -- reference app (consumes scitex-ui)

What this package owns:

  • Shell components (stx-shell-*): ThemeProvider, AppShell, StatusBar
  • App components (stx-app-*): FileBrowser, PackageDocsSidebar
  • Design token CSS: theme colors, spacing, typography, z-index primitives

What this package does NOT own:

  • Backend/runtime SDK -- see scitex-app
  • Orchestration, templates, CLI -- see scitex
  • App-specific logic -- each app (e.g., figrecipe) owns its own views

Part of SciTeX

scitex-ui is part of SciTeX. When used within the SciTeX ecosystem, components automatically integrate with the SciTeX cloud dashboard and documentation hub.

The SciTeX ecosystem follows the Four Freedoms for researchers, inspired by the Free Software Definition:

  • Freedom 0 — Run the software for any research purpose.
  • Freedom 1 — Study how the software works and adapt it to your needs.
  • Freedom 2 — Redistribute copies to help fellow researchers.
  • Freedom 3 — Distribute modified versions so the community benefits.

SciTeX

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scitex_ui-0.4.7.tar.gz (7.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scitex_ui-0.4.7-py3-none-any.whl (7.9 MB view details)

Uploaded Python 3

File details

Details for the file scitex_ui-0.4.7.tar.gz.

File metadata

  • Download URL: scitex_ui-0.4.7.tar.gz
  • Upload date:
  • Size: 7.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for scitex_ui-0.4.7.tar.gz
Algorithm Hash digest
SHA256 e123359d367acf4b198e550d8b8218b4545406ae7d49c2dc03437baec5df682c
MD5 78bb119f737e38e7ac8e39db1c735e96
BLAKE2b-256 638ed6a1295bf1309d7ca0030d08f0e7cde89ca85f1d447bb3029449608fe30b

See more details on using hashes here.

Provenance

The following attestation bundles were made for scitex_ui-0.4.7.tar.gz:

Publisher: publish-pypi.yml on ywatanabe1989/scitex-ui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file scitex_ui-0.4.7-py3-none-any.whl.

File metadata

  • Download URL: scitex_ui-0.4.7-py3-none-any.whl
  • Upload date:
  • Size: 7.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for scitex_ui-0.4.7-py3-none-any.whl
Algorithm Hash digest
SHA256 4d5c48ebd5d6a8f1f702a6b7f36d8435c42f8e16824b69f6cb21a9696092f571
MD5 044fe3e389a0b5618a4aacc53f9da71b
BLAKE2b-256 749e83709e8437514dff7134fc821be6398107e01bb3eb2288ff122afc68811c

See more details on using hashes here.

Provenance

The following attestation bundles were made for scitex_ui-0.4.7-py3-none-any.whl:

Publisher: publish-pypi.yml on ywatanabe1989/scitex-ui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page