uview-plus 3.8.37 → 3.8.42

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.
@@ -1,50 +1,61 @@
1
1
  <template>
2
2
  <view
3
3
  class="u-tabbar-item"
4
- :style="[addStyle(customStyle)]"
5
- :class="[isMidButton ? 'u-tabbar-item--mid-button' : '']"
4
+ :style="[itemInlineStyle, addStyle(customStyle)]"
5
+ :class="itemClassNames"
6
6
  @tap="clickHandler"
7
7
  >
8
- <view
9
- class="u-tabbar-item__icon"
10
- :class="[isMidButton ? 'u-tabbar-item__icon--mid-button' : '']"
11
- >
12
- <view class="u-tabbar-item--mid-button-cover" v-if="isMidButton">
8
+ <view class="u-tabbar-item__content" :class="contentClassNames">
9
+ <view class="u-tabbar-item__bubble" :class="bubbleClassNames">
10
+ <view
11
+ class="u-tabbar-item__icon"
12
+ :class="iconClassNames"
13
+ >
14
+ <view v-if="isMidButton" class="u-tabbar-item__mid-button-arc">
15
+ <svg viewBox="0 0 72 72" preserveAspectRatio="none">
16
+ <path d="M 4 36 A 32 32 0 0 1 68 36"></path>
17
+ </svg>
18
+ </view>
19
+ <view v-if="isMidButton" class="u-tabbar-item__mid-button-inner"></view>
20
+ <up-icon
21
+ v-if="resolvedIconName"
22
+ :name="resolvedIconName"
23
+ :color="isMidButton ? resolvedMidButtonIconColor : (isActive ? resolvedActiveColor : resolvedInactiveColor)"
24
+ :size="isMidButton ? midButtonIconSize : 24"
25
+ ></up-icon>
26
+ <template v-else>
27
+ <slot
28
+ v-if="isActive"
29
+ name="active-icon"
30
+ />
31
+ <slot
32
+ v-else
33
+ name="inactive-icon"
34
+ />
35
+ </template>
36
+ <u-badge
37
+ absolute
38
+ :offset="[0, dot ? '34rpx' : badge > 9 ? '14rpx' : '20rpx']"
39
+ :customStyle="badgeStyle"
40
+ :isDot="dot"
41
+ :value="badge || (dot ? 1 : null)"
42
+ :show="dot || badge > 0"
43
+ ></u-badge>
44
+ </view>
45
+
46
+ <slot name="text">
47
+ <text
48
+ class="u-tabbar-item__text"
49
+ :class="textClassNames"
50
+ :style="{
51
+ color: isActive ? resolvedActiveColor : resolvedInactiveColor
52
+ }"
53
+ >{{ text }}</text>
54
+ </slot>
13
55
  </view>
14
- <up-icon
15
- v-if="icon"
16
- :name="icon"
17
- :color="isActive ? resolvedActiveColor : resolvedInactiveColor"
18
- :size="isMidButton ? 26 : 20"
19
- ></up-icon>
20
- <template v-else>
21
- <slot
22
- v-if="isActive"
23
- name="active-icon"
24
- />
25
- <slot
26
- v-else
27
- name="inactive-icon"
28
- />
29
- </template>
30
- <u-badge
31
- absolute
32
- :offset="[0, dot ? '34rpx' : badge > 9 ? '14rpx' : '20rpx']"
33
- :customStyle="badgeStyle"
34
- :isDot="dot"
35
- :value="badge || (dot ? 1 : null)"
36
- :show="dot || badge > 0"
37
- ></u-badge>
38
56
  </view>
39
-
40
- <slot name="text">
41
- <text
42
- class="u-tabbar-item__text"
43
- :style="{
44
- color: isActive ? resolvedActiveColor : resolvedInactiveColor
45
- }"
46
- >{{ text }}</text>
47
- </slot>
57
+ <view v-if="resolvedStyleType === 'underline'" class="u-tabbar-item__underline"></view>
58
+ <view v-if="resolvedStyleType === 'dot'" class="u-tabbar-item__active-dot"></view>
48
59
  </view>
