barbican-reset 3.23.0 → 3.25.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.
@@ -1,14 +1,13 @@
1
1
  <template>
2
2
  <component
3
+ :type="defineType(defineComponent)"
3
4
  :class="generateClassnames"
4
5
  :aria-busy="defineAriaBusy"
5
6
  :aria-live="defineAriaLive"
6
7
  @click="emit('click')"
7
8
  :is="defineComponent"
8
- :type="type"
9
9
  :to="to"
10
- ref="button"
11
- >
10
+ ref="button">
12
11
  <template v-if="state == 'default'">
13
12
  <slot name="default">default</slot>
14
13
  </template>
@@ -71,10 +70,18 @@ const defineAriaLive = computed(() => {
71
70
 
72
71
  const focusButton = () => {
73
72
  if (defineComponent.value == 'button' && button) {
74
- button.value.focus();
73
+ button.value.focus()
75
74
  }
76
75
  }
77
76
 
77
+ const defineType = function (component) {
78
+ if (props.type) return props.type
79
+
80
+ if (component == 'button') return 'button'
81
+
82
+ return null
83
+ }
84
+
78
85
  const props = defineProps({
79
86
  state: {
80
87
  type: String,
@@ -109,7 +116,6 @@ const props = defineProps({
109
116
  })
110
117
 
111
118
  defineExpose({
112
- focusButton
119
+ focusButton,
113
120
  })
114
-
115
- </script>
121
+ </script>
@@ -35,7 +35,6 @@ const generateClassnames = computed(() => {
35
35
  if (props.inline) classnames.push('inline')
36
36
  if (props.navcard) classnames.push('navcard')
37
37
  if (props.navlink) classnames.push('navlink')
38
- if (props.ticket) classnames.push('ticket')
39
38
  if (props.membership) classnames.push('membership')
40
39
  if (props.qrcode) classnames.push('qrcode')
41
40
 
@@ -52,7 +51,6 @@ const generateClassnames = computed(() => {
52
51
  !props.navcard &&
53
52
  !props.navitem &&
54
53
  !props.navlink &&
55
- !props.ticket &&
56
54
  !props.membership &&
57
55
  !props.qrcode
58
56
  ) {
@@ -79,10 +77,6 @@ const props = defineProps({
79
77
  type: Boolean,
80
78
  default: false,
81
79
  },
82
- ticket: {
83
- type: Boolean,
84
- default: false,
85
- },
86
80
  membership: {
87
81
  type: Boolean,
88
82
  default: false,
@@ -100,7 +94,7 @@ const props = defineProps({
100
94
  default: false,
101
95
  },
102
96
  to: {
103
- type: [Object, String],
97
+ type: Object || String,
104
98
  },
105
99
  disabled: {
106
100
  type: Boolean,
@@ -1,16 +1,12 @@
1
1
  <template>
2
2
  <div class="br-details">
3
3
  <br-button variant="summary" @click="update">
4
- <div class="br-summary-content">
5
- <slot name="title">
6
- <br-card-title>Title goes here</br-card-title>
7
- </slot>
4
+ <div class="wrap-title">
5
+ <slot name="title">Title goes here</slot>
8
6
  </div>
9
- <span class="br-summary-icon">
10
- {{ open ? '–' : '+' }}
11
- </span>
7
+ <span class="wrap-icon">{{ open ? '–' : '+' }}</span>
12
8
  </br-button>
13
- <div :class="['br-details-content', { open }]">
9
+ <div :class="['wrap-content', { open }]">
14
10
  <slot name="content">Content goes here</slot>
15
11
  </div>
16
12
  </div>
@@ -32,28 +28,28 @@ const update = () => emit('update', { open: !props.open })
32
28
  <style lang="scss" scoped>
33
29
  @use '#styles/helpers' as *;
34
30
 
35
- .br-summary-content {
36
- text-align: left;
37
- }
38
-
39
- .br-summary-icon {
31
+ .wrap-icon {
40
32
  font-size: var(--font-size-h1);
41
33
  line-height: 0.6875rem;
42
34
  font-weight: normal;
43
35
  position: relative;
44
36
  padding: 0.375rem;
45
- width: 2.25rem;
46
37
  top: 0.125rem;
47
38
  height: 2rem;
39
+ width: 2rem;
40
+ }
41
+
42
+ .wrap-title {
43
+ align-self: center;
48
44
  }
49
45
 
50
- .br-details-content:not(.open) {
46
+ .wrap-content:not(.open) {
51
47
  visibility: hidden;
52
48
  overflow: hidden;
53
49
  height: 0;
54
50
  }
55
51
 
56
- .br-details-content.open {
57
- margin-top: var(--margin-xxl);
52
+ .wrap-content.open {
53
+ margin-top: var(--margin-md);
58
54
  }
59
55
  </style>
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <div class="br-form-checkbox">
3
- <BrFormLabel
3
+ <br-form-label
4
4
  :class="[{ success }, { error }]"
5
5
  :disabled="disabled"
6
6
  :id="generateID">
7
- <BrFormInput
7
+ <br-form-input
8
8
  :class="[{ success }, { error }]"
9
9
  :disabled="disabled"
10
10
  :id="generateID"
@@ -14,7 +14,7 @@
14
14
  <span class="label-text">
15
15
  <slot />
16
16
  </span>
17
- </BrFormLabel>
17
+ </br-form-label>
18
18
  </div>
19
19
  </template>
20
20
 
@@ -29,6 +29,9 @@ defineOptions({
29
29
  })
30
30
 
31
31
  const props = defineProps({
32
+ id: {
33
+ type: String,
34
+ },
32
35
  disabled: {
33
36
  default: false,
34
37
  type: Boolean,
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <div class="br-form-radio">
3
- <BrFormLabel
3
+ <br-form-label
4
4
  :class="[{ success }, { error }]"
5
5
  :disabled="disabled"
6
6
  :id="generateID">
7
- <BrFormInput
7
+ <br-form-input
8
8
  :class="[{ success }, { error }]"
9
9
  :disabled="disabled"
10
10
  :id="generateID"
@@ -14,7 +14,7 @@
14
14
  <span class="label-text">
15
15
  <slot />
16
16
  </span>
17
- </BrFormLabel>
17
+ </br-form-label>
18
18
  </div>
19
19
  </template>
20
20
 
@@ -30,6 +30,9 @@ defineOptions({
30
30
  })
31
31
 
32
32
  const props = defineProps({
33
+ id: {
34
+ type: String,
35
+ },
33
36
  disabled: {
34
37
  default: false,
35
38
  type: Boolean,
@@ -1,21 +1,24 @@
1
1
  <template>
2
2
  <div role="radiogroup">
3
- <BrFormRadio
4
- v-for="(option, index) in options"
5
- :data-test="option['data-test']"
6
- :key="'radio-option-' + index"
7
- :disabled="option.disabled"
8
- :value="option.value"
9
- v-model="model"
10
- :name="name">
11
- <slot v-if="$slots.default" v-bind="option" />
12
- <template v-else>{{ option.text }}</template>
13
- </BrFormRadio>
3
+ <br-wrap cluster>
4
+ <br-form-radio
5
+ v-for="(option, index) in options"
6
+ :data-test="option['data-test']"
7
+ :key="'radio-option-' + index"
8
+ :disabled="option.disabled"
9
+ :value="option.value"
10
+ v-model="model"
11
+ :name="name">
12
+ <slot v-if="$slots.default" v-bind="option" />
13
+ <template v-else>{{ option.text }}</template>
14
+ </br-form-radio>
15
+ </br-wrap>
14
16
  </div>
15
17
  </template>
16
18
 
17
19
  <script setup>
18
20
  import BrFormRadio from '#components/BrFormRadio.vue'
21
+ import BrWrap from '#components/BrWrap.vue'
19
22
 
20
23
  const model = defineModel()
21
24
 
@@ -1,12 +1,13 @@
1
1
  <template>
2
2
  <div :class="generateClasses">
3
- <BrFormLabel
3
+ <br-form-label
4
4
  v-if="label"
5
5
  :id="generateFor"
6
6
  :required="required"
7
- v-bind="$attrs">
7
+ v-bind="$attrs"
8
+ row>
8
9
  {{ label }}
9
- </BrFormLabel>
10
+ </br-form-label>
10
11
  <div :class="[`content`, { label }, { submit }, { radios }]">
11
12
  <slot />
12
13
  </div>
@@ -18,7 +18,11 @@ const generateComponentClasses = computed(() => {
18
18
  classnames.push('cluster')
19
19
  }
20
20
 
21
- if (!props.navcard && !props.cluster) {
21
+ if (props.orders) {
22
+ classnames.push('orders')
23
+ }
24
+
25
+ if (!props.navcard && !props.cluster && !props.orders) {
22
26
  classnames.push('default')
23
27
  }
24
28
 
@@ -34,5 +38,9 @@ const props = defineProps({
34
38
  type: Boolean,
35
39
  default: false,
36
40
  },
41
+ orders: {
42
+ type: Boolean,
43
+ default: false,
44
+ },
37
45
  })
38
46
  </script>
package/package.json CHANGED
@@ -137,5 +137,5 @@
137
137
  "style:patterns": "cd patterns && gulp build:css",
138
138
  "build:patterns": "cd patterns && rm -rf html && pug views --out html"
139
139
  },
140
- "version": "3.23.0"
140
+ "version": "3.25.0"
141
141
  }
@@ -1,26 +1,18 @@
1
1
  @use "mixins/breakpoints" as *;
2
+ @use "mixins/br-wrap" as *;
2
3
 
3
4
  .br-wrap.default {
4
- max-width: var(--width-layout-sm);
5
- margin-right: auto;
6
- margin-left: auto;
5
+ @include br-wrap--default;
7
6
  }
8
7
 
9
8
  .br-wrap.navcard {
10
- gap: var(--gap-md);
11
- display: grid;
12
-
13
- @include medium-up {
14
- grid-template-columns: repeat(2, 1fr);
15
- gap: var(--gap-lg);
16
- }
9
+ @include br-wrap--navcard;
17
10
  }
18
11
 
19
12
  .br-wrap.cluster {
20
- margin: var(--margin-wrap-xs);
13
+ @include br-wrap--cluster;
21
14
  }
22
15
 
23
- .br-wrap.cluster>* {
24
- margin: var(--margin-xs);
25
- vertical-align: middle;
16
+ .br-wrap.orders {
17
+ @include br-wrap--orders;
26
18
  }
package/scss/_form.scss CHANGED
@@ -1,8 +1,3 @@
1
- label {
2
- font-weight: bold;
3
- display: block;
4
- }
5
-
6
1
  .secondary-actions {
7
2
  margin-top: var(--margin-xl);
8
3
 
@@ -176,7 +176,7 @@
176
176
  --padding-xl: 1.5rem;
177
177
  --padding-xxl: 2rem;
178
178
  --padding-xxxl: 2.5rem;
179
- --padding-card-sm: 1rem;
179
+ --padding-card-sm: 1.25rem;
180
180
  --padding-card-md: 1.5rem;
181
181
  --padding-card-lg: 1.75rem;
182
182
  --padding-content: 3.75rem;
@@ -4,7 +4,6 @@
4
4
  @use "card/navcard" as *;
5
5
  @use "card/navlink" as *;
6
6
  @use "card/navitem" as *;
7
- @use "card/ticket" as *;
8
7
  @use "card/membership" as *;
9
8
  @use "card/qrcode" as *;
10
9
 
@@ -36,10 +35,6 @@
36
35
  @include br-card--navitem;
37
36
  }
38
37
 
39
- &.ticket {
40
- @include br-card--ticket;
41
- }
42
-
43
38
  &.membership {
44
39
  @include br-card--membership;
45
40
  }
@@ -133,6 +128,7 @@
133
128
  }
134
129
 
135
130
  @mixin br-card-text {
136
- text-overflow: ellipsis;
137
- overflow: hidden;
131
+ +.br-card-text {
132
+ margin-top: var(--margin-md);
133
+ }
138
134
  }
@@ -101,9 +101,13 @@
101
101
  }
102
102
 
103
103
  @mixin br-form-radio {
104
- &:not(:last-child) {
105
- margin-bottom: var(--margin-sm);
106
- }
104
+ display: inline-flex;
105
+
106
+ /// @TODO: block variant
107
+
108
+ // &:not(:last-child) {
109
+ // margin-bottom: var(--margin-sm);
110
+ // }
107
111
 
108
112
  .br-form-label {
109
113
  @include br-form-radio--label;
@@ -14,30 +14,36 @@
14
14
  }
15
15
 
16
16
  @mixin br-form-row {
17
+ & {
18
+ row-gap: var(--gap-md);
19
+ display: grid;
20
+ }
21
+
17
22
  &:not(:last-of-type) {
18
23
  margin-bottom: var(--margin-md);
19
24
  }
20
25
 
21
26
  @include small-up {
22
27
  grid-template-columns: 33fr 67fr;
23
- align-items: flex-start;
24
- gap: var(--gap-xl);
25
- display: grid;
28
+ column-gap: var(--gap-xl);
29
+ align-items: start;
30
+
31
+ >.br-form-label {
32
+ margin-top: var(--margin-lg);
33
+ }
26
34
  }
27
35
 
28
- >label,
29
36
  >.br-form-label {
30
- @include br-form-label;
37
+ font-weight: bold;
31
38
  }
32
39
 
33
- .br-form-input[type=email] {
40
+ .br-form-input[type=text],
41
+ .br-form-input[type=email],
42
+ .br-form-input[type=tel],
43
+ .br-form-input[type=date] {
34
44
  width: 100%;
35
45
  }
36
46
 
37
- .content.radios {
38
- margin: var(--margin-wrap-xs);
39
- }
40
-
41
47
  .content>fieldset {
42
48
  margin-top: var(--margin-lg);
43
49
  }
@@ -0,0 +1,48 @@
1
+ @use "../mixins/breakpoints" as *;
2
+
3
+ @mixin br-wrap--default {
4
+ max-width: var(--width-layout-sm);
5
+ margin-right: auto;
6
+ margin-left: auto;
7
+ }
8
+
9
+ @mixin br-wrap--navcard {
10
+ gap: var(--gap-md);
11
+ display: grid;
12
+
13
+ @include medium-up {
14
+ grid-template-columns: repeat(2, 1fr);
15
+ gap: var(--gap-lg);
16
+ }
17
+ }
18
+
19
+ @mixin br-wrap--cluster {
20
+ margin: var(--margin-wrap-xs);
21
+
22
+ >* {
23
+ margin: var(--margin-xs);
24
+ vertical-align: middle;
25
+ }
26
+ }
27
+
28
+ @mixin br-wrap--orders {
29
+ @include br-wrap--cluster;
30
+
31
+ $margin: calc(var(--margin-xs) * 2);
32
+
33
+ @include medium-down {
34
+ >* {
35
+ width: calc(100% - $margin);
36
+ }
37
+ }
38
+
39
+ @include medium-up {
40
+ >* {
41
+ width: calc(50% - $margin);
42
+ }
43
+
44
+ >*.open {
45
+ width: calc(100% - $margin);
46
+ }
47
+ }
48
+ }
@@ -2,5 +2,5 @@
2
2
  @forward "input/status";
3
3
  @forward "input/checkbox";
4
4
  @forward "input/select";
5
- @forward "input/radio";
5
+ @forward "br-form-radio";
6
6
  @forward "input/text";
@@ -6,7 +6,8 @@
6
6
  & {
7
7
  justify-content: space-between;
8
8
  font-weight: inherit;
9
- align-items: center;
9
+ align-items: start;
10
+ text-align: left;
10
11
  width: 100%;
11
12
  }
12
13
 
@@ -16,4 +17,12 @@
16
17
  outline-style: dashed;
17
18
  }
18
19
  }
20
+
21
+ &:active {
22
+ transform: scale(1);
23
+ }
24
+
25
+ &:active .br-summary-icon {
26
+ transform: var(--scale-click);
27
+ }
19
28
  }
@@ -10,6 +10,7 @@
10
10
  @forward "br-form-row";
11
11
  @forward "br-gap";
12
12
  @forward "br-skiplink";
13
+ @forward "br-wrap";
13
14
  @forward "breakpoints";
14
15
  @forward "buttons";
15
16
  @forward "city-of-london";
@@ -14,7 +14,9 @@
14
14
  }
15
15
 
16
16
  thead tr {
17
- border: var(--border-width-sm) solid var(--color-black-10-lighten);
17
+ border-color: var(--color-black-25-lighten);
18
+ border-width: var(--border-width-sm);
19
+ border-style: solid;
18
20
  }
19
21
 
20
22
  tr {
@@ -30,7 +32,9 @@
30
32
  }
31
33
 
32
34
  tbody tr {
33
- border: var(--border-width-sm) solid var(--color-black-10-lighten);
35
+ border-color: var(--color-black-25-lighten);
36
+ border-width: var(--border-width-sm);
37
+ border-style: solid;
34
38
 
35
39
  &:not(:last-of-type) {
36
40
  margin-bottom: var(--margin-lg);
@@ -49,7 +53,9 @@
49
53
 
50
54
  @include medium-up {
51
55
  &:not(:last-of-type) {
52
- border-right: var(--border-width-sm) solid var(--color-black-10-lighten);
56
+ border-right-color: var(--color-black-25-lighten);
57
+ border-right-width: var(--border-width-sm);
58
+ border-right-style: solid;
53
59
  }
54
60
 
55
61
  &:last-of-type {
@@ -17,7 +17,9 @@
17
17
 
18
18
  thead tr,
19
19
  tbody tr.active {
20
- border: var(--border-width-sm) solid var(--color-black-10-lighten);
20
+ border-color: var(--color-black-25-lighten);
21
+ border-width: var(--border-width-sm);
22
+ border-style: solid;
21
23
  display: grid;
22
24
 
23
25
  &:not(:last-of-type) {
@@ -39,7 +41,9 @@
39
41
 
40
42
  @include medium-up {
41
43
  &:not(:last-of-type) {
42
- border-right: var(--border-width-sm) solid var(--color-black-10-lighten);
44
+ border-right-color: var(--color-black-25-lighten);
45
+ border-right-width: var(--border-width-sm);
46
+ border-right-style: solid;
43
47
  }
44
48
 
45
49
  &:last-of-type {
@@ -3,7 +3,9 @@
3
3
  @use "../../mixins/focus" as *;
4
4
 
5
5
  @mixin table-row($gap: var(--gap-sm)) {
6
- border-bottom: var(--border-width-sm) solid var(--color-black-10-lighten);
6
+ border-bottom-color: var(--color-black-25-lighten);
7
+ border-bottom-width: var(--border-width-sm);
8
+ border-bottom-style: solid;
7
9
  padding-bottom: $gap;
8
10
  padding-top: $gap;
9
11
  }
@@ -27,7 +29,9 @@
27
29
  td {
28
30
  @include medium-up {
29
31
  &:not(:last-of-type) {
30
- border-right: var(--border-width-sm) solid var(--color-black-10-lighten);
32
+ border-right-color: var(--color-black-25-lighten);
33
+ border-right-width: var(--border-width-sm);
34
+ border-right-style: solid;
31
35
  }
32
36
 
33
37
  &:last-of-type {
@@ -26,10 +26,13 @@
26
26
  }
27
27
 
28
28
  @include x-large-down {
29
+ border-color: var(--color-black-25-lighten);
29
30
  border-radius: var(--border-radius-lg);
30
- border: var(--border-width-sm) solid var(--color-black-10-lighten);
31
- display: block;
31
+ border-width: var(--border-width-sm);
32
32
  padding: var(--padding-lg);
33
+ border-style: solid;
34
+ display: block;
35
+
33
36
 
34
37
  &:not(:last-of-type) {
35
38
  margin-bottom: var(--margin-xl);
@@ -44,8 +47,10 @@
44
47
  }
45
48
 
46
49
  &:not(:first-of-type):not(:last-of-type) {
47
- border-top: var(--border-width-sm) solid var(--color-black-10-lighten);
50
+ border-top-color: var(--color-black-25-lighten);
51
+ border-top-width: var(--border-width-sm);
48
52
  padding-top: var(--padding-sm);
53
+ border-top-style: solid;
49
54
  }
50
55
 
51
56
  &:last-of-type {
@@ -16,7 +16,9 @@
16
16
 
17
17
  thead tr,
18
18
  tbody tr {
19
- border: var(--border-width-sm) solid var(--color-black-10-lighten);
19
+ border-color: var(--color-black-25-lighten);
20
+ border-width: var(--border-width-sm);
21
+ border-style: solid;
20
22
  display: grid;
21
23
 
22
24
  &:not(:last-of-type) {
@@ -16,7 +16,9 @@
16
16
  }
17
17
 
18
18
  tr {
19
- border: var(--border-width-sm) solid var(--color-black-10-lighten);
19
+ border-color: var(--color-black-25-lighten);
20
+ border-width: var(--border-width-sm);
21
+ border-style: solid;
20
22
  display: grid;
21
23
 
22
24
  &:not(:last-of-type) {
@@ -40,7 +42,9 @@
40
42
  text-align: center;
41
43
 
42
44
  &:not(:last-of-type) {
43
- border-right: var(--border-width-sm) solid var(--color-black-10-lighten);
45
+ border-right-color: var(--color-black-25-lighten);
46
+ border-right-width: var(--border-width-sm);
47
+ border-right-style: solid;
44
48
  }
45
49
 
46
50
  &:first-of-type {
@@ -7,7 +7,9 @@
7
7
  margin-left: auto;
8
8
 
9
9
  tbody tr {
10
- border: var(--border-width-sm) solid var(--color-black-10-lighten);
10
+ border-color: var(--color-black-25-lighten);
11
+ border-width: var(--border-width-sm);
12
+ border-style: solid;
11
13
  }
12
14
 
13
15
  td {
@@ -20,10 +20,12 @@
20
20
  }
21
21
 
22
22
  @include small-down {
23
+ border-color: var(--color-black-25-lighten);
23
24
  border-radius: var(--border-radius-lg);
24
- border: var(--border-width-sm) solid var(--color-black-10-lighten);
25
- display: block;
25
+ border-width: var(--border-width-sm);
26
26
  padding: var(--padding-lg);
27
+ border-style: solid;
28
+ display: block;
27
29
 
28
30
  &:first-of-type {
29
31
  display: none;
@@ -43,7 +45,9 @@
43
45
  }
44
46
 
45
47
  &:not(:first-of-type):not(:last-of-type) {
46
- border-top: var(--border-width-sm) solid var(--color-black-10-lighten);
48
+ border-top-color: var(--color-black-25-lighten);
49
+ border-top-width: var(--border-width-sm);
50
+ border-top-style: solid;
47
51
  }
48
52
 
49
53
  &:last-of-type {
@@ -1,112 +0,0 @@
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>
@@ -1,11 +0,0 @@
1
- @use "../../mixins/breakpoints" as *;
2
-
3
- @mixin br-card--ticket {
4
- .br-card-title {
5
- font-size: var(--font-size-h4);
6
- }
7
-
8
- .br-card-text {
9
- margin-top: var(--margin-xs);
10
- }
11
- }