barbican-reset 3.17.0 → 3.18.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 (43) hide show
  1. package/README.md +1 -1
  2. package/components/BrAlert.vue +1 -1
  3. package/components/BrButton.vue +2 -2
  4. package/components/BrCardTitle.vue +1 -1
  5. package/components/BrFormCheckbox.vue +1 -1
  6. package/components/BrFormLabel.vue +1 -3
  7. package/components/BrFormToggle.vue +32 -0
  8. package/components/BrNavCard.vue +24 -13
  9. package/components/BrNavCardWrap.vue +5 -0
  10. package/components/BrOverlay.vue +33 -0
  11. package/components/SeeInside.vue +1 -1
  12. package/icons/back_arrow.vue +1 -8
  13. package/icons/close.vue +7 -0
  14. package/icons/index.js +4 -8
  15. package/icons/qr_code.vue +5 -0
  16. package/icons/stream/index.js +0 -2
  17. package/index.js +8 -1
  18. package/package.json +1 -1
  19. package/scss/_br-button.scss +9 -2
  20. package/scss/{_br-checkbox.scss → _br-form-checkbox.scss} +3 -4
  21. package/scss/_br-form-toggle.scss +71 -0
  22. package/scss/_br-nav-card-wrap.scss +11 -0
  23. package/scss/_br-navlink.scss +4 -2
  24. package/scss/_br-overlay.scss +26 -0
  25. package/scss/card/_login.scss +5 -6
  26. package/scss/card/_membership-new.scss +45 -0
  27. package/scss/card/_membership.scss +42 -41
  28. package/scss/card/_navcard.scss +49 -41
  29. package/scss/card/index.scss +1 -0
  30. package/scss/index.scss +7 -3
  31. package/scss/mixins/_br-card.scss +3 -0
  32. package/scss/mixins/_focus.scss +15 -0
  33. package/scss/mixins/buttons/_custom.scss +4 -25
  34. package/scss/mixins/buttons/_outline.scss +4 -4
  35. package/scss/mixins/buttons/custom/_exit-overlay.scss +31 -0
  36. package/scss/mixins/buttons/custom/_renew-membership.scss +27 -0
  37. package/scss/mixins/input/_checkbox.scss +2 -2
  38. package/scss/mixins/input/_generic.scss +4 -2
  39. package/scss/typography.scss +6 -0
  40. package/icons/arrow.vue +0 -5
  41. package/icons/arrow_back.vue +0 -12
  42. package/icons/arrow_forward.vue +0 -10
  43. package/icons/stream/close.vue +0 -7
package/README.md CHANGED
@@ -51,7 +51,7 @@ You can reference any of the following components:
51
51
  | -------------------- | ------------------- | -------------------- | ---------------- | ------------- |
52
52
  | `<br-alert>` | BrAlert.vue | .br-alert | br-alert--setup | - |
53
53
  | `<br-anchor>` | BrAnchor.vue | .btn | setup-button | - |
54
- | `<br-button>` | BrButton.vue | .br-checkbox | br-checkbox | - |
54
+ | `<br-button>` | BrButton.vue | .br-form-checkbox | br-form-checkbox | - |
55
55
  | `<br-confirm-done>` | BrConfirmDone.vue | - | - | - |
56
56
  | `<br-confirm-email>` | BrConfirmEmail.vue | - | - | - |
57
57
  | `<br-container>` | BrContainer.vue | .br-container--outer | - | - |
@@ -19,7 +19,7 @@
19
19
 