49
60
  </template>
50
61
 
@@ -76,7 +87,14 @@
76
87
  parentData: {
77
88
  value: null,
78
89
  activeColor: '',
79
- inactiveColor: ''
90
+ inactiveColor: '',
91
+ styleType: 'default',
92
+ animationType: 'none',
93
+ activeBackgroundColor: '',
94
+ inactiveBackgroundColor: '',
95
+ itemShape: 'default',
96
+ iconScale: 1.1,
97
+ textMode: 'always'
80
98
  }
81
99
  }
82
100
  },
@@ -98,6 +116,67 @@
98
116
  return !this.parentData.inactiveColor || this.parentData.inactiveColor === '#7d7e80'
99
117
  ? this.upThemeVar('--up-content-color', '#7d7e80')
100
118
  : this.parentData.inactiveColor
119
+ },
120
+ resolvedStyleType() {
121
+ return this.parentData.styleType || 'default'
122
+ },
123
+ resolvedAnimationType() {
124
+ return this.parentData.animationType || 'none'
125
+ },
126
+ resolvedItemShape() {
127
+ return this.parentData.itemShape || 'default'
128
+ },
129
+ resolvedIconName() {
130
+ if (this.$slots['active-icon'] || this.$slots['inactive-icon']) return ''
131
+ if (this.isActive) return this.activeIcon || this.icon
132
+ return this.inactiveIcon || this.icon
133
+ },
134
+ resolvedMidButtonIconColor() {
135
+ if (this.midButtonIconColor) return this.midButtonIconColor
136
+ return this.isMidButton ? '#3c9cff' : this.resolvedActiveColor
137
+ },
138
+ itemClassNames() {
139
+ return [
140
+ this.isActive ? 'u-tabbar-item--active' : 'u-tabbar-item--inactive',
141
+ this.isMidButton ? 'u-tabbar-item--mid-button' : '',
142
+ `u-tabbar-item--${this.resolvedStyleType}`,
143
+ this.resolvedAnimationType !== 'none' && this.isActive ? `u-tabbar-item--anim-${this.resolvedAnimationType}` : '',
144
+ this.resolvedItemShape !== 'default' ? `u-tabbar-item--shape-${this.resolvedItemShape}` : '',
145
+ this.isActive ? this.activeClass : this.inactiveClass
146
+ ]
147
+ },
148
+ iconClassNames() {
149
+ return [
150
+ this.isMidButton ? 'u-tabbar-item__icon--mid-button' : '',
151
+ `u-tabbar-item__icon--${this.resolvedStyleType}`,
152
+ this.isActive && this.resolvedAnimationType !== 'none' ? `u-tabbar-item__icon--anim-${this.resolvedAnimationType}` : ''
153
+ ]
154
+ },
155
+ contentClassNames() {
156
+ return [
157
+ `u-tabbar-item__content--${this.resolvedStyleType}`,
158
+ this.isMidButton ? 'u-tabbar-item__content--mid-button' : ''
159
+ ]
160
+ },
161
+ bubbleClassNames() {
162
+ return [
163
+ `u-tabbar-item__bubble--${this.resolvedStyleType}`,
164
+ this.isActive ? 'u-tabbar-item__bubble--active' : '',
165
+ this.isMidButton ? 'u-tabbar-item__bubble--mid-button' : ''
166
+ ]
167
+ },
168
+ textClassNames() {
169
+ return [
170
+ `u-tabbar-item__text--${this.resolvedStyleType}`,
171
+ this.parentData.textMode === 'active' && !this.isActive ? 'u-tabbar-item__text--muted' : ''
172
+ ]
173
+ },
174
+ itemInlineStyle() {
175
+ return {
176
+ backgroundColor: this.isActive
177
+ ? (this.parentData.activeBackgroundColor || 'transparent')
178
+ : (this.parentData.inactiveBackgroundColor || 'transparent')
179
+ }
101
180
  }
