officialblock 1.0.7 → 1.0.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 (103) hide show
  1. package/dist/index-Ch_ldWmA.js +1 -0
  2. package/dist/index-DXm2cqxo.mjs +485 -0
  3. package/dist/official-block.cjs.js +74 -74
  4. package/dist/official-block.es.js +13608 -10831
  5. package/dist/official-block.umd.js +78 -78
  6. package/dist/style.css +1 -1
  7. package/dist/swiper-JiLDDxAF.js +1 -0
  8. package/dist/swiper-acbnDJoL.mjs +2035 -0
  9. package/dist/utils-DD-vVZej.mjs +316 -0
  10. package/dist/utils-DOLLD0-F.js +1 -0
  11. package/package.json +2 -1
  12. package/src/assets/icon-email.svg +3 -0
  13. package/src/components/ArticleList/article.vue +3 -3
  14. package/src/components/ArticleList/contact.vue +9 -9
  15. package/src/components/ArticleList/index.ts +1 -1
  16. package/src/components/ArticleList/index.vue +22 -80
  17. package/src/components/ArticleList/setting.vue +339 -175
  18. package/src/components/ArticleList/type.ts +12 -18
  19. package/src/components/BannerImage/index.ts +11 -0
  20. package/src/components/BannerImage/index.vue +153 -0
  21. package/src/components/BannerImage/setting.vue +55 -0
  22. package/src/components/BannerImage/type.ts +10 -0
  23. package/src/components/BannerImageWithLink/index.ts +11 -0
  24. package/src/components/BannerImageWithLink/index.vue +323 -0
  25. package/src/components/BannerImageWithLink/setting.vue +344 -0
  26. package/src/components/BannerImageWithLink/type.ts +17 -0
  27. package/src/components/BannerPage/index.ts +11 -0
  28. package/src/components/BannerPage/index.vue +283 -0
  29. package/src/components/BannerPage/setting.vue +55 -0
  30. package/src/components/BannerPage/type.ts +10 -0
  31. package/src/components/BtnList/index.ts +11 -0
  32. package/src/components/BtnList/index.vue +588 -0
  33. package/src/components/BtnList/setting.vue +255 -0
  34. package/src/components/BtnList/type.ts +10 -0
  35. package/src/components/Button/index.vue +45 -33
  36. package/src/components/ContactUsList/index.ts +11 -0
  37. package/src/components/ContactUsList/index.vue +369 -0
  38. package/src/components/ContactUsList/setting.vue +497 -0
  39. package/src/components/ContactUsList/type.ts +17 -0
  40. package/src/components/CountDown/index.ts +11 -0
  41. package/src/components/CountDown/index.vue +315 -0
  42. package/src/components/CountDown/setting.vue +302 -0
  43. package/src/components/CountDown/type.ts +17 -0
  44. package/src/components/CustomIframe/index.ts +11 -0
  45. package/src/components/CustomIframe/index.vue +118 -0
  46. package/src/components/CustomIframe/setting.vue +323 -0
  47. package/src/components/CustomIframe/type.ts +17 -0
  48. package/src/components/CustomSpace/index.ts +11 -0
  49. package/src/components/CustomSpace/index.vue +82 -0
  50. package/src/components/CustomSpace/setting.vue +89 -0
  51. package/src/components/CustomSpace/type.ts +10 -0
  52. package/src/components/GalleryList/index.ts +12 -0
  53. package/src/components/GalleryList/index.vue +311 -0
  54. package/src/components/GalleryList/setting.vue +268 -0
  55. package/src/components/GalleryList/type.ts +10 -0
  56. package/src/components/HeroSlide/index.ts +1 -1
  57. package/src/components/HeroSlide/index.vue +85 -133
  58. package/src/components/HeroSlide/setting.vue +435 -0
  59. package/src/components/HeroSlide/type.ts +5 -14
  60. package/src/components/LinkLIst/index.ts +11 -0
  61. package/src/components/LinkLIst/index.vue +317 -0
  62. package/src/components/LinkLIst/setting.vue +264 -0
  63. package/src/components/LinkLIst/type.ts +10 -0
  64. package/src/components/Media/index.vue +18 -18
  65. package/src/components/Operate/index.vue +17 -8
  66. package/src/components/Profile/index.vue +999 -0
  67. package/src/components/Profile/modal.vue +56 -0
  68. package/src/components/Profile/setting.vue +330 -0
  69. package/src/components/QuickLinks/index.vue +166 -0
  70. package/src/components/QuoteText/index.ts +11 -0
  71. package/src/components/QuoteText/index.vue +133 -0
  72. package/src/components/QuoteText/setting.vue +81 -0
  73. package/src/components/QuoteText/type.ts +10 -0
  74. package/src/components/ScrollKeyInfo/index.ts +11 -0
  75. package/src/components/ScrollKeyInfo/index.vue +1345 -0
  76. package/src/components/ScrollKeyInfo/setting.vue +302 -0
  77. package/src/components/ScrollKeyInfo/type.ts +17 -0
  78. package/src/components/Swiper/index.vue +538 -0
  79. package/src/components/TabDefault/components/ComponentSelector/compsData.js +143 -0
  80. package/src/components/TabDefault/components/ComponentSelector/index.vue +188 -0
  81. package/src/components/TabDefault/components/PageContent.vue +207 -0
  82. package/src/components/TabDefault/index.vue +475 -0
  83. package/src/components/TabDefault/setting.vue +581 -0
  84. package/src/components/TabDefault/type.ts +17 -0
  85. package/src/components/TableTwo/index.ts +11 -0
  86. package/src/components/TableTwo/index.vue +232 -0
  87. package/src/components/TableTwo/setting.vue +558 -0
  88. package/src/components/TableTwo/type.ts +17 -0
  89. package/src/components/index.ts +40 -5
  90. package/src/index.ts +56 -12
  91. package/src/main.ts +6 -3
  92. package/src/router/index.ts +6 -0
  93. package/src/style.css +17 -0
  94. package/src/styles/component-isolation.scss +257 -0
  95. package/src/styles/editor.scss +1 -1
  96. package/src/styles/layers.scss +256 -0
  97. package/src/styles/main.scss +21687 -0
  98. package/src/styles/mixins/style-isolation.scss +262 -0
  99. package/src/styles/smart-reset.scss +287 -0
  100. package/src/styles/test.scss +1 -1
  101. package/src/types/button.ts +10 -0
  102. package/src/views/StyleIsolationTest.vue +292 -0
  103. package/src/views/components/ArticleListDemo.vue +59 -19
