diff --git a/.agents/skills/webjs/references/ui-kit.md b/.agents/skills/webjs/references/ui-kit.md index ccebddb9e..bc6958bd2 100644 --- a/.agents/skills/webjs/references/ui-kit.md +++ b/.agents/skills/webjs/references/ui-kit.md @@ -81,9 +81,9 @@ So the loop is: `add` the component, then query `ui ` (MCP) or ## Inventory (run `npx webjsdev ui list` or the MCP `ui` tool for the authoritative, current set) **Tier 1 (class helpers):** accordion, alert, aspect-ratio, avatar, badge, -breadcrumb, button, card, checkbox, collapsible, input, kbd, label, -native-select, pagination, popover, progress, radio-group, separator, skeleton, -switch, table, textarea. +breadcrumb, button, card, checkbox, collapsible, empty, field, input, kbd, +label, native-select, pagination, popover, progress, radio-group, separator, +skeleton, spinner, switch, table, textarea. **Tier 2 (custom elements, own their ARIA):** alert-dialog, dialog, dropdown-menu, hover-card, sonner, tabs, tooltip, plus toggle and toggle-group @@ -93,6 +93,17 @@ dropdown-menu, hover-card, sonner, tabs, tooltip, plus toggle and toggle-group - A helper is a function, so compose it: `class=${buttonClass({ variant: 'outline' })}`. The unquoted `${...}` is a normal `html` attribute hole. +- The three states a screen owes its user each have a primitive, so do not hand-roll + them. A list or table with no rows renders `empty` (title as a real heading, a + description saying what to do next, and the create action). A form field is + `field` (`fieldClass()` holding a `