102
181
  },
103
182
  created() {
@@ -147,6 +226,7 @@
147
226
  align-items: center;
148
227
  justify-content: center;
149
228
  flex: 1;
229
+ position: relative;
150
230
  /* #ifndef APP-NVUE */
151
231
  width: 100%;
152
232
  height: 100%;
@@ -160,42 +240,231 @@
160
240
  position: relative;
161
241
  width: 150rpx;
162
242
  justify-content: center;
243
+ min-height: 46rpx;
244
+ transition: transform 0.22s ease, opacity 0.22s ease;
245
+
246
+ &--pill,
247
+ &--card,
248
+ &--glow,
249
+ &--convex {
250
+ width: 100%;
251
+ }
252
+
253
+ &--anim-scale {
254
+ transform: scale(var(--up-tabbar-icon-scale, 1.1));
255
+ }
256
+
257
+ &--anim-lift {
258
+ transform: translateY(-6rpx) scale(var(--up-tabbar-icon-scale, 1.08));
259
+ }
260
+
261
+ &--anim-swing {
262
+ transform: rotate(-10deg) scale(var(--up-tabbar-icon-scale, 1.08));
263
+ }
264
+
265
+ &--anim-pulse {
266
+ transform: scale(var(--up-tabbar-icon-scale, 1.14));
267
+ }
268
+ }
269
+
270
+ &__content {
271
+ @include flex(column);
272
+ align-items: center;
273
+ justify-content: center;
274
+ width: 100%;
275
+ height: 100%;
276
+
277
+ &--mid-button {
278
+ justify-content: center;
279
+ }
280
+ }
281
+
282
+ &__bubble {
283
+ @include flex(column);
284
+ align-items: center;
285
+ justify-content: center;
286
+ min-width: 0;
287
+ padding: 0;
288
+ max-width: 100rpx;
289
+ border-radius: 999px;
290
+ transition: background-color 0.22s ease, transform 0.22s ease;
291
+
292
+ &--pill.u-tabbar-item__bubble--active {
293
+ background-color: transparent;
294
+ }
295
+
296
+ &--glow.u-tabbar-item__bubble--active {
297
+ background-color: var(--up-tabbar-active-bg, rgba(125, 211, 252, 0.12));
298
+ }
299
+
300
+ &--mid-button {
301
+ padding: 0;
302
+ background-color: transparent !important;
303
+ }
163
304
  }
164
305
 
165
306
  &__text {
166
307
  margin-top: 2px;
167
308
  font-size: 12px;
168
309
  color: $u-content-color;
310
+ transition: transform 0.22s ease, opacity 0.22s ease;
311
+
312
+ &--muted {
313
+ opacity: 0.68;
314
+ transform: scale(0.94);
315
+ }
169
316
  }
317
+
318
+ &__underline {
319
+ position: absolute;
320
+ left: 50%;
321
+ bottom: 2rpx;
322
+ width: 34rpx;
323
+ height: 6rpx;
324
+ border-radius: 999px;
325
+ background-color: currentColor;
326
+ transform: translateX(-50%);
327
+ }
328
+
329
+ &__active-dot {
330
+ position: absolute;
331
+ left: 50%;
332
+ bottom: 8rpx;
333
+ width: 10rpx;
334
+ height: 10rpx;
335
+ border-radius: 50%;
336
+ background-color: currentColor;
337
+ transform: translateX(-50%);
338
+ }
339
+ }
340
+
341
+ .u-tabbar-item--active {
342
+ color: inherit;
343
+ }
344
+
345
+ .u-tabbar-item--pill,
346
+ .u-tabbar-item--glow,
347
+ .u-tabbar-item--card {
348
+ margin: 0;
349
+ border-radius: 999px;
350
+ }
351
+
352
+ .u-tabbar-item--card {
353
+ border-radius: 24rpx;
354
+ }
355
+
356
+ .u-tabbar-item--active.u-tabbar-item--pill,
357
+ .u-tabbar-item--active.u-tabbar-item--card {
358
+ box-shadow: none;
359
+ }
360
+
361
+ .u-tabbar-item--active.u-tabbar-item--glow {
362
+ box-shadow: none;
363
+ }
364
+
365
+ .u-tabbar-item--lift.u-tabbar-item--active {
366
+ transform: none;
367
+ }
368
+
369
+ .u-tabbar-item--lift.u-tabbar-item--active .u-tabbar-item__icon {
370
+ transform: translateY(-6rpx) scale(1.04);
371
+ }
372
+
373
+ .u-tabbar-item--underline,
374
+ .u-tabbar-item--dot {
375
+ padding-bottom: 10rpx;
376
+ }
377
+
378
+ .u-tabbar-item--convex.u-tabbar-item--active:not(.u-tabbar-item--mid-button) {
379
+ transform: none;
170
380
  }
