Skip to content

Commit a71d308

Browse files
committed
feat: update architectural guidelines for component organization and dependency management
1 parent 5511968 commit a71d308

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

.github/copilot-instructions.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,20 @@ You manage a strict PNPM Workspace.
2424
|---|---|---|---|
2525
| @object-ui/types | The Protocol | Pure JSON Interfaces (ComponentSchema, ActionSchema). | ZERO dependencies. No React code. |
2626
| @object-ui/core | The Engine | Schema Registry, Validation, Expression Evaluation (visible: "${data.age > 18}"). | No UI library dependencies. Logic Only. |
27-
| @object-ui/components | The UI Kit | Shadcn implementation of the Schema. | Stateless. Controlled by props only. |
27+
| @object-ui/components | The Atoms | Shadcn Primitives (Button, Badge, Card) & Icons. | Pure UI. No business logic. |
28+
| @object-ui/fields | The Inputs | Standard Field Renderers (Text, Number, Select). | Must implement FieldWidgetProps. |
29+
| @object-ui/layout | The Shell | Page Structure (Header, Sidebar, AppShell). | Routing-aware composition. |
30+
| @object-ui/plugin-* | The Widgets | Complex Views (Grid, Kanban, Map, Charts). | Heavy dependencies allowed here only. |
2831
| @object-ui/react | The Runtime | <SchemaRenderer>, useRenderer, useDataScope. | Bridges Core and Components. |
29-
| @object-ui/fields | The Registry | Standard Field Renderers & Registry. | Centralizes all field logic. |
30-
| @object-ui/layout | The Structure | Grid, Stack, Card, Dialog containers. | Handles responsiveness. |
3132
| @object-ui/data-* | The Adapters | Connectors for REST, ObjectQL, GraphQL. | Isolate ALL fetch logic. |
33+
34+
### 0. Architectural Strategy (Strict)
35+
**❌ Do NOT create a package for every component.**
36+
**✅ Group by Dependency Weight:**
37+
1. **Atoms (@object-ui/components):** Shadcn Primitives. Zero heavy 3rd-party deps.
38+
2. **Fields (@object-ui/fields):** Standard Inputs.
39+
3. **Layouts (@object-ui/layout):** Page Skeletons.
40+
4. **Plugins (@object-ui/plugin-*):** Heavy Widgets (>50KB) or specialized libraries (Maps, Editors, Charts).
3241
4. The JSON Protocol Specification (The "DNA")
3342
You must enforce a strict JSON structure. Every node in the UI tree follows this shape:
3443
// @object-ui/types

0 commit comments

Comments
 (0)