# Components
# Alert
template
<template>
<SBAlert>primary alert—check it out!</SBAlert>
<!-- add background-color -->
<SBAlert variant="secondary">secondary alert—check it out!</SBAlert>
</template>
import { SBAlert } from 'superbvue'
export default defineComponent({
components: {
SBAlert
}
})
Output
jsx
import { SBAlert } from 'superbvue'
export default defineComponent({
render() {
return (
<div>
<SBAlert>primary alert—check it out!</SBAlert>
// add background-color
<SBAlert variant="secondary">secondary alert—check it out!</SBAlert>
</div>
)
}
})
Output
SBAlert Property
Property | Type | Default | Description |
---|---|---|---|
disabled | Boolean | false | disable element for clickable |
onClick | Function | callback function payload: $event | |
class | String | ||
variant | String | Set background color. primary | secondary | success | danger | warning | info | light | dark |
# Badge
template
<template>
<SBBadge>my badge</SBBadge>
<!-- pill badge1 -->
<SBBadge pill>my pill badge</SBBadge>
</template>
import { SBBadge } from 'superbvue'
export default defineComponent({
components: {
SBBadge
}
})
Output
Example heading my badge
my pill badgejsx
import { SBBadge } from 'superbvue'
export default defineComponent({
render() {
return (
<div>
<SBBadge>my badge</SBBadge>
// pill badge
<SBBadge pill>my pill badge</SBBadge>
</div>
)
}
})
Output
Example heading my badge
my pill badgeProperty | Type | Default | Description |
---|---|---|---|
pill | Boolean | badges more rounded | |
class | String | ||
href | String | ||
variant | String | Set background color. primary | secondary | success | danger | warning | info | light | dark |
# Breadcrumb
template
<template>
<SBBreadcrumb :items="state.items" />
</template>
export default defineComponent({
data() {
return {
state: {
items: [
{ text: 'Home', href: "/", active: false },
{ text: 'Library', href: "/library", active: true }
]
}
}
}
})
Output
jsx
export default defineComponent({
data() {
return {
state: {
items: [
{ text: 'Home', href: "/", active: false },
{ text: 'Library', href: "/library", active: true }
]
}
}
},
render() {
return (
<Fragment>
<SBBreadcrumb items={this.state.items} />
</Fragment>
)
}
})
Output
Property | Type | Default | Description |
---|---|---|---|
items | Array of object | see SBBreadCrumbItem for info |
# Button
template
<template>
<SBButton variant="primary">Primary</SBButton>
<SBButton size="lg">Large button</SBButton>
</template>
Output
jsx
export default defineComponent({
render() {
return (
<Fragment>
<SBButton variant="primary">Primary</SBButton>
<SBButton size="lg">Large button</SBButton>
</Fragment>
)
}
})
Output
Property | Type | Default | Description |
---|---|---|---|
disabled | Boolean | false | disable button state |
toggle | Boolean | false | |
pressed | Boolean | false | gives the button the appearance of being pressed |
block | Boolean | false | full-width, “block buttons” |
pill | Boolean | false | button with the pill style appearance |
squared | Boolean | false | button with non-rounded corners |
active | Boolean | false | active state with active styling |
size | String | md | Set button size. sm | md | lg |
type | String | button | |
variant | String | Set color on button. primary | secondary | success | danger | warning | info | light | dark |
# Card
template
<template>
<SBCard style="max-width: 20rem;" class="mb-2" imgAlt="Image" imgSrc="https://picsum.photos/600/300/?image=25" imgTop>
<SBCardTitle textTag="h4">Some quick example text to build on the card title and make up the bulk of the card's content.</SBCardTitle>
<SBButton variant="primary">Go somewhere</SBButton>
</SBCard>
</template>
Output
Card title
Some quick example text to build on the card title and make up the bulk of the card's content.
<template>
<!-- List groups -->
<SBCard style="max-width: 20rem;">
<SBListgroup>
<SBListgroupItem>Cras justo odio</SBListgroupItem>
<SBListgroupItem>Dapibus ac facilisis in</SBListgroupItem>
<SBListgroupItem>Vestibulum at eros</SBListgroupItem>
</SBListgroup>
</SBCard>
</template>
Output
- Cras justo odio
- Dapibus ac facilisis in
- Vestibulum at eros
<template>
<!-- Header Bordered Card -->
<SBCard class="text-center" title="Card title" header="Primary header" headerBgVariant="primary" headerTextVariant="white">
<SBCardTitle>Some quick example text to build on the card title and make up the bulk of the card's content.</SBCardTitle>
</SBCard>
</template>
Output
Card title
Some quick example text to build on the card title and make up the bulk of the card's content.
jsx
export default defineComponent({
render() {
return (
<Fragment>
<SBCard style="max-width: 20rem;" class="mb-2" imgAlt="Image" imgSrc="https://picsum.photos/600/300/?image=25" imgTop>
<SBCardTitle textTag="h4">Some quick example text to build on the card title and make up the bulk of the card's content.</SBCardTitle>
<SBButton variant="primary">Go somewhere</SBButton>
</SBCard>
</Fragment>
)
}
})
Output
Card title
Some quick example text to build on the card title and make up the bulk of the card's content.
export default defineComponent({
render() {
return (
<Fragment>
{/* List groups */}
<SBCard style="max-width: 20rem;">
<SBListgroup>
<SBListgroupItem>Cras justo odio</SBListgroupItem>
<SBListgroupItem>Dapibus ac facilisis in</SBListgroupItem>
<SBListgroupItem>Vestibulum at eros</SBListgroupItem>
</SBListgroup>
</SBCard>
</Fragment>
)
}
})
Output
- Cras justo odio
- Dapibus ac facilisis in
- Vestibulum at eros
export default defineComponent({
render() {
return (
<Fragment>
{/* Header Bordered Card */}
<SBCard class="text-center" title="Card title" header="Primary header" headerBgVariant="primary" headerTextVariant="white">
<SBCardTitle>Some quick example text to build on the card title and make up the bulk of the card's content.</SBCardTitle>
</SBCard>
</Fragment>
)
}
})
Output
Card title
Some quick example text to build on the card title and make up the bulk of the card's content.
SBCard Property
Property | Type | Description |
---|---|---|
title | String | Text content to place in the title |
imgSrc | String | URL for the optional image |
imgTop | Boolean | image should appear at the top of the card |
imgBottom | Boolean | image should appear at the bottom of the card |
imgWidth | String | |
imgHeight | String | |
imgAlt | String | Value to set the image attribute 'alt' |
overlay | Boolean | will overlay the card body on top of the image |
borderVariant | Boolean | Bootstrap theme color variants to the body border |
header | String | Text content to place in the header |
headerBgVariant | String | Bootstrap theme color variants to the header background |
headerTextVariant | String | Bootstrap theme color variants to the header text |
align | String | |
class | String | |
id | String | |
style | String |
SBCardTitle Property
Property | Type | Default | Description |
---|---|---|---|
textTag | String | 'h4' | Specify the HTML tag to render instead of the default tag for the title |
SBCardListgroup Property
Property | Type | Description |
---|---|---|
flush | Boolean |
# Navs & tabs
template
<template>
<SBNavs>
<SBNavLink active>Active</SBNavLink>
<SBNavLink>Link</SBNavLink>
<SBNavLink>Another Link</SBNavLink>
<SBNavLink disabled>Disabled Link</SBNavLink>
</SBNavs>
</template>
Output
jsx
export default defineComponent({
render() {
return (
<Fragment>
<SBNavs>
<SBNavLink active>Active</SBNavLink>
<SBNavLink>Link</SBNavLink>
<SBNavLink>Another Link</SBNavLink>
<SBNavLink disabled>Disabled Link</SBNavLink>
</SBNavs>
</Fragment>
)
}
})
Output
SBNavs Property
Property | Type | Default | Description |
---|---|---|---|
value | Number | ||
justify | Boolean | horizontal alignment | |
tabs | Boolean | ||
vertical | Boolean | stack them | |
pills | Boolean | navs more rounded | |
class | String | ||
style | String | ||
id | String | ||
size | String | md | set nav size. sm | md | lg |
SBNavLink Property
Property | Type | Default | Description |
---|---|---|---|
href | String | ||
rel | String | horizontal alignment | |
target | String | ||
active | Boolean | ||
disabled | Boolean | disable element for clickable | |
to | String | ||
append | Boolean | ||
replace | Boolean | ||
activeClass | String | ||
exact | Boolean | ||
exactActiveClass | String | ||
style | String | ||
id | String | ||
size | String | md | set nav size. sm | md | lg |
# Progress
template
<template>
<SBProgress :value="state.progressValue" variant="warning" />
<!-- Add label -->
<SBProgress :value="state.progressValue" :label="state.progressValue" variant="warning" />
<!-- Multiple Progress bars -->
<SBProgress max="100" :label="state.progressValue">
<SBProgressBar :value="state.progressValue" :label="state.value" variant="warning" />
<SBProgressBar :value="20" :label="state.value" variant="success" />
</SBProgress>
</template>
import { SBProgress, SBProgressBar } from 'superbvue'
export default defineComponent({
components: {
SBProgress,
SBProgressBar
},
setup() {
const state = reactive({
progressValue: 75
})
return {
state
}
}
})
Output
Progress bar with label
Multiple Progress bars
jsx
import { SBProgress, SBProgressBar } from 'superbvue'
export default defineComponent({
setup() {
const state = reactive({
progressValue: 75
})
return {
state
}
},
render() {
return (
<div>
<SBProgress value={this.state.progressValue} variant="warning" />
// Add label
<SBProgress value={this.state.progressValue} label={this.state.progressValue} variant="warning" />
// Multiple Progress bars
<SBProgress max={100} label={this.state.progressValue} variant="warning">
<SBProgressBar value={this.state.progressValue} label={this.state.progressValue} variant="warning" />
</SBProgress>
</div>
)
}
})
Output
Progress bar with label
Multiple Progress bars
Property | Type | Default | Description |
---|---|---|---|
value | Number | ||
striped | Boolean | Striped | |
animated | Boolean | Animated stripes | |
height | String | ||
showProgress | Boolean | Displays the current progress value as a percentage | |
showValue | Boolean | Displays the current progress value | |
variant | String | Set background color. primary | secondary | success | danger | warning | info | light | dark |
# Pagination
template
<template>
<SBPagination v-bind:totalRows="row" v-model="state.currentPage" v-bind:perPage="state.perPage" />
</template>
import { SBPagination } from 'superbvue'
export default defineComponent({
components: {
SBPagination
},
data() {
return {
state: {
items: [
{ age: 45, fistName: 'Jonhson', lastName: 'Macdonald' },
{ age: 15, fistName: 'Larsen', lastName: 'Shaw' },
{ age: 65, fistName: 'Geneva', lastName: 'Wilson' },
{ age: 35, fistName: 'Jami', lastName: 'Carney' }
],
fields: ['Age', 'First Name', 'Last Name'],
perPage: '3',
currentPage: 1
}
}
}
})
Output
Button variant
<template>
<!-- Basic Button variant -->
<SBPagination v-bind:totalRows="row" v-model="state.currentPage" v-bind:perPage="state.perPage" />
<!-- Alignment -->
<SBPagination v-bind:totalRows="state.row" v-model="state.currentPage" v-bind:perPage="state.perPage" align="center" />
<!-- Use text in props -->
<SBPagination v-bind:totalRows="state.row" v-model="state.currentPage" prevText="Prev" lastText="Next" v-bind::perPage="state.perPage" ariaLabel="my-custon-pagination" />
</template>
<script>
import { SBPagination } from 'superbvue'
export default defineComponent({
components: {
SBPagination
},
data() {
return {
state: {
rows: 100
perPage: '3',
currentPage: 1
}
}
}
})
</script>
Output
Basic Button variant
Alignment
Use text as button
jsx
import { SBTable } from 'superbvue'
export default defineComponent({
data() {
return {
state: {
items: [
{ age: 45, fistName: 'Jonhson', lastName: 'Macdonald' },
{ age: 15, fistName: 'Larsen', lastName: 'Shaw' },
{ age: 65, fistName: 'Geneva', lastName: 'Wilson' },
{ age: 35, fistName: 'Jami', lastName: 'Carney' }
],
fields: ['Age', 'First Name', 'Last Name'],
perPage: 3,
currentPage: 1,
}
}
},
methods: {
handleSetCurrentPage(event) {
this.state.currentPage = event.target.value
}
},
render() {
return (
<Fragment>
<SBPagination totalRows={this.row} onChange={this.handleSetCurrentPage} modelValue={this.state.currentPage} perPage={this.state.perPage} ariaLabel="my-custon-pagination" />
</Fragment>
)
}
})
Output
Button variant
import { SBTable } from 'superbvue'
export default defineComponent({
data() {
return {
state: {
rows: 100
perPage: '3',
currentPage: 1
}
}
},
render() {
return (
<Fragment>
{/* Basic Button variant */}
<SBPagination totalRows={this.state.row} perPage={this.state.perPage} />
{/* Alignment */}
<SBPagination totalRows={this.state.row} perPage={this.state.perPage} align="center" />
{/* Use text in props */}
<SBPagination totalRows={this.state.row} prevText="Prev" lastText="Next" perPage={this.state.perPage} ariaLabel="my-custon-pagination" />
</Fragment>
)
}
})
Output
Basic Button variant
Alignment
Use text as button
Pagination Component Property
Property | Type | Default | Description |
---|---|---|---|
perPage | String | Number | table header | |
totalRows | String | Number | table data in array format, where each record (row) data are keyed objects. | |
ariaControls | String | Set ID on element | |
ariaLabel | String | Value to place in the "aria-label" attribute of the pagination control | |
disabled | String | false | |
labelFirstPage | String | "Go to first page" | |
labelLastPage | String | "Go to last page" | |
labelNextPage | String | "Go to next page" | |
labelPrevPage | String | "Go to prev page" | |
firstText | String | "«" | |
lastText | String | "»" | |
nextText | String | ||
prevText | String | ||
limit | String | Number | ||
size | String | "md" | size of pagination. value: sm | md | lg |
class | String | ||
pills | Boolean | false |
# Spinners
template
<template>
<SBSpinners />
<SBSpinners type="glow" />
</template>
Output
Growing spinner
jsx
export default defineComponent({
render() {
return (
<Fragment>
<SBSpinners />
<SBSpinners type="glow" />
</Fragment>
)
}
})
Output
Growing spinner
Property | Type | Default | Description |
---|---|---|---|
label | Boolean | false | |
type | String | border | Set spinner type. border | glow |
small | Boolean | false | When set, rendered a smaller spinner suitable for placing in buttons |
variant | Boolean | false | Applies one of the Bootstrap theme color variants to the component |
class | String | false | |
squared | Boolean | false |
# Table
template
<template>
<!-- Basic table -->
<SBTable v-bind:fields="state.fields" v-bind:items="state.items" />
</template>
import { SBTable } from 'superbvue'
export default defineComponent({
components: {
SBTable
},
data() {
return {
state: {
items: [
{ age: 45, fistName: 'Jonhson', lastName: 'Macdonald' },
{ age: 15, fistName: 'Larsen', lastName: 'Shaw' },
{ age: 65, fistName: 'Geneva', lastName: 'Wilson' },
{ age: 35, fistName: 'Jami', lastName: 'Carney' }
],
fields: ['Age', 'First Name', 'Last Name']
}
}
}
})
Output
Age | First Name | Last Name |
---|---|---|
45 | Jonhson | Macdonald |
15 | Larsen | Shaw |
65 | Geneva | Wilson |
35 | Jami | Carney |
Using variants for table cells
<template>
<!-- Using variants for table cells -->
<SBTable v-bind:fields="state.fields" v-bind:items="state.items" />
</template>
import { SBTable } from 'superbvue'
export default defineComponent({
components: {
SBTable
},
data() {
return {
state: {
items: [
{ age: 40, fistName: 'Dickerson', lastName: 'Macdonald' },
{ age: 21, fistName: 'Larsen', rowVariant: 'primary', lastName: 'Shaw' },
{ age: 89, fistName: 'Geneva', lastName: 'Wilson' },
{ age: 38, fistName: 'Jami', lastName: 'Carney', cellVariant: { fistName: 'info' } }
],
fields: ['Age', 'First', 'last']
}
}
}
})
Output
Age | First Name | Last Name |
---|---|---|
40 | Dickerson | Macdonald |
21 | Larsen | Shaw |
89 | Geneva | Wilson |
38 | Jami | Carney |
jsx
import { SBTable } from 'superbvue'
export default defineComponent({
data() {
return {
state: {
items: [
{ age: 45, fistName: 'Jonhson', lastName: 'Macdonald' },
{ age: 15, fistName: 'Larsen', lastName: 'Shaw' },
{ age: 65, fistName: 'Geneva', lastName: 'Wilson' },
{ age: 35, fistName: 'Jami', lastName: 'Carney' }
],
fields: ['Age', 'First Name', 'Last Name']
}
}
},
render() {
return (
<Fragment>
{/* Basic table */}
<SBTable fields={this.state.field} items={this.state.items} currentPage={this.state.currentPage} perPage={this.state.perPage} />
</Fragment>
)
}
})
Output
Age | First Name | Last Name |
---|---|---|
45 | Jonhson | Macdonald |
15 | Larsen | Shaw |
65 | Geneva | Wilson |
35 | Jami | Carney |
Using variants for table cells
import { SBTable } from 'superbvue'
export default defineComponent({
data() {
return {
state: {
items: [
{ age: 40, fistName: 'Dickerson', lastName: 'Macdonald' },
{ age: 21, fistName: 'Larsen', lastName: 'Shaw', rowVariant: 'primary' },
{ age: 89, fistName: 'Geneva', lastName: 'Wilson' },
{ age: 38, fistName: 'Jami', lastName: 'Carney', cellVariant: { fistName: 'info' } }
],
fields: ['Age', 'First', 'last']
}
}
},
render() {
return (
<Fragment>
{/* Using variants for table cells */}
<SBTable fields={this.state.field} items={this.state.items} currentPage={this.state.currentPage} perPage={this.state.perPage} />
</Fragment>
)
}
})
Output
Age | First Name | Last Name |
---|---|---|
40 | Dickerson | Macdonald |
21 | Larsen | Shaw |
89 | Geneva | Wilson |
38 | Jami | Carney |
Table Component Property
Property | Type | Description |
---|---|---|
fields | String [] | table header |
items | Object [] | table data in array format, where each record (row) data are keyed objects. |
striped | Boolean | add zebra-striping to any table row |
hover | Boolean | enable a hover state on table rows |
class | String | |
squared | Boolean | |
currentPage | Number | String | The current page number to display when the table is paginated. Starting from 1 and up |
perPage | Number | String | Number of rows to show per page. Set to 0 to disable pagination |
dark | Boolean | Places the table in dark mode |
cellVariants | Object | variants map to classes table-${variant} |
rowVariant | String | variants map to classes table-${variant} |