# Developer guide for `` component
### Folder Structure
From Laravel Application
- resources
- js
- core
- components
- tabs
- Tab.vue
### Register
For `` component. We had register this component in ```resources/js/core/components/coreApp.js``` file
```js
Vue.component('app-tab', require('./components/tabs/Index').default);
```
### Props
1. tabs
- `type` : `Array`
- `required` : `true`
2. icon
- `icon` : `String`
- `required` : `true`
2. type
- `icon` : `String`
- `default` : `vertical`
### Usage
Available type for ``
1. tabs
- `Array of objects`. contains with single tab objects
like
```
{
"name": "delivery",
"title": "delivery setting",
"component": "delivery-setting",
"props": "Example string",
"permission": ""
}
```
1. tabs - if type is horizontal
- `Array of objects`. contains with single tab objects
like
```
{
"name": "delivery",
"icon": "phone-call",
"component": "delivery-setting",
"props": "Example string",
"permission": ""
}
```
2. icon - if type is vertical
- Tabs icon
### Usages
In the below given how to use `` component for vertical.
```
```
### Usages
In the below given how to use `` component for horizontal.
```
```
### Methods
1. `loadComponent` for load Each single tab component
- /* in your tab components you can receive a props `id` and if you send props for component can receive that `props` also.
###Update Notifications
If you want to add a header button you just need to send
```
"headerButton": {
"label": "Add new template"
},
```
in app tab objects like:
```
{
"name": "details",
"title": "details setting",
"component": "wizard-details",
"props": ['A', 'B', 'C'],
"permission": false,
"headerButton": {
"label": 'Add New',
"class": 'btn btn-success'
}
},
```
Then when button was clicked it send a global event. You can received by
```
this.$hub.$on('headerButtonClicked-' + this.id, (component) => {
console.log(component);
this.showModal = true;
console.log('Event Triggered');
})
```
Example usages:
```
I am a setting for testing dynamic tab and wizard - WizardTemplate