jixoai-ui
the terminal design language
loading the style sheet…
Skip to content
docs · print medium: screen

docs · registry

Registry — what is installable

One registry, two kinds of payload: UI modules (the Components listing) and non-UI install targets — the theme sheet, the lib engines and the file payloads. Install targets have no docs chapters: their documentation lives on the pages they power, and this table is their inventory.

148 registry items 111 ui modules 37 install targets

UI modules

all ui modules registry:ui the Components listing npx jixoai-ui add <name>

Install targets

the install-target inventory

Every non-UI registry item, rendered live from the route model: name · type · the host page that documents it · the install command. Open the drawer for the model's real source — the single file this table and the Components nav both derive from.

name type documented on install
jixoai-theme theme /tokens.html npx jixoai-ui add jixoai-themeuniversal-props lib /docs/universal-props.html npx jixoai-ui add universal-propstokens lib /tokens.html npx jixoai-ui add tokenstoc-engine lib /docs/components/toc.html npx jixoai-ui add toc-enginejx-pure lib /docs/jx-pure.html npx jixoai-ui add jx-purenative-form lib /docs/jx-pure.html npx jixoai-ui add native-formshiki lib /docs/components/code-card.html npx jixoai-ui add shikiicon-set lib /docs/icons.html npx jixoai-ui add icon-setspin-set lib /docs/components/spin.html npx jixoai-ui add spin-setform-field lib /docs/components/form.html npx jixoai-ui add form-fieldghostty-vt lib /docs/components/ghostty-term.html npx jixoai-ui add ghostty-vthighlight lib /docs/components/code-card.html npx jixoai-ui add highlighthighlight-shiki lib /docs/components/code-card.html npx jixoai-ui add highlight-shikihighlight-prismjs lib /docs/components/code-card.html npx jixoai-ui add highlight-prismjshighlight-microlighter lib /docs/components/code-card.html npx jixoai-ui add highlight-microlighterhighlight-highlightjs lib /docs/components/code-card.html npx jixoai-ui add highlight-highlightjshighlight-sugar-high lib /docs/components/code-card.html npx jixoai-ui add highlight-sugar-highhighlight-tree-sitter lib /docs/components/code-card.html npx jixoai-ui add highlight-tree-sitterhighlight-lang-detector lib /docs/components/code-card.html npx jixoai-ui add highlight-lang-detectorcolor-utils lib /docs/components/color-picker.html npx jixoai-ui add color-utilsscroll-spy lib /docs/components/anchor.html npx jixoai-ui add scroll-spyscrollbar-measure lib /tokens.html npx jixoai-ui add scrollbar-measuretoc-outline lib /docs/components/scroll-area.html#toc-metadata npx jixoai-ui add toc-outlinescroll-area-kit lib /docs/components/scroll-area.html npx jixoai-ui add scroll-area-kitllms-txt file /docs/llms-txt.html npx jixoai-ui add llms-txtsearch-corpus file /docs/llms-txt.html npx jixoai-ui add search-corpusutils lib /docs/components.html npx jixoai-ui add utilsdensity lib /docs/components.html npx jixoai-ui add densitycontext-plugin lib /docs/components.html npx jixoai-ui add context-plugintypography lib /docs/components.html npx jixoai-ui add typographydefaults lib /docs/components.html npx jixoai-ui add defaultscommand-match lib /docs/components.html npx jixoai-ui add command-matchpaint lib /docs/components.html npx jixoai-ui add paintcontrol-chrome lib /docs/components.html npx jixoai-ui add control-chromeentity lib /docs/variant-grammar.html npx jixoai-ui add entitykatex lib /docs/components/math-block.html npx jixoai-ui add katexmermaid-engine lib /docs/components/mermaid.html npx jixoai-ui add mermaid-engine
docs-route-model.ts ts
/*
 * docs-route-model (openspec/changes/docs-restructure, r1 design):
 * THE single source for the docs tree's navigation shape. Everything —
 * the header pills (Docs panel + Components panel), the sections rail,
 * the catalog index, the per-page prev/next pager and the related
 * links — derives from here, on top of the ONE catalog. Locked by
 * test/docs-structure.spec.ts:
 *   - Components = registry:ui ONLY (one canonical page each; the count derives from CATALOG — see docs-structure's frozen snapshot)
 *   - non-UI items never appear in the Components nav (install targets,
 *     documented on host pages; the registry overview carries them)
 *   - the reading chain covers every ui item; related is nearest-first
 */
import { CATALOG, CATALOG_GROUPS, catalogByGroup, type CatalogEntry } from './catalog';

/* ── sections (the three-section spine; planned pages stay OUT until
      real content exists — design D4) ─────────────────────────────── */

export interface DocsPage {
  /** the nav line 1 — short title (Owner ruling 2026-08-25: the rail is
   *  too narrow for long single lines; qualifiers move to a subtitle) */
  title: string;
  /** the nav line 2 — muted qualifier (e.g. 'where wrapping stops') */
  subtitle?: string;
  /** inventory metadata: a trailing count on the title line */
  count?: number;
  href: string;
}
export interface DocsSection {
  id: string;
  label: string;
  pages: DocsPage[];
}

