muzhiyu-ui 1.0.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 (96) hide show
  1. package/README.md +202 -0
  2. package/components/muzhiyu/mu-action-sheet/mu-action-sheet.vue +335 -0
  3. package/components/muzhiyu/mu-alert/mu-alert.vue +220 -0
  4. package/components/muzhiyu/mu-back-top/mu-back-top.vue +161 -0
  5. package/components/muzhiyu/mu-badge/mu-badge.vue +150 -0
  6. package/components/muzhiyu/mu-barcode/mu-barcode.vue +100 -0
  7. package/components/muzhiyu/mu-blank/mu-blank.vue +30 -0
  8. package/components/muzhiyu/mu-bottom-nav/mu-bottom-nav.vue +331 -0
  9. package/components/muzhiyu/mu-bubble/mu-bubble.vue +316 -0
  10. package/components/muzhiyu/mu-button/mu-button.vue +431 -0
  11. package/components/muzhiyu/mu-calendar/mu-calendar.vue +429 -0
  12. package/components/muzhiyu/mu-car-input/mu-car-input.vue +209 -0
  13. package/components/muzhiyu/mu-card/mu-card.vue +317 -0
  14. package/components/muzhiyu/mu-cascader/mu-cascader.vue +336 -0
  15. package/components/muzhiyu/mu-cell/mu-cell.vue +368 -0
  16. package/components/muzhiyu/mu-checkbox/mu-checkbox.vue +116 -0
  17. package/components/muzhiyu/mu-checkbox-group/mu-checkbox-group.vue +40 -0
  18. package/components/muzhiyu/mu-code-input/mu-code-input.vue +264 -0
  19. package/components/muzhiyu/mu-collapse/mu-collapse.vue +316 -0
  20. package/components/muzhiyu/mu-color-picker/mu-color-picker.vue +466 -0
  21. package/components/muzhiyu/mu-config/index.js +34 -0
  22. package/components/muzhiyu/mu-config/mu-config.vue +54 -0
  23. package/components/muzhiyu/mu-countdown/mu-countdown.vue +338 -0
  24. package/components/muzhiyu/mu-cropper/mu-cropper.vue +415 -0
  25. package/components/muzhiyu/mu-date-picker/mu-date-picker.vue +290 -0
  26. package/components/muzhiyu/mu-datetime/mu-datetime.vue +262 -0
  27. package/components/muzhiyu/mu-divider/mu-divider.vue +229 -0
  28. package/components/muzhiyu/mu-drawer/mu-drawer.vue +172 -0
  29. package/components/muzhiyu/mu-dropdown/mu-dropdown.vue +215 -0
  30. package/components/muzhiyu/mu-dropdown-top/mu-dropdown-top.vue +243 -0
  31. package/components/muzhiyu/mu-empty/mu-empty.vue +217 -0
  32. package/components/muzhiyu/mu-fab/mu-fab.vue +324 -0
  33. package/components/muzhiyu/mu-footer/mu-footer.vue +21 -0
  34. package/components/muzhiyu/mu-form/mu-form.vue +170 -0
  35. package/components/muzhiyu/mu-grid/mu-grid.vue +95 -0
  36. package/components/muzhiyu/mu-grid-item/mu-grid-item.vue +247 -0
  37. package/components/muzhiyu/mu-html/mu-html.vue +145 -0
  38. package/components/muzhiyu/mu-icon/mu-icon.vue +822 -0
  39. package/components/muzhiyu/mu-image-grid/mu-image-grid.vue +225 -0
  40. package/components/muzhiyu/mu-image-preview/mu-image-preview.vue +286 -0
  41. package/components/muzhiyu/mu-index-list/mu-index-list.vue +381 -0
  42. package/components/muzhiyu/mu-input/mu-input.vue +570 -0
  43. package/components/muzhiyu/mu-input-number/mu-input-number.vue +193 -0
  44. package/components/muzhiyu/mu-keyboard/mu-keyboard.vue +415 -0
  45. package/components/muzhiyu/mu-list/mu-list.vue +89 -0
  46. package/components/muzhiyu/mu-loading/mu-loading.vue +124 -0
  47. package/components/muzhiyu/mu-loading-page/mu-loading-page.vue +529 -0
  48. package/components/muzhiyu/mu-loadmore/mu-loadmore.vue +26 -0
  49. package/components/muzhiyu/mu-modal/mu-modal.vue +298 -0
  50. package/components/muzhiyu/mu-navbar/mu-navbar.vue +223 -0
  51. package/components/muzhiyu/mu-nomore/mu-nomore.vue +107 -0
  52. package/components/muzhiyu/mu-notice-bar/mu-notice-bar.vue +284 -0
  53. package/components/muzhiyu/mu-notify/mu-notify.vue +202 -0
  54. package/components/muzhiyu/mu-overlay/mu-overlay.vue +94 -0
  55. package/components/muzhiyu/mu-pagination/mu-pagination.vue +330 -0
  56. package/components/muzhiyu/mu-password-input/mu-password-input.vue +119 -0
  57. package/components/muzhiyu/mu-picker/mu-picker.vue +297 -0
  58. package/components/muzhiyu/mu-popup/mu-popup.vue +297 -0
  59. package/components/muzhiyu/mu-progress/mu-progress.vue +156 -0
  60. package/components/muzhiyu/mu-pull-refresh/mu-pull-refresh.vue +54 -0
  61. package/components/muzhiyu/mu-qrcode/mu-qrcode.vue +340 -0
  62. package/components/muzhiyu/mu-qrcode/qrcode.js +2237 -0
  63. package/components/muzhiyu/mu-radio/mu-radio.vue +125 -0
  64. package/components/muzhiyu/mu-radio-group/mu-radio-group.vue +37 -0
  65. package/components/muzhiyu/mu-rate/mu-rate.vue +103 -0
  66. package/components/muzhiyu/mu-search/mu-search.vue +320 -0
  67. package/components/muzhiyu/mu-section/mu-section.vue +206 -0
  68. package/components/muzhiyu/mu-select/mu-select.vue +440 -0
  69. package/components/muzhiyu/mu-share-sheet/mu-share-sheet.vue +269 -0
  70. package/components/muzhiyu/mu-sidebar/mu-sidebar.vue +304 -0
  71. package/components/muzhiyu/mu-signature/mu-signature.vue +449 -0
  72. package/components/muzhiyu/mu-skeleton/mu-skeleton.vue +225 -0
  73. package/components/muzhiyu/mu-slider/mu-slider.vue +228 -0
  74. package/components/muzhiyu/mu-space/mu-space.vue +84 -0
  75. package/components/muzhiyu/mu-steps/mu-steps.vue +311 -0
  76. package/components/muzhiyu/mu-sticky/mu-sticky.vue +57 -0
  77. package/components/muzhiyu/mu-swipe-cell/mu-swipe-cell.vue +281 -0
  78. package/components/muzhiyu/mu-swiper/mu-swiper.vue +107 -0
  79. package/components/muzhiyu/mu-switch/mu-switch.vue +99 -0
  80. package/components/muzhiyu/mu-tabbar/mu-tabbar.vue +382 -0
  81. package/components/muzhiyu/mu-table/mu-table.vue +420 -0
  82. package/components/muzhiyu/mu-tabs/mu-tabs.vue +339 -0
  83. package/components/muzhiyu/mu-tag/mu-tag.vue +65 -0
  84. package/components/muzhiyu/mu-text-ellipsis/mu-text-ellipsis.vue +54 -0
  85. package/components/muzhiyu/mu-timeline/mu-timeline.vue +166 -0
  86. package/components/muzhiyu/mu-tips/mu-tips.vue +36 -0
  87. package/components/muzhiyu/mu-toast/mu-toast.vue +151 -0
  88. package/components/muzhiyu/mu-transfer/mu-transfer.vue +114 -0
  89. package/components/muzhiyu/mu-tree/mu-tree.vue +263 -0
  90. package/components/muzhiyu/mu-upload/mu-upload.vue +415 -0
  91. package/components/muzhiyu/mu-waterfall/mu-waterfall.vue +321 -0
  92. package/components/muzhiyu/mu-watermark/mu-watermark.vue +60 -0
  93. package/index.js +83 -0
  94. package/package.json +38 -0
  95. package/utils/index.js +600 -0
  96. package/utils/request.js +265 -0
