Building Complex Components
Learn how real Elements components combine properties, hooks, collections, and templates — through guided tours of the open-source Core Pack.
What Makes a Component Complex?
com.realmacsoftware.tabs/
├── info.json # Manifest: identifier, title, group, and icon name
├── properties.config.json # Source property definitions, using shared globalControl references
├── properties.json # Generated inspector controls, built from properties.config.json
├── hooks.source.js # Source build-time logic — the file you actually edit
├── hooks.js # Generated hooks bundle that Elements runs at build time
├── icon.pdf # Component icon shown in the editor
├── paletteIcon.pdf # Smaller icon shown in the component palette
├── collections/
│ └── tabs/ # Defines the repeatable "tab" items users add in the inspector
│ ├── info.json # The collection's identifier and title
│ ├── defaults.json # The three starter tabs every new Tabs component begins with
│ └── properties.json # Inspector controls for each individual tab item
└── templates/
├── index.html # Main markup: loops the tabs and renders a dropzone per panel
├── alpine.html # Portal that registers the shared Alpine.js tabs behaviour once
└── editor-ui.css # Edit-mode-only CSS that reveals whichever panel is being editedThe Three Runtimes You Write For
Guide Map
Guide
What you'll learn
Dissects
Related Documentation
Last updated
Was this helpful?

