docyrus-app-ui-design
23
总安装量
22
周安装量
#16399
全站排名
安装命令
npx skills add https://github.com/docyrus/agent-skills --skill docyrus-app-ui-design
Agent 安装分布
opencode
22
gemini-cli
22
claude-code
22
github-copilot
22
amp
22
codex
22
Skill 文档
Docyrus App UI Design
Build polished, accessible UI components for Docyrus React applications using a curated set of 140+ pre-built components from shadcn, diceui, animate-ui, docyrus-ui, and reui libraries.
Component Library Preferences
Primary component libraries (in order of preference):
- shadcn â 43 core components (buttons, forms, dialogs, tables, charts)
- diceui â 42 advanced components (data grids, kanban, file upload, color picker)
- animate-ui â 21 animated components (sidebar, dialogs, cards, menus)
- docyrus â 32 Docyrus-specific components (awesome dialog, data grid, form fields, value renderers, editable record detail, gantt, notifications)
- reui â 2 utility components (file upload, sortable)
Total available: 140 components
Critical Design Rules
- Always check preferred components first â Before implementing any new component, search the preferred components reference to find an existing match.
- Use AwesomeCard for dashboards â Unless the user specifically requests a different card design, use
@docyrus/ui-awesome-cardfor dashboard stat cards and metrics. - Use animate-ui Sidebar for layouts â Unless the user requests a different layout, use
@animate-ui/sidebarfor app navigation. - Prefer Recharts for charting â Use Recharts as the first choice for all data visualization needs. shadcn Chart components are built on Recharts.
- Icon library preference order:
- First choice: hugeicons
- Second choice: fontawesome light
- Third choice: lucide-icons
- Use AwesomeDialog for item create forms â Use the AwesomeDialog system for all item creation and editing forms. Choose the container type based on form complexity:
- Small/simple forms â
container="sheet"withside="right" - Long/complex forms â
container="modal"orcontainer="drawer"
- Small/simple forms â
- Item detail page strategy â Choose the right container based on item complexity:
- Large items (e.g. projects, workspaces) â Create a dedicated new page with full layout
- Small items (e.g. tasks, comments, contacts) â Use AwesomeDialog with
container="sheet"andside="right"as a right drawer
- Always use TanStack Form + Docyrus form system â All forms must use TanStack Form with the Docyrus
DynamicFormFieldsystem and@docyrus/ui-form-fields. Never use plain HTML forms or React Hook Form directly. - Use EditableRecordDetail for inline editing â When showing item detail views, use
EditableRecordDetailwithEditableRecordDetailFieldto allow users to edit fields inline without opening a full form. Add an “Edit All” button in the detail page header to switch to a full form editing experience.
Quick Start Patterns
Item Create Form with AwesomeDialog (Small Form â Sheet)
import {
AwesomeDialog, AwesomeDialogHeader, AwesomeDialogBody, AwesomeDialogFooter
} from '@docyrus/ui/components/awesome-dialog'
<AwesomeDialog open={open} onOpenChange={setOpen} container="sheet" side="right" size="default">
<AwesomeDialogHeader title="Create Task" icon="far-plus" />
<AwesomeDialogBody>
<form.Field name="title">{(field) => <TextFormField field={field} label="Title" />}</form.Field>
<form.Field name="status">{(field) => <SelectFormField field={field} label="Status" />}</form.Field>
</AwesomeDialogBody>
<AwesomeDialogFooter>
<Button variant="outline" onClick={() => setOpen(false)}>Cancel</Button>
<Button onClick={handleSubmit}>Create</Button>
</AwesomeDialogFooter>
</AwesomeDialog>
Item Create Form with AwesomeDialog (Long Form â Modal)
<AwesomeDialog open={open} onOpenChange={setOpen} container="modal" size="lg" fullscreenable>
<AwesomeDialogHeader title="Create Project" icon="far-folder-plus" />
<AwesomeDialogBody>
{/* Long form with many fields â body scrolls, header/footer stay fixed */}
</AwesomeDialogBody>
<AwesomeDialogFooter>
<Button variant="outline" onClick={() => setOpen(false)}>Cancel</Button>
<Button onClick={handleSubmit}>Create Project</Button>
</AwesomeDialogFooter>
</AwesomeDialog>
Item Detail in AwesomeDialog (Small Item â Right Drawer)
<AwesomeDialog open={open} onOpenChange={setOpen} container="sheet" side="right" size="lg" fullscreenable>
<AwesomeDialogHeader
title="Task Detail"
description="Review and edit task fields inline"
headerButtons={<Button variant="outline" size="sm" onClick={switchToFullForm}>Edit All</Button>}
/>
<AwesomeDialogBody>
<EditableRecordDetail fields={fields} record={record} onSave={handleSave}>
<EditableRecordDetailField slug="title" />
<EditableRecordDetailField slug="status" />
<EditableRecordDetailField slug="assignee" />
<EditableRecordDetailField slug="due_date" />
</EditableRecordDetail>
</AwesomeDialogBody>
</AwesomeDialog>
Inline Editing with EditableRecordDetail
import {
EditableRecordDetail, EditableRecordDetailField
} from '@docyrus/ui/components/editable-record-detail'
<EditableRecordDetail fields={fields} record={record} onSave={handleSave} onCancel={handleCancel}>
<div className="space-y-3">
<EditableRecordDetailField slug="company_name" />
<EditableRecordDetailField slug="status" />
<EditableRecordDetailField slug="priority" />
<EditableRecordDetailField slug="email" />
</div>
</EditableRecordDetail>
{/* ActionBar appears automatically when fields are changed â shows "N fields changed" with Save/Cancel */}
Dashboard with AwesomeCard
import { AwesomeCard } from '@/components/ui/awesome-card'
import { HugeIcon } from '@/components/ui/icons'
<AwesomeCard
title="Total Revenue"
value="$124,500"
icon={<HugeIcon name="dollar-circle" />}
trend={{ value: 12.5, direction: 'up' }}
/>
App Layout with animate-ui Sidebar
import { Sidebar, SidebarContent, SidebarHeader } from '@/components/ui/sidebar'
<Sidebar>
<SidebarHeader>
<AppLogo />
</SidebarHeader>
<SidebarContent>
<NavItems />
</SidebarContent>
</Sidebar>
Data Table with diceui
import { DataTable } from '@/components/ui/data-table'
<DataTable
columns={columns}
data={projects}
enableFiltering
enableSorting
enablePagination
/>
Charts with shadcn + Recharts
import { ChartContainer, ChartTooltip } from '@/components/ui/chart'
import { LineChart, Line, XAxis, YAxis } from 'recharts'
<ChartContainer>
<LineChart data={chartData}>
<XAxis dataKey="month" />
<YAxis />
<ChartTooltip />
<Line type="monotone" dataKey="revenue" />
</LineChart>
</ChartContainer>
Component Selection Strategy
When the user requests a UI component:
- Search the reference â Check
references/preferred-components-catalog.mdfor existing components by name, category, or functionality - Match by use case â If multiple options exist, prefer:
- shadcn for basic/common components
- diceui for advanced/specialized components
- animate-ui for components requiring animation/transitions
- docyrus for Docyrus-specific data handling
- Install the component â Use the registry install command from the catalog
- Reference the docs â Point to the component’s doc file for detailed usage
Installation Pattern
All components follow the shadcn registry pattern:
# shadcn components
pnpm dlx shadcn@latest add button
# diceui components
pnpm dlx shadcn@latest add @diceui/data-table
# animate-ui components
pnpm dlx shadcn@latest add @animate-ui/sidebar
# docyrus components
pnpm dlx shadcn@latest add @docyrus/ui-awesome-card
# reui components
pnpm dlx shadcn@latest add @reui/file-upload-default
Common Use Cases
| Use Case | Preferred Component | Library |
|---|---|---|
| Item create forms | AwesomeDialog (sheet/modal/drawer) | docyrus |
| Item detail (small) | AwesomeDialog (sheet right) | docyrus |
| Item detail (large) | Dedicated page | â |
| Inline record editing | EditableRecordDetail | docyrus |
| Dashboard cards | AwesomeCard | docyrus |
| App navigation | Sidebar | animate-ui |
| Data tables | DataTable | diceui |
| Editable grids | Data Grid | docyrus |
| Forms | Form Fields + TanStack Form | docyrus |
| File upload | File Upload | diceui |
| Charts | Chart + Recharts | shadcn |
| Confirmation dialogs | Alert Dialog | animate-ui |
| Date picker | Date Time Picker | docyrus |
| Color picker | Color Picker | diceui |
| Kanban board | Kanban | diceui |
| Gantt chart | Gantt | docyrus |
| Timeline | Timeline | diceui |
| Notifications | NotificationStack | docyrus |
| Search | SearchInput | docyrus |
| Location input | PlaceAutocomplete | docyrus |
| Map display | Map | docyrus |
| Tree hierarchy | TreeView | docyrus |
References
Read these files for detailed component information:
references/preferred-components-catalog.mdâ Complete catalog of all 140 components with descriptions, install commands, and doc pathsreferences/component-selection-guide.mdâ Decision trees and guidelines for choosing the right component for each use casereferences/icon-usage-guide.mdâ Icon library integration patterns and usage examples for hugeicons, fontawesome, and lucide
Integration with docyrus-app-dev
This skill works alongside docyrus-app-dev for full-stack app development:
- docyrus-app-dev handles data fetching, collections, queries, auth
- docyrus-app-ui-design handles component selection, UI design, layout
When building a feature:
- Use
docyrus-app-devto set up data queries and mutations - Use
docyrus-app-ui-designto select and implement UI components - Combine them for complete, polished features