barbican-reset 3.22.0 → 3.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/BrButton copy.vue +112 -0
- package/components/BrButton.vue +101 -88
- package/components/BrCard.vue +39 -38
- package/components/BrCardTearoff.vue +11 -0
- package/components/BrDetails.vue +4 -20
- package/components/BrLink.vue +22 -0
- package/components/BrWrap.vue +14 -2
- package/icons/back_arrow.vue +9 -1
- package/index.js +2 -0
- package/package.json +1 -1
- package/scripts/helpers/formatKebabCase.js +1 -1
- package/scss/_atomic.scss +16 -1
- package/scss/_br-button.scss +26 -2
- package/scss/{card/index.scss → _br-card.scss} +13 -11
- package/scss/_br-wrap.scss +9 -0
- package/scss/_variables.scss +6 -6
- package/scss/atomic/_max-widths.scss +29 -0
- package/scss/index.scss +1 -2
- package/scss/mixins/_br-card.scss +26 -1
- package/scss/mixins/_br-form-row.scss +1 -1
- package/scss/mixins/_buttons.scss +1 -0
- package/scss/mixins/_core.scss +1 -1
- package/scss/mixins/buttons/_custom.scss +13 -16
- package/scss/mixins/buttons/_setup.scss +10 -48
- package/scss/mixins/buttons/_slim.scss +3 -0
- package/scss/mixins/buttons/custom/_add-to-wallet.scss +12 -0
- package/scss/mixins/buttons/custom/_invisible.scss +10 -0
- package/scss/mixins/buttons/custom/_manage-order.scss +11 -0
- package/scss/mixins/buttons/custom/_navcard.scss +32 -0
- package/scss/mixins/buttons/custom/_outline-alert-neutral.scss +10 -0
- package/scss/mixins/buttons/custom/_renew-membership.scss +4 -5
- package/scss/mixins/buttons/custom/_summary.scss +19 -0
- package/scss/mixins/card/_inline.scss +0 -1
- package/scss/{card → mixins/card}/_membership.scss +31 -21
- package/scss/mixins/card/_navitem.scss +10 -2
- package/scss/mixins/card/_qrcode.scss +21 -0
- package/scss/_card-deck.scss +0 -26
- package/scss/mixins/buttons/custom/_see-tickets-info.scss +0 -18
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<component
|
|
3
|
+
:class="generateComponentClasses"
|
|
4
|
+
:aria-busy="defineAriaBusy"
|
|
5
|
+
:aria-live="defineAriaLive"
|
|
6
|
+
@click="emit('click')"
|
|
7
|
+
:is="defineComponent"
|
|
8
|
+
:type="type"
|
|
9
|
+
:href="href"
|
|
10
|
+
:to="to">
|
|
11
|
+
<template v-if="state == 'default'">
|
|
12
|
+
<slot name="default">default</slot>
|
|
13
|
+
</template>
|
|
14
|
+
<template v-else-if="state == 'loading'">
|
|
15
|
+
<template v-if="$slots.loading">
|
|
16
|
+
<slot name="loading">loading</slot>
|
|
17
|
+
</template>
|
|
18
|
+
<dot-typing v-else />
|
|
19
|
+
</template>
|
|
20
|
+
<template v-else-if="state == 'loaded'">
|
|
21
|
+
<slot name="loaded">loaded</slot>
|
|
22
|
+
</template>
|
|
23
|
+
<template v-else-if="state == 'error'">
|
|
24
|
+
<slot name="error">error</slot>
|
|
25
|
+
</template>
|
|
26
|
+
</component>
|
|
27
|
+
</template>
|
|
28
|
+
|
|
29
|
+
<script setup>
|
|
30
|
+
import { computed } from 'vue'
|
|
31
|
+
import DotTyping from '#components/BrButton/dot_typing.vue'
|
|
32
|
+
|
|
33
|
+
const emit = defineEmits(['click'])
|
|
34
|
+
|
|
35
|
+
const props = defineProps({
|
|
36
|
+
state: {
|
|
37
|
+
type: String,
|
|
38
|
+
default: 'default',
|
|
39
|
+
},
|
|
40
|
+
variant: {
|
|
41
|
+
type: String,
|
|
42
|
+
default: 'secondary',
|
|
43
|
+
},
|
|
44
|
+
type: {
|
|
45
|
+
type: [String, null],
|
|
46
|
+
},
|
|
47
|
+
to: {
|
|
48
|
+
type: [Object, null],
|
|
49
|
+
},
|
|
50
|
+
href: {
|
|
51
|
+
type: [String, null],
|
|
52
|
+
},
|
|
53
|
+
inline: {
|
|
54
|
+
type: Boolean,
|
|
55
|
+
default: false,
|
|
56
|
+
},
|
|
57
|
+
slim: {
|
|
58
|
+
type: Boolean,
|
|
59
|
+
default: false,
|
|
60
|
+
},
|
|
61
|
+
active: {
|
|
62
|
+
type: Boolean,
|
|
63
|
+
default: false,
|
|
64
|
+
},
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
const generateComponentClasses = computed(() => {
|
|
68
|
+
let classnames = ['btn', 'btn-' + props.variant]
|
|
69
|
+
|
|
70
|
+
if (props.inline) {
|
|
71
|
+
classnames.push('btn-inline')
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (props.slim) {
|
|
75
|
+
classnames.push('btn-slim')
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (props.active) {
|
|
79
|
+
classnames.push('btn-active')
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return classnames
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
const defineComponent = computed(() => {
|
|
86
|
+
if (props.href) {
|
|
87
|
+
return 'a'
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (props.to) {
|
|
91
|
+
return 'router-link'
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return 'button'
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
const defineAriaBusy = computed(() => {
|
|
98
|
+
if (props.to || props.href) {
|
|
99
|
+
return
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return props.state == 'loading' ? 'true' : 'false'
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
const defineAriaLive = computed(() => {
|
|
106
|
+
if (props.to || props.href) {
|
|
107
|
+
return
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return 'polite'
|
|
111
|
+
})
|
|
112
|
+
</script>
|
package/components/BrButton.vue
CHANGED
|
@@ -1,102 +1,115 @@
|
|
|
1
|
-
<!-- https://dockyard.com/blog/2020/03/02/accessible-loading-indicatorswith-no-extra-elements -->
|
|
2
|
-
|
|
3
1
|
<template>
|
|
4
|
-
<
|
|
5
|
-
:class="
|
|
6
|
-
|
|
7
|
-
:aria-
|
|
8
|
-
|
|
2
|
+
<component
|
|
3
|
+
:class="generateClassnames"
|
|
4
|
+
:aria-busy="defineAriaBusy"
|
|
5
|
+
:aria-live="defineAriaLive"
|
|
6
|
+
@click="emit('click')"
|
|
7
|
+
:is="defineComponent"
|
|
9
8
|
:type="type"
|
|
9
|
+
:to="to"
|
|
10
10
|
ref="button"
|
|
11
|
-
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
|
|
11
|
+
>
|
|
12
|
+
<template v-if="state == 'default'">
|
|
13
|
+
<slot name="default">default</slot>
|
|
14
|
+
</template>
|
|
15
|
+
<template v-else-if="state == 'loading'">
|
|
16
|
+
<template v-if="$slots.loading">
|
|
17
|
+
<slot name="loading">loading</slot>
|
|
15
18
|
</template>
|
|
16
|
-
|
|
19
|
+
<dot-typing v-else />
|
|
20
|
+
</template>
|
|
21
|
+
<template v-else-if="state == 'loaded'">
|
|
22
|
+
<slot name="loaded">loaded</slot>
|
|
23
|
+
</template>
|
|
24
|
+
<template v-else-if="state == 'error'">
|
|
25
|
+
<slot name="error">error</slot>
|
|
26
|
+
</template>
|
|
27
|
+
</component>
|
|
28
|
+
</template>
|
|
17
29
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
</template>
|
|
23
|
-
<template v-else>
|
|
24
|
-
{{ titleCase(state) }}
|
|
25
|
-
</template>
|
|
26
|
-
</template>
|
|
30
|
+
<script setup>
|
|
31
|
+
import { computed, useTemplateRef } from 'vue'
|
|
32
|
+
import DotTyping from '#components/BrButton/dot_typing.vue'
|
|
33
|
+
import BrLink from '#components/BrLink.vue'
|
|
27
34
|
|
|
28
|
-
|
|
29
|
-
<template v-if="$slots.loading">
|
|
30
|
-
<slot name="loading" />
|
|
31
|
-
</template>
|
|
32
|
-
<dot-typing v-else />
|
|
33
|
-
</template>
|
|
35
|
+
const emit = defineEmits(['click'])
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
<template v-if="$slots.loaded">
|
|
37
|
-
<slot name="loaded" />
|
|
38
|
-
</template>
|
|
39
|
-
<template v-else>
|
|
40
|
-
{{ titleCase(state) }}
|
|
41
|
-
</template>
|
|
42
|
-
</template>
|
|
37
|
+
const button = useTemplateRef('button')
|
|
43
38
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
<template v-else>
|
|
49
|
-
{{ titleCase(state) }}
|
|
50
|
-
</template>
|
|
51
|
-
</template>
|
|
52
|
-
</template>
|
|
53
|
-
</button>
|
|
54
|
-
</template>
|
|
39
|
+
const defineComponent = computed(() => {
|
|
40
|
+
if (props.to && !props.disabled) return BrLink
|
|
41
|
+
return 'button'
|
|
42
|
+
})
|
|
55
43
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
44
|
+
const generateClassnames = computed(() => {
|
|
45
|
+
let classnames = ['btn', 'btn-' + props.variant]
|
|
46
|
+
|
|
47
|
+
if (props.inline) {
|
|
48
|
+
classnames.push('btn-inline')
|
|
49
|
+
}
|
|
59
50
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
51
|
+
if (props.slim) {
|
|
52
|
+
classnames.push('btn-slim')
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (props.active) {
|
|
56
|
+
classnames.push('btn-active')
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return classnames
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
const defineAriaBusy = computed(() => {
|
|
63
|
+
if (props.to) return
|
|
64
|
+
return props.state == 'loading' ? 'true' : 'false'
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
const defineAriaLive = computed(() => {
|
|
68
|
+
if (props.to) return
|
|
69
|
+
return 'polite'
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
const focusButton = () => {
|
|
73
|
+
if (defineComponent.value == 'button' && button) {
|
|
74
|
+
button.value.focus();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const props = defineProps({
|
|
79
|
+
state: {
|
|
80
|
+
type: String,
|
|
81
|
+
default: 'default',
|
|
75
82
|
},
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return str
|
|
80
|
-
.toLowerCase()
|
|
81
|
-
.split(' ')
|
|
82
|
-
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
83
|
-
.join(' ')
|
|
84
|
-
},
|
|
85
|
-
focusButton() {
|
|
86
|
-
this.$refs.button.focus();
|
|
87
|
-
}
|
|
83
|
+
variant: {
|
|
84
|
+
type: String,
|
|
85
|
+
default: 'secondary',
|
|
88
86
|
},
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return this.state === 'loading' ? 'true' : 'false'
|
|
92
|
-
},
|
|
93
|
-
printClassNames() {
|
|
94
|
-
return 'btn btn-' + this.variant
|
|
95
|
-
},
|
|
87
|
+
type: {
|
|
88
|
+
type: String,
|
|
96
89
|
},
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
DotTyping,
|
|
90
|
+
to: {
|
|
91
|
+
type: [Object, String],
|
|
100
92
|
},
|
|
101
|
-
|
|
102
|
-
|
|
93
|
+
disabled: {
|
|
94
|
+
type: Boolean,
|
|
95
|
+
default: false,
|
|
96
|
+
},
|
|
97
|
+
inline: {
|
|
98
|
+
type: Boolean,
|
|
99
|
+
default: false,
|
|
100
|
+
},
|
|
101
|
+
slim: {
|
|
102
|
+
type: Boolean,
|
|
103
|
+
default: false,
|
|
104
|
+
},
|
|
105
|
+
active: {
|
|
106
|
+
type: Boolean,
|
|
107
|
+
default: false,
|
|
108
|
+
},
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
defineExpose({
|
|
112
|
+
focusButton
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
</script>
|
package/components/BrCard.vue
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<component
|
|
3
|
-
:class="generateClassnames"
|
|
4
|
-
:is="defineComponent"
|
|
5
|
-
:to="defineTo"
|
|
6
|
-
:href="defineHref">
|
|
2
|
+
<component :class="generateClassnames" :is="defineComponent" :to="defineTo">
|
|
7
3
|
<div v-if="$slots.header" class="br-card-header">
|
|
8
4
|
<slot name="header" />
|
|
9
5
|
</div>
|
|
@@ -19,24 +15,46 @@
|
|
|
19
15
|
</template>
|
|
20
16
|
|
|
21
17
|
<script setup>
|
|
22
|
-
import BrCardBody from '#components/BrCardBody.vue'
|
|
23
18
|
import { computed } from 'vue'
|
|
19
|
+
import BrCardBody from '#components/BrCardBody.vue'
|
|
20
|
+
import BrLink from '#components/BrLink.vue'
|
|
21
|
+
|
|
22
|
+
const defineComponent = computed(() => {
|
|
23
|
+
if (props.to && !props.disabled) return BrLink
|
|
24
|
+
return 'div'
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
const defineTo = computed(() => {
|
|
28
|
+
if (props.disabled) return
|
|
29
|
+
return props.to
|
|
30
|
+
})
|
|
24
31
|
|
|
25
32
|
const generateClassnames = computed(() => {
|
|
26
33
|
let classnames = ['br-card']
|
|
27
34
|
|
|
28
35
|
if (props.inline) classnames.push('inline')
|
|
29
36
|
if (props.navcard) classnames.push('navcard')
|
|
30
|
-
if (props.navitem) classnames.push('navitem')
|
|
31
37
|
if (props.navlink) classnames.push('navlink')
|
|
32
38
|
if (props.ticket) classnames.push('ticket')
|
|
39
|
+
if (props.membership) classnames.push('membership')
|
|
40
|
+
if (props.qrcode) classnames.push('qrcode')
|
|
41
|
+
|
|
42
|
+
if (props.navitem) {
|
|
43
|
+
classnames.push('navitem')
|
|
44
|
+
|
|
45
|
+
if (props.disabled) {
|
|
46
|
+
classnames.push('disabled')
|
|
47
|
+
}
|
|
48
|
+
}
|
|
33
49
|
|
|
34
50
|
if (
|
|
35
51
|
!props.inline &&
|
|
36
52
|
!props.navcard &&
|
|
37
53
|
!props.navitem &&
|
|
38
54
|
!props.navlink &&
|
|
39
|
-
!props.ticket
|
|
55
|
+
!props.ticket &&
|
|
56
|
+
!props.membership &&
|
|
57
|
+
!props.qrcode
|
|
40
58
|
) {
|
|
41
59
|
classnames.push('default')
|
|
42
60
|
}
|
|
@@ -44,34 +62,6 @@ const generateClassnames = computed(() => {
|
|
|
44
62
|
return classnames
|
|
45
63
|
})
|
|
46
64
|
|
|
47
|
-
const defineComponent = computed(() => {
|
|
48
|
-
if (props.navcard || props.navitem || props.navlink) {
|
|
49
|
-
return props.to.startsWith('http') ? 'a' : 'router-link'
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return 'div'
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
const defineTo = computed(() => {
|
|
56
|
-
if (props.navcard || props.navitem || props.navlink) {
|
|
57
|
-
if (!props.to.startsWith('http')) {
|
|
58
|
-
return { name: props.to }
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return null
|
|
63
|
-
})
|
|
64
|
-
|
|
65
|
-
const defineHref = computed(() => {
|
|
66
|
-
if (props.navcard || props.navitem || props.navlink) {
|
|
67
|
-
if (props.to.startsWith('http')) {
|
|
68
|
-
return props.to
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return null
|
|
73
|
-
})
|
|
74
|
-
|
|
75
65
|
const props = defineProps({
|
|
76
66
|
inline: {
|
|
77
67
|
type: Boolean,
|
|
@@ -93,6 +83,14 @@ const props = defineProps({
|
|
|
93
83
|
type: Boolean,
|
|
94
84
|
default: false,
|
|
95
85
|
},
|
|
86
|
+
membership: {
|
|
87
|
+
type: Boolean,
|
|
88
|
+
default: false,
|
|
89
|
+
},
|
|
90
|
+
qrcode: {
|
|
91
|
+
type: Boolean,
|
|
92
|
+
default: false,
|
|
93
|
+
},
|
|
96
94
|
center: {
|
|
97
95
|
type: Boolean,
|
|
98
96
|
default: false,
|
|
@@ -102,8 +100,11 @@ const props = defineProps({
|
|
|
102
100
|
default: false,
|
|
103
101
|
},
|
|
104
102
|
to: {
|
|
105
|
-
type: String,
|
|
106
|
-
|
|
103
|
+
type: [Object, String],
|
|
104
|
+
},
|
|
105
|
+
disabled: {
|
|
106
|
+
type: Boolean,
|
|
107
|
+
default: false,
|
|
107
108
|
},
|
|
108
109
|
})
|
|
109
110
|
</script>
|
package/components/BrDetails.vue
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="br-details">
|
|
3
|
-
<br-button variant="
|
|
3
|
+
<br-button variant="summary" @click="update">
|
|
4
4
|
<div class="br-summary-content">
|
|
5
5
|
<slot name="title">
|
|
6
6
|
<br-card-title>Title goes here</br-card-title>
|
|
@@ -26,30 +26,14 @@ const props = defineProps({
|
|
|
26
26
|
},
|
|
27
27
|
})
|
|
28
28
|
|
|
29
|
-
const update = () => emit('update', !props.open)
|
|
29
|
+
const update = () => emit('update', { open: !props.open })
|
|
30
30
|
</script>
|
|
31
31
|
|
|
32
32
|
<style lang="scss" scoped>
|
|
33
33
|
@use '#styles/helpers' as *;
|
|
34
34
|
|
|
35
|
-
.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
& {
|
|
39
|
-
justify-content: space-between;
|
|
40
|
-
align-items: center;
|
|
41
|
-
color: inherit;
|
|
42
|
-
width: 100%;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.btn-br-summary {
|
|
47
|
-
&:focus,
|
|
48
|
-
&:hover {
|
|
49
|
-
.br-summary-icon {
|
|
50
|
-
outline-style: dashed;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
35
|
+
.br-summary-content {
|
|
36
|
+
text-align: left;
|
|
53
37
|
}
|
|
54
38
|
|
|
55
39
|
.br-summary-icon {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<a v-if="isExternal" :href="to">
|
|
3
|
+
<slot />
|
|
4
|
+
</a>
|
|
5
|
+
<router-link v-else :to="to">
|
|
6
|
+
<slot />
|
|
7
|
+
</router-link>
|
|
8
|
+
</template>
|
|
9
|
+
|
|
10
|
+
<script setup>
|
|
11
|
+
// https://vueschool.io/lessons/extending-router-link-for-external-urls
|
|
12
|
+
|
|
13
|
+
import { computed } from 'vue'
|
|
14
|
+
|
|
15
|
+
const isExternal = computed(() => typeof props.to == 'string')
|
|
16
|
+
|
|
17
|
+
const props = defineProps({
|
|
18
|
+
to: {
|
|
19
|
+
type: Object || String,
|
|
20
|
+
},
|
|
21
|
+
})
|
|
22
|
+
</script>
|
package/components/BrWrap.vue
CHANGED
|
@@ -10,9 +10,17 @@ import { computed } from 'vue'
|
|
|
10
10
|
const generateComponentClasses = computed(() => {
|
|
11
11
|
let classnames = ['br-wrap']
|
|
12
12
|
|
|
13
|
-
if (props.navcard)
|
|
13
|
+
if (props.navcard) {
|
|
14
|
+
classnames.push('navcard')
|
|
15
|
+
}
|
|
14
16
|
|
|
15
|
-
if (
|
|
17
|
+
if (props.cluster) {
|
|
18
|
+
classnames.push('cluster')
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (!props.navcard && !props.cluster) {
|
|
22
|
+
classnames.push('default')
|
|
23
|
+
}
|
|
16
24
|
|
|
17
25
|
return classnames
|
|
18
26
|
})
|
|
@@ -22,5 +30,9 @@ const props = defineProps({
|
|
|
22
30
|
type: Boolean,
|
|
23
31
|
default: false,
|
|
24
32
|
},
|
|
33
|
+
cluster: {
|
|
34
|
+
type: Boolean,
|
|
35
|
+
default: false,
|
|
36
|
+
},
|
|
25
37
|
})
|
|
26
38
|
</script>
|
package/icons/back_arrow.vue
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<svg
|
|
2
|
+
<svg
|
|
3
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
4
|
+
width="16"
|
|
5
|
+
height="16"
|
|
6
|
+
viewBox="0 0 16 16">
|
|
7
|
+
<path
|
|
8
|
+
d="M16,7H3.83L9.42,1.41l-1.42-1.41L0,8l8,8,1.41-1.41-5.58-5.59h12.17v-2Z"
|
|
9
|
+
fill="currentColor" />
|
|
10
|
+
</svg>
|
|
3
11
|
</template>
|
package/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import BrCardBody from '#components/BrCardBody.vue'
|
|
|
7
7
|
import BrCardText from '#components/BrCardText.vue'
|
|
8
8
|
import BrCardTitle from '#components/BrCardTitle.vue'
|
|
9
9
|
import BrCardSubtitle from '#components/BrCardSubtitle.vue'
|
|
10
|
+
import BrCardTearoff from '#components/BrCardTearoff.vue'
|
|
10
11
|
|
|
11
12
|
import BrCollapseButton from '#components/BrCollapse/Button.vue'
|
|
12
13
|
import BrCollapseContent from '#components/BrCollapse/Content.vue'
|
|
@@ -54,6 +55,7 @@ export {
|
|
|
54
55
|
BrCardSubtitle,
|
|
55
56
|
BrCardText,
|
|
56
57
|
BrCardTitle,
|
|
58
|
+
BrCardTearoff,
|
|
57
59
|
BrCollapseButton,
|
|
58
60
|
BrCollapseContent,
|
|
59
61
|
BrConfirmDone,
|
package/package.json
CHANGED
package/scss/_atomic.scss
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
@use "mixins/breakpoints" as *;
|
|
1
2
|
@use "mixins/core" as *;
|
|
2
3
|
@use "atomic/colors";
|
|
3
4
|
@use "atomic/font-sizes";
|
|
4
5
|
@use "atomic/font-weights";
|
|
5
6
|
@use "atomic/margins";
|
|
7
|
+
@use "atomic/max-widths";
|
|
6
8
|
@use "atomic/min-heights";
|
|
7
9
|
@use "atomic/min-widths";
|
|
8
10
|
@use "atomic/paddings";
|
|
@@ -26,7 +28,20 @@
|
|
|
26
28
|
width: 100%;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
|
-
/// Class for visually hiding markup, while still allowing screen readers to parse the content
|
|
30
31
|
.sr-only {
|
|
31
32
|
@include sr-only;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.white-space-nowrap {
|
|
36
|
+
white-space: nowrap;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.vertical-align-middle {
|
|
40
|
+
vertical-align: middle;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.medium-down {
|
|
44
|
+
@include large-up {
|
|
45
|
+
display: none;
|
|
46
|
+
}
|
|
32
47
|
}
|
package/scss/_br-button.scss
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
@use "mixins/focus" as *;
|
|
2
2
|
@use "mixins/buttons" as *;
|
|
3
3
|
|
|
4
|
+
button.btn:active {
|
|
5
|
+
transform: var(--scale-click);
|
|
6
|
+
}
|
|
7
|
+
|
|
4
8
|
/// Button component setup class.
|
|
5
9
|
/// Used in combination with a button style class
|
|
6
10
|
/// @group Buttons
|
|
@@ -213,8 +217,28 @@
|
|
|
213
217
|
@include btn-toggle-password;
|
|
214
218
|
}
|
|
215
219
|
|
|
216
|
-
&.btn-
|
|
217
|
-
@include btn-
|
|
220
|
+
&.btn-manage-order {
|
|
221
|
+
@include btn-manage-order;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
&.btn-add-to-wallet {
|
|
225
|
+
@include btn-add-to-wallet;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
&.btn-outline-alert-neutral {
|
|
229
|
+
@include btn-outline-alert-neutral;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
&.btn-navcard {
|
|
233
|
+
@include btn-navcard;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
&.btn-summary {
|
|
237
|
+
@include btn-summary;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
&.btn-slim {
|
|
241
|
+
@include btn-slim;
|
|
218
242
|
}
|
|
219
243
|
|
|
220
244
|
// modifyers
|