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
@@ -0,0 +1,255 @@
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
+ <!-- 组件自身属性 -->
8
+ <div class="setting-header flex items-center">
9
+ <span class="header-title">组件宽度</span>
10
+ <a-select v-model="data.width" placeholder="请选择" allow-clear>
11
+ <a-option value="">默认</a-option>
12
+ <a-option value="small">小</a-option>
13
+ <a-option value="middle">中</a-option>
14
+ <a-option value="max">大</a-option>
15
+ </a-select>
16
+ </div>
17
+ <div class="setting-header flex items-center">
18
+ <span class="header-title">组件背景</span>
19
+ <a-select v-model="data.bgColor" placeholder="请选择" allow-clear>
20
+ <a-option value="#ffffff">白色</a-option>
21
+ <a-option value="#F7F7FA">灰色</a-option>
22
+ </a-select>
23
+ </div>
24
+
25
+ <a-button-group type="primary">
26
+ <a-button size="mini" @click="handleAdd('')"><template #icon><icon-plus /></template> 默认按钮 </a-button>
27
+ <a-button size="mini" @click="handleAdd('white')"><template #icon><icon-plus /></template> 白色按钮 </a-button>
28
+ <a-button size="mini" @click="handleAdd('light')"><template #icon><icon-plus /></template> 亮色按钮 </a-button>
29
+ <a-button size="mini" @click="handleAdd('blue')"><template #icon><icon-plus /></template> 蓝色按钮 </a-button>
30
+ </a-button-group>
31
+
32
+ <!-- 子组件属性 -->
33
+ <div class="setting-body">
34
+ <div class="setting-item">
35
+ <p class="item-name">按钮</p>
36
+ <draggable
37
+ v-model="data.data"
38
+ :component-data="{
39
+ tag: 'div',
40
+ type: 'transition-group',
41
+ name: !drag ? 'flip-list' : null
42
+ }"
43
+ v-bind="buttonDragOptions"
44
+ :disabled="!shouldShowDragHandle(data.data)"
45
+ @start="drag = true"
46
+ @end="drag = false"
47
+ item-key="id"
48
+ >
49
+ <template #item="{ element: button }">
50
+ <div
51
+ class="item-button draggable-item"
52
+ :class="{ 'sortable-disabled': !shouldShowDragHandle(data.data) }"
53
+ :key="button.id"
54
+ >
55
+ <div class="btn-group">
56
+ <div
57
+ v-if="shouldShowDragHandle(data.data)"
58
+ class="drag-handle"
59
+ >
60
+ <icon-drag-arrow class="drag-icon" />
61
+ </div>
62
+ <icon-delete class="btn-delete" @click="handleDelete(button.id)" />
63
+ </div>
64
+ <a-button type="primary">{{ button.text }}</a-button>
65
+ <div class="item-action flex items-center">
66
+ <a-input class="action-text" v-model="button.text" placeholder="按钮文本" allow-clear />
67
+ <a-input v-model="button.url" placeholder="按钮链接" allow-clear />
68
+ </div>
69
+ <a-checkbox :model-value="button.isExternal">是否外部链接</a-checkbox>
70
+ </div>
71
+ </template>
72
+ </draggable>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ </a-drawer>
77
+ </template>
78
+
79
+ <script lang="ts" setup>
80
+ import { ref, computed } from 'vue'
81
+ import draggable from 'vuedraggable'
82
+ import { randomString } from '@/utils/common'
83
+
84
+ // 拖拽相关状态
85
+ const drag = ref(false)
86
+
87
+ // 不同类型的拖拽配置选项
88
+ const buttonDragOptions = computed(() => ({
89
+ animation: 200,
90
+ group: 'buttons', // 按钮专用分组
91
+ disabled: false,
92
+ ghostClass: 'ghost'
93
+ }))
94
+
95
+ // 检查是否应该显示拖拽图标
96
+ const shouldShowDragHandle = (list: any[]) => {
97
+ return list && list.length > 1
98
+ }
99
+
100
+ const props = defineProps({
101
+ show: {
102
+ type: Boolean,
103
+ default: false
104
+ },
105
+
106
+ data: {
107
+ type: Object,
108
+ default: () => {}
109
+ }
110
+ })
111
+
112
+ const emit = defineEmits(['update:show']);
113
+
114
+ const handleCancel = () => {
115
+ emit('update:show', false);
116
+ }
117
+
118
+ const handleAdd = (type: string) => {
119
+ const detail = props.data;
120
+ detail.data.push({
121
+ id: randomString(),
122
+ type,
123
+ text: '查看更多',
124
+ url: undefined,
125
+ isExternal: false
126
+ })
127
+ }
128
+
129
+ const handleDelete = (id: string) => {
130
+ props.data.data = props.data.data.filter((item: any) => item.id !== id)
131
+ }
132
+ </script>
133
+
134
+ <style lang="scss" scoped>
135
+ .setting-content {
136
+ .setting-header {
137
+ padding-bottom: 12px;
138
+
139
+ .header-title {
140
+ width: 120px;
141
+ padding-right: 12px;
142
+ text-align: right;
143
+ }
144
+ }
145
+
146
+ .setting-body {
147
+ margin-top: 12px;
148
+
149
+ .setting-item {
150
+ position: relative;
151
+ padding: 16px 12px;
152
+ background: #f0f2f5;
153
+ border-radius: 8px;
154
+ margin-bottom: 20px;
155
+
156
+ .btn-group {
157
+ position: absolute;
158
+ right: 0;
159
+ top: 0;
160
+ display: flex;
161
+ align-items: center;
162
+ padding: 4px;
163
+
164
+ .btn-delete {
165
+ padding: 4px;
166
+ font-size: 24px;
167
+ cursor: pointer;
168
+ }
169
+ }
170
+
171
+ .item-name {
172
+ font-size: 16px;
173
+ font-weight: 600;
174
+ padding-bottom: 10px;
175
+ border-bottom: 1px solid #fff;
176
+ }
177
+
178
+ .item-button {
179
+ position: relative;
180
+ padding: 12px 8px 4px;
181
+ background: #fff;
182
+ border-radius: 4px;
183
+ margin: 4px 0;
184
+ transition: all 0.3s ease;
185
+
186
+ &.draggable-item {
187
+ cursor: move;
188
+
189
+ &:hover {
190
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
191
+ transform: translateY(-1px);
192
+ }
193
+
194
+ // 当禁用拖拽时,不显示拖拽效果
195
+ &.sortable-disabled {
196
+ cursor: default;
197
+
198
+ &:hover {
199
+ box-shadow: none;
200
+ transform: none;
201
+ }
202
+ }
203
+ }
204
+
205
+ .arco-input-wrapper {
206
+ background: #f2f3f5;
207
+ }
208
+ }
209
+
210
+ // 拖拽相关样式
211
+ .flip-list-move {
212
+ transition: transform 0.5s;
213
+ }
214
+
215
+ .no-move {
216
+ transition: transform 0s;
217
+ }
218
+
219
+ .ghost {
220
+ opacity: 0.5;
221
+ background: #c8ebfb;
222
+ }
223
+
224
+ .item-action {
225
+ padding: 10px 0;
226
+
227
+ .action-text {
228
+ width: 150px;
229
+ margin-right: 8px;
230
+ }
231
+ }
232
+ }
233
+ }
234
+
235
+ .drag-handle {
236
+ padding: 4px;
237
+ cursor: grab;
238
+ padding: 4px;
239
+ border-radius: 4px;
240
+
241
+ &:hover {
242
+ background-color: #f0f2f5;
243
+ }
244
+
245
+ &:active {
246
+ cursor: grabbing;
247
+ }
248
+
249
+ .drag-icon {
250
+ font-size: 16px;
251
+ color: #86909c;
252
+ }
253
+ }
254
+ }
255
+ </style>
@@ -0,0 +1,10 @@
1
+ export interface BtnListProps {
2
+ /** 双向绑定的值 */
3
+ modelValue: any
4
+ }
5
+
6
+ export interface BtnListEmits {
7
+ (e: 'update:modelValue', value: any): void
8
+ (e: 'handleDelete', value: string | number): void
9
+ (e: 'handleCopy', value: any): void
10
+ }
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div v-if="type === 'button'" class="button-primary flex-inline flex-center" @click="handleButtonClick">
2
+ <div v-if="type === 'button'" class="button-primary flex-inline flex-center" :class="[hasHoverBg && 'button-hover-bg']" @click="handleButtonClick">
3
3
  <span class="button-text">{{ data.text }}</span>
