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

@allthings/structured-ticket-form

v8.0.0

Published

Component to create and edit jsonSchemaForm with possibility to adding translated fields and custom UISchema.

Readme

pipeline

structured-ticket-form

Table of contents

General info

Simple component to create and edit jsonSchemaForm with possibility to adding translated fields and custom UISchema.

Technologies

  • TypeScript
  • React 18/19
  • React JSON Schema Form (RJSF)
  • Material UI (MUI v9)
  • Monaco editor
  • Parcel (sandbox build only)

Setup

Install:

To use this component, install in your project using npm:

$ yarn install @allthings/structured-ticket-form

[!IMPORTANT] This package is pure ESM and does not ship a CommonJS build. Use import to load it; older CommonJS runtimes and toolchains may fail when using require(). Consumers need to be on an ESM-capable toolchain (Node ≥ 22.13, Vite, Vitest, modern webpack/rollup, etc.).

How to use?:

Import the StructuredTicketEditor component into your .tsx file.

First, create the schema and language data objects:

import {
  EditorTab,
  StructuredTicketEditor,
} from '@allthings/structured-ticket-form'
import type {
  IFullFormSchema,
  ILanguageDisplay,
} from '@allthings/structured-ticket-form'

const schema: IFullFormSchema = {
  [EditorTab.JSON]: {},
  [EditorTab.UI]: {},
  [EditorTab.TRANSLATION]: {},
}

const languageDisplay: ILanguageDisplay = {
  display: { key: 'en_US', value: 'English' },
  language: [{ key: 'en_US', value: 'English' }],
}

Hold the schema in state and render the editor. onSaveButton receives the updated IFullFormSchema when the user saves:

const [fullFormSchema, setFullFormSchema] = useState<IFullFormSchema>(schema)
const [isValidate, setIsValidate] = useState(false)

<StructuredTicketEditor
  buttonSaveText="Save"
  errorTextButton="Dismiss"
  errorTextJson="Invalid JSON schema"
  errorTextTranslator="Invalid translation"
  fullFormSchema={fullFormSchema}
  isValidate={isValidate}
  languageDisplay={languageDisplay}
  multiErrorText="Multiple errors found"
  onSaveButton={(json) => setFullFormSchema(json)}
  setChangedSchema={() => {}}
  setIsValidate={setIsValidate}
/>

See IStructuredTicketEditorProperties in src/models.ts for the full, authoritative list of props (including optional button and error-text overrides).

What is the IFullFormSchema prop?

An object with three properties, keyed by EditorTab:

export interface IFullFormSchema {
  [EditorTab.JSON]: JSONSchema7
  [EditorTab.TRANSLATION]: Record<string, string>
  [EditorTab.UI]: UiSchema
}

What is the ILanguageDisplay prop?

An object describing the currently displayed language and the available ones:

export interface ILang {
  key: string
  value: string
}

export interface ILanguageDisplay {
  display: ILang
  language: ILang[]
}

Setup and lunch Sandbox View

You can try out how it works using our Sandbox View.

  1. Download repository
  2. Check your node version (this project requires Node >= 22.13, see engines in package.json)
  3. Install the required packages:
     yarn install
  4. In first start:
    yarn build:sandbox
  5. To start sandbox view:
    yarn start

Deployment

Production release

!! DO NOT npm version !!

The project use semantic-release which automates the whole package release workflow including:

  • determining the next version number
  • generating the release notes and publishing the package

This repository is also configured to squash-merge (see here).
When you squash merge, GitHub takes the title of the PR for the squash-merge's commit subject.

By choosing a proper PR title e.g. feat: my new feature your merged PR will trigger a new release.
See semantic-releases docs for available prefixes.

Development release

  1. Create or check out the target branch from the commit you want to release.

  2. Push the branch to trigger the CI pipeline:

    git push --force origin HEAD:beta   # or alpha / next

    The pipeline will automatically run semantic-release, which detects the branch name, bumps the version with the appropriate pre-release tag, and publishes it to npm under the matching dist-tag. Check Actions page for the release logs.

  3. Install the pre-release in another project:

    yarn add -E @allthings/structured-ticket-form@beta   # or @alpha / @next

    or use exact release (check versions on npm):

    yarn add -E @allthings/[email protected]
  4. Promote to stable – once the pre-release is validated, create a PR form your target branch and proceed with Production release section.