barbican-reset 1.2.5 → 1.2.9

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 (70) hide show
  1. package/components/alert.vue +28 -49
  2. package/components/container.vue +15 -7
  3. package/components/display_stream.vue +58 -0
  4. package/components/event_summary.vue +1 -1
  5. package/components/fluid_iframe.vue +39 -0
  6. package/components/footer_logos.vue +30 -0
  7. package/components/footer_lower.vue +20 -0
  8. package/components/footer_upper.vue +43 -0
  9. package/components/form_group.vue +92 -0
  10. package/components/form_update.vue +2 -3
  11. package/components/help_row.vue +33 -0
  12. package/components/radio_group.vue +27 -0
  13. package/components/type_text.vue +14 -14
  14. package/helpers/mixins/_buttons.scss +28 -2
  15. package/icons/.DS_Store +0 -0
  16. package/icons/account/index.js +6 -6
  17. package/icons/account/{MembershipIcon.vue → membership.vue} +0 -0
  18. package/icons/account/{OrdersIcon.vue → orders.vue} +0 -0
  19. package/icons/account/{PaymentIcon.vue → payment.vue} +0 -0
  20. package/icons/account/{PersonalIcon.vue → personal.vue} +0 -0
  21. package/icons/account/{SupportIcon.vue → support.vue} +0 -0
  22. package/icons/account/{VideoIcon.vue → video.vue} +0 -0
  23. package/icons/{arrow_icon.vue → arrow.vue} +0 -0
  24. package/icons/{barbican/index.vue → barbican.vue} +8 -1
  25. package/icons/city_of_london_lockup.vue +30 -0
  26. package/icons/index.js +3 -1
  27. package/icons/password/index.js +2 -2
  28. package/icons/password/{RequestIcon.vue → request.vue} +0 -0
  29. package/icons/password/{ResetIcon.vue → reset.vue} +0 -0
  30. package/icons/power/alleyne.vue +3 -0
  31. package/icons/power/banff.vue +3 -0
  32. package/icons/power/council.vue +13 -0
  33. package/icons/power/index.js +3 -3
  34. package/icons/snippets/{BarbicanIcon.vue → barbican.vue} +0 -0
  35. package/icons/snippets/{ContributorIcon.vue → contributor.vue} +0 -0
  36. package/icons/snippets/index.js +4 -4
  37. package/icons/snippets/{OtherIcon.vue → other.vue} +0 -0
  38. package/icons/snippets/{PinIcon.vue → pin.vue} +0 -0
  39. package/icons/stream/{AirplayIcon.vue → airplay.vue} +0 -0
  40. package/icons/stream/{CastIcon.vue → cast.vue} +0 -0
  41. package/icons/stream/{ChatIcon.vue → chat.vue} +0 -0
  42. package/icons/stream/close.vue +7 -0
  43. package/icons/stream/{CogIcon.vue → cog.vue} +0 -0
  44. package/icons/stream/index.js +7 -7
  45. package/icons/stream/{LiveIcon/index.vue → live.vue} +46 -1
  46. package/icons/stream/{VolumeIcon.vue → volume.vue} +0 -0
  47. package/index.js +17 -3
  48. package/package.json +1 -1
  49. package/scss/_atomic.scss +10 -0
  50. package/scss/_btn.scss +8 -0
  51. package/scss/_radio-group.scss +4 -8
  52. package/scss/card/_account.scss +16 -0
  53. package/scss/card/_video-help.scss +31 -0
  54. package/scss/card/index.scss +2 -0
  55. package/scss/index.scss +9 -4
  56. package/scss/table/_details.scss +66 -0
  57. package/scss/table/_orders.scss +50 -0
  58. package/scss/table/_preferences.scss +73 -0
  59. package/scss/table/_tickets.scss +5 -3
  60. package/scss/table/index.scss +3 -0
  61. package/components/account_card.vue +0 -31
  62. package/icons/barbican/index.scss +0 -5
  63. package/icons/power/AlleyneIcon.vue +0 -16
  64. package/icons/power/BanffIcon.vue +0 -41
  65. package/icons/power/CouncilIcon.vue +0 -56
  66. package/icons/stream/LiveIcon/live_icon.scss +0 -42
  67. package/icons/stream/close_icon.vue +0 -23
  68. package/scss/_form-group.scss +0 -59
  69. package/scss/_radio.scss +0 -4
  70. package/scss/_type-text.scss +0 -9
