barbican-reset 3.20.0 → 3.22.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.
Files changed (36) hide show
  1. package/components/BrButton.vue +7 -1
  2. package/components/BrCard.vue +89 -3
  3. package/components/BrCardSubTitle.vue +1 -1
  4. package/components/BrContainer.vue +41 -63
  5. package/components/BrWrap.vue +20 -18
  6. package/index.js +2 -17
  7. package/package.json +1 -1
  8. package/scss/_br-button.scss +4 -0
  9. package/scss/_br-container.scss +25 -36
  10. package/scss/_br-wrap.scss +11 -11
  11. package/scss/_variables.scss +3 -2
  12. package/scss/card/index.scss +0 -1
  13. package/scss/index.scss +0 -2
  14. package/scss/mixins/_br-card.scss +27 -17
  15. package/scss/mixins/buttons/_custom.scss +10 -31
  16. package/scss/mixins/buttons/custom/_outline-primary.scss +10 -0
  17. package/scss/mixins/buttons/custom/_outline-secondary.scss +5 -0
  18. package/scss/mixins/buttons/custom/_primary.scss +14 -0
  19. package/scss/mixins/buttons/custom/_secondary.scss +5 -0
  20. package/scss/mixins/buttons/custom/_see-tickets-info.scss +18 -0
  21. package/scss/mixins/card/_default.scss +13 -0
  22. package/scss/mixins/card/_inline.scss +4 -0
  23. package/scss/mixins/card/_navcard.scss +66 -0
  24. package/scss/mixins/card/_navitem.scss +51 -0
  25. package/scss/mixins/card/_navlink.scss +30 -0
  26. package/scss/mixins/card/_ticket.scss +11 -0
  27. package/components/BrNavCard.vue +0 -56
  28. package/components/BrNavCardWrap.vue +0 -5
  29. package/components/BrNavLink.vue +0 -21
  30. package/components/EventSummary.vue +0 -149
  31. package/components/FluidIframe.vue +0 -39
  32. package/components/SeeInside.vue +0 -134
  33. package/components/VideoContent.vue +0 -74
  34. package/scss/_br-nav-card-wrap.scss +0 -11
  35. package/scss/_br-navlink.scss +0 -51
  36. package/scss/card/_navcard.scss +0 -133