171
381
 
172
382
  // 中间按钮样式
173
383
  .u-tabbar-item--mid-button {
174
384
  /* #ifndef APP-NVUE */
175
- transform: translateY(-10px);
385
+ transform: translateY(v-bind('`${midButtonOffsetY}px`'));
176
386
  /* #endif */
177
- }
178
-
179
- .u-tabbar-item--mid-button-cover {
180
- background-color: var(--up-card-bg-color, #fff);
181
- position: absolute;
182
- top: 22px;
183
- left: -10px;
184
- // right: -10px;
185
- width: 90px;
186
- bottom: 0;
387
+ z-index: 2;
388
+ flex: 1;
187
389
  }
188
390
 
189
391
  .u-tabbar-item__icon--mid-button {
190
- width: 70px;
191
- height: 70px;
192
- border-radius: 100px;
193
- background-color: var(--up-card-bg-color, #ffffff);
194
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
195
- border: 1px solid var(--up-border-color, rgba(0, 0, 0, 0.08));
392
+ width: 64px;
393
+ height: 64px;
394
+ border-radius: 999px;
395
+ background: #ffffff;
396
+ box-shadow: v-bind('midButtonBoxShadow || "none"');
196
397
  display: flex;
197
398
  align-items: center;
198
399
  justify-content: center;
400
+ position: relative;
401
+ overflow: visible;
402
+ }
403
+
404
+ .u-tabbar-item__mid-button-arc {
405
+ position: absolute;
406
+ left: -4px;
407
+ top: -4px;
408
+ width: calc(100% + 8px);
409
+ height: calc(100% + 8px);
410
+ pointer-events: none;
411
+ z-index: 0;
412
+ }
413
+
414
+ .u-tabbar-item__mid-button-arc svg {
415
+ width: 100%;
416
+ height: 100%;
417
+ }
418
+
419
+ .u-tabbar-item__mid-button-arc path {
420
+ fill: none;
421
+ stroke: none;
422
+ stroke-width: 0;
423
+ stroke-linecap: round;
424
+ }
425
+
426
+ .u-tabbar-item__mid-button-inner {
427
+ position: absolute;
428
+ left: 6px;
429
+ top: 6px;
430
+ right: 6px;
431
+ bottom: 6px;
432
+ border-radius: 999px;
433
+ background: v-bind('midButtonBgColor || "#ffffff"');
434
+ box-shadow: v-bind('midButtonInnerBoxShadow');
435
+ z-index: 1;
436
+ }
437
+
438
+ .u-tabbar-item__icon--mid-button .u-icon,
439
+ .u-tabbar-item__icon--mid-button .u-badge {
440
+ position: relative;
441
+ z-index: 2;
442
+ }
443
+
444
+ .u-tabbar-item--mid-button .u-tabbar-item__text {
445
+ margin-top: 0;
446
+ transform: translateY(-4px);
447
+ }
448
+
449
+ .u-tabbar-item--lift .u-tabbar-item__bubble {
450
+ background-color: transparent !important;
451
+ }
452
+
453
+ .u-tabbar-item--lift.u-tabbar-item--active .u-tabbar-item__text {
454
+ transform: translateY(-4rpx);
455
+ }
456
+
457
+ .u-tabbar-item--anim-pulse .u-tabbar-item__icon {
458
+ animation: u-tabbar-item-pulse 1.4s ease-in-out infinite;
459
+ }
460
+
461
+ @keyframes u-tabbar-item-pulse {
462
+ 0%, 100% {
463
+ transform: scale(var(--up-tabbar-icon-scale, 1.1));
464
+ }
465
+ 50% {
466
+ transform: scale(calc(var(--up-tabbar-icon-scale, 1.1) + 0.08));
467
+ }
199
468
  }
200
469
 
201
470
  /* #ifdef MP */
@@ -63,9 +63,14 @@ export const props = defineMixin({
63
63
  default: () => defProps.tabs.keyName
64
64
  },
65
65
  // 左侧图标样式
66
- iconStyle: {
67
- type: [String, Object],
68
- default: () => defProps.tabs.iconStyle
69
- }
70
- }
71
- })
66
+ iconStyle: {
67
+ type: [String, Object],
68
+ default: () => defProps.tabs.iconStyle
69
+ },
70
+ // 形态模式,可选:capsule/card/pill-arrow/tag
71
+ shapeMode: {
72
+ type: String,
73
+ default: () => defProps.tabs.shapeMode
74
+ }
75
+ }
76
+ })
@@ -25,9 +25,10 @@ export default {
25
25
  itemStyle: {
26
26
  height: '44px'
27
27
  },
28
- scrollable: true,
29
- current: 0,
30
- keyName: 'name',
31
- iconStyle: {}
32
- }
33
- }
28
+ scrollable: true,
29
+ current: 0,
30
+ keyName: 'name',
31
+ iconStyle: {},
32
+ shapeMode: ''
33
+ }
34
+ }
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <view class="u-tabs" :class="[customClass]">
2
+ <view class="u-tabs" :class="[customClass, shapeModeClass]">
3
3
  <view class="u-tabs__wrapper">
