@douyinfe/semi-foundation 2.97.0 → 2.98.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 (171) hide show
  1. package/codeHighlight/codeHighlight.scss +1 -1
  2. package/datePicker/foundation.ts +7 -0
  3. package/datePicker/inputFoundation.ts +5 -0
  4. package/form/foundation.ts +48 -4
  5. package/inputNumber/foundation.ts +119 -3
  6. package/jsonViewer/jsonViewer.scss +2 -2
  7. package/lib/cjs/aiChatInput/aiChatInput.css +7 -7
  8. package/lib/cjs/anchor/anchor.css +3 -3
  9. package/lib/cjs/autoComplete/autoComplete.css +1 -1
  10. package/lib/cjs/avatar/avatar.css +5 -5
  11. package/lib/cjs/badge/badge.css +1 -1
  12. package/lib/cjs/breadcrumb/breadcrumb.css +2 -2
  13. package/lib/cjs/calendar/calendar.css +9 -9
  14. package/lib/cjs/cascader/cascader.css +6 -6
  15. package/lib/cjs/checkbox/checkbox.css +2 -2
  16. package/lib/cjs/codeHighlight/codeHighlight.css +1 -1
  17. package/lib/cjs/codeHighlight/codeHighlight.scss +1 -1
  18. package/lib/cjs/collapse/collapse.css +2 -2
  19. package/lib/cjs/datePicker/datePicker.css +8 -8
  20. package/lib/cjs/datePicker/foundation.d.ts +5 -0
  21. package/lib/cjs/datePicker/foundation.js +2 -0
  22. package/lib/cjs/datePicker/inputFoundation.d.ts +5 -0
  23. package/lib/cjs/descriptions/descriptions.css +6 -6
  24. package/lib/cjs/dropdown/dropdown.css +2 -2
  25. package/lib/cjs/form/form.css +4 -4
  26. package/lib/cjs/form/foundation.js +49 -3
  27. package/lib/cjs/hotKeys/hotKeys.css +2 -2
  28. package/lib/cjs/image/image.css +2 -2
  29. package/lib/cjs/input/input.css +8 -8
  30. package/lib/cjs/input/textarea.css +2 -2
  31. package/lib/cjs/inputNumber/foundation.d.ts +15 -0
  32. package/lib/cjs/inputNumber/foundation.js +113 -3
  33. package/lib/cjs/jsonViewer/jsonViewer.css +2 -2
  34. package/lib/cjs/jsonViewer/jsonViewer.scss +2 -2
  35. package/lib/cjs/list/list.css +1 -1
  36. package/lib/cjs/modal/modal.css +1 -1
  37. package/lib/cjs/navigation/navigation.css +2 -2
  38. package/lib/cjs/notification/notification.css +4 -4
  39. package/lib/cjs/pagination/pagination.css +5 -5
  40. package/lib/cjs/popconfirm/popconfirm.css +1 -1
  41. package/lib/cjs/popover/popover.css +1 -1
  42. package/lib/cjs/radio/radio.css +2 -2
  43. package/lib/cjs/scrollList/itemFoundation.js +12 -0
  44. package/lib/cjs/scrollList/scrollList.css +2 -2
  45. package/lib/cjs/select/select.css +6 -6
  46. package/lib/cjs/sideSheet/sideSheet.css +2 -2
  47. package/lib/cjs/sidebar/sidebar.css +11 -11
  48. package/lib/cjs/slider/foundation.js +46 -12
  49. package/lib/cjs/slider/rtl.scss +62 -0
  50. package/lib/cjs/slider/slider.css +45 -0
  51. package/lib/cjs/slider/slider.scss +2 -0
  52. package/lib/cjs/steps/steps.css +11 -11
  53. package/lib/cjs/table/foundation.d.ts +36 -0
  54. package/lib/cjs/table/foundation.js +162 -28
  55. package/lib/cjs/table/table.css +10 -2
  56. package/lib/cjs/table/table.scss +17 -0
  57. package/lib/cjs/tabs/tabs.css +2 -2
  58. package/lib/cjs/tag/tag.css +2 -2
  59. package/lib/cjs/tagInput/tagInput.css +2 -2
  60. package/lib/cjs/timePicker/timePicker.css +1 -1
  61. package/lib/cjs/timeline/timeline.css +2 -2
  62. package/lib/cjs/toast/toast.css +1 -1
  63. package/lib/cjs/tooltip/foundation.js +8 -5
  64. package/lib/cjs/tooltip/tooltip.css +1 -1
  65. package/lib/cjs/transfer/constants.d.ts +3 -1
  66. package/lib/cjs/transfer/constants.js +3 -1
  67. package/lib/cjs/transfer/foundation.d.ts +3 -0
  68. package/lib/cjs/transfer/foundation.js +4 -0
  69. package/lib/cjs/transfer/transfer.css +14 -5
  70. package/lib/cjs/transfer/transfer.scss +10 -0
  71. package/lib/cjs/tree/foundation.d.ts +3 -0
  72. package/lib/cjs/tree/foundation.js +31 -4
  73. package/lib/cjs/tree/tree.css +1 -1
  74. package/lib/cjs/treeSelect/foundation.d.ts +1 -0
  75. package/lib/cjs/treeSelect/foundation.js +8 -1
  76. package/lib/cjs/treeSelect/treeSelect.css +36 -4
  77. package/lib/cjs/treeSelect/treeSelect.scss +49 -1
  78. package/lib/cjs/typography/typography.css +8 -8
  79. package/lib/cjs/upload/upload.css +8 -8
  80. package/lib/cjs/utils/Store.d.ts +1 -1
  81. package/lib/cjs/utils/Store.js +1 -0
  82. package/lib/es/aiChatInput/aiChatInput.css +7 -7
  83. package/lib/es/anchor/anchor.css +3 -3
  84. package/lib/es/autoComplete/autoComplete.css +1 -1
  85. package/lib/es/avatar/avatar.css +5 -5
  86. package/lib/es/badge/badge.css +1 -1
  87. package/lib/es/breadcrumb/breadcrumb.css +2 -2
  88. package/lib/es/calendar/calendar.css +9 -9
  89. package/lib/es/cascader/cascader.css +6 -6
  90. package/lib/es/checkbox/checkbox.css +2 -2
  91. package/lib/es/codeHighlight/codeHighlight.css +1 -1
  92. package/lib/es/codeHighlight/codeHighlight.scss +1 -1
  93. package/lib/es/collapse/collapse.css +2 -2
  94. package/lib/es/datePicker/datePicker.css +8 -8
  95. package/lib/es/datePicker/foundation.d.ts +5 -0
  96. package/lib/es/datePicker/foundation.js +2 -0
  97. package/lib/es/datePicker/inputFoundation.d.ts +5 -0
  98. package/lib/es/descriptions/descriptions.css +6 -6
  99. package/lib/es/dropdown/dropdown.css +2 -2
  100. package/lib/es/form/form.css +4 -4
  101. package/lib/es/form/foundation.js +49 -3
  102. package/lib/es/hotKeys/hotKeys.css +2 -2
  103. package/lib/es/image/image.css +2 -2
  104. package/lib/es/input/input.css +8 -8
  105. package/lib/es/input/textarea.css +2 -2
  106. package/lib/es/inputNumber/foundation.d.ts +15 -0
  107. package/lib/es/inputNumber/foundation.js +113 -3
  108. package/lib/es/jsonViewer/jsonViewer.css +2 -2
  109. package/lib/es/jsonViewer/jsonViewer.scss +2 -2
  110. package/lib/es/list/list.css +1 -1
  111. package/lib/es/modal/modal.css +1 -1
  112. package/lib/es/navigation/navigation.css +2 -2
  113. package/lib/es/notification/notification.css +4 -4
  114. package/lib/es/pagination/pagination.css +5 -5
  115. package/lib/es/popconfirm/popconfirm.css +1 -1
  116. package/lib/es/popover/popover.css +1 -1
  117. package/lib/es/radio/radio.css +2 -2
  118. package/lib/es/scrollList/itemFoundation.js +12 -0
  119. package/lib/es/scrollList/scrollList.css +2 -2
  120. package/lib/es/select/select.css +6 -6
  121. package/lib/es/sideSheet/sideSheet.css +2 -2
  122. package/lib/es/sidebar/sidebar.css +11 -11
  123. package/lib/es/slider/foundation.js +46 -12
  124. package/lib/es/slider/rtl.scss +62 -0
  125. package/lib/es/slider/slider.css +45 -0
  126. package/lib/es/slider/slider.scss +2 -0
  127. package/lib/es/steps/steps.css +11 -11
  128. package/lib/es/table/foundation.d.ts +36 -0
  129. package/lib/es/table/foundation.js +162 -28
  130. package/lib/es/table/table.css +10 -2
  131. package/lib/es/table/table.scss +17 -0
  132. package/lib/es/tabs/tabs.css +2 -2
  133. package/lib/es/tag/tag.css +2 -2
  134. package/lib/es/tagInput/tagInput.css +2 -2
  135. package/lib/es/timePicker/timePicker.css +1 -1
  136. package/lib/es/timeline/timeline.css +2 -2
  137. package/lib/es/toast/toast.css +1 -1
  138. package/lib/es/tooltip/foundation.js +8 -5
  139. package/lib/es/tooltip/tooltip.css +1 -1
  140. package/lib/es/transfer/constants.d.ts +3 -1
  141. package/lib/es/transfer/constants.js +3 -1
  142. package/lib/es/transfer/foundation.d.ts +3 -0
  143. package/lib/es/transfer/foundation.js +4 -0
  144. package/lib/es/transfer/transfer.css +14 -5
  145. package/lib/es/transfer/transfer.scss +10 -0
  146. package/lib/es/tree/foundation.d.ts +3 -0
  147. package/lib/es/tree/foundation.js +31 -4
  148. package/lib/es/tree/tree.css +1 -1
  149. package/lib/es/treeSelect/foundation.d.ts +1 -0
  150. package/lib/es/treeSelect/foundation.js +8 -1
  151. package/lib/es/treeSelect/treeSelect.css +36 -4
  152. package/lib/es/treeSelect/treeSelect.scss +49 -1
  153. package/lib/es/typography/typography.css +8 -8
  154. package/lib/es/upload/upload.css +8 -8
  155. package/lib/es/utils/Store.d.ts +1 -1
  156. package/lib/es/utils/Store.js +1 -0
  157. package/package.json +19 -4
  158. package/scrollList/itemFoundation.ts +12 -0
  159. package/slider/foundation.ts +55 -15
  160. package/slider/rtl.scss +62 -0
  161. package/slider/slider.scss +2 -0
  162. package/table/foundation.ts +197 -29
  163. package/table/table.scss +17 -0
  164. package/tooltip/foundation.ts +8 -5
  165. package/transfer/constants.ts +3 -1
  166. package/transfer/foundation.ts +8 -1
  167. package/transfer/transfer.scss +10 -0
  168. package/tree/foundation.ts +34 -5
  169. package/treeSelect/foundation.ts +10 -1
  170. package/treeSelect/treeSelect.scss +49 -1
  171. package/utils/Store.ts +2 -1
