sort — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited sort (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Sortable column header utility with animated direction indicators. Cycles through asc → desc → null (unsorted). Built on Framer Motion.
import { Sort } from 'reablocks';
// also available
import { getNextDirection, SortDirection } from 'reablocks';| Prop | Type | Default | Description | ||
|---|---|---|---|---|---|
direction | `'asc' \ | 'desc' \ | null` | — | Current sort direction |
onSort | (direction: SortDirection) => void | — | Sort change callback | ||
disabled | boolean | — | Disable sorting | ||
icon | React.ComponentType<{ className?: string }> | DownArrowIcon | Sort direction icon | ||
neutralIcon | React.ComponentType<{ className?: string }> | — | Icon shown when unsorted | ||
className | string | — | Container CSS classes | ||
iconClassName | string | — | Direction icon CSS classes | ||
neutralIconClassName | string | — | Neutral icon CSS classes | ||
theme | SortTheme | — | Per-instance theme override | ||
children | ReactNode | — | Column header content |
const [direction, setDirection] = useState<SortDirection>(null);
<Sort direction={direction} onSort={setDirection}>
Column Name
</Sort>Clicking cycles: null → 'asc' → 'desc' → null
The ascending icon is the default icon rotated 180°. The descending icon is the default icon as-is.
import { getNextDirection } from 'reablocks';
getNextDirection(null); // 'asc'
getNextDirection('asc'); // 'desc'
getNextDirection('desc'); // null
getNextDirection('desc', 'asc', false); // 'asc' (canBeNull=false skips null)Signature: getNextDirection(direction?, defaultDirection='asc', canBeNull=true)
interface SortTheme {
base: string; // Container (cursor-pointer, flex, items-center)
disabled: string; // Disabled state
hasValue: string; // Disabled but has a direction value (cursor-not-allowed)
icon: {
base: string; // Icon base (size, fill, margin)
ascending: string; // Ascending modifier (rotate-180)
};
}~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.