Repository navigation
Release v4.24.0
Every component descriptor now says how a picker presents it and how a designer edits it on the surface, and the property-editor ids the Studio registry resolves are defined in the model. (part of #99)
Added
ComponentDescriptorgainscategory,icon(anIconReference),badge,keywordsanddesignMode.ComponentCategoryholds the eight categories of the spec (Navigation, Data display, Input, Actions, Layout, Feedback, Overlay, Forms); a package may add its own.ComponentDesignModeDescriptordeclares, as data, where a component's items are (itemsPath, aCollectionproperty), the "add" affordances and the floating item toolbar.availabilityandreadOnlyReasonare rule names, never functions; every edit is an ordinary collection edit, so undo/redo and the dirty state need nothing of their own.navigationDesignMode()andtoolbarDesignMode()build the actions of spec DM3.- The property-editor vocabulary (
PropertyEditorKind:text,number,boolean,enum,select,color,icon,list,reference,navigationTarget,renderingSlot,slice,inheritanceMode,template,sampleData,field,columnList, plus the structured kinds that already existed) andPropertyDescriptor.editorOptions(multiline,placeholder,unit,step,kinds,referencefilter,fieldKinds,tokensOnly). - Engine rules shared by every host:
validateComponentDescriptors(componentCategoryMissingerror,componentCategoryUnknownwarning,componentDesignModeInvalid,propertyEditorOptionsInvalid),matchComponentQuery(the picker filter: name/keyword substring, category by word start, highlight ranges, keyword hint),rankFrequentlyUsedComponents(top 6, count then recency) andcomponentBadge. All are asserted against the shared corpuscomponent-metadata-fixtures.json. - Every component of the core, Cratis.Components, PrimeReact and both blueprint packages (164 components) now has a descriptor with category, icon, keywords and display name; Topbar, Sidebar, Toolbar and the navigation bar declare a design mode.
validateComponentMetadata(bundle)checks a bundle (CMP1) and is run by a specification in each package and by a repository-level specification (registry.conformance) that enumerates all package registries. - The third-party fixture
Acme.Inspectionsdeclares a category, icon, keywords and design mode using only public packages; documentation inDocumentation/editing/descriptors.mdanddesign-time-extensions.md.
Changed
- Components that had no hand-written descriptor now have one with no editable properties (their name, category and icon), so a picker can list them. A package written before categories still loads: the category rule is checked by
validateComponentMetadata, not byvalidatePackageBundle.