@@ -29,7 +29,7 @@
29
29
  box-shadow: none;
30
30
  font-size: 14px;
31
31
  line-height: 20px;
32
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
32
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
33
33
  background-color: var(--semi-color-fill-0);
34
34
  border: 1px transparent solid;
35
35
  border-radius: var(--semi-border-radius-small);
@@ -45,21 +45,21 @@
45
45
  height: 32px;
46
46
  font-size: 14px;
47
47
  line-height: 20px;
48
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
48
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
49
49
  line-height: 30px;
50
50
  }
51
51
  .semi-input-wrapper-small {
52
52
  height: 24px;
53
53
  font-size: 14px;
54
54
  line-height: 20px;
55
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
55
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
56
56
  line-height: 22px;
57
57
  }
58
58
  .semi-input-wrapper-large {
59
59
  height: 40px;
60
60
  font-size: 16px;
61
61
  line-height: 22px;
62
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
62
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
63
63
  line-height: 38px;
64
64
  }
65
65
  .semi-input-wrapper:hover {
@@ -357,21 +357,21 @@
357
357
  height: 38px;
358
358
  font-size: 16px;
359
359
  line-height: 22px;
360
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
360
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
361
361
  line-height: 38px;
362
362
  }
363
363
  .semi-input-small {
364
364
  height: 22px;
365
365
  font-size: 14px;
366
366
  line-height: 20px;
367
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
367
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
368
368
  line-height: 22px;
369
369
  }