4
4
  <slot name="left" />
5
5
  <view class="u-tabs__wrapper__scroll-view-wrapper">
@@ -9,7 +9,8 @@
9
9
  <view class="u-tabs__wrapper__nav__item" v-for="(item, index) in tabList" :key="index"
10
10
  @tap="clickHandler(item, index)" @longpress="longPressHandler(item,index)"
11
11
  :ref="`u-tabs__wrapper__nav__item-${index}`"
12
- :style="[addStyle(itemStyle), {flex: scrollable ? '' : 1}]" :class="[`u-tabs__wrapper__nav__item-${index}`,
12
+ :style="[itemComputedStyle, {flex: scrollable ? '' : 1}]" :class="[`u-tabs__wrapper__nav__item-${index}`,
13
+ shapeMode && `u-tabs__wrapper__nav__item--${shapeMode}`,
13
14
  item.disabled && 'u-tabs__wrapper__nav__item--disabled',
14
15
  innerCurrent == index ? 'u-tabs__wrapper__nav__item-active' : '']">
15
16
  <slot v-if="$slots.icon" name="icon" :item="item" :keyName="keyName" :index="index" />
@@ -36,6 +37,12 @@
36
37
  :numberType="item.badge && item.badge.numberType || propsBadge.numberType"
37
38
  :inverted="item.badge && item.badge.inverted || propsBadge.inverted"
38
39
  customStyle="margin-left: 4px;"></u-badge>
40
+ <view
41
+ v-if="shapeMode === 'card' && innerCurrent == index && index < tabList.length - 1"
42
+ class="u-tabs__wrapper__nav__item__card-corner"></view>
43
+ <view
44
+ v-if="shapeMode === 'pill-arrow' && innerCurrent == index"
45
+ class="u-tabs__wrapper__nav__item__active-arrow"></view>
39
46
  </view>
40
47
  <!-- #ifdef APP-NVUE -->
