# Components

Components are the raw building blocks for page design in Elements. Let's take a look at the different types of Components available.

### Built-in Components

Elements ships with a comprehensive range of Components that allow you to put together an entire website. They include everything from Headings, Images, Galleries, and layout tools, like Grid and Flex.

### Custom Components

If you know a bit of HTML you can create your own custom Components for use in your projects. These can be anything from a simple html snippet to a fully blown Component using the [Elements API](https://docs.realmacsoftware.com/elements-docs/elements-language), with custom UI controls. [Learn more about Custom Components](#custom-components).

Custom Components can only be shared via projects, the code is open and visible to anyone with that project. They are perfect for creating bespoke solutions for your project(s), or getting familiar with the [Elements API](https://docs.realmacsoftware.com/elements-docs/elements-language) before you migrate to building components like those built into Elements.

### Third-party Components

Third-party developers can use the [Elements API](https://docs.realmacsoftware.com/elements-docs/elements-language) to create full-blown Components that are on a par with the built-in Components — Yes, we use exactly the same API that is available to all users.

Third-party components will be distributed via the RapidWeaver [Elements Distribution Platform](https://docs.realmacsoftware.com/elements-docs/store/creators/addon-distribution) as Element Packs (.elementspack). These packs are shipped as highly optimised, encrypted bundles. The code cannot be modified or edited by users or third parties (exactly like the built-in Components).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.realmacsoftware.com/elements-docs/elements/components.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