20
20
  `
21
21
  <script>
22
- import CloseIcon from "#icons/stream/close.vue";
22
+ import CloseIcon from "#icons/close.vue";
23
23
  import BrButton from "#components/BrButton.vue";
24
24
 
25
25
  export default {
@@ -1,6 +1,6 @@
1
- <template>
2
- <!-- https://dockyard.com/blog/2020/03/02/accessible-loading-indicatorswith-no-extra-elements -->
1
+ <!-- https://dockyard.com/blog/2020/03/02/accessible-loading-indicatorswith-no-extra-elements -->
3
2
 
3
+ <template>
4
4
  <button
5
5
  :class="printClassNames"
6
6
  @click="$emit('click')"
@@ -1,3 +1,3 @@
1
1
  <template>
2
- <h4 class="card-title"><slot /></h4>
2
+ <div class="card-title"><slot /></div>
3
3
  </template>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="br-checkbox">
2
+ <div class="br-form-checkbox">
3
3
  <BrFormInput v-bind="$attrs" type="checkbox">
4
4
  <slot />
5
5
  </BrFormInput>
@@ -1,8 +1,6 @@
1
1
  <template>
2
2
  <component :is="!disabled ? 'label' : 'div'" :for="!disabled ? id : null" class="br-form-label">
3
- <strong>
4
- <slot />
5
- </strong>
3
+ <slot />
6
4
  <span v-if="required"> (required)</span>
7
5
  <span v-if="optional"> (optional)</span>
8
6
  </component>
@@ -0,0 +1,32 @@
1
+ <template>
2
+ <div :class="generateClasses">
3
+ <BrFormLabel>
4
+ <span>
5
+ <slot />
6
+ </span>
7
+ <BrFormInput v-bind="$attrs" type="checkbox" />
8
+ </BrFormLabel>
9
+ </div>
10
+ </template>
11
+
12
+ <script setup>
13
+ import { computed } from 'vue'
14
+ import BrFormLabel from '#components/BrFormLabel.vue'
15
+ import BrFormInput from '#components/BrFormInput.vue'
16
+
17
+ defineOptions({
18
+ inheritAttrs: false,
19
+ })
20
+
21
+ const props = defineProps({
22
+ class: String
23
+ })
24
+
25
+ const generateClasses = computed(() => {
26
+ let result = ['br-form-toggle']
27
+
28
+ if (props.class) result.push(props.class)
29
+
30
+ return result
31
+ })
32
+ </script>
@@ -1,33 +1,33 @@
1
1
  <template>
2
- <a v-if="to.slice(0, 4) == 'http'" :href="to" class="link-navcard external">
3
- <br-card class="navcard external">
4
- <div class="wrap-navcard-content">
5
- <div class="wrap-navcard-icon">
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
6
  <slot name="icon" />
7
7
  </div>
8
8
  <div>
9
- <br-card-title>
9
+ <br-card-title v-if="$slots.title">
10
10
  <slot name="title" />
11
11
  </br-card-title>
12
- <br-card-text>
13
- <slot name="copy" />
12
+ <br-card-text v-if="$slots.text">
13
+ <slot name="text" />
14
14
  </br-card-text>
15
15
  </div>
16
16
  </div>
17
17
  </br-card>
18
18
  </a>
19
- <router-link v-else class="link-navcard" :to="{ name: to }">
19
+ <router-link v-else class="link-navcard" :to="{ name: to }">
20
20
  <br-card class="navcard">
21
- <div class="wrap-navcard-content">
22
- <div class="wrap-navcard-icon">
21
+ <div :class="['wrap-navcard-content', { 'has-icon' : $slots.icon }]">
22
+ <div v-if="$slots.icon" class="wrap-navcard-icon">
23
23
  <slot name="icon" />
24
24
  </div>
25
25
  <div>
26
- <br-card-title>
26
+ <br-card-title v-if="$slots.title">
27
27
  <slot name="title" />
28
28
  </br-card-title>
29
- <br-card-text>
30
- <slot name="copy" />
29
+ <br-card-text v-if="$slots.text">
30
+ <slot name="text" />
31
31
  </br-card-text>
32
32
  </div>
33
33
  </div>
@@ -36,10 +36,21 @@
36
36
  </template>
37
37
 
38
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
+
39
49
  const props = defineProps({
40
50
  to: {
41
51
  type: String,
42
52
  required: true,
43
53
  },
54
+ class: String
44
55
  })
45
56
  </script>
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <div class="br-nav-card-wrap">
3
+ <slot />
4
+ </div>
5
+ </template>
@@ -0,0 +1,33 @@
1
+ <template>
2
+ <div class="br-overlay-wrap">
3
+ <div class="br-overlay-content">
4
+ <slot />
5
+ </div>
6
+ <br-button variant="exit-overlay" @click="emit('closeOverlay')">
7
+ <close-icon class="close-icon" />
8
+ </br-button>
9
+ </div>
10
+ </template>
11
+
12
+ <script setup>
13
+ import { onMounted, onUnmounted } from 'vue';
14
+ import BrButton from "#components/BrButton.vue";
15
+ import CloseIcon from "#icons/close.vue";
16
+
17
+ const emit = defineEmits(["closeOverlay"]);
18
+
19
+ function listenForKeys({ key }) {
20
+ if (key == 'Escape') {
21
+ emit('closeOverlay')
22
+ }
23
+ }
24
+
25
+ onMounted(() => {
26
+ document.addEventListener('keydown', listenForKeys)
27
+ })
28
+
29
+ onUnmounted(() => {
30
+ document.removeEventListener('keydown', listenForKeys)
31
+ })
32
+ </script>
33
+
@@ -44,7 +44,7 @@
44
44
 
45
45
  <script>
46
46
  import BrButton from '#components/BrButton.vue'
47
- import CloseIcon from '#icons/stream/close.vue'
47
+ import CloseIcon from '#icons/close.vue'
48
48
 
49
49
  export default {
50
50
  components: {
@@ -1,10 +1,3 @@
1
1
  <template>
2
- <svg
3
- width="16"
4
- height="16"
5
- viewBox="0 0 16 16"
6
- xmlns="http://www.w3.org/2000/svg"
7
- >
8
- <path d="M16 7H3.83L9.42 1.41L8 0L0 8L8 16L9.41 14.59L3.83 9H16V7Z" />
9
- </svg>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 16 16"><path d="M16,7H3.83L9.42,1.41l-1.42-1.41L0,8l8,8,1.41-1.41-5.58-5.59h12.17v-2Z" fill="currentColor" /></svg>
10
3
  </template>
@@ -0,0 +1,7 @@
1
+ <template>
2
+ <svg width="28" height="28" viewBox="0 0 20 20">
3
+ <path class="tint" fill="#ffffff" d="M10,1c-4.9,0-9,4.1-9,9s4.1,9,9,9s9-4.1,9-9S14.9,1,10,1z"/>
4
+ <path class="cross" fill="currentColor" d="M10,0C4.5,0,0,4.5,0,10s4.5,10,10,10s10-4.5,10-10S15.5,0,10,0z M10,18c-4.4,0-8-3.6-8-8s3.6-8,8-8 s8,3.6,8,8S14.4,18,10,18z M12.6,6L10,8.6L7.4,6L6,7.4L8.6,10L6,12.6L7.4,14l2.6-2.6l2.6,2.6l1.4-1.4L11.4,10L14,7.4L12.6,6z"/>
5
+ </svg>
6
+ </template>
7
+
package/icons/index.js CHANGED
@@ -1,23 +1,19 @@
1
- import ArrowBack from "#icons/arrow_back.vue";
2
- import ArrowIcon from "#icons/arrow.vue";
3
- import ArrowForward from "#icons/arrow_forward.vue";
4
1
  import BackArrow from "#icons/back_arrow.vue";
5
2
  import BarbicanLogo from "#icons/barbican.vue";
6
3
  import CartIcon from "#icons/cart.vue";
7
4
  import CityOfLondonLogo from "#icons/city_of_london.vue";
8
5
  import CityOfLondonLockup from "#icons/city_of_london_lockup.vue";
6
+ import CloseIcon from "#icons/close.vue";
9
7
  import InformationIcon from "#icons/information.vue";
10
-
11
- import PersonIcon from "#icons/person.vue";
8
+ import QrCode from "#icons/qr_code.vue";
12
9
 
13
10
  export {
14
- ArrowBack,
15
- ArrowIcon,
16
- ArrowForward,
17
11
  BackArrow,
18
12
  BarbicanLogo,
19
13
  CartIcon,
20
14
  CityOfLondonLogo,
21
15
  CityOfLondonLockup,
16
+ CloseIcon,
22
17
  InformationIcon,
18
+ QrCode,
23
19
  };
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <path d="M55.3902 99.7024V88.6243H66.4683V99.7024H55.3902ZM44.3122 88.6243V60.9292H55.3902V88.6243H44.3122ZM88.6243 72.0073V49.8512H99.7024V72.0073H88.6243ZM77.5463 49.8512V38.7731H88.6243V49.8512H77.5463ZM11.078 60.9292V49.8512H22.1561V60.9292H11.078ZM0 49.8512V38.7731H11.078V49.8512H0ZM49.8512 11.078V0H60.9292V11.078H49.8512ZM8.30853 24.9256H24.9256V8.30853H8.30853V24.9256ZM0 33.2341V0H33.2341V33.2341H0ZM8.30853 91.3938H24.9256V74.7768H8.30853V91.3938ZM0 99.7024V66.4683H33.2341V99.7024H0ZM74.7768 24.9256H91.3938V8.30853H74.7768V24.9256ZM66.4683 33.2341V0H99.7024V33.2341H66.4683ZM77.5463 99.7024V83.0853H66.4683V72.0073H88.6243V88.6243H99.7024V99.7024H77.5463ZM55.3902 60.9292V49.8512H77.5463V60.9292H55.3902ZM33.2341 60.9292V49.8512H22.1561V38.7731H55.3902V49.8512H44.3122V60.9292H33.2341ZM38.7731 33.2341V11.078H49.8512V22.1561H60.9292V33.2341H38.7731ZM12.4628 20.7713V12.4628H20.7713V20.7713H12.4628ZM12.4628 87.2396V78.931H20.7713V87.2396H12.4628ZM78.931 20.7713V12.4628H87.2396V20.7713H78.931Z" fill="currentColor" />
4
+ </svg>
5
+ </template>
@@ -4,11 +4,9 @@ import ChatIcon from "#icons/stream/chat.vue";
4
4
  import CogIcon from "#icons/stream/cog.vue";
5
5
  import VolumeIcon from "#icons/stream/volume.vue";
6
6
  import LiveIcon from "#icons/stream/live.vue";
7
- import CloseIcon from "#icons/stream/close.vue";
8
7
 
9
8
  export {
10
9
  AirplayIcon,
11
- CloseIcon,
12
10
  CastIcon,
13
11
  ChatIcon,
14
12
  CogIcon,
package/index.js CHANGED
@@ -32,12 +32,16 @@ import BrFormRadioGroup from '#components/BrFormRadioGroup.vue'
32
32
  import BrFormRow from '#components/BrFormRow.vue'
33
33
  import BrFormTel from '#components/BrFormTel.vue'
34
34
  import BrFormTextarea from '#components/BrFormTextarea.vue'
35
+ import BrFormToggle from '#components/BrFormToggle.vue'
35
36
  import BrFormUpdate from '#components/BrFormUpdate.vue'
36
37
  import BrFormVisible from '#components/BrFormVisible.vue'
37
38
 
38
- import BrLoader from '#components/BrLoader.vue'
39
39
  import BrNavCard from '#components/BrNavCard.vue'
40
+ import BrNavCardWrap from '#components/BrNavCardWrap.vue'
40
41
  import BrNavLink from '#components/BrNavLink.vue'
42
+ import BrOverlay from '#components/BrOverlay.vue'
43
+
44
+ import BrLoader from '#components/BrLoader.vue'
41
45
  import BrSkiplink from '#components/BrSkiplink.vue'
42
46
  import BrStatusBars from '#components/BrStatusBars.vue'
43
47
  import BrWrap from '#components/BrWrap.vue'
@@ -78,11 +82,14 @@ export {
78
82
  BrFormRow,
79
83
  BrFormTel,
80
84
  BrFormTextarea,
85
+ BrFormToggle,
81
86
  BrFormUpdate,
82
87
  BrFormVisible,
83
88
  BrLoader,
84
89
  BrNavCard,
90
+ BrNavCardWrap,
85
91
  BrNavLink,
92
+ BrOverlay,
86
93
  BrSkiplink,
87
94
  BrStatusBars,
88
95
  BrWrap,
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.17.0"
140
+ "version": "3.18.0"
141
141
  }
@@ -113,8 +113,15 @@
113
113
  /// Membership card button.
114
114
  /// Used for membership renewals.
115
115
  /// @group Buttons
116
- .btn.btn-membership-card {
117
- @include btn-membership-card;
116
+ .btn.btn-renew-membership {
117
+ @include btn-renew-membership;
118
+ }
119
+
120
+ /// Overlay exit button.
121
+ /// Used for closing the overlay.
122
+ /// @group Buttons
123
+ .btn.btn-exit-overlay {
124
+ @include btn-exit-overlay;
118
125
  }
119
126
 
120
127
  .btn {
@@ -3,11 +3,10 @@
3
3
  @use "mixins/input" as *;
4
4
  @use "mixins/focus" as *;
5
5
 
6
- // deprecate custom-checkbox class. br-checkbox is more descriptive
6
+ /// @deprecated custom-checkbox class. br-form-checkbox is more descriptive
7
7
 
8
- .br-checkbox,
9
- .custom-checkbox {
10
- @include br-checkbox; // formerly checkbox-input
8
+ .br-form-checkbox {
9
+ @include br-form-checkbox; // formerly checkbox-input
11
10
 
12
11
  input[table][type='checkbox'] {
13
12
  @include inset;
@@ -0,0 +1,71 @@
1
+ @use "mixins/input/generic" as *;
2
+ @use "mixins/breakpoints" as *;
3
+
4
+ .br-form-toggle label {
5
+ @include generic-input-label;
6
+
7
+ @include small-up {
8
+ max-width: var(--width-layout-xs);
9
+ }
10
+
11
+ & {
12
+ grid-template-columns: auto 3.25rem;
13
+ padding-left: var(--padding-md);
14
+ display: inline-grid;
15
+ align-items: center;
16
+ font-weight: normal;
17
+ height: initial;
18
+ cursor: pointer;
19
+ width: 100%;
20
+ gap: 0.5em;
21
+ }
22
+ }
23
+
24
+ .br-form-toggle input[type=checkbox] {
25
+ background-color: var(--color-black-50-lighten);
26
+ transition-property: background-color;
27
+ transition-duration: 200ms;
28
+ border-radius: 1.125em;
29
+ position: relative;
30
+ appearance: none;
31
+ height: 1.875rem;
32
+ cursor: inherit;
33
+ width: 3.25rem;
34
+ color: white;
35
+ padding: 0;
36
+ margin: 0;
37
+
38
+ &:focus {
39
+ outline-color: var(--color-black-50-lighten);
40
+ outline-offset: var(--border-width-lg);
41
+ outline-width: var(--border-width-lg);
42
+ outline-style: solid;
43
+ }
44
+ }
45
+
46
+ .br-form-toggle input[type=checkbox]:before {
47
+ transition-property: transform;
48
+ transition-duration: 200ms;
49
+ background-color: white;
50
+ border-radius: 50%;
51
+ position: absolute;
52
+ height: 1.65em;
53
+ bottom: 0.3em;
54
+ width: 1.65em;
55
+ left: 0.3em;
56
+ content: '';
57
+ }
58
+
59
+ .br-form-toggle input[type=checkbox]:checked:before {
60
+ -webkit-transform: translateX(1.65em);
61
+ -ms-transform: translateX(1.65em);
62
+ transform: translateX(1.65em);
63
+ }
64
+
65
+ .br-form-toggle input[type=checkbox]:checked {
66
+ background-color: var(--color-status-success);
67
+
68
+ &:focus {
69
+ outline-color: var(--color-status-success);
70
+ }
71
+ }
@@ -0,0 +1,11 @@
1
+ @use "mixins/breakpoints" as *;
2
+
3
+ .br-nav-card-wrap {
4
+ gap: var(--gap-md);
5
+ display: grid;
6
+
7
+ @include medium-up {
8
+ grid-template-columns: repeat(2, 1fr);
9
+ gap: var(--gap-lg);
10
+ }
11
+ }
@@ -1,5 +1,5 @@
1
1
  .br-navlink {
2
- border-color: var(--color-black-10-lighten);
2
+ border-color: var(--color-black-25-lighten);
3
3
  border-bottom-width: var(--border-width-sm);
4
4
  border-right-width: var(--border-width-sm);
5
5
  border-left-width: var(--border-width-sm);
@@ -10,9 +10,11 @@
10
10
  background-color: white;
11
11
  text-decoration: none;
12
12
  border-top-width: 0;
13
+ align-items: center;
13
14
  border-style: solid;
15
+ gap: var(--gap-xs);
14
16
  font-weight: bold;
15
- display: block;
17
+ display: flex;
16
18
  }
17
19
 
18
20
  .br-navlink:first-child {
@@ -0,0 +1,26 @@
1
+ @use "./mixins/core" as *;
2
+
3
+ .br-overlay-wrap {
4
+ @include inset;
5
+
6
+ & {
7
+ background-color: var(--color-brand-generic-5-lighten);
8
+ color: var(--color-black-60-lighten);
9
+ padding: var(--padding-xxl);
10
+ align-items: center;
11
+ overflow: scroll;
12
+ position: fixed;
13
+ display: flex;
14
+ height: 100%;
15
+ width: 100%;
16
+ z-index: 5;
17
+ }
18
+ }
19
+
20
+ .br-overlay-content {
21
+ justify-content: center;
22
+ position: relative;
23
+ display: flex;
24
+ width: 100%;
25
+ z-index: 2;
26
+ }
@@ -1,12 +1,11 @@
1
1
  .card[login] {
2
+ max-width: 100%;
3
+ width: 800px;
2
4
 
3
5
  .card-header {
4
- justify-content: space-between;
6
+ grid-template-columns: auto 28px;
7
+ column-gap: var(--gap-sm);
5
8
  align-items: center;
6
- display: flex;
7
- }
8
-
9
- .card-title {
10
- font-size: var(--font-size-h1);
9
+ display: grid;
11
10
  }
12
11
  }
@@ -0,0 +1,45 @@
1
+ @use "../mixins/breakpoints" as *;
2
+
3
+ $colors: (
4
+ "member": var(--color-brand-membership),
5
+ "member-plus": var(--color-brand-membership-35-darken),
6
+ "patron": var(--color-donor-patron),
7
+ "premier-patron": var(--color-donor-patron),
8
+ "principal-patron": var(--color-donor-principle),
9
+ "directors-circle": var(--color-donor-principle),
10
+ "young-barbican": var(--color-youngbarbican-1),
11
+ );
12
+
13
+ $gradients: (
14
+ "member-plus": linear-gradient(120deg, var(--color-brand-membership-35-darken) 20%, var(--color-brand-membership) 100%),
15
+ "patron": linear-gradient(120deg, var(--color-donor-patron) 60%, var(--color-donor-patron-light) 75%, var(--color-donor-patron) 90%),
16
+ "premier-patron": linear-gradient(120deg, var(--color-donor-patron) 60%, var(--color-donor-patron-light) 75%, var(--color-donor-patron) 90%),
17
+ "principal-patron": linear-gradient(120deg, var(--color-donor-principle) 60%, var(--color-donor-principle-light) 75%, var(--color-donor-principle) 90%),
18
+ "directors-circle": linear-gradient(120deg, var(--color-donor-principle) 60%, var(--color-donor-principle-light) 75%, var(--color-donor-principle) 90%),
19
+ "young-barbican": linear-gradient(120deg, var(--color-youngbarbican-1) 0%, var(--color-youngbarbican-2) 50%, var(--color-youngbarbican-3) 95%),
20
+ );
21
+
22
+ .card.membership-new {
23
+ background-color: var(--color-black-60-lighten);
24
+ border-width: 0;
25
+ color: white;
26
+ width: 196px;
27
+ }
28
+
29
+ .card.membership-new + .card.membership-new {
30
+ @include small-up {
31
+ margin-top: 0;
32
+ }
33
+ }
34
+
35
+ @each $name, $value in $colors {
36
+ .card.membership-new.#{$name} {
37
+ background-color: #{$value};
38
+ }
39
+ }
40
+
41
+ @each $name, $value in $gradients {
42
+ .card.membership-new.#{$name} {
43
+ background-image: #{$value};
44
+ }
45
+ }
@@ -1,51 +1,52 @@
1
- @use "../mixins/breakpoints";
2
-
3
- .card[membership] {
4
- box-shadow: 0 0 0.375rem rgba(var(--color-black-50-lighten), 0.5);
5
- background: var(--color-black-60-lighten);
6
- width: calc(100% - 1rem);
7
- display: inline-block;
8
- margin: var(--margin-sm);
1
+ @use "../mixins/breakpoints" as *;
2
+
3
+ $colors: (
4
+ "member": var(--color-brand-membership),
5
+ "member-plus": var(--color-brand-membership-35-darken),
6
+ "patron": var(--color-donor-patron),
7
+ "premier-patron": var(--color-donor-patron),
8
+ "principal-patron": var(--color-donor-principle),
9
+ "directors-circle": var(--color-donor-principle),
10
+ "young-barbican": var(--color-youngbarbican-1),
11
+ );
12
+
13
+ $gradients: (
14
+ "member-plus": linear-gradient(120deg, var(--color-brand-membership-35-darken) 20%, var(--color-brand-membership) 100%),
15
+ "patron": linear-gradient(120deg, var(--color-donor-patron) 60%, var(--color-donor-patron-light) 75%, var(--color-donor-patron) 90%),
16
+ "premier-patron": linear-gradient(120deg, var(--color-donor-patron) 60%, var(--color-donor-patron-light) 75%, var(--color-donor-patron) 90%),
17
+ "principal-patron": linear-gradient(120deg, var(--color-donor-principle) 60%, var(--color-donor-principle-light) 75%, var(--color-donor-principle) 90%),
18
+ "directors-circle": linear-gradient(120deg, var(--color-donor-principle) 60%, var(--color-donor-principle-light) 75%, var(--color-donor-principle) 90%),
19
+ "young-barbican": linear-gradient(120deg, var(--color-youngbarbican-1) 0%, var(--color-youngbarbican-2) 50%, var(--color-youngbarbican-3) 95%),
20
+ );
21
+
22
+ .card.membership {
23
+ background-color: var(--color-black-60-lighten);
24
+ min-height: 12.75rem;
25
+ border-width: 0;
9
26
  color: white;
10
- border: none;
11
-
12
- @include breakpoints.small-up {
13
- width: var(--width-layout-xs);
14
- }
15
-
16
- >.card-body {
17
- align-items: flex-start;
18
- row-gap: var(--gap-sm);
19
- display: grid;
20
-
21
- @include breakpoints.small-up {
22
- row-gap: var(--gap-xl);
23
- }
24
- }
25
-
26
- &.member {
27
- background-color: var(--color-brand-membership);
28
- }
29
27
 
30
- &.member-plus {
31
- background-color: var(--color-brand-membership-35-darken);
32
- background-image: linear-gradient(120deg, var(--color-brand-membership-35-darken) 20%, var(--color-brand-membership) 100%);
28
+ @include small-up {
29
+ max-width: var(--width-layout-xs);
30
+ margin: var(--margin-xs);
31
+ display: inline-block;
32
+ width: 100%;
33
33
  }
34
+ }
34
35
 
35
- &.patron,
36
- &.premier-patron {
37
- background-color: var(--color-donor-patron);
38
- background-image: linear-gradient(120deg, var(--color-donor-patron) 60%, var(--color-donor-patron-light) 75%, var(--color-donor-patron) 90%);
36
+ .card.membership + .card.membership {
37
+ @include small-up {
38
+ margin-top: 0;
39
39
  }
40
+ }
40
41
 
41
- &.principle-patron,
42
- &.directors-circle {
43
- background-color: var(--color-donor-principle);
44
- background-image: linear-gradient(120deg, var(--color-donor-principle) 60%, var(--color-donor-principle-light) 75%, var(--color-donor-principle) 90%);
42
+ @each $name, $value in $colors {
43
+ .card.membership.#{$name} {
44
+ background-color: #{$value};
45
45
  }
46
+ }
46
47
 
47
- &.young-barbican {
48
- background-color: var(--color-youngbarbican-1);
49
- background-image: linear-gradient(120deg, var(--color-youngbarbican-1) 0%, var(--color-youngbarbican-2) 50%, var(--color-youngbarbican-3) 95%);
48
+ @each $name, $value in $gradients {
49
+ .card.membership.#{$name} {
50
+ background-image: #{$value};
50
51
  }
51
52
  }
@@ -1,47 +1,17 @@
1
1
  @use "../mixins/breakpoints" as *;
2
2
 
3
- .card.navcard {
4
- background-color: transparent;
5
- border-width: 0;
6
- }
7
-
8
- .card.navcard .card-body {
9
- @include large-up {
10
- padding: var(--padding-card-lg);
11
- }
12
-
13
- @include small-down {
14
- padding: var(--padding-card-sm);
15
- }
16
- }
17
-
18
- .card.navcard.external .card-body {
3
+ .link-navcard.inline .card.navcard .card-body {
19
4
  @include medium-down {
20
5
  padding: 0;
21
6
  }
22
7
  }
23
8
 
24
- .card.navcard .card-title {
25
- line-height: var(--line-height-sm);
26
- font-size: var(--font-size-h2);
27
-
28
- @include small-down {
29
- font-size: var(--font-size-h4);
30
- }
31
- }
32
-
33
- .card.navcard .card-title+.card-text {
34
- margin-top: var(--margin-md);
35
- }
36
-
37
- .card.navcard .card-text {
38
- @include small-down {
39
- display: none;
40
- }
9
+ .link-navcard.benefits .card.navcard .card-title {
10
+ font-size: var(--font-size-h4);
41
11
  }
42
12
 
43
13
  @include medium-down {
44
- .link-navcard.external {
14
+ .link-navcard.inline {
45
15
  background-color: transparent;
46
16
  margin-top: var(--margin-md);
47
17
  margin-right: auto;
@@ -49,20 +19,20 @@
49
19
  border-width: 0;
50
20
  }
51
21
 
52
- .link-navcard.external .wrap-navcard-content {
22
+ .link-navcard.inline .wrap-navcard-content {
53
23
  display: block;
54
24
  }
55
25
 
56
- .link-navcard.external .wrap-navcard-icon {
26
+ .link-navcard.inline .wrap-navcard-icon {
57
27
  display: none;
58
28
  }
59
29
 
60
- .link-navcard.external .card-text {
30
+ .link-navcard.inline .card-text {
61
31
  display: none;
62
32
  }
63
33
 
64
- .link-navcard.external:hover,
65
- .link-navcard.external:focus {
34
+ .link-navcard.inline:hover,
35
+ .link-navcard.inline:focus {
66
36
  background-color: var(--color-black-80-lighten);
67
37
  outline-color: var(--color-black-80-lighten);
68
38
  outline-width: 0.25rem;
@@ -72,7 +42,7 @@
72
42
  }
73
43
 
74
44
  @include small-down {
75
- .link-navcard.external {
45
+ .link-navcard.inline {
76
46
  margin-top: var(--margin-sm);
77
47
  }
78
48
  }
@@ -104,6 +74,40 @@
104
74
  transform: scale(0.98);
105
75
  }
106
76
 
77
+ .card.navcard {
78
+ background-color: transparent;
79
+ border-width: 0;
80
+ }
81
+
82
+ .card.navcard .card-body {
83
+ @include large-up {
84
+ padding: var(--padding-card-lg);
85
+ }
86
+
87
+ @include small-down {
88
+ padding: var(--padding-card-sm);
89
+ }
90
+ }
91
+
92
+ .card.navcard .card-title {
93
+ line-height: var(--line-height-sm);
94
+ font-size: var(--font-size-h2);
95
+
96
+ @include small-down {
97
+ font-size: var(--font-size-h4);
98
+ }
99
+ }
100
+
101
+ .card.navcard .card-title+.card-text {
102
+ margin-top: var(--margin-md);
103
+ }
104
+
105
+ .card.navcard .card-text {
106
+ @include small-down {
107
+ display: none;
108
+ }
109
+ }
110
+
107
111
  .wrap-navcard-icon {
108
112
  @include small-up {
109
113
  margin-top: var(--margin-sm);
@@ -114,7 +118,7 @@
114
118
  display: block;
115
119
  }
116
120
 
117
- .wrap-navcard-content {
121
+ .wrap-navcard-content.has-icon {
118
122
  grid-template-columns: 2.1875rem auto;
119
123
  gap: var(--gap-md);
120
124
  display: grid;
@@ -122,4 +126,8 @@
122
126
  @include small-down {
123
127
  align-items: center;
124
128
  }
129
+ }
130
+
131
+ .wrap-navcard-content:not(.has-icon) {
132
+ text-align: center;
125
133
  }
@@ -4,6 +4,7 @@
4
4
  @use "confirm";
5
5
  @use "login";
6
6
  @use "membership";
7
+ @use "membership-new";
7
8
  @use "navcard";
8
9
  @use "password";
9
10
  @use "related";
package/scss/index.scss CHANGED
@@ -10,18 +10,21 @@
10
10
 
11
11
  @use "br-alert";
12
12
  @use "br-button";
13
- @use "br-checkbox";
14
13
  @use "br-container";
15
14
  @use "br-footer";
16
15
 
16
+ @use "br-form-checkbox";
17
17
  @use "br-form-edit";
18
- @use "br-form-visible";
19
18
  @use "br-form-row";
20
19
  @use "br-form-textarea";
20
+ @use "br-form-toggle";
21
21
  @use "br-form-update";
22
+ @use "br-form-visible";
22
23
 
23
24
  @use "br-loader";
25
+ @use "br-nav-card-wrap";
24
26
  @use "br-navlink";
27
+ @use "br-overlay";
25
28
  @use "br-promo";
26
29
  @use "br-radio";
27
30
  @use "br-select";
@@ -199,6 +202,7 @@
199
202
  --margin-xxxl: 2.5rem;
200
203
  --margin-wrap-sm: calc(var(--margin-xs) * -1);
201
204
  --margin-wrap-md: calc(var(--margin-sm) * -1);
205
+ --margin-wrap-lg: calc(var(--margin-md) * -1);
202
206
  --min-height-button: 2.5rem;
203
207
  --padding-xs: 0.25rem;
204
208
  --padding-sm: 0.5rem;
@@ -215,7 +219,7 @@
215
219
  --padding-layout-lg: 10%;
216
220
  --width-icon: 10rem;
217
221
  --width-title: 20rem;
218
- --width-layout-xs: 25rem;
222
+ --width-layout-xs: 24rem;
219
223
  --width-layout-sm: 50rem;
220
224
  --width-layout-md: 60rem;
221
225
  --width-layout-lg: 75rem;
@@ -6,6 +6,8 @@
6
6
  border-width: var(--border-width-sm);
7
7
  background-color: white;
8
8
  border-style: solid;
9
+ overflow: hidden;
10
+ width: 100%;
9
11
 
10
12
  +.card {
11
13
  margin-top: var(--margin-lg);
@@ -23,6 +25,7 @@
23
25
 
24
26
  @mixin br-card-title {
25
27
  font-size: var(--font-size-h1);
28
+ font-weight: bold;
26
29
  margin: 0;
27
30
  }
28
31
 
@@ -120,4 +120,19 @@
120
120
  &:focus {
121
121
  @content;
122
122
  }
123
+ }
124
+
125
+ @mixin close-icon-focus {
126
+ outline-width: var(--border-width-lg);
127
+ outline-color: currentColor;
128
+ outline-style: solid;
129
+ border-radius: 50%;
130
+
131
+ path.cross {
132
+ fill: white;
133
+ }
134
+
135
+ path.tint {
136
+ fill: currentColor;
137
+ }
123
138
  }
@@ -6,6 +6,9 @@
6
6
  @use "../../mixins/buttons/setup" as *;
7
7
  @use "../../functions" as *;
8
8
 
9
+ @forward "custom/renew-membership";
10
+ @forward "custom/exit-overlay";
11
+
9
12
  @mixin link-button($color: inherit,
10
13
  $background: transparent,
11
14
  $padding: 0,
@@ -143,17 +146,7 @@
143
146
  }
144
147
 
145
148
  @include focus {
146
- @include single-box(currentColor,
147
- 0.1875rem); // @BUG: safari outline + border-radius
148
- border-radius: 50%;
149
-
150
- path.cross {
151
- fill: white;
152
- }
153
-
154
- path.tint {
155
- fill: currentColor;
156
- }
149
+ @include close-icon-focus;
157
150
  }
158
151
  }
159
152
 
@@ -179,20 +172,6 @@
179
172
  }
180
173
  }
181
174
 
182
- @mixin btn-membership-card {
183
- @include outline-button($color: white, $background: transparent);
184
-
185
- @include focus {
186
- &.member {
187
- color: var(--color-brand-membership);
188
- }
189
-
190
- &.member-plus {
191
- color: var(--color-brand-membership-35-darken);
192
- }
193
- }
194
- }
195
-
196
175
  @mixin btn-video-login {
197
176
  @include solid-button($background: white, $color: #0a0a0a);
198
177
  }
@@ -1,15 +1,15 @@
1
- @use "../../mixins/focus";
1
+ @use "../../mixins/focus" as *;
2
2
 
3
3
  @mixin outline-button($color: var(--color-brand-generic),
4
4
  $background: white,
5
- $border-width: var(--border-width-sm),
5
+ $border-width: var(--border-width-lg),
6
6
  $padding: false,
7
7
  $margin: false,
8
8
  $line-height: false,
9
9
  $font-size: false,
10
10
  ) {
11
- border-width: $border-width;
12
11
  background-color: $background;
12
+ border-width: $border-width;
13
13
  border-color: $color;
14
14
  border-style: solid;
15
15
  color: $color;
@@ -34,7 +34,7 @@
34
34
  fill: $color;
35
35
  }
36
36
 
37
- @include focus.focus {
37
+ @include focus {
38
38
  @include outline-button-focus($color, $background)
39
39
  }
40
40
  }
@@ -0,0 +1,31 @@
1
+ @use "../../../mixins/core" as *;
2
+ @use "../../../mixins/focus" as *;
3
+
4
+ @mixin btn-exit-overlay {
5
+ // @include invisible-button; causing a module loop
6
+ @include inset;
7
+
8
+ & {
9
+ background-color: transparent;
10
+ border: none;
11
+ padding: 0;
12
+
13
+ border-radius: 0;
14
+ position: fixed;
15
+ height: 100%;
16
+ width: 100%;
17
+ z-index: 1;
18
+ }
19
+
20
+ &:hover, &:focus {
21
+ .close-icon {
22
+ @include close-icon-focus;
23
+ }
24
+ }
25
+
26
+ .close-icon {
27
+ right: var(--padding-xxl);
28
+ top: var(--padding-xxl);
29
+ position: fixed;
30
+ }
31
+ }
@@ -0,0 +1,27 @@
1
+ @use "../../../mixins/buttons/outline" as *;
2
+
3
+ $iterations: (
4
+ "member": var(--color-brand-membership),
5
+ "member-plus": var(--color-brand-membership-35-darken),
6
+ "patron": var(--color-donor-patron),
7
+ "premier-patron": var(--color-donor-patron),
8
+ "principal-patron": var(--color-donor-principle),
9
+ "directors-circle": var(--color-donor-principle),
10
+ "young-barbican": var(--color-youngbarbican-1),
11
+ );
12
+
13
+ @mixin btn-renew-membership {
14
+ @include outline-button($color: white, $background: transparent);
15
+
16
+ &:focus, &:hover {
17
+ @each $name, $value in $iterations {
18
+ &.#{$name} {
19
+ color: #{$value};
20
+ }
21
+ }
22
+ }
23
+
24
+ &:active {
25
+ transform: scale(0.98);
26
+ }
27
+ }
@@ -1,12 +1,12 @@
1
1
  @use "generic" as *;
2
2
 
3
- @mixin br-checkbox($state: neutral) {
3
+ @mixin br-form-checkbox($state: neutral) {
4
4
  @include generic-input($state, checkbox);
5
5
  display: block;
6
6
  }
7
7
 
8
8
  @mixin br-spx-checkbox($state: neutral) {
9
- @include br-checkbox($state);
9
+ @include br-form-checkbox($state);
10
10
 
11
11
  input:focus {
12
12
  @include generic-input-target-focus;
@@ -58,13 +58,15 @@
58
58
  }
59
59
 
60
60
  @mixin generic-input-label($state: neutral) {
61
- border: var(--border-width-sm) solid var(--color-black-25-lighten);
62
- padding-left: var(--padding-xxxl);
61
+ border-color: var(--color-black-25-lighten);
63
62
  border-radius: var(--border-radius-lg);
63
+ border-width: var(--border-width-sm);
64
64
  padding-bottom: var(--padding-md);
65
+ padding-left: var(--padding-xxxl);
65
66
  padding-right: var(--padding-md);
66
67
  padding-top: var(--padding-md);
67
68
  background-color: white;
69
+ border-style: solid;
68
70
  font-weight: normal;
69
71
  display: block;
70
72
 
@@ -1,31 +1,37 @@
1
1
  h1,
2
2
  .h1 {
3
3
  font-size: var(--font-size-h1);
4
+ margin: 0;
4
5
  }
5
6
 
6
7
  h2,
7
8
  .h2 {
8
9
  font-size: var(--font-size-h2);
10
+ margin: 0;
9
11
  }
10
12
 
11
13
  h3,
12
14
  .h3 {
13
15
  font-size: var(--font-size-h3);
16
+ margin: 0;
14
17
  }
15
18
 
16
19
  h4,
17
20
  .h4 {
18
21
  font-size: var(--font-size-h4);
22
+ margin: 0;
19
23
  }
20
24
 
21
25
  h5,
22
26
  .h5 {
23
27
  font-size: var(--font-size-h5);
28
+ margin: 0;
24
29
  }
25
30
 
26
31
  h6,
27
32
  .h6 {
28
33
  font-size: var(--font-size-h6);
34
+ margin: 0;
29
35
  }
30
36
 
31
37
  a,
package/icons/arrow.vue DELETED
@@ -1,5 +0,0 @@
1
- <template>
2
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 83.2 80.9" height="12" width="12">
3
- <path fill="white" d="M42.8.4L31.9 11.2l23.7 22.2H0V48h55.6l-24 21.6 11.2 11.3 40.4-40.7z"></path>
4
- </svg>
5
- </template>
@@ -1,12 +0,0 @@
1
- <template>
2
- <svg
3
- xmlns="http://www.w3.org/2000/svg"
4
- height="24"
5
- viewBox="0 0 24 24"
6
- width="24"
7
- >
8
- <path
9
- d="M17.51 3.87L15.73 2.1 5.84 12l9.9 9.9 1.77-1.77L9.38 12l8.13-8.13z"
10
- />
11
- </svg>
12
- </template>
@@ -1,10 +0,0 @@
1
- <template>
2
- <svg
3
- xmlns="http://www.w3.org/2000/svg"
4
- height="24"
5
- viewBox="0 0 24 24"
6
- width="24"
7
- >
8
- <polygon points="6.23,20.23 8,22 18,12 8,2 6.23,3.77 14.46,12" />
9
- </svg>
10
- </template>
@@ -1,7 +0,0 @@
1
- <template>
2
- <svg width="28" height="28" viewBox="0 0 20 20">
3
- <path class="tint" fill="#ffffff" d="M10,1c-4.9,0-9,4.1-9,9s4.1,9,9,9s9-4.1,9-9S14.9,1,10,1z"/>
4
- <path class="cross" fill="#353535" d="M10,0C4.5,0,0,4.5,0,10s4.5,10,10,10s10-4.5,10-10S15.5,0,10,0z M10,18c-4.4,0-8-3.6-8-8s3.6-8,8-8 s8,3.6,8,8S14.4,18,10,18z M12.6,6L10,8.6L7.4,6L6,7.4L8.6,10L6,12.6L7.4,14l2.6-2.6l2.6,2.6l1.4-1.4L11.4,10L14,7.4L12.6,6z"/>
5
- </svg>
6
- </template>
7
-