@arki/ui

archive

for @arki/[email protected] · Tier 1: the stack

React component library for ARKI apps: Base UI primitives styled with Tailwind v4 semantic tokens.

Version 0.1.5 archive

Install

bun add @arki/ui
Other package managers
npm install @arki/ui
pnpm add @arki/ui
yarn add @arki/ui

Release health for @arki/[email protected]

Doc examples

No example report was recorded for this version.

Open gaps

6 release checks fail · 1 gap was found by demos

  • checkfile-llms-txt
  • checkfile-agents-md
  • checkfile-agent-guide
  • checkreadme-h2-order
  • checkpkg-engines
  • checkfiles-ship-dist-docs
  • No portable Tailwind consumption contract: a consumer must @source the package's src by f… found by drop-studio

Used by demos

No demo uses this package yet.

Runtimes

No engines field, so no runtime requirement is declared.

Benchmarks

No benchmarks are published for this version.

README

React component library for ARKI apps: Base UI primitives styled with Tailwind v4 semantic tokens. Forms, overlays, navigation, data display, charts — one import per component.

Source-first package. @arki/ui ships TypeScript source (src/*.tsx) as its runtime entry plus .d.ts declarations. Your bundler compiles it: Vite, TanStack Start, Next.js and Bun all do. Plain Node without a bundler is not supported.

Installation

bun add @arki/ui @arki/design-systems @arki/theme react react-dom

Peer dependencies: react and react-dom 19.

Setup

Components read semantic tokens (--background, --primary, --muted, …) from a design system. Pick one from @arki/design-systems and let Tailwind see the component classes:

/* src/styles/global.css */
@import 'tailwindcss';
@import '@arki/design-systems/atelier/fonts.css';
@import '@arki/design-systems/atelier/tokens.css';
@import '@arki/design-systems/atelier/theme-bridge.css';
 
/* Tailwind must scan the component sources; adjust the path to where the package is installed. */
@source '../node_modules/@arki/ui/src';

Usage

import { Button } from '@arki/ui/button';
import { Card, CardContent, CardHeader, CardTitle } from '@arki/ui/card';
import { cn } from '@arki/ui/cn';
 
export function Example() {
  return (
    <Card className={cn('max-w-md')}>
      <CardHeader>
        <CardTitle>Tidal Mug</CardTitle>
      </CardHeader>
      <CardContent>
        <Button>Add to cart</Button>
      </CardContent>
    </Card>
  );
}

Every component is its own subpath (@arki/ui/dialog, @arki/ui/select, @arki/ui/table, @arki/ui/chart, …). See the exports map in package.json for the full list.

  • @arki/design-systems — tokens, Tailwind bridge and fonts for atelier, workbench, arena.
  • @arki/theme — light / dark / system provider and no-flash script.
  • @arki/icons — icon sets behind one React entry point.
  • @arki/react-hooks — the hooks the components use, reusable on their own.

Benchmarks

Bundle size of the same components from @arki/ui and from popular React component libraries. Mantine, MUI and Radix Themes are the common full-featured choices.

Measured on Node 22.13.1 (Darwin 27.0.0 arm64, Apple M2 Max (12 cores)) · @arki/bench 0.0.1 (mitata 1.0.34) · publish, seed 1592639052 · commit 34146416b3 (uncommitted changes) · 2026-10-13.

Versions: @arki/bench 0.0.1 · @arki/ui 0.1.4 · @mantine/core 7.17.4 · @mui/material 9.5.0 · @radix-ui/themes 3.3.0 · mitata 1.0.34.

Button, JavaScript only

Rows marked different contract do other work: they are measured and shown, never ranked.

LibraryVersionJS+CSS gzipbrotlirawBudget (gzip)vs @arki/ui
@arki/ui0.1.412.9 kB11.5 kB39.4 kB14.5 kBbaseline
@mantine/core7.17.412.1 kB10.7 kB40.5 kB—different contract: ships a separate stylesheet that this row does not count
@mui/material9.5.037.7 kB33.6 kB110 kB—different contract: styles are injected at runtime by Emotion (CSS-in-JS), not a stylesheet
@radix-ui/themes3.3.05.32 kB4.79 kB17 kB—different contract: ships a separate stylesheet that this row does not count

Dialog, JavaScript only

Rows marked different contract do other work: they are measured and shown, never ranked.

LibraryVersionJS+CSS gzipbrotlirawBudget (gzip)vs @arki/ui
@arki/ui0.1.432 kB28.6 kB97.6 kB35.5 kBbaseline
@mantine/core7.17.420.5 kB18.2 kB66.4 kB—different contract: ships a separate stylesheet that this row does not count
@mui/material9.5.040 kB35.4 kB117 kB—different contract: styles are injected at runtime by Emotion (CSS-in-JS), not a stylesheet
@radix-ui/themes3.3.019.3 kB17.3 kB58.3 kB—different contract: ships a separate stylesheet that this row does not count

Form set (Button, Input, Select, Checkbox), JavaScript only

Rows marked different contract do other work: they are measured and shown, never ranked.

LibraryVersionJS+CSS gzipbrotlirawBudget (gzip)vs @arki/ui
@arki/ui0.1.457.5 kB50.4 kB169 kB63.5 kBbaseline
@mantine/core7.17.443 kB38 kB140 kB—different contract: ships a separate stylesheet that this row does not count
@mui/material9.5.068.5 kB59.5 kB213 kB—different contract: styles are injected at runtime by Emotion (CSS-in-JS), not a stylesheet
@radix-ui/themes3.3.043.5 kB38.4 kB133 kB—different contract: ships a separate stylesheet that this row does not count

Button, complete styled

LibraryVersionJS+CSS gzipbrotlirawBudget (gzip)vs @arki/ui + Tailwind CSS
@arki/ui + Tailwind CSS0.1.417 kB15 kB58.2 kB18.5 kBbaseline
@mantine/core + styles.css7.17.444.3 kB36.5 kB338 kB—2.6× larger [2.6–2.6]
@mui/material (Emotion)9.5.037.7 kB33.6 kB110 kB—2.2× larger [2.2–2.2]
@radix-ui/themes + styles.css3.3.086.1 kB54.4 kB731 kB—5.1× larger [5.1–5.1]

Dialog, complete styled

LibraryVersionJS+CSS gzipbrotlirawBudget (gzip)vs @arki/ui + Tailwind CSS
@arki/ui + Tailwind CSS0.1.437 kB32.9 kB121 kB41 kBbaseline
@mantine/core + styles.css7.17.452.7 kB44.1 kB363 kB—1.4× larger [1.4–1.4]
@mui/material (Emotion)9.5.040 kB35.4 kB117 kB—1.08× larger [1.08–1.08]
@radix-ui/themes + styles.css3.3.0100 kB66.9 kB773 kB—2.7× larger [2.7–2.7]

Form set (Button, Input, Select, Checkbox), complete styled

LibraryVersionJS+CSS gzipbrotlirawBudget (gzip)vs @arki/ui + Tailwind CSS
@arki/ui + Tailwind CSS0.1.463.2 kB55.4 kB197 kB69 kBbaseline
@mantine/core + styles.css7.17.475.2 kB63.8 kB437 kB—1.2× larger [1.2–1.2]
@mui/material (Emotion)9.5.068.5 kB59.5 kB213 kB—1.08× larger [1.08–1.08]
@radix-ui/themes + styles.css3.3.0124 kB88 kB848 kB—2.0× larger [2.0–2.0]

Notes

  • Styling is not equal, so there are two kinds of group. JavaScript only counts the components without styles; a rival that needs a stylesheet or styles itself at runtime is measured but never ranked (differs). complete styled adds the CSS a user must also ship, and ranks everything.
  • @arki/ui is Base UI primitives styled with Tailwind classes. Its CSS comes from your app Tailwind build. In the complete styled groups it is a Tailwind v4 build of the classes found in the measured component files (found by Tailwind’s own scanner), with preflight and the workbench tokens and theme bridge. Fonts are left out. A real app adds the classes of its own code on top.
  • Mantine and Radix Themes ship one stylesheet for the whole library (styles.css), not a per-component one, so their complete rows include the CSS of every component. MUI styles components at runtime with Emotion, so its JavaScript includes the styling engine and it has no stylesheet.
  • Mantine Modal and MUI/Radix Dialog are the nearest equivalents of the @arki/ui Dialog parts.

Reproduce: bunx arki-bench run --profile publish in the package directory.

License

MIT

Public imports

This version has no API index.