# Creating a full viewport component
You can create a Frontend component that takes up the full viewport of a browser (also known as full-bleed). Let's look at an example of how to do this.
Below is an example of a hero Frontend component. The image can either be the full width of the grid or the full width of the viewport.
| Full width of grid (12-column layout element) | Full width of viewport (full-bleed) |
| :--- | :--- |
|  |  |
## Build a full-width component
As always, we start with the schema. We will create a text field and a toggle so that Studio users can turn our full-bleed image feature on and off. We have also configured a maximum use per page; as a result, you can add the image only once to a page.
```json title="schema.json"
{
"tasticType": "frontastic/examples/hero",
"name": "Hero",
"icon": "image",
"category": "content",
"maxUsePerPage": 1,
"schema": [
{
"name": "Content",
"fields": [
{
"label": "Image",
"field": "image",
"type": "media"
},
{
"label": "Full-bleed?",
"field": "isFullBleed",
"type": "boolean",
"required": true,
"default": true
},
{
"label": "Aspect ratio",
"field": "aspect",
"type": "enum",
"default": "16/9",
"values": [
{
"value": "original",
"name": "Original"
},
{
"value": "16/9",
"name": "16:9"
},
{
"value": "4/3",
"name": "4:3"
},
{
"value": "21/9",
"name": "21:9"
}
]
}
]
}
]
}
```
Upload this schema to the Studio.
Next, we need to create our `index.tsx` file to receive the information from the schema.
```javascript title="index.tsx"
import React from 'react';
import Hero from 'components/Hero';
const HeroTastic = ({ data }) => {
return