4
4
  <span class="button-icon"></span>
5
5
  </div>
@@ -20,6 +20,11 @@ const props = defineProps({
20
20
  type: Object,
21
21
  default: () => {},
22
22
  },
23
+
24
+ hasHoverBg: {
25
+ type: Boolean,
26
+ default: true
27
+ },
23
28
  })
24
29
 
25
30
  // TODO: 内部跳转
@@ -40,7 +45,8 @@ const handleButtonClick = () => {
40
45
  transition: background-color $transition-normal;
41
46
  flex-shrink: 0;
42
47
 
43
- &::before, &::after {
48
+ &::before,
49
+ &::after {
44
50
  content: "";
45
51
  width: 6px;
46
52
  height: 9px;
@@ -52,22 +58,23 @@ const handleButtonClick = () => {
52
58
  background-size: cover;
53
59
  background-repeat: no-repeat;
54
60
  background-color: hsla(0,0%,100%,0);
55
- transition: transform .3s ease-in-out
61
+ transition: transform .3s ease-in-out;
56
62
  }
57
63
 
58
64
  &::before {
59
- transform: translate(-260%,-50%)
65
+ transform: translate(-260%,-50%);
60
66
  }
61
67
 
62
68
  &::after {
63
- transform: translate(-50%,-50%)
69
+ transform: translate(-50%,-50%);
64
70
  }
65
71
  }
66
72
 
67
73
  .link-icon {
68
74
  background-color: $primary-color;
69
75
 
70
- &::before, &::after {
76
+ &::before,
77
+ &::after {
71
78
  background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNiIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNiA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMC4yMzUxOTYgNy42MjA3OUwzLjM2MDE4IDQuNDk1OEwwLjIzNTE5NiAxLjM3MDgyQzAuMTYwNjMgMS4yOTYyNSAwLjEwMTQ4MSAxLjIwNzczIDAuMDYxMTI1OSAxLjExMDMxQzAuMDIwNzcxIDEuMDEyODggMS41NzEzN2UtMDkgMC45MDg0NiAwIDAuODAzMDA4Qy0xLjU3MTM2ZS0wOSAwLjY5NzU1NSAwLjAyMDc3MSAwLjU5MzEzNSAwLjA2MTEyNTkgMC40OTU3MUMwLjEwMTQ4MSAwLjM5ODI4NSAwLjE2MDYzIDAuMzA5NzYyIDAuMjM1MTk2IDAuMjM1MTk1QzAuMzA5NzYyIDAuMTYwNjI5IDAuMzk4Mjg1IDAuMTAxNDggMC40OTU3MSAwLjA2MTEyNTFDMC41OTMxMzYgMC4wMjA3NzAyIDAuNjk3NTU2IC0xLjU3MTM3ZS0wOSAwLjgwMzAwOCAwQzAuOTA4NDYxIDEuNTcxMzdlLTA5IDEuMDEyODggMC4wMjA3NzAyIDEuMTEwMzEgMC4wNjExMjUxQzEuMjA3NzMgMC4xMDE0OCAxLjI5NjI1IDAuMTYwNjI5IDEuMzcwODIgMC4yMzUxOTVMNS4wNjc2NCAzLjkzMjAyQzUuMzgxNzUgNC4yNDYxMyA1LjM4MTc1IDQuNzUzNTMgNS4wNjc2NCA1LjA2NzY0TDEuMzcwODIgOC43NjQ0NkMxLjI5NjMxIDguODM5MTMgMS4yMDc4IDguODk4MzYgMS4xMTAzNyA4LjkzODc4QzEuMDEyOTQgOC45NzkyIDAuOTA4NDkxIDkgMC44MDMwMDggOUMwLjY5NzUyNSA5IDAuNTkzMDc4IDguOTc5MiAwLjQ5NTY0NSA4LjkzODc4QzAuMzk4MjEyIDguODk4MzYgMC4zMDk3MDcgOC44MzkxMyAwLjIzNTE5NiA4Ljc2NDQ2Qy0wLjA3MDg1OTEgOC40NTAzNSAtMC4wNzg5MTMyIDcuOTM0ODkgMC4yMzUxOTYgNy42MjA3OVoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);
72
79
  }
73
80
  }
@@ -100,24 +107,25 @@ const handleButtonClick = () => {
100
107
  transition: all $transition-normal;
101
108
  z-index: -1;
102
109
  -webkit-clip-path: circle(100% at -80% 90%);
103
- clip-path: circle(100% at -80% 90%)
110
+ clip-path: circle(100% at -80% 90%);
104
111
  }
105
112
 
106
113
  &:hover::before {
107
114
  -webkit-clip-path: circle(100% at 50% 50%);
108
- clip-path: circle(100% at 50% 50%)
115
+ clip-path: circle(100% at 50% 50%);
109
116
  }
110
117
 
111
118
  &:hover {
112
119
  .button-icon:before {
113
- transform: translate(-50%,-50%)
120
+ transform: translate(-50%,-50%);
114
121
  }
115
122
 
116
123
  .button-icon:after {
117
- transform: translate(150%,-50%)
124
+ transform: translate(150%,-50%);
118
125
  }
119
126
 
120
- .button-icon:after, .button-icon:before {
127
+ .button-icon:after,
128
+ .button-icon:before {
121
129
  background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNiIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNiA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMC4yMzUxOTYgNy42MjA3OUwzLjM2MDE4IDQuNDk1OEwwLjIzNTE5NiAxLjM3MDgyQzAuMTYwNjMgMS4yOTYyNSAwLjEwMTQ4MSAxLjIwNzczIDAuMDYxMTI1OSAxLjExMDMxQzAuMDIwNzcxIDEuMDEyODggMS41NzEzN2UtMDkgMC45MDg0NiAwIDAuODAzMDA4Qy0xLjU3MTM2ZS0wOSAwLjY5NzU1NSAwLjAyMDc3MSAwLjU5MzEzNSAwLjA2MTEyNTkgMC40OTU3MUMwLjEwMTQ4MSAwLjM5ODI4NSAwLjE2MDYzIDAuMzA5NzYyIDAuMjM1MTk2IDAuMjM1MTk1QzAuMzA5NzYyIDAuMTYwNjI5IDAuMzk4Mjg1IDAuMTAxNDggMC40OTU3MSAwLjA2MTEyNTFDMC41OTMxMzYgMC4wMjA3NzAyIDAuNjk3NTU2IC0xLjU3MTM3ZS0wOSAwLjgwMzAwOCAwQzAuOTA4NDYxIDEuNTcxMzdlLTA5IDEuMDEyODggMC4wMjA3NzAyIDEuMTEwMzEgMC4wNjExMjUxQzEuMjA3NzMgMC4xMDE0OCAxLjI5NjI1IDAuMTYwNjI5IDEuMzcwODIgMC4yMzUxOTVMNS4wNjc2NCAzLjkzMjAyQzUuMzgxNzUgNC4yNDYxMyA1LjM4MTc1IDQuNzUzNTMgNS4wNjc2NCA1LjA2NzY0TDEuMzcwODIgOC43NjQ0NkMxLjI5NjMxIDguODM5MTMgMS4yMDc4IDguODk4MzYgMS4xMTAzNyA4LjkzODc4QzEuMDEyOTQgOC45NzkyIDAuOTA4NDkxIDkgMC44MDMwMDggOUMwLjY5NzUyNSA5IDAuNTkzMDc4IDguOTc5MiAwLjQ5NTY0NSA4LjkzODc4QzAuMzk4MjEyIDguODk4MzYgMC4zMDk3MDcgOC44MzkxMyAwLjIzNTE5NiA4Ljc2NDQ2Qy0wLjA3MDg1OTEgOC40NTAzNSAtMC4wNzg5MTMyIDcuOTM0ODkgMC4yMzUxOTYgNy42MjA3OVoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);
122
130
  background-position: 50%;
123
131
  background-size: cover;
@@ -142,58 +150,62 @@ const handleButtonClick = () => {
142
150
  transition: color $transition-normal;
143
151
  }
144
152
 
145
- &::before {
146
- background: $button-hover-bg;
153
+ .button-icon:after,
154
+ .button-icon:before {
155
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNiIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNiA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMC4yMzUxOTYgNy42MjA3OUwzLjM2MDE4IDQuNDk1OEwwLjIzNTE5NiAxLjM3MDgyQzAuMTYwNjMgMS4yOTYyNSAwLjEwMTQ4MSAxLjIwNzczIDAuMDYxMTI1OSAxLjExMDMxQzAuMDIwNzcxIDEuMDEyODggMS41NzEzN2UtMDkgMC45MDg0NiAwIDAuODAzMDA4Qy0xLjU3MTM2ZS0wOSAwLjY5NzU1NSAwLjAyMDc3MSAwLjU5MzEzNSAwLjA2MTEyNTkgMC40OTU3MUMwLjEwMTQ4MSAwLjM5ODI4NSAwLjE2MDYzIDAuMzA5NzYyIDAuMjM1MTk2IDAuMjM1MTk1QzAuMzA5NzYyIDAuMTYwNjI5IDAuMzk4Mjg1IDAuMTAxNDggMC40OTU3MSAwLjA2MTEyNTFDMC41OTMxMzYgMC4wMjA3NzAyIDAuNjk3NTU2IC0xLjU3MTM3ZS0wOSAwLjgwMzAwOCAwQzAuOTA4NDYxIDEuNTcxMzdlLTA5IDEuMDEyODggMC4wMjA3NzAyIDEuMTEwMzEgMC4wNjExMjUxQzEuMjA3NzMgMC4xMDE0OCAxLjI5NjI1IDAuMTYwNjI5IDEuMzcwODIgMC4yMzUxOTVMNS4wNjc2NCAzLjkzMjAyQzUuMzgxNzUgNC4yNDYxMyA1LjM4MTc1IDQuNzUzNTMgNS4wNjc2NCA1LjA2NzY0TDEuMzcwODIgOC43NjQ0NkMxLjI5NjMxIDguODM5MTMgMS4yMDc4IDguODk4MzYgMS4xMTAzNyA4LjkzODc4QzEuMDEyOTQgOC45NzkyIDAuOTA4NDkxIDkgMC44MDMwMDggOUMwLjY5NzUyNSA5IDAuNTkzMDc4IDguOTc5MiAwLjQ5NTY0NSA4LjkzODc4QzAuMzk4MjEyIDguODk4MzYgMC4zMDk3MDcgOC44MzkxMyAwLjIzNTE5NiA4Ljc2NDQ2Qy0wLjA3MDg1OTEgOC40NTAzNSAtMC4wNzg5MTMyIDcuOTM0ODkgMC4yMzUxOTYgNy42MjA3OVoiIGZpbGw9IiMwMDFFNjAiLz4KPC9zdmc+Cgo=) !important;
147
156
  }
157
+ }
148
158
 
149
- .button-icon:after, .button-icon:before {
150
- background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNiIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNiA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMC4yMzUxOTYgNy42MjA3OUwzLjM2MDE4IDQuNDk1OEwwLjIzNTE5NiAxLjM3MDgyQzAuMTYwNjMgMS4yOTYyNSAwLjEwMTQ4MSAxLjIwNzczIDAuMDYxMTI1OSAxLjExMDMxQzAuMDIwNzcxIDEuMDEyODggMS41NzEzN2UtMDkgMC45MDg0NiAwIDAuODAzMDA4Qy0xLjU3MTM2ZS0wOSAwLjY5NzU1NSAwLjAyMDc3MSAwLjU5MzEzNSAwLjA2MTEyNTkgMC40OTU3MUMwLjEwMTQ4MSAwLjM5ODI4NSAwLjE2MDYzIDAuMzA5NzYyIDAuMjM1MTk2IDAuMjM1MTk1QzAuMzA5NzYyIDAuMTYwNjI5IDAuMzk4Mjg1IDAuMTAxNDggMC40OTU3MSAwLjA2MTEyNTFDMC41OTMxMzYgMC4wMjA3NzAyIDAuNjk3NTU2IC0xLjU3MTM3ZS0wOSAwLjgwMzAwOCAwQzAuOTA4NDYxIDEuNTcxMzdlLTA5IDEuMDEyODggMC4wMjA3NzAyIDEuMTEwMzEgMC4wNjExMjUxQzEuMjA3NzMgMC4xMDE0OCAxLjI5NjI1IDAuMTYwNjI5IDEuMzcwODIgMC4yMzUxOTVMNS4wNjc2NCAzLjkzMjAyQzUuMzgxNzUgNC4yNDYxMyA1LjM4MTc1IDQuNzUzNTMgNS4wNjc2NCA1LjA2NzY0TDEuMzcwODIgOC43NjQ0NkMxLjI5NjMxIDguODM5MTMgMS4yMDc4IDguODk4MzYgMS4xMTAzNyA4LjkzODc4QzEuMDEyOTQgOC45NzkyIDAuOTA4NDkxIDkgMC44MDMwMDggOUMwLjY5NzUyNSA5IDAuNTkzMDc4IDguOTc5MiAwLjQ5NTY0NSA4LjkzODc4QzAuMzk4MjEyIDguODk4MzYgMC4zMDk3MDcgOC44MzkxMyAwLjIzNTE5NiA4Ljc2NDQ2Qy0wLjA3MDg1OTEgOC40NTAzNSAtMC4wNzg5MTMyIDcuOTM0ODkgMC4yMzUxOTYgNy42MjA3OVoiIGZpbGw9IiMwMDFFNjAiLz4KPC9zdmc+Cgo=) !important;
159
+ .button-hover-bg {
160
+ &::before {
161
+ background: $button-hover-bg;
151
162
  }
152
163
  }
153
164
 
154
- @media(max-width: 1023.98px) {
165
+ @media (max-width: 1023.98px) {
155
166
  .button-primary {
156
- padding:11px 15px;
157
- min-width: 100px
167
+ padding: 11px 15px;
168
+ min-width: 100px;
158
169
  }
159
170
  }
160
171
 
161
- @media(max-width: 767.98px) {
172
+ @media (max-width: 767.98px) {
162
173
  .button-primary {
163
- padding:8px 12px;
164
- min-width: 80px
174
+ padding: 8px 12px;
175
+ min-width: 80px;
165
176
  }
166
177
  }
167
178
 
168
- @media(max-width: 1023.98px) {
179
+ @media (max-width: 1023.98px) {
169
180
  .button-primary {
170
- padding:11px 15px;
171
- min-width: 100px
181
+ padding: 11px 15px;
182
+ min-width: 100px;
172
183
  }
173
184
  }
174
185
 
175
- @media(max-width: 767.98px) {
186
+ @media (max-width: 767.98px) {
176
187
  .button-primary {
177
- padding:8px 12px;
178
- min-width: 80px
188
+ padding: 8px 12px;
189
+ min-width: 80px;
179
190
  }
180
191
  }
181
192
 
182
- @media(max-width: 767.98px) {
193
+ @media (max-width: 767.98px) {
183
194
  .button-icon {
184
- width:12px;
195
+ width: 12px;
185
196
  height: 12px;
186
- margin-left: 4px
197
+ margin-left: 4px;
187
198
  }
188
199
 
189
- .button-icon:after, .button-icon:before {
190
- width:4.7px;
200
+ .button-icon:after,
201
+ .button-icon:before {
202
+ width: 4.7px;
191
203
  height: 6px;
192
204
  background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNCIgaGVpZ2h0PSI2IiB2aWV3Qm94PSIwIDAgNCA2IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMSAxTDMuMDU3MTQgMy4wNTcxNEwxIDUuMTE0MjkiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg==);
193
205
  background-position: 50%;
194
206
  background-size: cover;
195
207
  background-repeat: no-repeat;
196
- background-color: hsla(0,0%,100%,0)
208
+ background-color: hsla(0,0%,100%,0);
197
209
  }
198
210
  }
199
211
  </style>
@@ -0,0 +1,11 @@
1
+ import type { App, Plugin } from 'vue'
2
+ import ContactUsList from './index.vue'
3
+
4
+ export default {
5
+ install: (app: App) => {
6
+ app.component('ContactUsList', ContactUsList)
7
+ },
8
+ } satisfies Plugin
9
+
10
+ export { default as ContactUsList } from './index.vue'
11
+ export type { ContactUsListProps, ContactUsListEmits } from './type'