# Creating Custom Components

The following section provides information on creating your own custom components that appear in the UI Designer and can be used when creating a UI design for your application. First some background information is provided about the basic design of components and how they interact with the UI Designer.

## Overview

A UI designer project contains a set of .uidesign files. There is one for each design "view", for example the top-level visual container. There is also a .uidesign file (application.uidesign) for the application as a whole, which includes the AppUi.

A .uidesign file represents a data model and contains the configuration of a single container or form. The contents of each data model are the persistent state of a set of component instances. Each component instance can have properties, event bindings, and localized strings. Component instances come from the set of available components for a project; based on the selected SDK. Components are listed in the Palette of the UI Designer. Additional component instances are added as the user edits a UI design. Custom components created by a user will also appear in the UI Designer Palette.

Much of the functionality of the UI Designer is built on components, including determining compatibility across containers, rendering the simulated UI appearance, and generating source code. At the very least, components can be defined by property values, a source code template, and containment rules. Code may also be provided, either in JavaScript or Java, to implement user-defined behavior. However, more complex designs can be implemented into the creation of components.

##### Related Topics

- Custom Component Architecture
- Developing New Components