Skip to content
Back to skills

Orglet Ui

ASecurity

Use when building, changing or reviewing React UI in a project that depends on @codepawlhq/orglet-ui. Picks the kit component for each control, shows where its reference page is, and lists the rules the kit's design follows.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
ai-agentsgoreactnodegit

Works with

  • terminal
  • cli

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add codepawl/orglet --skill orglet-ui --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Orglet Ui?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Orglet Ui
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/codepawl-orglet-ui-orglet/badge)](https://www.skillsdirectory.com/skills/codepawl-orglet-ui-orglet)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: orglet-ui
description: Use when building, changing or reviewing React UI in a project that depends on @codepawlhq/orglet-ui. Picks the kit component for each control, shows where its reference page is, and lists the rules the kit's design follows.
---

# OUI (Orglet UI)

OUI is `@codepawlhq/orglet-ui`, a small set of accessible React 19 components and the `--org-` tokens they read. Use one of
its components before writing a raw `<button>`, `<input>`, `<select>`, dialog, menu, tooltip or toast.

## Set up

```tsx
import '@codepawlhq/orglet-ui/tokens.css'; // once, in the application's entry file
import { Button, Select, showToast } from '@codepawlhq/orglet-ui';
```

Each component imports its own stylesheet, so the bundler must handle CSS imports (Vite does). Theme with
`data-theme="light" | "dark" | "system"` on the root element. Make the kit match an application by setting `--org-`
tokens after importing `tokens.css`, never by overriding `.org-` classes.

## Pick a component

Read the page of a component before using it: it has when to use it, when not to, an example, the props and the
accessibility notes. In an installed package the pages are in `node_modules/@codepawlhq/orglet-ui/docs/components/`;
`llms.txt` and `llms-full.txt` beside them hold the same content for a single read.

<!-- components:start -->
| Need | Use | Page |
|---|---|---|
| Pips, the kit's own icons: the basics an application needs, drawn on one grid with one stroke. | `AlertIcon`, `ArrowLeftIcon`, `ArrowRightIcon`, `ArrowUpRightIcon`, `BellIcon`, `BookIcon`, `CalendarIcon`, `CheckIcon`, `ChevronDownIcon`, `ChevronLeftIcon`, `ChevronRightIcon`, `ChevronUpIcon`, `CloseIcon`, `CodeIcon`, `CopyIcon`, `DownloadIcon`, `ErrorIcon`, `EyeIcon`, `FileIcon`, `FileTextIcon`, `GitHubIcon`, `InfoIcon`, `MenuIcon`, `MinusIcon`, `MonitorIcon`, `MoonIcon`, `MoreHorizontalIcon`, `MoreVerticalIcon`, `PackageIcon`, `PencilIcon`, `PlusIcon`, `SearchIcon`, `SettingsIcon`, `SuccessIcon`, `SunIcon`, `TrashIcon`, `UserIcon` | [Icons](../../docs/components/Icons.md) |
| A button in four looks, or a square holding one icon. | `Button` | [Button](../../docs/components/Button.md) |
| A menu of a row's actions behind one icon button, with an in-panel question for destructive items. | `RowMenu` | [RowMenu](../../docs/components/RowMenu.md) |
| One choice out of a few small icon buttons, such as the tool or colour of a drawing bar. | `ToolbarToggleGroup` | [ToolbarToggleGroup](../../docs/components/ToolbarToggleGroup.md) |
| A tick for picking items out of a list or confirming something once, with a label and optional description. | `Checkbox` | [Checkbox](../../docs/components/Checkbox.md) |
| A colour panel with an area, a hue slider, a hex field, presets and the person's saved colours. | `ColorPicker`, `normalizeHex` | [ColorPicker](../../docs/components/ColorPicker.md) |
| A name that is renamed where it is shown: text at rest, an input when clicked. | `EditableText` | [EditableText](../../docs/components/EditableText.md) |
| A single-line text input and a multi-line textarea with a shared invalid state and shake. | `Input`, `Textarea` | [Field](../../docs/components/Field.md) |
| A field's title with a small leading icon and an optional required asterisk drawn outside its name. | `FieldLabel` | [FieldLabel](../../docs/components/FieldLabel.md) |
| A field for an amount of money, with the currency symbol before it and its code after it. | `MoneyInput` | [MoneyInput](../../docs/components/MoneyInput.md) |
| One choice out of a few labelled options, each with an optional description. | `RadioGroup` | [RadioGroup](../../docs/components/RadioGroup.md) |
| A single-choice dropdown with groups, details, icons and full keyboard support. | `Select` | [Select](../../docs/components/Select.md) |
| An on/off switch for a setting that applies at once, bare or as a titled settings row. | `Switch`, `SwitchField` | [Switch](../../docs/components/Switch.md) |
| Tabs on a page, as quiet text buttons, with a panel for each. | `Tabs`, `TabPanel` | [Tabs](../../docs/components/Tabs.md) |
| A panel that floats beside its trigger, flips above when there is no room and closes on Escape. | `AnchoredPopover` | [AnchoredPopover](../../docs/components/AnchoredPopover.md) |
| Ask one yes-or-no question in a small modal and await the answer, from anywhere in the application. | `confirmAction`, `Confirmer` | [Confirm](../../docs/components/Confirm.md) |
| The pieces to make your own Radix dialog behave like the kit's: backdrop, Escape order and focus return. | `DialogOverlay`, `keepOpenForPopup`, `OPEN_POPUP_SELECTOR`, `useReturnFocus` | [DialogOverlay](../../docs/components/DialogOverlay.md) |
| A centred panel for an editor or a list, with a header, actions and a body that scrolls on its own. | `Drawer` | [Drawer](../../docs/components/Drawer.md) |
| A small button that reveals technical detail such as ids and paths on hover, focus or click. | `InfoTip` | [InfoTip](../../docs/components/InfoTip.md) |
| The settings layout: tabs on the left, the open section on the right, with an optional Save footer. | `TabbedDialog`, `TabbedFormDialog`, `DialogTabs` | [TabbedDialog](../../docs/components/TabbedDialog.md) |
| A short text label for a control, shown on hover and keyboard focus. | `Tooltip` | [Tooltip](../../docs/components/Tooltip.md) |
| A large Quick Look style dialog for looking at one document, file or diff. | `Viewer` | [Viewer](../../docs/components/Viewer.md) |
| A bar for work whose size is known, such as 3 of 12 files. | `Progress` | [Progress](../../docs/components/Progress.md) |
| The only shape a wait may take: bars, blocks and circles where content will be. | `Skeleton`, `SkeletonText`, `SkeletonGroup` | [Skeleton](../../docs/components/Skeleton.md) |
| A small status glyph for the left of a title, with a different shape for every state. | `StatusMark` | [StatusMark](../../docs/components/StatusMark.md) |
| Short messages shown above everything, called from anywhere, with one optional action. | `showToast`, `Toaster` | [Toaster](../../docs/components/Toaster.md) |
| A file as a same-width card with its kind's icon, name and size, plus helpers to read a file's kind and size. | `Attachment`, `fileKind`, `formatFileSize` | [Attachment](../../docs/components/Attachment.md) |
| A small pill for a count or a short state word. | `Badge` | [Badge](../../docs/components/Badge.md) |
| A quiet rounded surface that groups content, with an optional header. | `Card` | [Card](../../docs/components/Card.md) |
| A command to paste into a terminal, on a quiet card with a copy button. | `CommandBlock` | [CommandBlock](../../docs/components/CommandBlock.md) |
| A section's title with its description beneath and the section's own actions on the right. | `PanelHeading` | [PanelHeading](../../docs/components/PanelHeading.md) |
| Reactions thrown at one message: a trigger with a floating row of faces, and badges on the bubble's corner. | `ReactionBar`, `ReactionPicker`, `ReactionBadges` | [ReactionBar](../../docs/components/ReactionBar.md) |
| Joins class names and lets the caller's class win over the kit's. | `cn` | [cn](../../docs/components/cn.md) |
<!-- components:end -->

## Rules

1. **Text comes in as props.** The kit translates nothing. Every control that needs a name for a screen reader takes
   it as a required prop (`label`, `aria-label`, `closeLabel`): pass a real, translated string.
2. **Colours, radii and timings are `--org-` tokens.** No hex values in component code. A new colour is a token.
3. **`className` is applied last**, so an application overrides without `!important`. Several looks of one component
   are a `variant` prop.
4. **The shape says what a control does.** Two states, on and off: `Switch`. Picking from a list or confirming once:
   `Checkbox`. One of a few: `RadioGroup`, `Select` or `ToolbarToggleGroup`.
5. **A wait is a `Skeleton`** in the shape of what is coming. The kit has no spinner. `Progress` is for work whose
   size is known.
6. **A state leads with a mark.** Success, failure, waiting and warning each get a `StatusMark` whose shape differs,
   in the state's colour. Colour alone is never the only difference.
7. **No separator lines and no alert with a coloured left border.** Separate with spacing, grouping or a quiet
   background (`Card`).
8. **One primary action per place.** The rest step down to `outline` and `ghost`. Icons sit left of the text.
9. **Icons come from the kit first.** Its own set, Pips (`CheckIcon`, `CopyIcon`, `SearchIcon` and the rest, see the
   Icons page), is decorative by default and sits left of the text. Another icon set still works anywhere the kit
   takes an icon.
10. **A hover label is a `Tooltip`**, not a `title` attribute. Detail a person may copy goes in an `InfoTip`.
11. **A close button belongs to a centred dialog** (`Drawer`, `Viewer`, `TabbedDialog`). A panel or page is left by
    navigating or by the toggle that opened it.
12. **Do not rebuild keyboard handling.** Focus return, Escape order inside dialogs, arrow keys and roles are part of
    each component. If one is missing something, fix the component.

## When nothing fits

Compose existing components first. If a control is still missing and would make sense in an application that is not
yours, propose it for the kit: its own file and stylesheet, classes that start with `org-`, tokens with fallbacks,
text as props, a keyboard and axe test, stories, and a page in `docs/components/`. The rules are in the package
README under "The rules a component here follows".

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…