@@ -1,23 +1,17 @@
1
- import type { VNode } from 'vue';
2
-
3
- export interface ComponentProps {
4
- /** 控制组件尺寸 */
5
- size?: 'small' | 'medium' | 'large'
6
- /** 是否禁用状态 */
7
- disabled?: boolean
1
+ export interface ArticleListProps {
8
2
  /** 双向绑定的值 */
9
- modelValue: string | number
3
+ modelValue: any
10
4
  }
11
5
 
12
- export interface ComponentEmits {
13
- (e: 'update:modelValue', value: string | number): void
14
- (e: 'change', value: string | number): void
15
- (e: 'focus', event: FocusEvent): void
6
+ export interface ArticleListEmits {
7
+ (e: 'update:modelValue', value: any): void
8
+ (e: 'handleDelete', value: string | number): void
9
+ (e: 'handleCopy', value: any): void
16
10
  }
17
11
 
18
- export type ComponentSlots = {
19
- /** 默认插槽内容 */
20
- default?: (props: { value: string | number }) => VNode[]
21
- /** 头部内容 */
22
- header?: (props: { title: string }) => VNode[]
23
- }
12
+ // export type ComponentSlots = {
13
+ // /** 默认插槽内容 */
14
+ // default?: (props: { value: string | number }) => VNode[]
15
+ // /** 头部内容 */
16
+ // header?: (props: { title: string }) => VNode[]
17
+ // }
@@ -0,0 +1,11 @@
1
+ import type { App, Plugin } from 'vue'
2
+ import BannerImage from './index.vue'
3
+
4
+ export default {
5
+ install: (app: App) => {
6
+ app.component('BannerImage', BannerImage)
7
+ },
8
+ } satisfies Plugin
9
+
10
+ export { default as BannerImage } from './index.vue'
11
+ export type { BannerImageProps, BannerImageEmits } from './type'
@@ -0,0 +1,153 @@
1
+ <template>
2
+ <div class="banner-image" @mouseenter="isHover = true" @mouseleave="isHover = false">
3
+ <div class="banner-image__image"
4
+ :style="{backgroundImage: 'url(' + modelValue?.data?.imgSrc + ')', 'background-position': 'center'}"
5
+ >
6
+ <div class="banner-image__title is-zh">
7
+ {{ modelValue?.data?.title }}
8
+ </div>
9
+ </div>
10
+
11
+ <Operate v-if="!modelValue?.readOnly" v-model:show="isHover" @handle-edit="showSetting = true" @handle-delete="handleDelete" @handle-copy="handleCopy"></Operate>
12
+ </div>
13
+
14
+ <Setting v-model:show="showSetting" :data="modelValue"></Setting>
15
+ </template>
16
+
17
+ <script lang="ts" setup>
18
+ import { ref } from 'vue'
19
+ import { randomString } from '@/utils/common'
20
+ import Operate from '@/components/Operate/index.vue'
21
+ import Setting from './setting.vue'
22
+
23
+
24
+ // 定义组件名称
25
+ defineOptions({
26
+ name: 'BannerImage'
27
+ })
28
+
29
+ const props = defineProps({
30
+ modelValue: {
31
+ type: Object,
32
+ default: () => {}
33
+ },
34
+
35
+ // 是否预览
36
+ isPreview: {
37
+ type: Boolean,
38
+ default: false
39
+ }
40
+ })
41
+
42
+ const emit = defineEmits(['update:modelValue', 'handleDelete', 'handleCopy'])
43
+
44
+ const handleInit = () => {
45
+ if (props.modelValue && props.modelValue.data) return // 有数据不用初始化
46
+ const data = {
47
+ id: props.modelValue?.id || randomString(),
48
+ type: 'BannerImage',
49
+ readOnly: props.modelValue?.readOnly || false,
50
+ data: {
51
+ title: 'About YWIES',
52
+ imgSrc: 'https://osswebsite-test.cedim.cn/ywies-tx/static-images/about-ywies/01_About_YWIES_1_Header.jpg'
53
+ }
54
+ }
55
+ emit('update:modelValue', data)
56
+ }
57
+
58
+ const isHover = ref<boolean>(false);
59
+ const showSetting = ref<boolean>(false);
60
+
61
+ const handleDelete = () => {
62
+ emit('handleDelete', props.modelValue.id)
63
+ }
64
+
65
+ const handleCopy = () => {
66
+ emit('handleCopy', props.modelValue)
67
+ }
68
+
69
+ handleInit()
70
+ </script>
71
+
72
+ <style lang="scss" scoped>
73
+ .banner-image {
74
+ position: relative;
75
+ }
76
+
77
+ .banner-image__image {
78
+ height: 340px;
79
+ background-size: cover;
80
+ background-repeat: no-repeat;
81
+ background-image: linear-gradient(184.08deg,rgba(0,0,0,.427) 21.79%,transparent 96.67%),var(--bg-image);
82
+ display: flex;
83
+ flex-direction: column;
84
+ align-items: center;
85
+ }
86
+
87
+ @media (max-width: 1279.98px) {
88
+ .banner-image__image {
89
+ height: clamp(200px,(100vw - 576px)/5 + 200px,340px);
90
+ }
91
+ }
92
+
93
+ @media (max-width: 575.98px) {
94
+ .banner-image__image {
95
+ height: 200px;
96
+ }
97
+ }
98
+
99
+ .banner-image.has-quick-links {
100
+ padding-bottom: 38px;
101
+ }
102
+
103
+ .banner-image__title {
104
+ font-size: 60px;
105
+ line-height: 1.166;
106
+ font-weight: 500;
107
+ color: #fff;
108
+ text-shadow: 0 0 10px rgba(130,130,140,.12);
109
+ padding-top: 166px;
110
+ }
111
+
112
+ @media (max-width: 1279.98px) {
113
+ .banner-image__title {
114
+ padding-top: clamp(106px,(100vw - 576px)/11.73 + 106px,166px);
115
+ }
116
+ }
117
+
118
+ @media (max-width: 1023.98px) {
119
+ .banner-image__title {
120
+ font-size: 36px;
121
+ }
122
+ }
123
+
124
+ @media (max-width: 575.98px) {
125
+ .banner-image__title {
126
+ font-size: 40px;
127
+ font-weight: 500;
128
+ line-height: 1.2;
129
+ letter-spacing: .02em;
130
+ padding-top: 106px;
131
+ }
132
+ }
133
+
134
+ @media (max-width: 575.98px) and (max-width: 1023.98px) {
135
+ .banner-image__title {
136
+ font-size: 32px;
137
+ font-weight: 500;
138
+ line-height: 1.2;
139
+ letter-spacing: .02em;
140
+ }
141
+ }
142
+
143
+ @media (max-width: 575.98px) and (max-width: 767.98px) {
144
+ .banner-image__title {
145
+ font-size: 24px;
146
+ line-height: 1.09;
147
+ }
148
+ }
149
+
150
+ .banner-image__title.is-zh {
151
+ font-weight: 700;
152
+ }
153
+ </style>
@@ -0,0 +1,55 @@
1
+ <template>
2
+ <a-drawer :width="500" :visible="show" :footer="false" @cancel="handleCancel" unmountOnClose>
3
+ <template #title>
4
+ {{data.type}}组件编辑
5
+ </template>
6
+ <div class="setting-content">
7
+ <p class="item-title">标题</p>
8
+ <a-input v-model="data.data.title" placeholder="请输入标题" allow-clear />
9
+
10
+ <p class="item-title">图片</p>
11
+ <img class="item-img" :src="data?.data?.imgSrc" />
12
+ <div class="item-uplaod flex items-center">
13
+ <a-input v-model="data.data.imgSrc" placeholder="请输入图片链接" allow-clear />
14
+ <a-upload class="fit-content" :show-file-list="false" action="/" />
15
+ </div>
16
+ </div>
17
+ </a-drawer>
18
+ </template>
19
+
20
+ <script lang="ts" setup>
21
+ defineProps({
22
+ show: {
23
+ type: Boolean,
24
+ default: false
25
+ },
26
+
27
+ data: {
28
+ type: Object,
29
+ default: () => {}
30
+ }
31
+ })
32
+
33
+ const emit = defineEmits(['update:show']);
34
+
35
+ const handleCancel = () => {
36
+ emit('update:show', false);
37
+ }
38
+ </script>
39
+
40
+ <style lang="scss" scoped>
41
+ .setting-content {
42
+ position: relative;
43
+
44
+ .item-title {
45
+ padding: 12px 0 8px 0;
46
+ font-size: 14px;
47
+ font-weight: 600;
48
+ }
49
+
50
+ .item-img {
51
+ margin-top: 12px;
52
+ height: 160px;
53
+ }
54
+ }
55
+ </style>
@@ -0,0 +1,10 @@
1
+ export interface BannerImageProps {
2
+ /** 双向绑定的值 */
3
+ modelValue: any
4
+ }
5
+
6
+ export interface BannerImageEmits {
7
+ (e: 'update:modelValue', value: any): void
8
+ (e: 'handleDelete', value: string | number): void
9
+ (e: 'handleCopy', value: any): void
10
+ }
@@ -0,0 +1,11 @@
1
+ import type { App, Plugin } from 'vue'
2
+ import BannerImageWithLink from './index.vue'
3
+
4
+ export default {
5
+ install: (app: App) => {
6
+ app.component('BannerImageWithLink', BannerImageWithLink)
7
+ },
8
+ } satisfies Plugin
9
+
10
+ export { default as BannerImageWithLink } from './index.vue'
11
+ export type { BannerImageWithLinkProps, BannerImageWithLinkEmits } from './type'
@@ -0,0 +1,323 @@
1
+ <template>
2
+ <div
3
+ style="margin-top: 30px; margin-bottom: 30px; border: 2px solid red"
4
+ class="custom-iframe-container"
5
+ :style="{ backgroundColor: modelValue?.bgColor }"
6
+ @mouseenter="isHover = true"
7
+ @mouseleave="isHover = false"
8
+ >
9
+ <div class="banner-image-with-link">
10
+ <div class="banner-wrapper" :style="{ '--bg-image': backgroundImageUrl }">
11
+ <div class="banner-body">
12
+ <div class="banner-body__title">ding-title</div>
13
+ <div class="banner-body__link">
14
+ <div class="circle-link circle-link--light">
15
+ <a href="https://www.baidu.com" target="_blank"
16
+ ><!---->
17
+ <div>bing-placholder</div>
18
+ <span class="circle-link__icon circle-link__icon--light"></span
19
+ ></a>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ <Operate
26
+ v-if="!modelValue?.readOnly"
27
+ v-model:show="isHover"
28
+ @handle-edit="showSetting = true"
29
+ @handle-delete="handleDelete"
30
+ @handle-copy="handleCopy"
31
+ ></Operate>
32
+ <!-- </a-row> -->
33
+ </div>
34
+
35
+ <Setting v-model:show="showSetting" :data="modelValue"></Setting>
36
+ </template>
37
+
38
+ <script lang="ts" setup>
39
+ import { computed, nextTick, ref } from "vue";
40
+ import { randomString } from "@/utils/common";
41
+ import Setting from "./setting.vue";
42
+ import Operate from "@/components/Operate/index.vue";
43
+
44
+ // 定义组件名称
45
+ defineOptions({
46
+ name: "CountDown",
47
+ });
48
+
49
+ const props = defineProps({
50
+ modelValue: {
51
+ type: Object,
52
+ default: () => {},
53
+ },
54
+
55
+ // 是否预览
56
+ isPreview: {
57
+ type: Boolean,
58
+ default: false,
59
+ },
60
+ });
61
+ console.log("!!!!", props.modelValue);
62
+ const emit = defineEmits(["update:modelValue", "handleDelete", "handleCopy"]);
63
+
64
+ const isHover = ref<boolean>(false);
65
+ const showSetting = ref<boolean>(false);
66
+
67
+ const handleDelete = () => {
68
+ emit("handleDelete", props.modelValue.id);
69
+ };
70
+
71
+ const handleCopy = () => {
72
+ emit("handleCopy", props.modelValue);
73
+ };
74
+
75
+ const handleInit = () => {
76
+ if (props.modelValue && props.modelValue.data) return; // 有数据不用初始化
77
+ const data = {
78
+ id: props.modelValue?.id || randomString(),
79
+ type: "BannerImageWithLink",
80
+ readOnly: props.modelValue?.readOnly || false,
81
+ title: "bing-bannerImgLink",
82
+ image:
83
+ "https://osswebsite-test.cedim.cn/media-library/ywies-tx/pdf/TX%20Brochure%20Cover_optim_origin.png",
84
+ text: "哈哈哈",
85
+ linkType: "External Link",
86
+ link: "https://www.baidu.com",
87
+ };
88
+ emit("update:modelValue", data);
89
+ console.log("props.modelValue111111111", props.modelValue);
90
+ };
91
+
92
+ handleInit();
93
+ const backgroundImageUrl = computed(() => {
94
+ let url = props.modelValue?.image ? `url(${props.modelValue.image})` : "none";
95
+ return url;
96
+ });
97
+ </script>
98
+
99
+ <style scoped lang="scss">
100
+ .custom-iframe-container {
101
+ position: relative;
102
+ }
103
+ .banner-image-with-link {
104
+ position: relative;
105
+ }
106
+
107
+ .banner-image-with-link .banner-wrapper {
108
+ position: relative;
109
+ height: 0;
110
+ padding-bottom: 45.833%;
111
+ background-position: 50%;
112
+ background-size: cover;
113
+ background-repeat: no-repeat;
114
+ background-image: linear-gradient(
115
+ 180deg,
116
+ transparent 22.84%,
117
+ rgba(0, 0, 0, 0.6)
118
+ ),
119
+ var(--bg-image);
120
+ }
121
+
122
+ @media (max-width: 767.98px) {
123
+ .banner-image-with-link .banner-wrapper {
124
+ padding-bottom: 0;
125
+ height: 448px;
126
+ }
127
+ }
128
+
129
+ .banner-image-with-link .banner-body {
130
+ position: absolute;
131
+ left: 0;
132
+ top: 0;
133
+ width: 100%;
134
+ height: 100%;
135
+ display: flex;
136
+ justify-content: flex-end;
137
+ flex-direction: column;
138
+ align-items: center;
139
+ padding-bottom: clamp(55px, (100vw - 320px)/44.301 + 55px, 76.67px);
140
+ }
141
+
142
+ .banner-image-with-link .banner-body__title {
143
+ font-size: 42px;
144
+ line-height: 1.43;
145
+ letter-spacing: 0.015em;
146
+ font-weight: 700;
147
+ color: #fff;
148
+ }
149
+
150
+ @media (max-width: 1023.98px) {
151
+ .banner-image-with-link .banner-body__title {
152
+ font-size: 36px;
153
+ }
154
+ }
155
+
156
+ @media (max-width: 575.98px) {
157
+ .banner-image-with-link .banner-body__title {
158
+ font-size: 40px;
159
+ font-weight: 500;
160
+ line-height: 1.2;
161
+ letter-spacing: 0.02em;
162
+ }
163
+ }
164
+
165
+ @media (max-width: 575.98px) and (max-width: 1023.98px) {
166
+ .banner-image-with-link .banner-body__title {
167
+ font-size: 32px;
168
+ font-weight: 500;
169
+ line-height: 1.2;
170
+ letter-spacing: 0.02em;
171
+ }
172
+ }
173
+
174
+ @media (max-width: 575.98px) and (max-width: 767.98px) {
175
+ .banner-image-with-link .banner-body__title {
176
+ font-size: 24px;
177
+ line-height: 1.09;
178
+ }
179
+ }
180
+
181
+ .banner-image-with-link .banner-body__link {
182
+ margin-top: 7px;
183
+ }
184
+
185
+ @media (max-width: 575.98px) {
186
+ .banner-image-with-link .banner-body__link {
187
+ margin-top: 18px;
188
+ }
189
+ }
190
+ .circle-link {
191
+ display: flex;
192
+ --link-color: var(--link-blue-color);
193
+ }
194
+
195
+ .circle-link--light {
196
+ --link-color: var(--link-light-color);
197
+ }
198
+
199
+ .circle-link a,
200
+ .circle-link button {
201
+ font-size: 14px;
202
+ font-weight: 500;
203
+ line-height: 1.285;
204
+ letter-spacing: 0.04em;
205
+ border: none;
206
+ background: none;
207
+ color: var(--link-color);
208
+ text-decoration: none;
209
+ display: flex;
210
+ align-items: center;
211
+ padding: 0;
212
+ }
213
+
214
+ @media (max-width: 1023.98px) {
215
+ .circle-link a,
216
+ .circle-link button {
217
+ line-height: 1.428;
218
+ }
219
+ }
220
+
221
+ @media (max-width: 767.98px) {
222
+ .circle-link a,
223
+ .circle-link button {
224
+ line-height: 1.285;
225
+ }
226
+ }
227
+
228
+ .circle-link a:hover .circle-link__icon:before,
229
+ .circle-link button:hover .circle-link__icon:before {
230
+ transform: translate(-50%, -50%);
231
+ }
232
+
233
+ .circle-link a:hover .circle-link__icon:after,
234
+ .circle-link button:hover .circle-link__icon:after {
235
+ transform: translate(150%, -50%);
236
+ }
237
+
238
+ .circle-link a:active .circle-link__icon:before,
239
+ .circle-link button:active .circle-link__icon:before {
240
+ transform: translate(-260%, -50%);
241
+ }
242
+
243
+ .circle-link a:active .circle-link__icon:after,
244
+ .circle-link button:active .circle-link__icon:after {
245
+ transform: translate(-50%, -50%);
246
+ }
247
+
248
+ .circle-link__icon {
249
+ width: 18px;
250
+ height: 18px;
251
+ border-radius: 50%;
252
+ overflow: hidden;
253
+ background-color: var(--link-color);
254
+ position: relative;
255
+ margin-left: 7px;
256
+ flex-shrink: 0;
257
+ }
258
+
259
+ @media (max-width: 767.98px) {
260
+ .circle-link__icon {
261
+ width: 12px;
262
+ height: 12px;
263
+ margin-left: 4px;
264
+ }
265
+ }
266
+
267
+ .circle-link__icon:after,
268
+ .circle-link__icon:before {
269
+ content: "";
270
+ width: 6px;
271
+ height: 9px;
272
+ position: absolute;
273
+ top: 50%;
274
+ left: 55%;
275
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNiIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNiA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMC4yMzUxOTYgNy42MjA3OUwzLjM2MDE4IDQuNDk1OEwwLjIzNTE5NiAxLjM3MDgyQzAuMTYwNjMgMS4yOTYyNSAwLjEwMTQ4MSAxLjIwNzczIDAuMDYxMTI1OSAxLjExMDMxQzAuMDIwNzcxIDEuMDEyODggMS41NzEzN2UtMDkgMC45MDg0NiAwIDAuODAzMDA4Qy0xLjU3MTM2ZS0wOSAwLjY5NzU1NSAwLjAyMDc3MSAwLjU5MzEzNSAwLjA2MTEyNTkgMC40OTU3MUMwLjEwMTQ4MSAwLjM5ODI4NSAwLjE2MDYzIDAuMzA5NzYyIDAuMjM1MTk2IDAuMjM1MTk1QzAuMzA5NzYyIDAuMTYwNjI5IDAuMzk4Mjg1IDAuMTAxNDggMC40OTU3MSAwLjA2MTEyNTFDMC41OTMxMzYgMC4wMjA3NzAyIDAuNjk3NTU2IC0xLjU3MTM3ZS0wOSAwLjgwMzAwOCAwQzAuOTA4NDYxIDEuNTcxMzdlLTA5IDEuMDEyODggMC4wMjA3NzAyIDEuMTEwMzEgMC4wNjExMjUxQzEuMjA3NzMgMC4xMDE0OCAxLjI5NjI1IDAuMTYwNjI5IDEuMzcwODIgMC4yMzUxOTVMNS4wNjc2NCAzLjkzMjAyQzUuMzgxNzUgNC4yNDYxMyA1LjM4MTc1IDQuNzUzNTMgNS4wNjc2NCA1LjA2NzY0TDEuMzcwODIgOC43NjQ0NkMxLjI5NjMxIDguODM5MTMgMS4yMDc4IDguODk4MzYgMS4xMTAzNyA4LjkzODc4QzEuMDEyOTQgOC45NzkyIDAuOTA4NDkxIDkgMC44MDMwMDggOUMwLjY5NzUyNSA5IDAuNTkzMDc4IDguOTc5MiAwLjQ5NTY0NSA4LjkzODc4QzAuMzk4MjEyIDguODk4MzYgMC4zMDk3MDcgOC44MzkxMyAwLjIzNTE5NiA4Ljc2NDQ2Qy0wLjA3MDg1OTEgOC40NTAzNSAtMC4wNzg5MTMyIDcuOTM0ODkgMC4yMzUxOTYgNy42MjA3OVoiIGZpbGw9IiMwMDFFNjAiLz4KPC9zdmc+Cgo=);
276
+ background-position: 50%;
277
+ background-size: cover;
278
+ background-repeat: no-repeat;
279
+ background-color: hsla(0, 0%, 100%, 0);
280
+ transition: transform 0.3s ease-in-out;
281
+ }
282
+
283
+ @media (max-width: 767.98px) {
284
+ .circle-link__icon:after,
285
+ .circle-link__icon:before {
286
+ width: 4.7px;
287
+ height: 6px;
288
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNiIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNiA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMC4yMzUxOTYgNy42MjA3OUwzLjM2MDE4IDQuNDk1OEwwLjIzNTE5NiAxLjM3MDgyQzAuMTYwNjMgMS4yOTYyNSAwLjEwMTQ4MSAxLjIwNzczIDAuMDYxMTI1OSAxLjExMDMxQzAuMDIwNzcxIDEuMDEyODggMS41NzEzN2UtMDkgMC45MDg0NiAwIDAuODAzMDA4Qy0xLjU3MTM2ZS0wOSAwLjY5NzU1NSAwLjAyMDc3MSAwLjU5MzEzNSAwLjA2MTEyNTkgMC40OTU3MUMwLjEwMTQ4MSAwLjM5ODI4NSAwLjE2MDYzIDAuMzA5NzYyIDAuMjM1MTk2IDAuMjM1MTk1QzAuMzA5NzYyIDAuMTYwNjI5IDAuMzk4Mjg1IDAuMTAxNDggMC40OTU3MSAwLjA2MTEyNTFDMC41OTMxMzYgMC4wMjA3NzAyIDAuNjk3NTU2IC0xLjU3MTM3ZS0wOSAwLjgwMzAwOCAwQzAuOTA4NDYxIDEuNTcxMzdlLTA5IDEuMDEyODggMC4wMjA3NzAyIDEuMTEwMzEgMC4wNjExMjUxQzEuMjA3NzMgMC4xMDE0OCAxLjI5NjI1IDAuMTYwNjI5IDEuMzcwODIgMC4yMzUxOTVMNS4wNjc2NCAzLjkzMjAyQzUuMzgxNzUgNC4yNDYxMyA1LjM4MTc1IDQuNzUzNTMgNS4wNjc2NCA1LjA2NzY0TDEuMzcwODIgOC43NjQ0NkMxLjI5NjMxIDguODM5MTMgMS4yMDc4IDguODk4MzYgMS4xMTAzNyA4LjkzODc4QzEuMDEyOTQgOC45NzkyIDAuOTA4NDkxIDkgMC44MDMwMDggOUMwLjY5NzUyNSA5IDAuNTkzMDc4IDguOTc5MiAwLjQ5NTY0NSA4LjkzODc4QzAuMzk4MjEyIDguODk4MzYgMC4zMDk3MDcgOC44MzkxMyAwLjIzNTE5NiA4Ljc2NDQ2Qy0wLjA3MDg1OTEgOC40NTAzNSAtMC4wNzg5MTMyIDcuOTM0ODkgMC4yMzUxOTYgNy42MjA3OVoiIGZpbGw9IiMwMDFFNjAiLz4KPC9zdmc+Cgo=);
289
+ background-position: 50%;
290
+ background-size: cover;
291
+ background-repeat: no-repeat;
292
+ background-color: hsla(0, 0%, 100%, 0);
293
+ }
294
+ }
295
+
296
+ .circle-link__icon:before {
297
+ transform: translate(-260%, -50%);
298
+ }
299
+
300
+ .circle-link__icon:after {
301
+ transform: translate(-50%, -50%);
302
+ }
303
+
304
+ .circle-link__icon--light:after,
305
+ .circle-link__icon--light:before {
306
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNiIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNiA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMC4yMzUxOTYgNy42MjA3OUwzLjM2MDE4IDQuNDk1OEwwLjIzNTE5NiAxLjM3MDgyQzAuMTYwNjMgMS4yOTYyNSAwLjEwMTQ4MSAxLjIwNzczIDAuMDYxMTI1OSAxLjExMDMxQzAuMDIwNzcxIDEuMDEyODggMS41NzEzN2UtMDkgMC45MDg0NiAwIDAuODAzMDA4Qy0xLjU3MTM2ZS0wOSAwLjY5NzU1NSAwLjAyMDc3MSAwLjU5MzEzNSAwLjA2MTEyNTkgMC40OTU3MUMwLjEwMTQ4MSAwLjM5ODI4NSAwLjE2MDYzIDAuMzA5NzYyIDAuMjM1MTk2IDAuMjM1MTk1QzAuMzA5NzYyIDAuMTYwNjI5IDAuMzk4Mjg1IDAuMTAxNDggMC40OTU3MSAwLjA2MTEyNTFDMC41OTMxMzYgMC4wMjA3NzAyIDAuNjk3NTU2IC0xLjU3MTM3ZS0wOSAwLjgwMzAwOCAwQzAuOTA4NDYxIDEuNTcxMzdlLTA5IDEuMDEyODggMC4wMjA3NzAyIDEuMTEwMzEgMC4wNjExMjUxQzEuMjA3NzMgMC4xMDE0OCAxLjI5NjI1IDAuMTYwNjI5IDEuMzcwODIgMC4yMzUxOTVMNS4wNjc2NCAzLjkzMjAyQzUuMzgxNzUgNC4yNDYxMyA1LjM4MTc1IDQuNzUzNTMgNS4wNjc2NCA1LjA2NzY0TDEuMzcwODIgOC43NjQ0NkMxLjI5NjMxIDguODM5MTMgMS4yMDc4IDguODk4MzYgMS4xMTAzNyA4LjkzODc4QzEuMDEyOTQgOC45NzkyIDAuOTA4NDkxIDkgMC44MDMwMDggOUMwLjY5NzUyNSA5IDAuNTkzMDc4IDguOTc5MiAwLjQ5NTY0NSA4LjkzODc4QzAuMzk4MjEyIDguODk4MzYgMC4zMDk3MDcgOC44MzkxMyAwLjIzNTE5NiA4Ljc2NDQ2Qy0wLjA3MDg1OTEgOC40NTAzNSAtMC4wNzg5MTMyIDcuOTM0ODkgMC4yMzUxOTYgNy42MjA3OVoiIGZpbGw9IiMwMDFFNjAiLz4KPC9zdmc+Cgo=);
307
+ background-position: 50%;
308
+ background-size: cover;
309
+ background-repeat: no-repeat;
310
+ background-color: hsla(0, 0%, 100%, 0);
311
+ }
312
+
313
+ @media (max-width: 767.98px) {
314
+ .circle-link__icon--light:after,
315
+ .circle-link__icon--light:before {
316
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNiIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNiA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMC4yMzUxOTYgNy42MjA3OUwzLjM2MDE4IDQuNDk1OEwwLjIzNTE5NiAxLjM3MDgyQzAuMTYwNjMgMS4yOTYyNSAwLjEwMTQ4MSAxLjIwNzczIDAuMDYxMTI1OSAxLjExMDMxQzAuMDIwNzcxIDEuMDEyODggMS41NzEzN2UtMDkgMC45MDg0NiAwIDAuODAzMDA4Qy0xLjU3MTM2ZS0wOSAwLjY5NzU1NSAwLjAyMDc3MSAwLjU5MzEzNSAwLjA2MTEyNTkgMC40OTU3MUMwLjEwMTQ4MSAwLjM5ODI4NSAwLjE2MDYzIDAuMzA5NzYyIDAuMjM1MTk2IDAuMjM1MTk1QzAuMzA5NzYyIDAuMTYwNjI5IDAuMzk4Mjg1IDAuMTAxNDggMC40OTU3MSAwLjA2MTEyNTFDMC41OTMxMzYgMC4wMjA3NzAyIDAuNjk3NTU2IC0xLjU3MTM3ZS0wOSAwLjgwMzAwOCAwQzAuOTA4NDYxIDEuNTcxMzdlLTA5IDEuMDEyODggMC4wMjA3NzAyIDEuMTEwMzEgMC4wNjExMjUxQzEuMjA3NzMgMC4xMDE0OCAxLjI5NjI1IDAuMTYwNjI5IDEuMzcwODIgMC4yMzUxOTVMNS4wNjc2NCAzLjkzMjAyQzUuMzgxNzUgNC4yNDYxMyA1LjM4MTc1IDQuNzUzNTMgNS4wNjc2NCA1LjA2NzY0TDEuMzcwODIgOC43NjQ0NkMxLjI5NjMxIDguODM5MTMgMS4yMDc4IDguODk4MzYgMS4xMTAzNyA4LjkzODc4QzEuMDEyOTQgOC45NzkyIDAuOTA4NDkxIDkgMC44MDMwMDggOUMwLjY5NzUyNSA5IDAuNTkzMDc4IDguOTc5MiAwLjQ5NTY0NSA4LjkzODc4QzAuMzk4MjEyIDguODk4MzYgMC4zMDk3MDcgOC44MzkxMyAwLjIzNTE5NiA4Ljc2NDQ2Qy0wLjA3MDg1OTEgOC40NTAzNSAtMC4wNzg5MTMyIDcuOTM0ODkgMC4yMzUxOTYgNy42MjA3OVoiIGZpbGw9IiMwMDFFNjAiLz4KPC9zdmc+Cgo=);
317
+ background-position: 50%;
318
+ background-size: cover;
319
+ background-repeat: no-repeat;
320
+ background-color: hsla(0, 0%, 100%, 0);
321
+ }
322
+ }
323
+ </style>