370
370
  .semi-input-default {
371
371
  height: 30px;
372
372
  font-size: 14px;
373
373
  line-height: 20px;
374
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
374
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
375
375
  line-height: 30px;
376
376
  }
377
377
  .semi-input-disabled {
@@ -429,7 +429,7 @@
429
429
  color: var(--semi-color-text-2);
430
430
  font-size: 14px;
431
431
  line-height: 20px;
432
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
432
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
433
433
  flex-shrink: 0;
434
434
  }
435
435
  .semi-input-prepend-icon, .semi-input-prepend-text, .semi-input-append-icon, .semi-input-append-text {
@@ -107,7 +107,7 @@
107
107
  box-shadow: none;
108
108
  font-size: 14px;
109
109
  line-height: 20px;
110
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
110
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
111
111
  background-color: transparent;
112
112
  border: 0 solid transparent;
113
113
  vertical-align: bottom;
@@ -147,7 +147,7 @@
147
147
  .semi-input-textarea-counter {
148
148
  font-size: 12px;
149
149
  line-height: 16px;
150
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
150
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
151
151
  display: flex;
152
152
  flex-direction: column;
153
153
  justify-content: center;
@@ -80,6 +80,21 @@ declare class InputNumberFoundation extends BaseFoundation<InputNumberAdapter> {
80
80
  _getPrecLen(num: string | number): number;
81
81
  _adjustPrec(num: string | number): string;
82
82
  formatCurrency(value: number | string): string;
83
+ /**
84
+ * Check if scientific notation is enabled
85
+ */
86
+ _isScientificNotation(): boolean;
87
+ /**
88
+ * Get scientific notation threshold
89
+ * @returns {number} threshold for digit count
90
+ */
91
+ _getScientificNotationThreshold(): number;
92
+ /**
93
+ * Convert number to scientific notation if exceeds threshold
94
+ * @param {number} num
95
+ * @returns {string}
96
+ */
97
+ _toScientificNotation(num: number): string;
83
98
  /**
84
99
  * format number to string
85
100
  * @param {string|number} value
@@ -125,8 +125,18 @@ class InputNumberFoundation extends BaseFoundation {
125
125
  handleInputFocus(e) {
126
126
  const value = this.getState('value');
127
127
  if (value !== '') {
128
- // let parsedStr = this.doParse(this.getState('value'));
129
- // this._adapter.setValue(Number(parsedStr));
128
+ // When scientific notation is enabled, convert to full number on focus
129
+ if (this._isScientificNotation() && !this._isCurrency()) {
130
+ const strVal = _toString(value);
131
+ const isScientificStr = /e/i.test(strVal) && /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)[eE][+-]?\d+$/.test(strVal.trim());
132
+ if (isScientificStr) {
133
+ const parsedNum = this.doParse(strVal, false, false, false);
134
+ if (this.isValidNumber(parsedNum)) {
135
+ const fullNumberStr = this.doFormat(parsedNum, true, false);
136
+ this._adapter.setValue(fullNumberStr);
137
+ }
138
+ }
139
+ }
130
140
  }
131
141
  this._adapter.recordCursorPosition();
132
142
  this._adapter.setFocusing(true, null);
@@ -229,6 +239,35 @@ class InputNumberFoundation extends BaseFoundation {
229
239
  }
230
240
  numHasChanged = true;
231
241
  }
242
+ // Fix issue #38: When input contains non-numeric characters (e.g., "1000CNY"),
243
+ // doParse returns NaN, but we should still apply max/min limit if a number
244
+ // can be extracted from the input or if currentNumber is out of range.
245
+ if (!this.isValidNumber(parsedNum)) {
246
+ // Try to extract a number from the input using parseFloat
247
+ // (parseFloat can extract numbers from strings like "1000CNY" -> 1000)
248
+ const extractedNum = parseFloat(currentValue);
249
+ if (!isNaN(extractedNum)) {
250
+ const limitedNum = this.fetchMinOrMax(extractedNum);
251
+ if (limitedNum !== currentNumber) {
252
+ willSetNum = limitedNum;
253
+ if (!this.isControlled()) {
254
+ currentNumber = willSetNum;
255
+ }
256
+ numHasChanged = true;
257
+ }
258
+ } else if (typeof currentNumber === 'number' && !isNaN(currentNumber)) {
259
+ // If we can't extract a number but currentNumber exists and is out of range,
260
+ // apply the max/min limit to currentNumber
261
+ const limitedNum = this.fetchMinOrMax(currentNumber);
262
+ if (limitedNum !== currentNumber) {
263
+ willSetNum = limitedNum;
264
+ if (!this.isControlled()) {
265
+ currentNumber = willSetNum;
266
+ }
267
+ numHasChanged = true;
268
+ }
269
+ }
270
+ }
232
271
  const currentFormattedNum = this.doFormat(currentNumber, true, true);
233
272
  if (currentFormattedNum !== currentValue) {
234
273
  willSetVal = currentFormattedNum;
@@ -400,7 +439,11 @@ class InputNumberFoundation extends BaseFoundation {
400
439
  curNum = max;
401
440
  }
402
441
  // console.log('scale: ', scale, 'curNum: ', curNum);
403
- return this.doFormat(curNum, true, true);
442
+ // NOTE:
443
+ // In non-currency mode, `needAdjustCurrency=true` is used by blur/init formatting paths.
444
+ // Step operations often happen while focused, and should keep full-number display.
445
+ // Currency mode still needs `needAdjustCurrency=true` to format currency strings.
446
+ return this.doFormat(curNum, true, this._isCurrency());
404
447
  }
405
448
  minus(step, event) {
406
449
  const pressShift = event && event.shiftKey;
@@ -450,6 +493,52 @@ class InputNumberFoundation extends BaseFoundation {
450
493
  const formatted = formatter.format(Number(formattedValue));
451
494
  return showCurrencySymbol ? formatted : formatted.replace(this._currencySymbol, '').trim();
452
495
  }
496
+ /**
497
+ * Check if scientific notation is enabled
498
+ */
499
+ _isScientificNotation() {
500
+ const {
501
+ scientificNotation
502
+ } = this.getProps();
503
+ return scientificNotation === true || typeof scientificNotation === 'object' && scientificNotation !== null;
504
+ }
505
+ /**
506
+ * Get scientific notation threshold
507
+ * @returns {number} threshold for digit count
508
+ */
509
+ _getScientificNotationThreshold() {
510
+ const {
511
+ scientificNotation
512
+ } = this.getProps();
513
+ if (typeof scientificNotation === 'object' && scientificNotation !== null) {
514
+ const t = scientificNotation.threshold;
515
+ return typeof t === 'number' && Number.isFinite(t) && t >= 1 ? t : 15;
516
+ }
517
+ return 15; // Default threshold: 15 digits
518
+ }
519
+ /**
520
+ * Convert number to scientific notation if exceeds threshold
521
+ * @param {number} num
522
+ * @returns {string}
523
+ */
524
+ _toScientificNotation(num) {
525
+ const threshold = this._getScientificNotationThreshold();
526
+ const absNum = Math.abs(num);
527
+ const numStr = String(absNum);
528
+ // Count significant digits (excluding decimal point, sign, exponent symbol and leading zeros)
529
+ // If JS already stringifies it with exponent (contains e/E), it is eligible for scientific notation display.
530
+ const hasExp = /e/i.test(numStr);
531
+ const significantDigits = numStr.replace(/[.\-+eE]/g, '').replace(/^0+/, '');
532
+ // Check if number exceeds threshold
533
+ if ((hasExp || significantDigits.length >= threshold) && absNum !== 0) {
534
+ // Prefer preserving coefficient digits up to threshold (total significant digits = fractionDigits + 1)
535
+ const fractionDigits = Math.max(0, Math.min(100, Math.floor(threshold) - 1));
536
+ const exp = num.toExponential(fractionDigits);
537
+ // Remove trailing zeros in the coefficient
538
+ return exp.replace(/(\.\d*?)0+e/, '$1e').replace(/\.e/, 'e');
539
+ }
540
+ return String(num);
541
+ }
453
542
  /**
454
543
  * format number to string
455
544
  * @param {string|number} value
@@ -475,6 +564,14 @@ class InputNumberFoundation extends BaseFoundation {
475
564
  } else {
476
565
  str = _toString(value);
477
566
  }
567
+ // Apply scientific notation for long numbers in blur state
568
+ // needAdjustCurrency indicates blur state (when true, we're formatting for display after blur)
569
+ if (this._isScientificNotation() && needAdjustCurrency && !this._isCurrency()) {
570
+ const numValue = typeof value === 'number' ? value : parseFloat(str);
571
+ if (!isNaN(numValue) && isFinite(numValue)) {
572
+ str = this._toScientificNotation(numValue);
573
+ }
574
+ }
478
575
  if (typeof formatter === 'function') {
479
576
  str = formatter(str);
480
577
  }
@@ -538,6 +635,19 @@ class InputNumberFoundation extends BaseFoundation {
538
635
  const parsedValue = parser(value);
539
636
  value = typeof parsedValue === 'number' ? _toString(parsedValue) : parsedValue;
540
637
  }
638
+ // Support scientific notation parsing (e.g., "1.23e+15", "1.23E-10", ".5e3", "1.e3")
639
+ if (typeof value === 'string' && /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)[eE][+-]?\d+$/.test(value.trim())) {
640
+ const scientificNum = parseFloat(value.trim());
641
+ if (!isNaN(scientificNum)) {
642
+ if (needAdjustMaxMin) {
643
+ return this.fetchMinOrMax(scientificNum);
644
+ }
645
+ if (needAdjustPrec) {
646
+ return _toNumber(this._adjustPrec(scientificNum));
647
+ }
648
+ return scientificNum;
649
+ }
650
+ }
541
651
  if (needCheckPrec && typeof value === 'string') {
542
652
  const zeroIsValid = value.indexOf('.') === -1 || value.indexOf('.') > -1 && (value === '0' || value.lastIndexOf('0') < value.length - 1);
543
653
  const dotIsValid = value.lastIndexOf('.') < value.length - 1 && value.split('').filter(v => v === '.').length < 2;
@@ -53,7 +53,7 @@
53
53
  color: rgba(var(--semi-blue-7), 1);
54
54
  }
55
55
  .semi-json-viewer-view-line {
56
- font-family: Menlo, Firecode, Monaco, "Courier New", monospace;
56
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, "Fira Code", Consolas, "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace;
57
57
  font-weight: normal;
58
58
  font-size: 12px;
59
59
  font-feature-settings: "liga" 0, "calt" 0;
@@ -64,7 +64,7 @@
64
64
  white-space: pre-wrap !important;
65
65
  }
66
66
  .semi-json-viewer-line-number {
67
- font-family: Menlo, Firecode, Monaco, "Courier New", monospace;
67
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, "Fira Code", Consolas, "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace;
68
68
  font-weight: normal;
69
69
  font-size: 12px;
70
70
  font-feature-settings: "liga" 0, "calt" 0;
@@ -64,7 +64,7 @@ $module: #{$prefix}-json-viewer;
64
64
  }
65
65
 
66
66
  &-view-line {
67
- font-family: Menlo, Firecode, Monaco, 'Courier New', monospace;
67
+ font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Monaco, 'Fira Code', Consolas, 'Liberation Mono', 'DejaVu Sans Mono', 'Courier New', monospace;
68
68
  font-weight: normal;
69
69
  font-size: 12px;
70
70
  font-feature-settings: 'liga' 0, 'calt' 0;
@@ -76,7 +76,7 @@ $module: #{$prefix}-json-viewer;
76
76
  }
77
77
 
78
78
  &-line-number {
79
- font-family: Menlo, Firecode, Monaco, 'Courier New', monospace;
79
+ font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Monaco, 'Fira Code', Consolas, 'Liberation Mono', 'DejaVu Sans Mono', 'Courier New', monospace;
80
80
  font-weight: normal;
81
81
  font-size: 12px;
82
82
  font-feature-settings: 'liga' 0, 'calt' 0;
@@ -4,7 +4,7 @@
4
4
  .semi-list {
5
5
  font-size: 14px;
6
6
  line-height: 20px;
7
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
7
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
8
8
  }
9
9
  .semi-list-items {
10
10
  margin: 0;
@@ -4,7 +4,7 @@
4
4
  .semi-modal {
5
5
  font-size: 14px;
6
6
  line-height: 20px;
7
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
7
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
8
8
  position: relative;
9
9
  margin: 80px auto;
10
10
  color: var(--semi-color-text-0);
@@ -64,7 +64,7 @@
64
64
  margin-bottom: 8px;
65
65
  font-size: 14px;
66
66
  line-height: 20px;
67
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
67
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
68
68
  font-weight: 400;
69
69
  color: var(--semi-color-text-0);
70
70
  width: 100%;
@@ -358,7 +358,7 @@
358
358
  .semi-navigation-header-text {
359
359
  font-size: 18px;
360
360
  line-height: 24px;
361
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
361
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
362
362
  font-weight: 600;
363
363
  display: inline-flex;
364
364
  color: var(--semi-color-text-0);
@@ -59,7 +59,7 @@
59
59
  width: 24px;
60
60
  font-size: 16px;
61
61
  line-height: 22px;
62
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
62
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
63
63
  display: flex;
64
64
  align-items: flex-start;
65
65
  justify-content: flex-start;
@@ -101,7 +101,7 @@
101
101
  .semi-notification-notice-title {
102
102
  font-size: 16px;
103
103
  line-height: 22px;
104
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
104
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
105
105
  font-weight: 600;
106
106
  color: var(--semi-color-text-0);
107
107
  margin-bottom: 4px;
@@ -121,7 +121,7 @@
121
121
  .semi-notification-notice-content {
122
122
  font-size: 14px;
123
123
  line-height: 20px;
124
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
124
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
125
125
  font-weight: 400;
126
126
  color: var(--semi-color-text-1);
127
127
  word-wrap: break-word;
@@ -137,7 +137,7 @@
137
137
  display: flex;
138
138
  font-size: 14px;
139
139
  line-height: 20px;
140
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
140
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
141
141
  cursor: pointer;
142
142
  }
143
143
  .semi-notification-notice-detail {
@@ -6,14 +6,14 @@
6
6
  list-style: none;
7
7
  padding: 0;
8
8
  align-items: center;
9
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
9
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
10
10
  margin-block-start: 0;
11
11
  margin-block-end: 0;
12
12
  }
13
13
  .semi-page-small {
14
14
  font-size: 14px;
15
15
  line-height: 20px;
16
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
16
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
17
17
  font-weight: 400;
18
18
  color: var(--semi-color-text-2);
19
19
  padding: 0 0;
@@ -27,7 +27,7 @@
27
27
  .semi-page-item {
28
28
  font-size: 14px;
29
29
  line-height: 20px;
30
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
30
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
31
31
  min-width: 32px;
32
32
  border: 0px solid transparent;
33
33
  cursor: pointer;
@@ -104,7 +104,7 @@
104
104
  .semi-page-total {
105
105
  font-size: 14px;
106
106
  line-height: 20px;
107
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
107
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
108
108
  color: var(--semi-color-text-2);
109
109
  }
110
110
  .semi-page-prev, .semi-page-next {
@@ -119,7 +119,7 @@
119
119
  margin-left: 24px;
120
120
  font-size: 14px;
121
121
  line-height: 20px;
122
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
122
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
123
123
  display: flex;
124
124
  justify-content: center;
125
125
  align-items: center;
@@ -18,7 +18,7 @@
18
18
  .semi-popconfirm-header-title {
19
19
  font-size: 16px;
20
20
  line-height: 22px;
21
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
21
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
22
22
  font-weight: 600;
23
23
  margin-bottom: 8px;
24
24
  color: var(--semi-color-text-0);
@@ -31,7 +31,7 @@
31
31
  border-radius: var(--semi-border-radius-medium);
32
32
  font-size: 14px;
33
33
  line-height: 20px;
34
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
34
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
35
35
  opacity: 0;
36
36
  }
37
37
  .semi-popover-wrapper-show {
@@ -5,7 +5,7 @@
5
5
  box-sizing: border-box;
6
6
  font-size: 14px;
7
7
  line-height: 20px;
8
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
8
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
9
9
  position: relative;
10
10
  display: inline-flex;
11
11
  column-gap: 8px;
@@ -291,7 +291,7 @@
291
291
  .semi-radioGroup {
292
292
  font-size: 14px;
293
293
  line-height: 20px;
294
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
294
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
295
295
  }
296
296
  .semi-radioGroup-vertical {
297
297
  display: flex;
@@ -74,6 +74,12 @@ export default class ItemFoundation extends BaseFoundation {
74
74
  const scrollRect = scrollWrapper.getBoundingClientRect();
75
75
  const lastRect = lastNode.getBoundingClientRect();
76
76
  const listHeight = lastRect.height * list.length;
77
+ // Guard against environments where layout is not computed
78
+ // (e.g. jsdom returns all-zero rects), which would otherwise
79
+ // make `baseTop += listHeight` a no-op and loop forever.
80
+ if (listHeight <= 0) {
81
+ return 0;
82
+ }
77
83
  let baseTop = lastRect.top;
78
84
  let count = 0;
79
85
  while (baseTop <= scrollRect.top + scrollRect.height * ratio) {
@@ -106,6 +112,12 @@ export default class ItemFoundation extends BaseFoundation {
106
112
  const scrollRect = scrollWrapper.getBoundingClientRect();
107
113
  const firstRect = firstNode.getBoundingClientRect();
108
114
  const listHeight = firstRect.height * list.length;
115
+ // Guard against environments where layout is not computed
116
+ // (e.g. jsdom returns all-zero rects), which would otherwise
117
+ // make `baseTop -= listHeight` a no-op and loop forever.
118
+ if (listHeight <= 0) {
119
+ return 0;
120
+ }
109
121
  let baseTop = firstRect.top;
110
122
  let count = 0;
111
123
  while (baseTop + firstRect.height >= scrollRect.top - scrollRect.height * ratio) {
@@ -10,7 +10,7 @@
10
10
  overflow: hidden;
11
11
  font-size: 14px;
12
12
  line-height: 20px;
13
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
13
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
14
14
  user-select: none;
15
15
  display: flex;
16
16
  flex-direction: column;
@@ -26,7 +26,7 @@
26
26
  color: var(--semi-color-text-0);
27
27
  font-size: 14px;
28
28
  line-height: 20px;
29
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
29
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
30
30
  }
31
31
  .semi-scrolllist-body {
32
32
  display: flex;
@@ -4,7 +4,7 @@
4
4
  .semi-select-option {
5
5
  font-size: 14px;
6
6
  line-height: 20px;
7
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
7
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
8
8
  word-break: break-all;
9
9
  padding-left: 12px;
10
10
  padding-right: 12px;
@@ -110,7 +110,7 @@
110
110
  .semi-select-large .semi-select-selection {
111
111
  font-size: 16px;
112
112
  line-height: 22px;
113
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
113
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
114
114
  }
115
115
  .semi-select-open, .semi-select-focus {
116
116
  border: 1px solid var(--semi-color-focus-border);
@@ -184,7 +184,7 @@
184
184
  .semi-select-selection {
185
185
  font-size: 14px;
186
186
  line-height: 20px;
187
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
187
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
188
188
  height: 100%;
189
189
  display: flex;
190
190
  align-items: center;
@@ -309,7 +309,7 @@
309
309
  color: var(--semi-color-text-2);
310
310
  font-size: 14px;
311
311
  line-height: 20px;
312
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
312
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
313
313
  font-weight: 600;
314
314
  }
315
315
  .semi-select-prefix-icon, .semi-select-suffix-icon {
@@ -340,7 +340,7 @@
340
340
  font-weight: 600;
341
341
  font-size: 14px;
342
342
  line-height: 20px;
343
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
343
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
344
344
  color: var(--semi-color-text-2);
345
345
  flex-shrink: 0;
346
346
  white-space: nowrap;
@@ -454,7 +454,7 @@
454
454
  padding-right: 16px;
455
455
  font-size: 12px;
456
456
  line-height: 16px;
457
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
457
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
458
458
  cursor: default;
459
459
  }
460
460
  .semi-select-group:not(:nth-of-type(1)) {
@@ -4,7 +4,7 @@
4
4
  .semi-sidesheet {
5
5
  font-size: 14px;
6
6
  line-height: 20px;
7
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
7
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
8
8
  position: fixed;
9
9
  margin: 0;
10
10
  top: 0;
@@ -59,7 +59,7 @@
59
59
  margin: 0;
60
60
  font-size: 18px;
61
61
  line-height: 24px;
62
- font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
62
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
63
63
  font-weight: 600;
64
64
  font-size: 18px;
65
65
  color: var(--semi-color-text-0);