/** the Components listing: UI modules only, antd taxonomy order */
export const docsComponentGroups = catalogByGroup()
  .map(({ group, entries }) => ({
    group,
    entries: entries.filter((e) => e.type === 'registry:ui'),
  }))
  .filter(({ entries }) => entries.length > 0);

const uiCount = docsComponentGroups.reduce((n, g) => n + g.entries.length, 0);

export const docsSections: DocsSection[] = [
  {
    // the curriculum: theming, the boundary rulings, the componentless
    // face — design D2/D5 (Owner directions 2026-08-25)
    id: 'sections',
    label: 'Sections',
    pages: [
      // the install prerequisite leads the curriculum: it is the first
      // question every consumer brings (stylex-kernel-phase0 P0.7 —
      // one css entry; engine tooling optional for consumers' own use)
      { title: 'install', subtitle: 'the zero-tooling prerequisite', href: '/docs/install.html' },
      { title: 'theming & tokens', href: '/tokens.html' },
      { title: 'recipes', subtitle: 'where wrapping stops', href: '/docs/recipes.html' },
      { title: 'jx-pure', subtitle: 'the componentless face', href: '/docs/jx-pure.html' },
      { title: 'icons', subtitle: 'glyphs, slots, the pipeline', href: '/docs/icons.html' },
      { title: 'variant-grammar', subtitle: 'one ladder, four slots', href: '/docs/variant-grammar.html' },
      { title: 'density-2xs', subtitle: 'the pro-tool rung', href: '/docs/density-2xs.html' },
      { title: 'context & defaults', subtitle: 'the ambient style contract', href: '/docs/context-defaults.html' },
      { title: 'demo-standard', subtitle: 'one skeleton, six sections', href: '/docs/demo-standard.html' },
      { title: 'paged', subtitle: 'the print pipeline', href: '/docs/paged.html' },
      { title: 'patterns', subtitle: 'the composed pages', href: '/patterns.html' },
    ],
  },
  {
    id: 'components',
    label: 'Components',
    pages: [
      { title: 'all components', count: uiCount, href: '/docs/components.html' },
      ...docsComponentGroups.map(({ group, entries }) => ({
        title: group.label,
        count: entries.length,
        href: `/docs/components.html#${group.id}`,
      })),
    ],
  },
  {
    // protocol info; the installable inventory (incl. non-UI targets)
    // lives on the overview page
    id: 'registry',
    label: 'Registry',
    pages: [
      { title: 'registry overview', href: '/docs/registry.html' },
      { title: 'registry.json', href: '/r/registry.json' },
      { title: 'llms-txt', href: '/docs/llms-txt.html' },
    ],
  },
];

/* ── the reading chain (design D7: group order × registry order) ──── */

export interface FlatComponent {
  entry: CatalogEntry;
  groupId: string;
  groupLabel: string;
}

export const flatComponents: FlatComponent[] = docsComponentGroups.flatMap(
  ({ group, entries }) =>
    entries.map((entry) => ({ entry, groupId: group.id, groupLabel: group.label })),
);

export interface ComponentContext {
  entry: CatalogEntry;
  groupLabel: string;
  prev: FlatComponent | null;
  next: FlatComponent | null;
  /** same-group neighbors, NEAREST FIRST: -1, +1, -2, +2 (design D7) */
  related: FlatComponent[];
}

export function componentContext(name: string): ComponentContext | null {
  const idx = flatComponents.findIndex((f) => f.entry.name === name);
  if (idx < 0) return null;
  const flat = flatComponents[idx];
  // NEAREST FIRST (design D7): same-group peers by chain distance, ties
  // preferring the earlier side → -1, +1, -2, +2
  const related = flatComponents
    .map((f, i) => ({ f, i }))
    .filter(({ f, i }) => i !== idx && f.groupId === flat.groupId)
    .sort((a, b) => Math.abs(a.i - idx) - Math.abs(b.i - idx) || a.i - b.i)
    .slice(0, 4)
    .map(({ f }) => f);
  return {
    entry: flat.entry,
    groupLabel: flat.groupLabel,
    prev: idx > 0 ? flatComponents[idx - 1] : null,
    next: idx < flatComponents.length - 1 ? flatComponents[idx + 1] : null,
    related,
  };
}

/* ── misc surfaces the model owns ─────────────────────────────────── */

/** the registry overview's installable inventory: every non-UI item */
export const installTargets = CATALOG.filter((e) => e.type !== 'registry:ui');

/** antd taxonomy group ids in order (for section anchors + locks) */
export const groupIds = CATALOG_GROUPS.map((g) => g.id);

jx-pure additionally carries its own chapter under Sections (the componentless face) — it is the one install target that is also a standalone destination.

jixoai-ui ui.jixoai.com the jixoai design language

Theme

Brand hue

0°

Auto cycle · 24h