Diese enthalten strukturelle/headless Primitive und lokale Hilfsmittel.
### Steuerelemente
`controls/` enthält Composables für Eigenschafts-Panels und Editor-Steuerelemente:
-`usePosition`
-`useLayout`
-`useAppearance`
-`useTypography`
-`useExport`
-`useFillControls`
-`useStrokeControls`
-`useEffectsControls`
-`useNodeProps`
-`usePropScrub`
### Variablen
`VariablesEditor/` enthält Composables und Zustandsverdrahtung für die Variablen-Domäne.
### Auswahl
`selection/` enthält auswahlabgeleiteten Editor-Zustand und Fähigkeiten.
### Kontext
`context/` enthält Editor-Injektions-Hilfsmittel:
-`EDITOR_KEY`
-`provideEditor`
-`useEditor`
### Intern
`internal/` enthält übergreifende Utilities, die nicht als primäre headless Primitive gedacht sind.
## Philosophie der öffentlichen API
### Composables bevorzugen
Wenn es hauptsächlich um Kontrolllogik, Zustandsableitung oder Editor-Aktionen geht, sollte ein Composable verwendet werden.
### Headless Primitive für bedeutungsvolle Struktur
Komponentenwurzeln verwenden, wenn sie Struktur, Kinder, Slots oder Kontext koordinieren.
Beispiele:
-`PageListRoot`
-`PropertyListRoot`
-`ToolbarRoot`
### Breite Kontext-Dump-Slots vermeiden
Fokussierte Slot-Props oder direkte Composable-Verwendung gegenüber großen `v-slot="ctx"`-Payloads bevorzugen.
## Verantwortlichkeit App vs. SDK
### SDK übernimmt
- Editor-Integration
- wiederverwendbare headless Logik
- wiederverwendbare UI-Struktur ohne Styling-Annahmen
- Canvas-Rendering-Integration
### App übernimmt
- Styling
- Layout-Shells
- Routing
- Produkt-Datei-Flows
- Toasts, Menüs und app-spezifische UX
## Praktische Faustregel
Wenn ein Stück Logik in einer anderen OpenPencil-basierten App wiederverwendet werden könnte, ohne App-Styling mitzubringen, gehört es wahrscheinlich in `@open-pencil/vue`.