@@ -0,0 +1,431 @@
1
+ <template>
2
+ <view class="mu-button" :class="buttonClass" :style="wrapStyle" @tap="handleClick" @click="handleClick">
3
+ <button
4
+ class="mu-button__inner"
5
+ hover-class="mu-button__inner--active"
6
+ :hover-stay-time="150"
7
+ :style="innerStyle"
8
+ :disabled="disabled"
9
+ :loading="loading"
10
+ :form-type="formType"
11
+ :open-type="openType"
12
+ :lang="lang"
13
+ :session-from="sessionFrom"
14
+ :send-message-title="sendMessageTitle"
15
+ :send-message-path="sendMessagePath"
16
+ :send-message-img="sendMessageImg"
17
+ :show-message-card="showMessageCard"
18
+ :app-parameter="appParameter"
19
+ @tap="handleClick"
20
+ @click="handleClick"
21
+ @getuserinfo="onGetUserInfo"
22
+ @getphonenumber="onGetPhoneNumber"
23
+ @getrealtimephonenumber="onGetRealtimePhoneNumber"
24
+ @agreeprivacyauthorization="onAgreePrivacyAuthorization"
25
+ @contact="onContact"
26
+ @error="onError"
27
+ @opensetting="onOpenSetting"
28
+ @launchapp="onLaunchApp"
29
+ @chooseavatar="onChooseAvatar"
30
+ >
31
+ <!-- Loading 加载图标 -->
32
+ <mu-loading v-if="loading" :size="computedIconSize" :color="defaultIconColor" :margin-right="hasLabel ? 10 : 0" />
33
+
34
+ <!-- 左侧矢量图标 -->
35
+ <view v-if="!loading && (icon || $slots.icon) && iconPosition === 'left'" class="mu-button__icon mu-button__icon--left">
36
+ <slot name="icon">
37
+ <mu-icon :name="icon" :size="computedIconSize" :color="defaultIconColor" />
38
+ </slot>
39
+ </view>
40
+
41
+ <!-- 按钮文本 -->
42
+ <span v-if="hasLabel" class="mu-button__label">
43
+ <slot></slot>
44
+ </span>
45
+
46
+ <!-- 右侧矢量图标 -->
47
+ <view v-if="!loading && (icon || $slots.icon) && iconPosition === 'right'" class="mu-button__icon mu-button__icon--right">
48
+ <slot name="icon">
49
+ <mu-icon :name="icon" :size="computedIconSize" :color="defaultIconColor" />
50
+ </slot>
51
+ </view>
52
+
53
+ <!-- 右侧内嵌纯矢量箭头 -->
54
+ <view v-if="showArrow && !loading" class="mu-button__arrow-icon">
55
+ <mu-icon name="arrow_right" :size="computedIconSize" :color="defaultIconColor" />
56
+ </view>
57
+ </button>
58
+ </view>
59
+ </template>
60
+
61
+ <script setup>
62
+ import { computed, useSlots, inject } from 'vue'
63
+
64
+ const config = inject('muConfig', null)
65
+
66
+ const props = defineProps({
67
+ type: { type: String, default: 'primary' }, // primary | default | danger | warning | success | text | link
68
+ size: { type: String, default: 'medium' }, // large | medium | small | mini
69
+ icon: { type: String, default: '' }, // 矢量图标名称
70
+ iconColor: { type: String, default: '' },
71
+ iconSize: { type: [Number, String], default: 0 },
72
+ iconPosition: { type: String, default: 'left' },
73
+ width: { type: String, default: '' },
74
+ height: { type: String, default: '' },
75
+ plain: { type: Boolean, default: false },
76
+ round: { type: Boolean, default: false },
77
+ block: { type: Boolean, default: false },
78
+ ghost: { type: Boolean, default: false },
79
+ dashed: { type: Boolean, default: false },
80
+ loading: { type: Boolean, default: false },
81
+ disabled: { type: Boolean, default: false },
82
+ bold: { type: Boolean, default: true },
83
+ showArrow: { type: Boolean, default: false },
84
+ formType: { type: String, default: '' },
85
+ openType: { type: String, default: '' },
86
+
87
+ // 小程序开放能力扩展属性
88
+ lang: { type: String, default: 'zh_CN' },
89
+ sessionFrom: { type: String, default: '' },
90
+ sendMessageTitle: { type: String, default: '' },
91
+ sendMessagePath: { type: String, default: '' },
92
+ sendMessageImg: { type: String, default: '' },
93
+ showMessageCard: { type: Boolean, default: false },
94
+ appParameter: { type: String, default: '' },
95
+
96
+ margin: { type: String, default: '' },
97
+ padding: { type: String, default: '' },
98
+ background: { type: String, default: '' },
99
+ color: { type: String, default: '' },
100
+ gradient: { type: [String, Array], default: '' }, // 支持双色数组 ['#171717', '#4F46E5'] 或完整 css 渐变
101
+ glow: { type: Boolean, default: true } // 是否开启弥散光晕发光效果
102
+ })
103
+
104
+ const emit = defineEmits([
105
+ 'click',
106
+ 'getuserinfo',
107
+ 'getphonenumber',
108
+ 'getrealtimephonenumber',
109
+ 'agreeprivacyauthorization',
110
+ 'contact',
111
+ 'error',
112
+ 'opensetting',
113
+ 'launchapp',
114
+ 'chooseavatar'
115
+ ])
116
+ const slots = useSlots()
117
+
118
+ const hasLabel = computed(() => {
119
+ if (!slots.default) return false
120
+ if (typeof slots.default === 'function') {
121
+ try {
122
+ const defaultNodes = slots.default()
123
+ if (!defaultNodes || !defaultNodes.length) return false
124
+ return defaultNodes.some(node => {
125
+ if (typeof node.children === 'string') {
126
+ return node.children.trim().length > 0
127
+ }
128
+ return !!node.type
129
+ })
130
+ } catch (e) {
131
+ return true
132
+ }
133
+ }
134
+ return true
135
+ })
136
+
137
+ const normalizedSize = computed(() => {
138
+ switch (props.size) {
139
+ case 'lg':
140
+ case 'large': return 'large'
141
+ case 'sm':
142
+ case 'small': return 'small'
143
+ case 'xs':
144
+ case 'mini': return 'mini'
145
+ case 'md':
146
+ case 'medium':
147
+ default: return 'medium'
148
+ }
149
+ })
150
+
151
+ const computedIconSize = computed(() => {
152
+ if (props.iconSize) return Number(props.iconSize)
153
+ switch (normalizedSize.value) {
154
+ case 'large': return 20
155
+ case 'small': return 14
156
+ case 'mini': return 12
157
+ case 'medium':
158
+ default: return 16
159
+ }
160
+ })
161
+
162
+ const defaultIconColor = computed(() => {
163
+ if (props.iconColor) return props.iconColor
164
+ if (props.color) return props.color
165
+ if (props.plain) {
166
+ switch (props.type) {
167
+ case 'primary': return config?.primaryColor?.value || '#171717'
168
+ case 'danger': return '#F43F5E'
169
+ case 'warning': return '#F59E0B'
170
+ case 'success': return '#10B981'
171
+ default: return '#64748B'
172
+ }
173
+ }
174
+ if (props.type === 'default' || props.type === 'text' || props.type === 'link') return '#475569'
175
+ return '#ffffff'
176
+ })
177
+
178
+ const buttonClass = computed(() => [
179
+ `mu-button--${props.type}`,
180
+ `mu-button--${normalizedSize.value}`,
181
+ props.plain && 'mu-button--plain',
182
+ props.round && 'mu-button--round',
183
+ props.block && 'mu-button--block',
184
+ props.ghost && 'mu-button--ghost',
185
+ props.dashed && 'mu-button--dashed',
186
+ props.loading && 'mu-button--loading',
187
+ props.disabled && 'mu-button--disabled',
188
+ props.bold && 'mu-button--bold',
189
+ !props.glow && 'mu-button--no-glow',
190
+ (!hasLabel.value && (props.icon || slots.icon)) && 'mu-button--icon-only'
191
+ ])
192
+
193
+ const wrapStyle = computed(() => {
194
+ const style = {}
195
+ if (props.block) style.width = '100%'
196
+ if (props.margin) style.margin = props.margin
197
+ return style
198
+ })
199
+
200
+ const innerStyle = computed(() => {
201
+ const style = {}
202
+ if (props.width) style.width = props.width
203
+ if (props.height) style.height = props.height
204
+ if (props.padding) style.padding = props.padding
205
+
206
+ if (props.type === 'primary' && !props.background && !props.gradient && config?.primaryColor?.value) {
207
+ style.background = config.primaryColor.value
208
+ } else if (props.gradient) {
209
+ if (Array.isArray(props.gradient)) {
210
+ style.background = `linear-gradient(135deg, ${props.gradient[0]} 0%, ${props.gradient[1]} 100%)`
211
+ } else if (typeof props.gradient === 'string') {
212
+ style.background = props.gradient.includes('gradient')
213
+ ? props.gradient
214
+ : `linear-gradient(135deg, ${props.gradient.split(',').join(', ')})`
215
+ }
216
+ if (props.glow && !props.plain) {
217
+ style.boxShadow = '0 8rpx 24rpx rgba(0, 0, 0, 0.2)'
218
+ }
219
+ } else if (props.background) {
220
+ style.background = props.background
221
+ if (props.glow && !props.plain) {
222
+ style.boxShadow = '0 8rpx 24rpx rgba(0, 0, 0, 0.18)'
223
+ }
224
+ }
225
+ if (props.color) {
226
+ style.color = props.color
227
+ }
228
+ return style
229
+ })
230
+
231
+ function handleClick(e) {
232
+ if (props.disabled || props.loading) return
233
+ emit('click', e)
234
+ }
235
+
236
+ function onGetUserInfo(e) { emit('getuserinfo', e) }
237
+ function onGetPhoneNumber(e) { emit('getphonenumber', e) }
238
+ function onGetRealtimePhoneNumber(e) { emit('getrealtimephonenumber', e) }
239
+ function onAgreePrivacyAuthorization(e) { emit('agreeprivacyauthorization', e) }
240
+ function onContact(e) { emit('contact', e) }
241
+ function onError(e) { emit('error', e) }
242
+ function onOpenSetting(e) { emit('opensetting', e) }
243
+ function onLaunchApp(e) { emit('launchapp', e) }
244
+ function onChooseAvatar(e) { emit('chooseavatar', e) }
245
+ </script>
246
+
247
+ <style lang="scss" scoped>
248
+ @import "@/uni.scss";
249
+
250
+ .mu-button {
251
+ display: inline-block;
252
+ vertical-align: middle;
253
+ box-sizing: border-box;
254
+
255
+ &--block {
256
+ display: block;
257
+ width: 100%;
258
+ }
259
+
260
+ &__inner {
261
+ position: relative;
262
+ display: inline-flex;
263
+ align-items: center;
264
+ justify-content: center;
265
+ box-sizing: border-box;
266
+ white-space: nowrap;
267
+ cursor: pointer;
268
+ user-select: none;
269
+ transition: all $mu-duration $mu-ease;
270
+ border: none;
271
+ outline: none;
272
+ line-height: 1;
273
+
274
+ /* 微信小程序原生按钮重置 */
275
+ &::after {
276
+ display: none;
277
+ }
278
+
279
+ &--active {
280
+ transform: scale(0.975);
281
+ opacity: 0.92;
282
+ }
283
+ }
284
+
285
+ &__label {
286
+ display: inline-flex;
287
+ align-items: center;
288
+ justify-content: center;
289
+ line-height: 1.2;
290
+ }
291
+
292
+ &__icon {
293
+ display: inline-flex;
294
+ align-items: center;
295
+ justify-content: center;
296
+ line-height: 1;
297
+ flex-shrink: 0;
298
+
299
+ &--left { margin-right: 8rpx; }
300
+ &--right { margin-left: 8rpx; }
301
+ }
302
+
303
+ &--icon-only &__icon {
304
+ margin-left: 0 !important;
305
+ margin-right: 0 !important;
306
+ }
307
+ &--icon-only &__inner {
308
+ padding-left: 0 !important;
309
+ padding-right: 0 !important;
310
+ }
311
+ &--icon-only#{&}--large &__inner { width: 96rpx; }
312
+ &--icon-only#{&}--medium &__inner { width: 80rpx; }
313
+ &--icon-only#{&}--small &__inner { width: 64rpx; }
314
+ &--icon-only#{&}--mini &__inner { width: 48rpx; }
315
+
316
+ &__arrow-icon {
317
+ display: inline-flex;
318
+ align-items: center;
319
+ justify-content: center;
320
+ margin-left: 8rpx;
321
+ transition: transform $mu-duration $mu-ease;
322
+ color: inherit;
323
+ line-height: 1;
324
+ flex-shrink: 0;
325
+ }
326
+
327
+ /* 标准尺寸规范 */
328
+ &--large &__inner {
329
+ height: 96rpx; padding: 0 36rpx; font-size: $mu-font-lg; border-radius: $mu-radius-lg;
330
+ }
331
+ &--medium &__inner {
332
+ height: 80rpx; padding: 0 24rpx; font-size: $mu-font-base; border-radius: $mu-radius-md;
333
+ }
334
+ &--small &__inner {
335
+ height: 64rpx; padding: 0 18rpx; font-size: $mu-font-sm; border-radius: $mu-radius-sm;
336
+ }
337
+ &--mini &__inner {
338
+ height: 48rpx; padding: 0 12rpx; font-size: $mu-font-xs; border-radius: $mu-radius-sm;
339
+ }
340
+
341
+ &--round &__inner { border-radius: 999rpx !important; }
342
+ &--bold &__inner { font-weight: 700; }
343
+
344
+ /* 主题发光弥散光晕 */
345
+ &--primary &__inner {
346
+ background: $mu-primary-gradient; color: #ffffff;
347
+ box-shadow: 0 8rpx 24rpx -4rpx rgba(23, 23, 23, 0.2);
348
+ }
349
+ &--gradient &__inner {
350
+ background: linear-gradient(135deg, #171717 0%, #4F46E5 100%);
351
+ color: #ffffff;
352
+ box-shadow: 0 8rpx 24rpx -4rpx rgba(79, 70, 229, 0.35);
353
+ }
354
+ &--danger &__inner,
355
+ &--error &__inner {
356
+ background: $mu-error-gradient; color: #ffffff;
357
+ box-shadow: 0 8rpx 24rpx -4rpx rgba(244, 63, 94, 0.35);
358
+ }
359
+ &--warning &__inner {
360
+ background: $mu-warning-gradient; color: #ffffff;
361
+ box-shadow: 0 8rpx 24rpx -4rpx rgba(245, 158, 11, 0.35);
362
+ }
363
+ &--success &__inner {
364
+ background: $mu-success-gradient; color: #ffffff;
365
+ box-shadow: 0 8rpx 24rpx -4rpx rgba(16, 185, 129, 0.35);
366
+ }
367
+ &--default &__inner {
368
+ background: #ffffff; color: $mu-text-primary;
369
+ border: 1rpx solid $mu-border;
370
+ box-shadow: 0 4rpx 14rpx rgba(15, 23, 42, 0.04);
371
+ }
372
+ &--text &__inner {
373
+ background: transparent; color: $mu-primary; padding: 0; height: auto; box-shadow: none !important;
374
+ }
375
+ &--text#{&}--danger &__inner,
376
+ &--text#{&}--error &__inner {
377
+ color: $mu-error !important;
378
+ }
379
+ &--text#{&}--success &__inner {
380
+ color: $mu-success !important;
381
+ }
382
+ &--text#{&}--warning &__inner {
383
+ color: $mu-warning !important;
384
+ }
385
+
386
+ &--plain#{&}--primary &__inner { background: rgba(23, 23, 23, 0.06); color: #171717; border: 1rpx solid rgba(23, 23, 23, 0.2); box-shadow: none; }
387
+ &--plain#{&}--danger &__inner,
388
+ &--plain#{&}--error &__inner { background: rgba(244, 63, 94, 0.08); color: $mu-error; border: 1rpx solid rgba(244, 63, 94, 0.3); box-shadow: none; }
389
+
390
+ /* 关闭发光光晕模式 */
391
+ &--no-glow &__inner {
392
+ box-shadow: none !important;
393
+ }
394
+
395
+ &--disabled {
396
+ opacity: $mu-opacity-disabled; pointer-events: none;
397
+ }
398
+ }
399
+
400
+ .mu-dark, page.mu-dark {
401
+ .mu-button {
402
+ &--default &__inner {
403
+ background: rgba(36, 36, 50, 0.9);
404
+ color: $mu-dark-text-primary;
405
+ border-color: rgba(255, 255, 255, 0.15);
406
+ box-shadow: none;
407
+ }
408
+ &--plain#{&}--primary &__inner {
409
+ background: rgba(255, 255, 255, 0.1);
410
+ color: #F8FAFC;
411
+ border-color: rgba(255, 255, 255, 0.25);
412
+ }
413
+ }
414
+ }
415
+
416
+ @media (prefers-color-scheme: dark) {
417
+ .mu-button {
418
+ &--default &__inner {
419
+ background: rgba(36, 36, 50, 0.9);
420
+ color: $mu-dark-text-primary;
421
+ border-color: rgba(255, 255, 255, 0.15);
422
+ box-shadow: none;
423
+ }
424
+ &--plain#{&}--primary &__inner {
425
+ background: rgba(255, 255, 255, 0.1);
426
+ color: #F8FAFC;
427
+ border-color: rgba(255, 255, 255, 0.25);
428
+ }
429
+ }
430
+ }
431
+ </style>