@hlw-uni/mp-vue 1.1.1 → 1.1.3

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.
package/dist/style.css CHANGED
@@ -594,7 +594,7 @@ from {
594
594
  to {
595
595
  transform: rotate(360deg);
596
596
  }
597
- }.hlw-modal-mask[data-v-397b9549] {
597
+ }.hlw-modal-mask[data-v-91d9e108] {
598
598
  position: fixed;
599
599
  inset: 0;
600
600
  display: flex;
@@ -602,52 +602,52 @@ to {
602
602
  justify-content: center;
603
603
  background: rgba(0, 0, 0, 0.5);
604
604
  z-index: 1000;
605
- animation: hlw-fade-in-397b9549 0.2s;
605
+ animation: hlw-fade-in-91d9e108 0.2s;
606
606
  }
607
- .hlw-modal[data-v-397b9549] {
607
+ .hlw-modal[data-v-91d9e108] {
608
608
  width: 80%;
609
609
  max-width: 600rpx;
610
610
  background: #fff;
611
611
  border-radius: var(--radius-xl, 32rpx);
612
612
  overflow: hidden;
613
- animation: hlw-scale-in-397b9549 0.25s ease;
613
+ animation: hlw-scale-in-91d9e108 0.25s ease;
614
614
  }
615
- .hlw-modal-title[data-v-397b9549] {
615
+ .hlw-modal-title[data-v-91d9e108] {
616
616
  padding: 40rpx 32rpx 0;
617
617
  text-align: center;
618
618
  font-size: var(--font-md, 32rpx);
619
619
  font-weight: 600;
620
620
  color: #1e293b;
621
621
  }
622
- .hlw-modal-body[data-v-397b9549] {
622
+ .hlw-modal-body[data-v-91d9e108] {
623
623
  padding: 32rpx;
624
624
  font-size: var(--font-base, 28rpx);
625
625
  color: #475569;
626
626
  text-align: center;
627
627
  line-height: 1.6;
628
628
  }
629
- .hlw-modal-footer[data-v-397b9549] {
629
+ .hlw-modal-footer[data-v-91d9e108] {
630
630
  display: flex;
631
631
  border-top: 1rpx solid var(--border-color-light, #f1f5f9);
632
632
  }
633
- .hlw-modal-btn[data-v-397b9549] {
633
+ .hlw-modal-btn[data-v-91d9e108] {
634
634
  flex: 1;
635
635
  padding: 24rpx 0;
636
636
  text-align: center;
637
637
  font-size: var(--font-base, 28rpx);
638
638
  font-weight: 500;
639
639
  }
640
- .hlw-modal-btn[data-v-397b9549]:active {
640
+ .hlw-modal-btn[data-v-91d9e108]:active {
641
641
  background: #f8fafc;
642
642
  }
643
- .hlw-modal-btn--cancel[data-v-397b9549] {
643
+ .hlw-modal-btn--cancel[data-v-91d9e108] {
644
644
  color: #64748b;
645
645
  border-right: 1rpx solid var(--border-color-light, #f1f5f9);
646
646
  }
647
- .hlw-modal-btn--confirm[data-v-397b9549] {
647
+ .hlw-modal-btn--confirm[data-v-91d9e108] {
648
648
  color: var(--primary-color, #3b82f6);
649
649
  }
650
- @keyframes hlw-fade-in-397b9549 {
650
+ @keyframes hlw-fade-in-91d9e108 {
651
651
  from {
652
652
  opacity: 0;
653
653
  }
@@ -655,7 +655,7 @@ to {
655
655
  opacity: 1;
656
656
  }
657
657
  }
658
- @keyframes hlw-scale-in-397b9549 {
658
+ @keyframes hlw-scale-in-91d9e108 {
659
659
  from {
660
660
  transform: scale(0.9);
661
661
  opacity: 0;
@@ -709,97 +709,112 @@ to {
709
709
  100% {
710
710
  transform: translateX(-100%);
711
711
  }
712
- }.hlw-page[data-v-0cf37585] {
712
+ }.hlw-page[data-v-01bb7796] {
713
713
  width: 100%;
714
714
  height: 100vh;
715
715
  display: flex;
716
716
  flex-direction: column;
717
717
  overflow: hidden;
718
718
  }
719
- .hlw-page-header[data-v-0cf37585] {
719
+ .hlw-page-header[data-v-01bb7796] {
720
720
  flex-shrink: 0;
721
721
  }
722
- .hlw-page-content[data-v-0cf37585] {
722
+ .hlw-page-content[data-v-01bb7796] {
723
723
  flex: 1;
724
724
  height: 0;
725
725
  width: 100%;
726
726
  }
727
- .hlw-page-footer[data-v-0cf37585] {
727
+ .hlw-page-footer[data-v-01bb7796] {
728
728
  flex-shrink: 0;
729
- }.hlw-popup-mask[data-v-2d71ef9b] {
729
+ }.hlw-popup-mask[data-v-be12aee0] {
730
730
  position: fixed;
731
731
  inset: 0;
732
732
  background: rgba(0, 0, 0, 0.5);
733
733
  z-index: 1000;
734
- animation: hlw-fade-in-2d71ef9b 0.25s;
734
+ animation: hlw-fade-in-be12aee0 0.25s;
735
735
  }
736
- .hlw-popup[data-v-2d71ef9b] {
736
+ .hlw-popup[data-v-be12aee0] {
737
737
  position: fixed;
738
738
  z-index: 1001;
739
739
  background: #fff;
740
- transition: transform 0.3s ease, opacity 0.3s ease;
741
740
  }
742
- .hlw-popup--bottom[data-v-2d71ef9b] {
741
+ .hlw-popup--bottom[data-v-be12aee0] {
743
742
  left: 0;
744
743
  right: 0;
745
744
  bottom: 0;
746
745
  max-height: 80vh;
747
- transform: translateY(100%);
746
+ animation: hlw-popup-slide-up-be12aee0 0.25s ease;
748
747
  }
749
- .hlw-popup--bottom.hlw-popup--show[data-v-2d71ef9b] {
750
- transform: translateY(0);
751
- }
752
- .hlw-popup--bottom.hlw-popup--round[data-v-2d71ef9b] {
748
+ .hlw-popup--bottom.hlw-popup--round[data-v-be12aee0] {
753
749
  border-radius: var(--radius-xl, 32rpx) var(--radius-xl, 32rpx) 0 0;
754
750
  }
755
- .hlw-popup--top[data-v-2d71ef9b] {
751
+ .hlw-popup--top[data-v-be12aee0] {
756
752
  left: 0;
757
753
  right: 0;
758
754
  top: 0;
759
755
  max-height: 80vh;
760
- transform: translateY(-100%);
761
- }
762
- .hlw-popup--top.hlw-popup--show[data-v-2d71ef9b] {
763
- transform: translateY(0);
756
+ animation: hlw-popup-slide-down-be12aee0 0.25s ease;
764
757
  }
765
- .hlw-popup--top.hlw-popup--round[data-v-2d71ef9b] {
758
+ .hlw-popup--top.hlw-popup--round[data-v-be12aee0] {
766
759
  border-radius: 0 0 var(--radius-xl, 32rpx) var(--radius-xl, 32rpx);
767
760
  }
768
- .hlw-popup--center[data-v-2d71ef9b] {
761
+ .hlw-popup--center[data-v-be12aee0] {
769
762
  left: 50%;
770
763
  top: 50%;
771
764
  width: 80%;
772
- transform: translate(-50%, -50%) scale(0.9);
773
- opacity: 0;
765
+ transform: translate(-50%, -50%);
774
766
  border-radius: var(--radius-xl, 32rpx);
767
+ animation: hlw-popup-scale-in-be12aee0 0.22s ease;
775
768
  }
776
- .hlw-popup--center.hlw-popup--show[data-v-2d71ef9b] {
777
- transform: translate(-50%, -50%) scale(1);
778
- opacity: 1;
779
- }
780
- .hlw-popup-header[data-v-2d71ef9b] {
769
+ .hlw-popup-header[data-v-be12aee0] {
781
770
  display: flex;
782
771
  align-items: center;
783
772
  justify-content: space-between;
784
773
  padding: 28rpx 32rpx;
785
774
  border-bottom: 1rpx solid var(--border-color-light, #f1f5f9);
786
775
  }
787
- .hlw-popup-title[data-v-2d71ef9b] {
776
+ .hlw-popup-title[data-v-be12aee0] {
788
777
  font-size: var(--font-md, 32rpx);
789
778
  font-weight: 600;
790
779
  color: #1e293b;
791
780
  }
792
- .hlw-popup-close[data-v-2d71ef9b] {
781
+ .hlw-popup-close[data-v-be12aee0] {
793
782
  font-size: 32rpx;
794
783
  color: #94a3b8;
795
784
  line-height: 1;
796
785
  padding: 4rpx;
797
786
  }
798
- @keyframes hlw-fade-in-2d71ef9b {
787
+ @keyframes hlw-fade-in-be12aee0 {
788
+ from {
789
+ opacity: 0;
790
+ }
791
+ to {
792
+ opacity: 1;
793
+ }
794
+ }
795
+ @keyframes hlw-popup-slide-up-be12aee0 {
796
+ from {
797
+ transform: translateY(100%);
798
+ }
799
+ to {
800
+ transform: translateY(0);
801
+ }
802
+ }
803
+ @keyframes hlw-popup-slide-down-be12aee0 {
804
+ from {
805
+ transform: translateY(-100%);
806
+ }
807
+ to {
808
+ transform: translateY(0);
809
+ }
810
+ }
811
+ @keyframes hlw-popup-scale-in-be12aee0 {
799
812
  from {
813
+ transform: translate(-50%, -50%) scale(0.92);
800
814
  opacity: 0;
801
815
  }
802
816
  to {
817
+ transform: translate(-50%, -50%) scale(1);
803
818
  opacity: 1;
804
819
  }
805
820
  }.hlw-search[data-v-4fe1bfab] {
@@ -933,74 +948,87 @@ to {
933
948
  border-radius: 6rpx;
934
949
  background: var(--primary-color, #3b82f6);
935
950
  transition: width 0.2s;
936
- }.hlw-tag[data-v-fd774288] {
951
+ }.hlw-tag[data-v-a407a3ce] {
937
952
  display: inline-flex;
938
953
  align-items: center;
954
+ justify-content: center;
955
+ vertical-align: middle;
939
956
  gap: 4rpx;
940
957
  font-weight: 500;
958
+ line-height: 1.2;
941
959
  border: 2rpx solid transparent;
960
+ box-sizing: border-box;
942
961
  }
943
- .hlw-tag--medium[data-v-fd774288] {
962
+ .hlw-tag--medium[data-v-a407a3ce] {
963
+ min-height: 36rpx;
944
964
  padding: 4rpx 16rpx;
945
965
  font-size: var(--font-xs, 20rpx);
946
966
  border-radius: var(--radius-sm, 8rpx);
947
967
  }
948
- .hlw-tag--small[data-v-fd774288] {
968
+ .hlw-tag--small[data-v-a407a3ce] {
969
+ min-height: 28rpx;
949
970
  padding: 2rpx 10rpx;
950
971
  font-size: 18rpx;
951
972
  border-radius: 6rpx;
952
973
  }
953
- .hlw-tag--round[data-v-fd774288] {
974
+ .hlw-tag--round[data-v-a407a3ce] {
954
975
  border-radius: 999rpx;
955
976
  }
956
- .hlw-tag--primary[data-v-fd774288] {
977
+ .hlw-tag--primary[data-v-a407a3ce] {
957
978
  background: var(--primary-color, #3b82f6);
958
979
  color: #fff;
959
980
  border-color: var(--primary-color, #3b82f6);
960
981
  }
961
- .hlw-tag--primary.hlw-tag--plain[data-v-fd774288] {
982
+ .hlw-tag--primary.hlw-tag--plain[data-v-a407a3ce] {
962
983
  background: transparent;
963
984
  color: var(--primary-color, #3b82f6);
964
985
  }
965
- .hlw-tag--success[data-v-fd774288] {
986
+ .hlw-tag--success[data-v-a407a3ce] {
966
987
  background: #10b981;
967
988
  color: #fff;
968
989
  border-color: #10b981;
969
990
  }
970
- .hlw-tag--success.hlw-tag--plain[data-v-fd774288] {
991
+ .hlw-tag--success.hlw-tag--plain[data-v-a407a3ce] {
971
992
  background: transparent;
972
993
  color: #10b981;
973
994
  }
974
- .hlw-tag--warning[data-v-fd774288] {
995
+ .hlw-tag--warning[data-v-a407a3ce] {
975
996
  background: #f59e0b;
976
997
  color: #fff;
977
998
  border-color: #f59e0b;
978
999
  }
979
- .hlw-tag--warning.hlw-tag--plain[data-v-fd774288] {
1000
+ .hlw-tag--warning.hlw-tag--plain[data-v-a407a3ce] {
980
1001
  background: transparent;
981
1002
  color: #f59e0b;
982
1003
  }
983
- .hlw-tag--danger[data-v-fd774288] {
1004
+ .hlw-tag--danger[data-v-a407a3ce] {
984
1005
  background: #ef4444;
985
1006
  color: #fff;
986
1007
  border-color: #ef4444;
987
1008
  }
988
- .hlw-tag--danger.hlw-tag--plain[data-v-fd774288] {
1009
+ .hlw-tag--danger.hlw-tag--plain[data-v-a407a3ce] {
989
1010
  background: transparent;
990
1011
  color: #ef4444;
991
1012
  }
992
- .hlw-tag--info[data-v-fd774288] {
1013
+ .hlw-tag--info[data-v-a407a3ce] {
993
1014
  background: #64748b;
994
1015
  color: #fff;
995
1016
  border-color: #64748b;
996
1017
  }
997
- .hlw-tag--info.hlw-tag--plain[data-v-fd774288] {
1018
+ .hlw-tag--info.hlw-tag--plain[data-v-a407a3ce] {
998
1019
  background: transparent;
999
1020
  color: #64748b;
1000
1021
  }
1001
- .hlw-tag-close[data-v-fd774288] {
1022
+ .hlw-tag-text[data-v-a407a3ce] {
1023
+ display: block;
1024
+ line-height: 1.2;
1025
+ }
1026
+ .hlw-tag-close[data-v-a407a3ce] {
1002
1027
  font-size: 1em;
1003
1028
  line-height: 1;
1029
+ display: inline-flex;
1030
+ align-items: center;
1031
+ justify-content: center;
1004
1032
  margin-left: 2rpx;
1005
1033
  opacity: 0.8;
1006
1034
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hlw-uni/mp-vue",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "description": "hlw-uni Vue 组件库 — 供小程序业务方使用的 UI 组件集合",
5
5
  "main": "src/index.ts",
6
6
  "module": "src/index.ts",
@@ -1,14 +1,22 @@
1
1
  <template>
2
2
  <view v-if="show" class="hlw-modal-mask" @tap.self="onMask">
3
- <view class="hlw-modal" :class="{ 'hlw-modal--show': show }">
3
+ <view class="hlw-modal" :class="{ 'hlw-modal--show': show }" @tap.stop>
4
4
  <view v-if="title" class="hlw-modal-title">{{ title }}</view>
5
5
  <view class="hlw-modal-body">
6
6
  <slot />
7
7
  </view>
8
8
  <slot name="footer">
9
9
  <view class="hlw-modal-footer">
10
- <view v-if="showCancel" class="hlw-modal-btn hlw-modal-btn--cancel" @tap="onCancel">{{ cancelText }}</view>
11
- <view class="hlw-modal-btn hlw-modal-btn--confirm" @tap="onConfirm">{{ confirmText }}</view>
10
+ <view
11
+ v-if="showCancel"
12
+ class="hlw-modal-btn hlw-modal-btn--cancel"
13
+ @tap.stop="onCancel"
14
+ >
15
+ {{ cancelText }}
16
+ </view>
17
+ <view class="hlw-modal-btn hlw-modal-btn--confirm" @tap.stop="onConfirm">
18
+ {{ confirmText }}
19
+ </view>
12
20
  </view>
13
21
  </slot>
14
22
  </view>
@@ -16,36 +24,6 @@
16
24
  </template>
17
25
 
18
26
  <script setup lang="ts">
19
- /**
20
- * HlwModal — 模态弹窗
21
- *
22
- * 比 uni.showModal 更灵活:支持插槽自定义内容和底部按钮。
23
- * 使用 v-model:show 控制显隐。
24
- *
25
- * @props
26
- * show - 是否显示,支持 v-model:show
27
- * title - 标题文字
28
- * showCancel - 是否显示取消按钮,默认 true
29
- * confirmText - 确认按钮文字,默认 "确定"
30
- * cancelText - 取消按钮文字,默认 "取消"
31
- * closeOnMask - 点击蒙层是否关闭,默认 true
32
- *
33
- * @events
34
- * update:show - 显隐状态变更
35
- * confirm - 点击确认
36
- * cancel - 点击取消
37
- *
38
- * @slots
39
- * default - 弹窗内容
40
- * footer - 自定义底部按钮区域(覆盖默认确认/取消)
41
- *
42
- * @example
43
- * ```vue
44
- * <HlwModal v-model:show="visible" title="提示" @confirm="onOk">
45
- * <text>确定要删除吗?</text>
46
- * </HlwModal>
47
- * ```
48
- */
49
27
  interface Props {
50
28
  show?: boolean;
51
29
  title?: string;
@@ -55,7 +33,7 @@ interface Props {
55
33
  closeOnMask?: boolean;
56
34
  }
57
35
 
58
- withDefaults(defineProps<Props>(), {
36
+ const props = withDefaults(defineProps<Props>(), {
59
37
  show: false,
60
38
  title: "",
61
39
  showCancel: true,
@@ -71,6 +49,7 @@ function close() {
71
49
  }
72
50
 
73
51
  function onMask() {
52
+ if (!props.closeOnMask) return;
74
53
  close();
75
54
  }
76
55
 
@@ -140,6 +119,7 @@ function onCancel() {
140
119
  color: #64748b;
141
120
  border-right: 1rpx solid var(--border-color-light, #f1f5f9);
142
121
  }
122
+
143
123
  &--confirm {
144
124
  color: var(--primary-color, #3b82f6);
145
125
  }
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <view class="hlw-page">
2
+ <view class="hlw-page" :style="themePageStyle">
3
3
  <view class="hlw-page-header">
4
4
  <slot name="header">
5
5
  <hlw-header
@@ -16,6 +16,7 @@
16
16
  :enable-flex="true"
17
17
  :enhanced="true"
18
18
  :show-scrollbar="false"
19
+ :style="themePageStyle"
19
20
  >
20
21
  <slot></slot>
21
22
  </scroll-view>
@@ -26,6 +27,7 @@
26
27
  </template>
27
28
 
28
29
  <script setup lang="ts">
30
+ import { useThemePageStyle } from "../../composables/theme";
29
31
  /**
30
32
  * HlwPage — 页面布局容器
31
33
  *
@@ -61,6 +63,8 @@ const props = withDefaults(defineProps<Props>(), {
61
63
  isBack: false,
62
64
  bgClass: "",
63
65
  });
66
+
67
+ const { themePageStyle } = useThemePageStyle();
64
68
  </script>
65
69
 
66
70
  <style lang="scss" scoped>
@@ -1,12 +1,18 @@
1
1
  <template>
2
- <view v-if="show" class="hlw-popup-mask" @tap.self="onClose" />
3
- <view class="hlw-popup" :class="[`hlw-popup--${position}`, { 'hlw-popup--show': show, 'hlw-popup--round': round }]">
4
- <view v-if="title || closable" class="hlw-popup-header">
5
- <text class="hlw-popup-title">{{ title }}</text>
6
- <view v-if="closable" class="hlw-popup-close i-fa6-solid-xmark" @tap="onClose" />
2
+ <template v-if="show">
3
+ <view class="hlw-popup-mask" @tap.self="onClose" />
4
+ <view
5
+ class="hlw-popup"
6
+ :class="[`hlw-popup--${position}`, { 'hlw-popup--round': round }]"
7
+ @tap.stop
8
+ >
9
+ <view v-if="title || closable" class="hlw-popup-header">
10
+ <text class="hlw-popup-title">{{ title }}</text>
11
+ <view v-if="closable" class="hlw-popup-close i-fa6-solid-xmark" @tap="onClose" />
12
+ </view>
13
+ <slot />
7
14
  </view>
8
- <slot />
9
- </view>
15
+ </template>
10
16
  </template>
11
17
 
12
18
  <script setup lang="ts">
@@ -47,16 +53,17 @@ function onClose() {
47
53
  position: fixed;
48
54
  z-index: 1001;
49
55
  background: #fff;
50
- transition: transform 0.3s ease, opacity 0.3s ease;
51
56
 
52
57
  &--bottom {
53
58
  left: 0;
54
59
  right: 0;
55
60
  bottom: 0;
56
61
  max-height: 80vh;
57
- transform: translateY(100%);
58
- &.hlw-popup--show { transform: translateY(0); }
59
- &.hlw-popup--round { border-radius: var(--radius-xl, 32rpx) var(--radius-xl, 32rpx) 0 0; }
62
+ animation: hlw-popup-slide-up 0.25s ease;
63
+
64
+ &.hlw-popup--round {
65
+ border-radius: var(--radius-xl, 32rpx) var(--radius-xl, 32rpx) 0 0;
66
+ }
60
67
  }
61
68
 
62
69
  &--top {
@@ -64,19 +71,20 @@ function onClose() {
64
71
  right: 0;
65
72
  top: 0;
66
73
  max-height: 80vh;
67
- transform: translateY(-100%);
68
- &.hlw-popup--show { transform: translateY(0); }
69
- &.hlw-popup--round { border-radius: 0 0 var(--radius-xl, 32rpx) var(--radius-xl, 32rpx); }
74
+ animation: hlw-popup-slide-down 0.25s ease;
75
+
76
+ &.hlw-popup--round {
77
+ border-radius: 0 0 var(--radius-xl, 32rpx) var(--radius-xl, 32rpx);
78
+ }
70
79
  }
71
80
 
72
81
  &--center {
73
82
  left: 50%;
74
83
  top: 50%;
75
84
  width: 80%;
76
- transform: translate(-50%, -50%) scale(0.9);
77
- opacity: 0;
85
+ transform: translate(-50%, -50%);
78
86
  border-radius: var(--radius-xl, 32rpx);
79
- &.hlw-popup--show { transform: translate(-50%, -50%) scale(1); opacity: 1; }
87
+ animation: hlw-popup-scale-in 0.22s ease;
80
88
  }
81
89
  }
82
90
 
@@ -105,4 +113,19 @@ function onClose() {
105
113
  from { opacity: 0; }
106
114
  to { opacity: 1; }
107
115
  }
116
+
117
+ @keyframes hlw-popup-slide-up {
118
+ from { transform: translateY(100%); }
119
+ to { transform: translateY(0); }
120
+ }
121
+
122
+ @keyframes hlw-popup-slide-down {
123
+ from { transform: translateY(-100%); }
124
+ to { transform: translateY(0); }
125
+ }
126
+
127
+ @keyframes hlw-popup-scale-in {
128
+ from { transform: translate(-50%, -50%) scale(0.92); opacity: 0; }
129
+ to { transform: translate(-50%, -50%) scale(1); opacity: 1; }
130
+ }
108
131
  </style>
@@ -5,7 +5,7 @@
5
5
  :style="customStyle"
6
6
  @tap="$emit('click')"
7
7
  >
8
- <slot />
8
+ <text class="hlw-tag-text"><slot /></text>
9
9
  <view v-if="closable" class="hlw-tag-close i-fa6-solid-xmark" @tap.stop="$emit('close')" />
10
10
  </view>
11
11
  </template>
@@ -53,12 +53,28 @@ $colors: (
53
53
  .hlw-tag {
54
54
  display: inline-flex;
55
55
  align-items: center;
56
+ justify-content: center;
57
+ vertical-align: middle;
56
58
  gap: 4rpx;
57
59
  font-weight: 500;
60
+ line-height: 1.2;
58
61
  border: 2rpx solid transparent;
62
+ box-sizing: border-box;
63
+
64
+ &--medium {
65
+ min-height: 36rpx;
66
+ padding: 4rpx 16rpx;
67
+ font-size: var(--font-xs, 20rpx);
68
+ border-radius: var(--radius-sm, 8rpx);
69
+ }
70
+
71
+ &--small {
72
+ min-height: 28rpx;
73
+ padding: 2rpx 10rpx;
74
+ font-size: 18rpx;
75
+ border-radius: 6rpx;
76
+ }
59
77
 
60
- &--medium { padding: 4rpx 16rpx; font-size: var(--font-xs, 20rpx); border-radius: var(--radius-sm, 8rpx); }
61
- &--small { padding: 2rpx 10rpx; font-size: 18rpx; border-radius: 6rpx; }
62
78
  &--round { border-radius: 999rpx; }
63
79
 
64
80
  @each $name, $c in $colors {
@@ -67,9 +83,17 @@ $colors: (
67
83
  }
68
84
  }
69
85
 
86
+ .hlw-tag-text {
87
+ display: block;
88
+ line-height: 1.2;
89
+ }
90
+
70
91
  .hlw-tag-close {
71
92
  font-size: 1em;
72
93
  line-height: 1;
94
+ display: inline-flex;
95
+ align-items: center;
96
+ justify-content: center;
73
97
  margin-left: 2rpx;
74
98
  opacity: 0.8;
75
99
  }