41
48
  <view class="u-tabs__wrapper__nav__line" ref="u-tabs__wrapper__nav__line" :style="[{
@@ -43,6 +50,7 @@
43
50
  height: addUnit(lineHeight),
44
51
  background: lineColor,
45
52
  backgroundSize: lineBgSize,
53
+ display: showLine ? 'block' : 'none'
46
54
  }]">
47
55
  </view>
48
56
  <!-- #endif -->
@@ -55,7 +63,7 @@
55
63
  height: addUnit(lineHeight),
56
64
  background: lineColor,
57
65
  backgroundSize: lineBgSize,
58
- display: lineShow ? 'block': 'none'
66
+ display: showLine ? 'block': 'none'
59
67
  }]">
60
68
  </view>
61
69
  <!-- #endif -->
@@ -98,6 +106,7 @@
98
106
  * @property {String | Number} duration 滑块移动一次所需的时间,单位秒(默认 200 )
99
107
  * @property {String | Number} swierWidth swiper的宽度(默认 '750rpx' )
100
108
  * @property {String} keyName 从`list`元素对象中读取的键名(默认 'name' )
109
+ * @property {String} shapeMode 标签形态模式,可选capsule/card/pill-arrow/tag(默认 '' )
101
110
  * @event {Function(index)} change 标签改变时触发 index: 点击了第几个tab,索引从0开始
102
111
  * @event {Function(index)} click 点击标签时触发 index: 点击了第几个tab,索引从0开始
103
112
  * @event {Function(index)} longPress 长按标签时触发 index: 点击了第几个tab,索引从0开始
@@ -151,6 +160,31 @@
151
160
  }
152
161
  },