@@ -5,18 +5,20 @@
5
5
  <div :class="$style.title" v-if="title.length > 0 && !toggle">{{ title }}</div>
6
6
  <slot />
7
7
  </span>
8
- <button v-if="toggle" :class="$style.button" @click="() => $emit('close')">
9
- <close-icon :class="styleIcon" />
10
- </button>
8
+ <b-button v-if="toggle" variant="invisible" :class="styleButton" @click="$emit('close')">
9
+ <close-icon />
10
+ </b-button>
11
11
  </div>
12
12
  </div>
13
13
  </template>
14
14
 
15
15
  <script>
16
+ import { BButton } from 'bootstrap-vue'
16
17
  import { CloseIcon } from 'barbican-reset/icons/stream'
17
18
  export default {
18
19
  name: "Alert",
19
20
  components: {
21
+ BButton,
20
22
  CloseIcon,
21
23
  },
22
24
  props: {
@@ -57,7 +59,6 @@ export default {
57
59
  styleContainer() {
58
60
  let style = this.$style;
59
61
  let output = [style.container];
60
-
61
62
  if (this.center) { output.push(style.center); }
62
63
  if (this.margin) {
63
64
  switch (this.margin) {
@@ -66,35 +67,29 @@ export default {
66
67
  default: output.push(style.margin_sm); break;
67
68
  }
68
69
  }
69
-
70
70
  return output;
71
71
  },
72
72
  styleWrap() {
73
73
  let style = this.$style;
74
74
  let output = [style.wrap];
75
-
76
75
  if (this.error) { output.push(style.error, 'error'); }
77
76
  if (this.success) { output.push(style.success, 'success'); }
78
77
  if (this.inline) { output.push(style.inline); }
79
78
  if (this.toggle) { output.push(style.toggle); }
80
-
81
79
  return output;
82
80
  },
83
81
  styleSpan() {
84
82
  let style = this.$style;
85
83
  let output = [];
86
-
87
84
  if (this.flex) { output.push(style.flex); }
88
-
89
85
  return output;
90
86
  },
91
- styleIcon() {
87
+ styleButton() {
92
88
  let style = this.$style;
93
- let output = [style.icon];
94
-
89
+ let output = [style.button];
95
90
  if (this.error) { output.push(style.error); }
96
- if (this.success) { output.push(style.success); }
97
-
91
+ else if (this.success) { output.push(style.success); }
92
+ else { output.push(style.neutral); }
98
93
  return output;
99
94
  }
100
95
  }
@@ -103,29 +98,21 @@ export default {
103
98
 
104
99
  <style lang="scss" module>
105
100
 
101
+ $neutral-colors: $c-status-neutral, $c-status-neutral-fade;
106
102
  $success-colors: $c-status-success, $c-status-success-fade;
107
103
  $error-colors: $c-status-error, $c-status-error-fade;
108
104
 
109
- @mixin icon(
110
- $color: $c-status-neutral,
111
- $fade: $c-status-neutral-fade) {
112
-
113
- path[data-fill] { fill: $fade; }
114
- path[data-outline],
115
- path[data-cross] { fill: $color; }
105
+ @mixin icon($color, $fade) {
106
+ [data-fill] { fill: $fade; }
107
+ [data-outline],
108
+ [data-cross] { fill: $color; }
116
109
 
117
110
  @include focus {
118
- path[data-fill] { fill: $color; }
119
- path[data-cross] { fill: $fade; }
111
+ [data-fill] { fill: $color; }
112
+ [data-cross] { fill: $fade; }
120
113
  }
121
114
  }
122
115
 
123
- @mixin invisible {
124
- background: transparent;
125
- line-height: 1;
126
- padding: 0;
127
- }
128
-
129
116
  .container {
130
117
  @include media-breakpoint-down(xs) {
131
118
  font-size: $font-size-sm;
@@ -205,26 +192,6 @@ $error-colors: $c-status-error, $c-status-error-fade;
205
192
  }
206
193
  }
207
194
 
208
- .button, .button:focus {
209
- @include invisible;
210
- @include focus {
211
- @include invisible;
212
- }
213
- }
214
-
215
- .icon {
216
- @include icon;
217
- width: 1.375rem;
218
-
219
- &.error {
220
- @include icon($error-colors...);
221
- }
222
-
223
- &.success {
224
- @include icon($success-colors...);
225
- }
226
- }
227
-
228
195
  .title {
229
196
  margin-bottom: 0.25rem;
230
197
  font-weight: 700;
@@ -235,6 +202,18 @@ $error-colors: $c-status-error, $c-status-error-fade;
235
202
  display: flex;
236
203
  }
237
204
 
205
+ .button.neutral {
206
+ @include icon($neutral-colors...);
207
+ }
208
+
209
+ .button.success {
210
+ @include icon($success-colors...);
211
+ }
212
+
213
+ .button.error {
214
+ @include icon($error-colors...);
215
+ }
216
+
238
217
  </style>
239
218
 
240
219
  <style lang="scss" scoped>
@@ -20,6 +20,10 @@ export default {
20
20
  thin: {
21
21
  type: Boolean,
22
22
  default: false
23
+ },
24
+ footer: {
25
+ type: Boolean,
26
+ default: false
23
27
  }
24
28
  },
25
29
  computed: {
@@ -35,6 +39,7 @@ export default {
35
39
  let output = [style.inner];
36
40
  if (this.masthead) { output.push(style.masthead); }
37
41
  if (this.thin) { output.push(style.thin); }
42
+ if (this.footer) { output.push(style.footer); }
38
43
  return output;
39
44
  }
40
45
  }
@@ -49,7 +54,7 @@ export default {
49
54
 
50
55
  &.splash {
51
56
  padding-right: 10%;
52
- padding-left: 10%;
57
+ padding-left: 10%;
53
58
  }
54
59
 
55
60
  &.masthead {
@@ -60,15 +65,18 @@ export default {
60
65
 
61
66
  .inner {
62
67
  max-width: $constrained_content_width--wide;
63
- padding-bottom: 1.5rem;
64
- padding-top: 1.5rem;
65
68
  margin: 0 auto;
66
69
 
67
- @include media-breakpoint-up(sm) {
68
- padding-bottom: 2.5rem;
69
- padding-top: 2.5rem;
70
- }
70
+ &:not(.footer) {
71
+ padding-bottom: 1.5rem;
72
+ padding-top: 1.5rem;
71
73
 
74
+ @include media-breakpoint-up(sm) {
75
+ padding-bottom: 2.5rem;
76
+ padding-top: 2.5rem;
77
+ }
78
+ }
79
+
72
80
  &.thin {
73
81
  max-width: $constrained_content_width--thin;
74
82
  }
@@ -0,0 +1,58 @@
1
+ <template>
2
+ <div :class="$style.component">
3
+ <img :class="$style.image" :src="image">
4
+ <div v-if="expired" :class="$style.title">
5
+ <h4>Expired</h4>
6
+ </div>
7
+ </div>
8
+ </template>
9
+
10
+ <script>
11
+ export default {
12
+ name: "DisplayStream",
13
+ mounted() {
14
+ console.log(this.$props);
15
+ },
16
+ props: {
17
+ image: {
18
+ type: String,
19
+ required: true,
20
+ },
21
+ expired: {
22
+ type: Boolean,
23
+ default: false,
24
+ }
25
+ }
26
+ }
27
+ </script>
28
+
29
+ <style lang="scss" module>
30
+
31
+ .component {
32
+ border-radius: $border-radius-lg;
33
+ padding-top: 56.25%;
34
+ position: relative;
35
+ overflow: hidden;
36
+ color: $white;
37
+
38
+ .image {
39
+ position: absolute;
40
+ height: auto;
41
+ width: 100%;
42
+ inset: 0;
43
+ }
44
+
45
+ .title {
46
+ background-color: rgba($c-grey-night, 0.8);
47
+ place-items: center;
48
+ position: absolute;
49
+ display: grid;
50
+ inset: 0;
51
+
52
+ h4 {
53
+ font-size: $h2-font-size;
54
+ }
55
+ }
56
+ }
57
+
58
+ </style>
@@ -12,7 +12,7 @@
12
12
  </div>
13
13
  </template>
14
14
 
15
- <script type="text/javascript">
15
+ <script>
16
16
  export default {
17
17
  name: "EventSummary",
18
18
  props: {
@@ -0,0 +1,39 @@
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
+ </div>
11
+ </template>
12
+
13
+ <script>
14
+ export default {
15
+ name: 'FluidIframe',
16
+ props: {
17
+ src: {
18
+ type: String,
19
+ required: true
20
+ }
21
+ }
22
+ };
23
+ </script>
24
+
25
+ <style lang="scss" module>
26
+
27
+ .component {
28
+ border-radius: $border-radius-lg;
29
+ padding-top: 56.25%;
30
+ position: relative;
31
+ overflow: hidden;
32
+ }
33
+
34
+ .component > iframe {
35
+ position: absolute;
36
+ inset: 0;
37
+ }
38
+
39
+ </style>
@@ -0,0 +1,30 @@
1
+ <template>
2
+ <div :class="$style.logos">
3
+ <slot />
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: 'FooterLogos'
10
+ }
11
+ </script>
12
+
13
+ <style lang="scss" module>
14
+
15
+ .logos {
16
+ margin: -1rem;
17
+
18
+ > * {
19
+ margin: 1rem;
20
+ }
21
+
22
+ > svg {
23
+ display: inline-block;
24
+ height: 3rem;
25
+ fill: $white;
26
+ width: auto;
27
+ }
28
+ }
29
+
30
+ </style>
@@ -0,0 +1,20 @@
1
+ <template>
2
+ <div :class="$style.lower">
3
+ <slot />
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: 'FooterLower'
10
+ }
11
+ </script>
12
+
13
+ <style lang="scss" module>
14
+
15
+ .lower {
16
+ padding-bottom: 1.875rem;
17
+ padding-top: 1.875rem;
18
+ }
19
+
20
+ </style>
@@ -0,0 +1,43 @@
1
+ <template>
2
+ <div :class="styleUpper">
3
+ <slot />
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: 'FooterUpper',
10
+ props: {
11
+ splash: {
12
+ type: Boolean,
13
+ default: false
14
+ }
15
+ },
16
+ computed: {
17
+ styleUpper() {
18
+ const style = this.$style;
19
+ let output = [style.upper];
20
+ if (this.splash) { output.push(style.splash); }
21
+ return output;
22
+ },
23
+ }
24
+ }
25
+ </script>
26
+
27
+ <style lang="scss" module>
28
+
29
+ .upper {
30
+ padding-top: 3.75rem;
31
+
32
+ @include media-breakpoint-up(md) {
33
+ grid-template-columns: 11rem auto;
34
+ display: grid;
35
+ gap: 1rem;
36
+ }
37
+
38
+ &:not(.splash) {
39
+ padding-bottom: 3.75rem;
40
+ }
41
+ }
42
+
43
+ </style>
@@ -0,0 +1,92 @@
1
+ <template>
2
+ <div :class="$style.container">
3
+ <label v-if="label" :for="id">
4
+ <strong>{{ label }}</strong> <span v-if="label && required">(required)</span><span v-if="label && optional">(optional)</span>
5
+ </label>
6
+ <div :class="styleContent">
7
+ <slot />
8
+ </div>
9
+ </div>
10
+ </template>
11
+
12
+ <script type="text/javascript">
13
+ export default {
14
+ name: 'FormGroup',
15
+ props: {
16
+ label: {
17
+ type: String
18
+ },
19
+ required: {
20
+ type: Boolean
21
+ },
22
+ optional: {
23
+ type: Boolean
24
+ },
25
+ submit: {
26
+ type: Boolean
27
+ }
28
+ },
29
+ computed: {
30
+ styleContent() {
31
+ const style = this.$style;
32
+ let output = [style.content];
33
+ if (!this.label) { output.push(style.no_label); }
34
+ if (this.submit) { output.push(style.submit); }
35
+ return output;
36
+ },
37
+ id() {
38
+ return this.label.toLowerCase().split(" ").join("_");
39
+ }
40
+ }
41
+ }
42
+ </script>
43
+
44
+ <style lang="scss" module>
45
+
46
+ .container {
47
+
48
+ &:not(:last-of-type) {
49
+ margin-bottom: 1rem;
50
+ }
51
+
52
+ @include media-breakpoint-up(sm) {
53
+ grid-template-columns: 33fr 67fr;
54
+ align-items: center;
55
+ gap: $gap-account;
56
+ display: grid;
57
+ }
58
+
59
+ label {
60
+ font-weight: normal;
61
+
62
+ @include media-breakpoint-down(sm) {
63
+ margin-bottom: 0.5rem;
64
+ }
65
+ }
66
+
67
+ input {
68
+ width: 100%;
69
+ margin: 0;
70
+ }
71
+ }
72
+
73
+ .content {
74
+
75
+ &.no_label {
76
+ @include media-breakpoint-up(sm) {
77
+ grid-column: 2 / 3;
78
+ }
79
+ }
80
+
81
+ &.submit {
82
+ text-align: right;
83
+
84
+ @include media-breakpoint-down(sm) {
85
+ > button {
86
+ width: 100%;
87
+ }
88
+ }
89
+ }
90
+ }
91
+
92
+ </style>
@@ -14,12 +14,11 @@
14
14
  <style lang="scss" module>
15
15
 
16
16
  .container {
17
- grid-template-columns: auto 6rem;
18
- column-gap: 0.5rem;
19
17
  display: grid;
18
+ gap: 1rem;
20
19
 
21
20
  @include media-breakpoint-up(sm) {
22
- column-gap: 1rem;
21
+ grid-template-columns: auto 6rem;
23
22
  }
24
23
  }
25
24
 
@@ -0,0 +1,33 @@
1
+ <template>
2
+ <b-card video-help no-body>
3
+ <b-card-header>
4
+ <b-button variant="video-help" v-b-toggle="`help-${id}`">
5
+ {{ title }}
6
+ </b-button>
7
+ </b-card-header>
8
+ <b-collapse :id="`help-${id}`">
9
+ <b-card-body>
10
+ <slot />
11
+ </b-card-body>
12
+ </b-collapse>
13
+ </b-card>
14
+ </template>
15
+
16
+ <script>
17
+ import { BCard, BCardHeader, BCollapse, BCardBody, BButton } from 'bootstrap-vue'
18
+
19
+ export default {
20
+ name: 'HelpRow',
21
+ components: { BCard, BCardHeader, BCollapse, BCardBody, BButton },
22
+ props: {
23
+ id: {
24
+ type: String,
25
+ required: true,
26
+ },
27
+ title: {
28
+ type: String,
29
+ required: true,
30
+ },
31
+ },
32
+ };
33
+ </script>
@@ -0,0 +1,27 @@
1
+ <template>
2
+ <div :class="styleGroup">
3
+ <slot />
4
+ </div>
5
+ </template>
6
+
7
+ <script type="text/javascript">
8
+ export default {
9
+ name: 'RadioGroup',
10
+ props: {
11
+ error: {
12
+ type: Boolean
13
+ },
14
+ success: {
15
+ type: Boolean
16
+ }
17
+ },
18
+ computed: {
19
+ styleGroup() {
20
+ let styles = ['radio-group'];
21
+ if (this.error) { styles.push('error'); }
22
+ if (this.success) { styles.push('success'); }
23
+ return styles;
24
+ }
25
+ }
26
+ }
27
+ </script>
@@ -1,25 +1,15 @@
1
1
  <template>
2
- <p ref="checking" class="loading-message" :class="{ slim }">
3
- {{ message }}
2
+ <p ref="checking" :class="$style.component">
3
+ <slot />
4
4
  </p>
5
5
  </template>
6
6
 
7
7
  <script>
8
- import { gsap } from "gsap";
9
- import { TextPlugin } from "gsap/TextPlugin";
8
+ import { gsap } from 'gsap'
9
+ import { TextPlugin } from 'gsap/TextPlugin'
10
10
  gsap.registerPlugin(TextPlugin);
11
11
 
12
12
  export default {
13
- props: {
14
- message: {
15
- type: String,
16
- default: "Loading",
17
- },
18
- slim: {
19
- type: Boolean,
20
- default: false,
21
- },
22
- },
23
13
  methods: {
24
14
  loadingAnim(target) {
25
15
  const message = target.innerText;
@@ -54,3 +44,13 @@ export default {
54
44
  },
55
45
  };
56
46
  </script>
47
+
48
+ <style lang="scss" module>
49
+
50
+ .component {
51
+ font-size: $h4-font-size;
52
+ min-height: 2.25rem;
53
+ text-align: center;
54
+ }
55
+
56
+ </style>
@@ -148,17 +148,29 @@
148
148
  }
149
149
  }
150
150
 
151
+ @mixin btn-video-help {
152
+ @include button-link(
153
+ $padding: 1.25rem,
154
+ $background: $c-grey-alpine) {
155
+ background-color: $c-grey-steel;
156
+ color: $white;
157
+ }
158
+ font-weight: 700;
159
+ text-align: left;
160
+ width: 100%;
161
+ }
162
+
151
163
  @mixin btn-exit {
152
164
  @include button-link {
153
165
  @include single-box($c-grey-night);
154
166
  background-color: $white;
155
167
  border-radius: 50%;
156
168
 
157
- path.outline, path.cross {
169
+ [data-outline], [data-cross] {
158
170
  fill: $white;
159
171
  }
160
172
 
161
- path.fill {
173
+ [data-fill] {
162
174
  fill: $c-grey-night;
163
175
  }
164
176
  }
@@ -188,6 +200,20 @@
188
200
  );
189
201
  }
190
202
 
203
+ @mixin btn-invisible {
204
+ &, &:focus {
205
+ background: transparent;
206
+ line-height: 1;
207
+ padding: 0;
208
+
209
+ @include focus {
210
+ background: transparent;
211
+ line-height: 1;
212
+ padding: 0;
213
+ }
214
+ }
215
+ }
216
+
191
217
  @mixin btn-expand {
192
218
  display: block;
193
219
  }
Binary file
@@ -1,9 +1,9 @@
1
- import PersonalIcon from './PersonalIcon'
2
- import MembershipIcon from './MembershipIcon'
3
- import VideoIcon from './VideoIcon'
4
- import PaymentIcon from './PaymentIcon'
5
- import OrdersIcon from './OrdersIcon'
6
- import SupportIcon from './SupportIcon'
1
+ import PersonalIcon from './personal'
2
+ import MembershipIcon from './membership'
3
+ import VideoIcon from './video'
4
+ import PaymentIcon from './payment'
5
+ import OrdersIcon from './orders'
6
+ import SupportIcon from './support'
7
7
 
8
8
  export {
9
9
  PersonalIcon,
File without changes
File without changes
File without changes