@@ -0,0 +1,10 @@
1
+ @use "../../../mixins/buttons/outline" as *;
2
+ @use "../../../mixins/focus" as *;
3
+
4
+ @mixin btn-outline-primary($border-width: var(--border-width-sm)) {
5
+ @include outline-button($border-width: $border-width);
6
+
7
+ @include focus {
8
+ @include outline-button-focus($border-width: $border-width);
9
+ }
10
+ }
@@ -0,0 +1,5 @@
1
+ @use "../../../mixins/buttons/outline" as *;
2
+
3
+ @mixin btn-outline-secondary {
4
+ @include outline-button(var(--color-black-60-lighten));
5
+ }
@@ -0,0 +1,14 @@
1
+ @use "../../../mixins/buttons/solid" as *;
2
+
3
+ @mixin btn-primary($min-width: true) {
4
+ @include solid-button;
5
+
6
+ @if $min-width {
7
+ min-width: var(--width-icon);
8
+ }
9
+
10
+ &[disabled="disabled"] {
11
+ @include solid-button(var(--color-black-60-lighten));
12
+ cursor: not-allowed;
13
+ }
14
+ }
@@ -0,0 +1,5 @@
1
+ @use "../../../mixins/buttons/solid" as *;
2
+
3
+ @mixin btn-secondary {
4
+ @include solid-button(var(--color-black-60-lighten));
5
+ }
@@ -0,0 +1,18 @@
1
+ @use "outline-secondary" as *;
2
+
3
+ @mixin btn-see-tickets-info {
4
+ @include btn-outline-secondary;
5
+
6
+ & {
7
+ margin-top: var(--margin-lg);
8
+ padding: var(--padding-md);
9
+ text-align: left;
10
+
11
+ &:hover,
12
+ &:focus {
13
+ background-color: var(--color-brand-generic-15-lighten);
14
+ border-color: var(--color-brand-generic-90-darken);
15
+ color: var(--color-brand-generic-90-darken);
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,13 @@
1
+ @use "../../mixins/breakpoints" as *;
2
+
3
+ @mixin br-card--default {
4
+ width: 100%;
5
+
6
+ +.br-card.default {
7
+ margin-top: var(--margin-lg);
8
+
9
+ @include large-up {
10
+ margin-top: var(--margin-xl);
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,4 @@
1
+ @mixin br-card--inline {
2
+ margin: var(--margin-sm);
3
+ display: inline-block;
4
+ }
@@ -0,0 +1,66 @@
1
+ @use "../../mixins/breakpoints" as *;
2
+
3
+ @mixin br-card--navcard {
4
+ cursor: pointer;
5
+ display: block;
6
+
7
+ &:hover,
8
+ &:focus {
9
+ background-color: var(--color-brand-generic-15-lighten);
10
+ outline-color: var(--color-brand-generic-90-darken);
11
+ outline-offset: calc(var(--border-width-sm) * -1);
12
+ color: var(--color-brand-generic-90-darken);
13
+ outline-width: var(--border-width-lg);
14
+ outline-style: solid;
15
+ }
16
+
17
+ &:active {
18
+ transform: var(--scale-click);
19
+ }
20
+
21
+ &:not(.ticket) {
22
+ text-decoration: underline;
23
+
24
+ .br-card-body {
25
+ gap: var(--gap-md);
26
+ display: flex;
27
+ }
28
+
29
+ .br-card-title+.br-card-text {
30
+ margin-top: var(--margin-sm);
31
+ }
32
+ }
33
+
34
+ svg {
35
+ flex: none;
36
+ }
37
+
38
+ @include small-up {
39
+ .br-card-body.center {
40
+ align-items: center;
41
+ }
42
+
43
+ .br-card-body:not(.center) svg {
44
+ margin-top: var(--margin-xs);
45
+ }
46
+ }
47
+
48
+ @include small-down {
49
+ .br-card-body {
50
+ align-items: center;
51
+ }
52
+
53
+ .br-card-text {
54
+ display: none;
55
+ }
56
+ }
57
+
58
+ @include medium-up {
59
+ &:not(.ticket) {
60
+ .br-card-title+.br-card-text {
61
+ margin-top: var(--margin-md);
62
+ }
63
+ }
64
+
65
+ }
66
+ }
@@ -0,0 +1,51 @@
1
+ @use "../../mixins/breakpoints" as *;
2
+ @use "navcard" as *;
3
+
4
+ @mixin br-card--navitem {
5
+ @include br-card--navcard;
6
+
7
+ & {
8
+ text-decoration: none;
9
+ font-weight: bold;
10
+ }
11
+
12
+ &:active {
13
+ transform: scale(1);
14
+ }
15
+
16
+ &.router-link-exact-active {
17
+ outline-offset: calc(var(--border-width-sm) * -1);
18
+ background-color: var(--color-brand-generic);
19
+ outline-color: var(--color-brand-generic);
20
+ border-color: var(--color-brand-generic);
21
+ outline-width: var(--border-width-lg);
22
+ outline-style: solid;
23
+ cursor: default;
24
+ color: white;
25
+ }
26
+
27
+ &:not(.router-link-active):hover {
28
+ color: var(--color-brand-generic-90-darken);
29
+ outline-color: var(--color-brand-generic);
30
+ text-decoration: underline;
31
+ border-color: currentColor;
32
+ }
33
+
34
+ &:not(:last-child) {
35
+ border-bottom-right-radius: 0;
36
+ border-bottom-left-radius: 0;
37
+ }
38
+
39
+ &:not(:first-child) {
40
+ border-top-right-radius: 0;
41
+ border-top-left-radius: 0;
42
+ border-top-width: 0;
43
+ }
44
+
45
+ .br-card-body {
46
+ padding-bottom: var(--padding-md);
47
+ padding-right: var(--padding-lg);
48
+ padding-left: var(--padding-lg);
49
+ padding-top: var(--padding-md);
50
+ }
51
+ }
@@ -0,0 +1,30 @@
1
+ @use "../../mixins/breakpoints" as *;
2
+ @use "navcard" as *;
3
+
4
+ @mixin br-card--navlink {
5
+ @include br-card--navcard;
6
+
7
+ @include small-down {
8
+ background-color: transparent;
9
+ justify-self: start;
10
+ border-radius: 0;
11
+ border-width: 0;
12
+
13
+ &:hover,
14
+ &:focus {
15
+ background-color: var(--color-black-80-lighten);
16
+ outline-color: var(--color-black-80-lighten);
17
+ outline-width: 0.25rem;
18
+ outline-style: solid;
19
+ color: white;
20
+ }
21
+
22
+ .br-card-body {
23
+ padding: 0;
24
+ }
25
+
26
+ svg {
27
+ display: none;
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,11 @@
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
+ }
@@ -1,56 +0,0 @@
1
- <template>
2
- <a v-if="to.startsWith('http')" :href="to" :class="generateClasses">
3
- <br-card class="navcard">
4
- <div :class="['wrap-navcard-content', { 'has-icon' : $slots.icon }]">
5
- <div v-if="$slots.icon" class="wrap-navcard-icon">
6
- <slot name="icon" />
7
- </div>
8
- <div>
9
- <br-card-title v-if="$slots.title">
10
- <slot name="title" />
11
- </br-card-title>
12
- <br-card-text v-if="$slots.text">
13
- <slot name="text" />
14
- </br-card-text>
15
- </div>
16
- </div>
17
- </br-card>
18
- </a>
19
- <router-link v-else class="link-navcard" :to="{ name: to }">
20
- <br-card class="navcard">
21
- <div :class="['wrap-navcard-content', { 'has-icon' : $slots.icon }]">
22
- <div v-if="$slots.icon" class="wrap-navcard-icon">
23
- <slot name="icon" />
24
- </div>
25
- <div>
26
- <br-card-title v-if="$slots.title">
27
- <slot name="title" />
28
- </br-card-title>
29
- <br-card-text v-if="$slots.text">
30
- <slot name="text" />
31
- </br-card-text>
32
- </div>
33
- </div>
34
- </br-card>
35
- </router-link>
36
- </template>
37
-
38
- <script setup>
39
- import { computed } from 'vue';
40
-
41
- const generateClasses = computed(() => {
42
- let result = ['link-navcard']
43
-
44
- if (props.class) result.push(props.class)
45
-
46
- return result
47
- })
48
-
49
- const props = defineProps({
50
- to: {
51
- type: String,
52
- required: true,
53
- },
54
- class: String
55
- })
56
- </script>
@@ -1,5 +0,0 @@
1
- <template>
2
- <div class="br-nav-card-wrap">
3
- <slot />
4
- </div>
5
- </template>
@@ -1,21 +0,0 @@
1
- <template>
2
- <div v-if="$route.matched.some(({ name }) => name === to)" class="br-navlink">
3
- {{ title }}
4
- </div>
5
- <a v-else-if="to.slice(0, 4) == 'http'" :href="to" class="br-navlink">
6
- {{ title }}
7
- </a>
8
- <router-link v-else :to="{ name: to }" class="br-navlink">
9
- {{ title }}
10
- </router-link>
11
- </template>
12
-
13
- <script setup>
14
- const props = defineProps({
15
- title: String,
16
- to: {
17
- type: String,
18
- required: true
19
- },
20
- })
21
- </script>
@@ -1,149 +0,0 @@
1
- <template>
2
- <div :class="wrapperClasses">
3
- <img :class="$style.image" v-bind:src="data.image" alt="" />
4
- <div :class="$style.event_info">
5
- <div :class="$style.title">{{ data.title }}</div>
6
- <div :class="$style.date_time">{{ data.date_formatted }}</div>
7
- <div :class="$style.venue">{{ data.venue }}</div>
8
- <br-button
9
- v-if="!basket && hasSeeInside"
10
- variant="link"
11
- :class="$style.show_SeeInside"
12
- @click="showSeeInside = !showSeeInside"
13
- >See inside</br-button
14
- >
15
- </div>
16
- <div
17
- :class="$style.SeeInside"
18
- v-if="!basket && hasSeeInside && showSeeInside">
19
- <see-inside
20
- v-if="!basket && hasSeeInside"
21
- :data="data.see_inside"
22
- @closeSeeInside="showSeeInside = !showSeeInside"></see-inside>
23
- </div>
24
- </div>
25
- </template>
26
-
27
- <script>
28
- import SeeInside from '#components/SeeInside.vue'
29
-
30
- export default {
31
- components: { SeeInside },
32
- props: {
33
- data: {
34
- type: Object,
35
- required: true,
36
- },
37
- basket: {
38
- type: Boolean,
39
- default: false,
40
- },
41
- },
42
- data() {
43
- return {
44
- showSeeInside: false,
45
- }
46
- },
47
- computed: {
48
- wrapperClasses() {
49
- return [
50
- this.$style.EventSummary,
51
- this.basket ? this.$style.in_basket : '',
52
- ]
53
- },
54
- hasSeeInside() {
55
- return this.data.see_inside.length > 0
56
- },
57
- },
58
- }
59
- </script>
60
-
61
- <style lang="scss" module>
62
- @use '#styles/helpers' as *;
63
-
64
- @mixin title {
65
- font-weight: bold;
66
- }
67
-
68
- @mixin subtitle {
69
- @include title;
70
-
71
- & {
72
- font-size: var(--font-size-h5);
73
- color: var(--color-black-50-lighten);
74
- font-weight: 400;
75
- }
76
-
77
- @include medium-up {
78
- font-size: var(--font-size-h4);
79
- }
80
- }
81
-
82
- .title {
83
- @include title;
84
-
85
- & {
86
- font-size: var(--font-size-h2);
87
- margin-bottom: var(--margin-md);
88
- }
89
- }
90
-
91
- .date_time {
92
- @include subtitle;
93
-
94
- & {
95
- margin-bottom: var(--margin-xs);
96
- }
97
- }
98
-
99
- .venue {
100
- @include subtitle;
101
- }
102
-
103
- .show_SeeInside {
104
- margin-top: var(--margin-sm);
105
- margin-bottom: var(--margin-sm);
106
- }
107
-
108
- .EventSummary {
109
- @include medium-up {
110
- display: grid;
111
- grid-template-columns: 20rem auto;
112
- grid-template-rows: auto auto auto;
113
-
114
- column-gap: var(--gap-xl);
115
- }
116
- &.in_basket {
117
- grid-template-columns: 16rem auto;
118
- }
119
- }
120
-
121
- .image {
122
- grid-row-start: 1;
123
- grid-row-end: 4;
124
- border: var(--border-width-sm) solid var(--color-black-10-lighten);
125
- border-radius: var(--border-radius-lg);
126
- max-width: 100%;
127
- width: 100%;
128
- margin-bottom: var(--gap-xl);
129
-
130
- @include medium-up {
131
- margin-bottom: 0;
132
- }
133
- }
134
-
135
- .event_info {
136
- grid-row-end: 2;
137
- }
138
-
139
- .SeeInside {
140
- grid-column-start: 1;
141
- grid-column-end: 3;
142
- margin-top: var(--margin-lg);
143
-
144
- @include large-up {
145
- margin-top: 0;
146
- grid-column-start: 2;
147
- }
148
- }
149
- </style>
@@ -1,39 +0,0 @@
1
- <template>
2
- <div :class="$style.component">
3
- <iframe
4
- scrolling="auto"
5
- allowfullscreen
6
- frameborder="0"
7
- height="100%"
8
- width="100%"
9
- :src="src"
10
- />
11
- </div>
12
- </template>
13
-
14
- <script>
15
- export default {
16
- props: {
17
- src: {
18
- type: String,
19
- required: true,
20
- },
21
- },
22
- };
23
- </script>
24
-
25
- <style lang="scss" module>
26
- @use "#styles/helpers" as *;
27
-
28
- .component {
29
- border-radius: var(--border-radius-lg);
30
- padding-top: 56.25%;
31
- position: relative;
32
- overflow: hidden;
33
- }
34
-
35
- .component > iframe {
36
- position: absolute;
37
- @include inset(0);
38
- }
39
- </style>
@@ -1,134 +0,0 @@
1
- <template>
2
- <div :class="$style.SeeInside">
3
- <div :class="$style.SeeInside_content">
4
- <div :class="$style.venue_sections">
5
- <div :class="$style.sections_title">
6
- <span v-if="multipleSeeInside">Section:</span>
7
- <br-button
8
- variant="exit"
9
- @click="$emit('closeSeeInside')"
10
- :class="$style.close_mobile">
11
- <close-icon />
12
- </br-button>
13
- </div>
14
- <template v-if="multipleSeeInside">
15
- <br-button
16
- variant="link"
17
- :class="{
18
- [$style.venue_section]: true,
19
- [$style.venue_section_active]: visibleMapIndex == index,
20
- }"
21
- v-for="(item, index) in data"
22
- :key="'section-' + index"
23
- @click="visibleMapIndex = index"
24
- >{{ item.title }}</br-button
25
- >
26
- </template>
27
-
28
- <br-button
29
- @click="$emit('closeSeeInside')"
30
- variant="exit"
31
- :class="$style.close_desktop">
32
- <close-icon />
33
- </br-button>
34
- </div>
35
- <div v-for="(item, index) in data" :key="index">
36
- <div
37
- :class="$style.SeeInside_map"
38
- v-if="visibleMapIndex == index || !multipleSeeInside"
39
- v-html="item.markup"></div>
40
- </div>
41
- </div>
42
- </div>
43
- </template>
44
-
45
- <script>
46
- import BrButton from '#components/BrButton.vue'
47
- import CloseIcon from '#icons/close.vue'
48
-
49
- export default {
50
- components: {
51
- BrButton,
52
- CloseIcon,
53
- },
54
- data() {
55
- return {
56
- visibleMapIndex: null,
57
- }
58
- },
59
- props: {
60
- data: {
61
- type: Array,
62
- required: true,
63
- },
64
- },
65
- computed: {
66
- multipleSeeInside() {
67
- return this.data.length > 1
68
- },
69
- },
70
- }
71
- </script>
72
-
73
- <style lang="scss" module>
74
- @use '#styles/helpers' as *;
75
-
76
- .SeeInside_content {
77
- padding: var(--padding-lg);
78
- border: var(--border-width-sm) solid var(--color-black-10-lighten);
79
- border-radius: var(--border-radius-sm);
80
- }
81
-
82
- .sections_title {
83
- display: flex;
84
-
85
- span {
86
- padding-top: 0.125rem;
87
- width: 100%;
88
-
89
- @include small-up {
90
- width: auto;
91
- }
92
- }
93
- .close_mobile {
94
- margin-left: auto;
95
-
96
- @include small-up {
97
- display: none;
98
- }
99
- }
100
- }
101
-
102
- .venue_sections {
103
- flex-direction: column;
104
- min-height: 1.75rem;
105
- gap: var(--gap-md);
106
- display: flex;
107
-
108
- @include small-up {
109
- flex-direction: row;
110
- }
111
-
112
- .venue_section {
113
- margin-right: var(--margin-lg);
114
- }
115
- .venue_section_active {
116
- text-decoration: none;
117
- }
118
- }
119
-
120
- .close_desktop {
121
- margin-left: auto;
122
-
123
- @include small-down {
124
- display: none;
125
- }
126
- }
127
-
128
- .SeeInside_map {
129
- margin-top: var(--margin-lg);
130
- iframe {
131
- width: 100%;
132
- }
133
- }
134
- </style>