153
162
  computed: {
163
+ shapeModeClass() {
164
+ return this.shapeMode ? `u-tabs--shape-${this.shapeMode}` : ''
165
+ },
166
+ showLine() {
167
+ return this.lineShow && !['capsule', 'pill-arrow', 'tag'].includes(this.shapeMode)
168
+ },
169
+ itemComputedStyle() {
170
+ const style = addStyle(this.itemStyle) || {}
171
+ if (this.upHasProp('itemStyle')) {
172
+ return style
173
+ }
174
+ const defaultModeHeights = {
175
+ capsule: '30px',
176
+ card: '34px',
177
+ 'pill-arrow': '32px',
178
+ tag: '28px'
179
+ }
180
+ const height = defaultModeHeights[this.shapeMode]
181
+ if (!height) {
182
+ return style
183
+ }
184
+ return deepMerge(style, {
185
+ height
186
+ })
187
+ },
154
188
  textStyle() {
155
189
  return index => {
156
190
  const style = {}
@@ -165,10 +199,14 @@
165
199
  || (customeStyle && customeStyle.color && customeStyle.color !== defaultActiveColor)
166
200
  const isInactiveStyleOverridden = this.upHasProp('inactiveStyle')
167
201
  || (customeStyle && customeStyle.color && customeStyle.color !== defaultInactiveColor)
168
- if (isActive && !isActiveStyleOverridden) {
202
+ if (isActive && ['pill-arrow', 'tag'].includes(this.shapeMode) && !isActiveStyleOverridden) {
203
+ style.color = '#ffffff'
204
+ } else if (isActive && !isActiveStyleOverridden) {
169
205
  style.color = this.upThemeVar('--up-main-color', this.$u.color.mainColor || defaultActiveColor)
170
206
  }
171
- if (!isActive && !isInactiveStyleOverridden) {
207
+ if (!isActive && ['pill-arrow', 'tag'].includes(this.shapeMode) && !isInactiveStyleOverridden) {
208
+ style.color = '#606266'
209
+ } else if (!isActive && !isInactiveStyleOverridden) {
172
210
  style.color = this.upThemeVar('--up-content-color', this.$u.color.contentColor || defaultInactiveColor)
173
211
  }
174
212
  // 如果当前菜单被禁用,则加上对应颜色,需要在此做处理,是因为nvue下,无法在style样式中通过!import覆盖标签的内联样式
@@ -375,6 +413,7 @@
375
413
  &__item {
376
414
  padding: 0 11px;
377
415
  @include flex;
416
+ position: relative;
378
417
  align-items: center;
379
418
  justify-content: center;
380
419
  /* #ifdef H5 */
@@ -396,6 +435,30 @@
396
435
  color: $u-disabled-color !important;
397
436
  }
398
437
  }
438
+
439
+ &__card-corner {
440
+ position: absolute;
441
+ top: 0;
442
+ right: -10px;
443
+ width: 20px;
444
+ height: 100%;
445
+ background-color: inherit;
446
+ transform: skewX(25deg);
447
+ border-top-right-radius: 10px;
448
+ z-index: 1;
449
+ }
450
+
451
+ &__active-arrow {
452
+ position: absolute;
453
+ left: 50%;
454
+ bottom: -6px;
455
+ width: 0;
456
+ height: 0;
457
+ border-left: 6px solid transparent;
458
+ border-right: 6px solid transparent;
459
+ border-top: 6px solid #ff3b30;
460
+ transform: translateX(-50%);
461
+ }
399
462
  }
400
463
 
401
464
  &__line {
@@ -410,5 +473,82 @@
410
473
  }
411
474
  }
412
475
  }
476
+
477
+ &--shape-capsule {
478
+ .u-tabs__wrapper__scroll-view-wrapper {
479
+ padding: 3px;
480
+ border-radius: 999px;
481
+ background-color: #edf0f5;
482
+ }
483
+
484
+ .u-tabs__wrapper__nav__item {
485
+ min-height: 30px;
486
+ padding: 0 14px;
487
+ border-radius: 999px;
488
+ transition: background-color 0.2s;
489
+ }
490
+
491
+ .u-tabs__wrapper__nav__item-active {
492
+ background-color: #ffffff;
493
+ }
494
+ }
495
+
496
+ &--shape-card {
497
+ .u-tabs__wrapper__scroll-view-wrapper {
498
+ padding: 0;
499
+ border-radius: 10px;
500
+ background-color: #9ccde5;
501
+ box-shadow: inset 0 0 0 1px rgba(96, 98, 102, 0.06);
502
+ }
503
+
504
+ .u-tabs__wrapper__nav__item {
505
+ min-height: 34px;
506
+ padding: 0;
507
+ border-radius: 10px 10px 0 0;
508
+ transition: background-color 0.2s;
509
+ }
510
+
511
+ .u-tabs__wrapper__nav__item-active {
512
+ background-color: #f6f8fb;
513
+ box-shadow: inset 0 0 0 1px rgba(96, 98, 102, 0.06);
514
+ z-index: 2;
515
+ }
516
+ }
517
+
518
+ &--shape-pill-arrow {
519
+ .u-tabs__wrapper__nav {
520
+ padding-bottom: 6px;
521
+ }
522
+
523
+ .u-tabs__wrapper__nav__item {
524
+ min-height: 32px;
525
+ padding: 0 12px;
526
+ border-radius: 8px;
527
+ background-color: #e8e8e8;
528
+ margin-right: 8px;
529
+ }
530
+
531
+ .u-tabs__wrapper__nav__item-active {
532
+ background: linear-gradient(90deg, #ff6c57 0%, #ff3b30 100%);
533
+ }
534
+ }
535
+
536
+ &--shape-tag {
537
+ .u-tabs__wrapper__nav {
538
+ padding: 2px 0;
539
+ }
540
+
541
+ .u-tabs__wrapper__nav__item {
542
+ min-height: 28px;
543
+ padding: 0 14px;
544
+ border-radius: 999px;
545
+ background-color: #f3f4f6;
546
+ margin-right: 8px;
547
+ }
548
+
549
+ .u-tabs__wrapper__nav__item-active {
550
+ background-color: #2a6bf6;
551
+ }
552
+ }
413
553
  }
414
554
  </style>