# General Components
## Contents
- [Bar View](#bar%20view)
- [Button Styles](#button%20syles)
## Bar View
This is a progress bar that can be set in various states.
[Full documentation](https://quickcomponents.lucasdesouza.net/barview/)
```swift
VStack {
BarView(value: 22, max: 30)
BarView(value: 35, max: 30) // Notice that this bar overflows its max. This is why there is a indicator on the bar.
BarView(value: 30, max: 30)
BarView(value: 22, max: 30, showLabel: nil, color: .green)
BarView(value: 22, max: 30, showLabel: true, color: nil)
BarView(value: 22, max: 30, showLabel: true, color: .red)
}
```
You can also set the bar based on percentages:
```swift
VStack {
BarView(percent: 25)
BarView(percent: 50)
BarView(percent: 75)
BarView(percent: 100)
}
```
## Button Styles
Simple button styling to make styling your buttons quicker. This feature is still not very customizable but will be enhanced in later versions.
**Full documentation links**
- [Primary Button](https://quickcomponents.lucasdesouza.net/PrimaryButton/)
- [Secondary Button](https://quickcomponents.lucasdesouza.net/SecondaryButton/)
- [Disabled Button](https://quickcomponents.lucasdesouza.net/DisabledButton/)
There are three button styles available
```swift
Button(action: {}){
Text("Secondary")
}.buttonStyle(PrimaryButton())
Button(action: {}){
Text("Secondary")
}.buttonStyle(SecondaryButton())
Button(action: {}){
Text("Secondary")
}.buttonStyle(DisabledButton())
```
By default these buttons will take up as much space as is available to them. You can adjust the size of your button with the frame modifier.
```swift
Button(action: {}){
Text("Disabled")
}.buttonStyle(PrimaryButton())
.frame(width: 100, height: 50)
```
You can set the border/fill styling
```swift
Button(action: {}){
Text("Primary")
}.buttonStyle(PrimaryButton())
Button(action: {}){
Text("Primary")
}.buttonStyle(PrimaryButton(variant: .outlined))
Button(action: {}){
Text("Primary")
}.buttonStyle(PrimaryButton(variant: .contained))
```