@tfdesign/b-end 1.1.4 → 1.1.6

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 (32) hide show
  1. package/package.json +1 -1
  2. package/skills/tfds/CHECKLIST.md +9 -5
  3. package/skills/tfds/GLOBAL_DESIGN_RULES.md +22 -2
  4. package/skills/tfds/LAYOUT_RECIPES.md +6 -3
  5. package/skills/tfds/LAYOUT_RULES.md +99 -39
  6. package/skills/tfds/PAGE_ARCHETYPES.md +9 -5
  7. package/skills/tfds/SKILL.md +8 -4
  8. package/skills/tfds/components.index.json +80 -59
  9. package/skills/tfds/components.summary.json +24 -24
  10. package/src/_b_end_runtime/components/Filter.jsx +11 -3
  11. package/src/_b_end_runtime/components/Filter.tokens.js +3 -0
  12. package/src/_b_end_runtime/components/FormTitle.jsx +2 -2
  13. package/src/_b_end_runtime/components/FormTitle.tokens.js +1 -1
  14. package/src/_b_end_runtime/components/FullScreenPage.jsx +2 -2
  15. package/src/_b_end_runtime/components/FullScreenPage.tokens.js +6 -2
  16. package/src/_b_end_runtime/components/TagBar.jsx +2 -142
  17. package/src/_b_end_runtime/components/TagBar.tokens.js +3 -3
  18. package/src/_b_end_runtime/components.js +103 -41
  19. package/src/_b_end_runtime/page-patterns/BasePageFramePattern.jsx +10 -6
  20. package/src/_b_end_runtime/page-patterns/ChatConversationPattern.jsx +1 -1
  21. package/src/_b_end_runtime/page-patterns/ChatHomePagePattern.jsx +1 -1
  22. package/src/_b_end_runtime/page-patterns/CopilotPagePattern.jsx +1 -1
  23. package/src/_b_end_runtime/page-patterns/CustomerServiceWorkspaceFramePattern.jsx +1 -1
  24. package/src/_b_end_runtime/page-patterns/IMConversationPattern.jsx +1 -1
  25. package/src/_b_end_runtime/page-patterns/McpManagementPage.jsx +186 -37
  26. package/src/_b_end_runtime/page-patterns/StrategyListPage.jsx +3 -3
  27. package/src/_b_end_runtime/page-patterns/TabTopBarListPage.jsx +5 -31
  28. package/src/_b_end_runtime/page-patterns/VariableManagementPage.jsx +3 -2
  29. package/src/_b_end_runtime/page-patterns/pageListShared.jsx +5 -1
  30. package/src/_b_end_runtime/patterns.js +13 -6
  31. package/src/_b_end_runtime/preview-registry.jsx +7 -8
  32. package/src/index.d.ts +2 -4
@@ -74,15 +74,17 @@ const TONE_CLASS = {
74
74
  };
75
75
 
76
76
  const LABEL_CLASS = '[font-weight:var(--font-semibold)]';
77
+ const LABEL_DEFAULT_COLOR_CLASS = '[color:var(--tfds-text-secondary,var(--color-foreground-secondary))]';
77
78
  const VALUE_CLASS = '[font-weight:var(--font-normal)]';
78
79
  const ICON_CLASS = 'inline-flex size-[var(--spacing-3)] shrink-0 items-center justify-center [&>svg]:size-[var(--spacing-3)]';
79
80
  const CLEAR_CLASS = [
80
81
  'inline-flex items-center justify-center shrink-0 size-[var(--spacing-4)]',
81
82
  'rounded-full cursor-pointer',
82
- 'text-foreground-disabled hover:text-foreground-secondary',
83
83
  'transition-opacity duration-150',
84
84
  'bg-transparent border-none p-0 mr-[var(--spacing-1)]',
85
85
  ].join(' ');
86
+ const CLEAR_DEFAULT_CLASS = 'text-foreground-disabled hover:text-foreground-secondary';
87
+ const CLEAR_SELECTED_CLASS = '![color:var(--color-brand-500)] hover:![color:var(--color-brand-700)]';
86
88
  const PANEL_CLASS = [
87
89
  'rounded-[var(--radius-md)] border border-solid border-border-default',
88
90
  'bg-surface shadow-lg',
@@ -441,13 +443,19 @@ export default function Filter({
441
443
  onKeyDown={handleKeyDown}
442
444
  {...rest}
443
445
  >
444
- <span className={LABEL_CLASS}>{label}</span>
446
+ <span className={[
447
+ LABEL_CLASS,
448
+ tone === 'outline' || tone === 'fill' ? LABEL_DEFAULT_COLOR_CLASS : '',
449
+ ].filter(Boolean).join(' ')}>{label}</span>
445
450
  {hasValue ? <span className={VALUE_CLASS}>{derivedValue}</span> : null}
446
451
  {children}
447
452
  {showClear ? (
448
453
  <button
449
454
  type="button"
450
- className={CLEAR_CLASS}
455
+ className={[
456
+ CLEAR_CLASS,
457
+ isSelected ? CLEAR_SELECTED_CLASS : CLEAR_DEFAULT_CLASS,
458
+ ].filter(Boolean).join(' ')}
451
459
  tabIndex={-1}
452
460
  aria-label="清除"
453
461
  onClick={handleClear}
@@ -15,6 +15,7 @@ export const FILTER_TOKEN_MAP = {
15
15
  ],
16
16
  文字: [
17
17
  { label: '标签字重', cssProp: 'font-weight', token: '--font-semibold', value: '600' },
18
+ { label: '默认标签色', cssProp: 'color', token: '--text-secondary', value: '#475467', semanticRef: 'text-secondary', state: 'default' },
18
19
  { label: '值字重', cssProp: 'font-weight', token: '--font-normal', value: '400' },
19
20
  { label: '常态文字', cssProp: 'color', token: '--color-foreground', value: '#182230', semanticRef: 'text-primary' },
20
21
  { label: '禁用文字', cssProp: 'color', token: '--color-foreground-disabled', value: '#98A2B3', semanticRef: 'text-disabled', state: 'disabled' },
@@ -44,6 +45,8 @@ export const FILTER_TOKEN_MAP = {
44
45
  { label: '清除尺寸', cssProp: 'width / height', token: '--spacing-4', value: '16px(对齐 Select)' },
45
46
  { label: '清除颜色', cssProp: 'color', token: '--color-foreground-disabled', value: '#98A2B3', semanticRef: 'text-disabled' },
46
47
  { label: '清除悬浮颜色', cssProp: 'color', token: '--color-foreground-secondary', value: '#475467', semanticRef: 'text-secondary', state: 'hover' },
48
+ { label: '选中清除颜色', cssProp: 'color', token: '--color-brand-500', value: '#56D3BC', state: 'selected' },
49
+ { label: '选中清除悬浮颜色', cssProp: 'color', token: '--color-brand-700', value: '#0F7F70', state: 'selected+hover' },
47
50
  { label: '清除右外距', cssProp: 'margin-right', token: '--spacing-1', value: '4px(对齐 Select)' },
48
51
  { label: '清除图标', cssProp: 'icon', value: 'ClearIcon,16px viewBox,圆底透明度 15%(对齐 Select)' },
49
52
  { label: '勾选图标尺寸', cssProp: 'width / height', token: '--spacing-3', value: '12px' },
@@ -8,7 +8,7 @@
8
8
  * **AI / 页面生成:层级选型(必须按场景选 variant,禁止手写 h2/h3)**
9
9
  * | 场景 | variant | 说明 |
10
10
  * |------|---------|------|
11
- * | 整体页面左上角总标题、工作台名、Playground 页面主标题(如 `Model Playground`) | `form` | 全页最高层级,20px 大字号,左侧**没有**绿色竖条;需要说明时描述在标题下方 |
11
+ * | 整体页面左上角总标题、工作台名、Playground 页面主标题(如 `Model Playground`) | `form` | 全页最高层级,18px 大字号,左侧**没有**绿色竖条;需要说明时描述在标题下方 |
12
12
  * | 页面内一级板块 / 列表管理页单张主白卡顶栏主标题 | `level-1` | 左侧品牌色竖条 + 16px 标题;用于页面总标题之下的大卡片/一级内容块,不用于整页左上角总标题 |
13
13
  * | `level-1` 之下的第一级分区 / 白卡内大模块标题 | `level-2` | 14px 竖条;有板块说明诉求时描述显示在标题**同行右侧** |
14
14
  * | `level-2` 再下的子分组、折叠面板头、表格上方小区域标题 | `level-3` | 与 level-2 同阶字级,用于再嵌套一层时的视觉降级(仍带竖条) |
@@ -31,7 +31,7 @@ const VARIANT_CONFIG = {
31
31
  form: {
32
32
  root: 'inline-flex max-w-full min-w-0 flex-col items-start gap-1',
33
33
  titleWrap: 'flex shrink-0 items-center gap-[6px]',
34
- title: 'shrink-0 whitespace-nowrap text-xl [font-weight:var(--font-semibold)] leading-7 text-foreground',
34
+ title: 'shrink-0 whitespace-nowrap text-lg [font-weight:var(--font-semibold)] leading-7 text-foreground',
35
35
  description: 'whitespace-pre-wrap text-sm font-normal leading-5 text-foreground-muted',
36
36
  indicator: null,
37
37
  descriptionPlacement: 'bottom',
@@ -9,7 +9,7 @@ export const FORM_TITLE_TOKEN_MAP = {
9
9
  variants: {
10
10
  form: [
11
11
  { label: '标题色', cssProp: 'color', token: '--color-foreground', value: '#182230', semanticRef: 'text-primary' },
12
- { label: '标题号', cssProp: 'font-size', token: '--text-xl', value: '20px' },
12
+ { label: '标题号', cssProp: 'font-size', token: '--text-lg', value: '18px' },
13
13
  { label: '标题重', cssProp: 'font-weight', token: '--font-semibold', value: '600' },
14
14
  { label: '标题高', cssProp: 'line-height', value: '28px' },
15
15
  { label: '描述色', cssProp: 'color', token: '--color-foreground-muted', value: '#667085', semanticRef: 'text-tertiary' },
@@ -35,10 +35,10 @@ const BG_CLASS = {
35
35
  grey: 'bg-blueGrey-200',
36
36
  };
37
37
 
38
- /* ── 顶栏:透明背景,无分割线,左右 24px / 上下 16px ── */
38
+ /* ── 顶栏:透明背景,无分割线,左右/上下均使用页面四周间距 16px ── */
39
39
  const HEADER = [
40
40
  'flex shrink-0 items-center justify-between gap-3',
41
- 'px-6 py-4',
41
+ 'px-4 py-4',
42
42
  ].join(' ');
43
43
 
44
44
  /* ── 顶栏标题 ── */
@@ -1,8 +1,9 @@
1
1
  export const FULL_SCREEN_PAGE_TOKEN_MAP = {
2
2
  顶栏: [
3
3
  { label: '背景色', cssProp: 'background', value: 'transparent' },
4
- { label: '高度', cssProp: 'height', value: '56px' },
5
- { label: '横向内距', cssProp: 'padding-inline', value: '16px' },
4
+ { label: '横向内距', cssProp: 'padding-inline', token: '--spacing-4', value: '16px' },
5
+ { label: '纵向内距', cssProp: 'padding-block', token: '--spacing-4', value: '16px' },
6
+ { label: '与内容区左右对齐', cssProp: 'alignment', value: '对齐内容区四周外距' },
6
7
  ],
7
8
  标题: [
8
9
  { label: '颜色', cssProp: 'color', token: '--color-foreground', value: '#182230' },
@@ -12,6 +13,9 @@ export const FULL_SCREEN_PAGE_TOKEN_MAP = {
12
13
  内容区: [
13
14
  { label: '白底背景', cssProp: 'background', token: '--color-surface', value: '#FFFFFF' },
14
15
  { label: '灰底背景', cssProp: 'background', token: '--color-blueGrey-200', value: '#F2F4F7', state: 'bg=grey' },
16
+ { label: '内容左右/底部外距', cssProp: 'padding-inline + padding-bottom', token: '--spacing-4', value: '16px' },
17
+ { label: '内容顶部外距', cssProp: 'padding-top', value: '0px', description: '避免与顶栏底部 16px 叠加成 32px' },
18
+ { label: '顶栏到板块间距', cssProp: 'visual-gap', token: '--spacing-4', value: '16px' },
15
19
  ],
16
20
  引用组件: [
17
21
  { label: '返回按钮', cssProp: '—', value: 'Button ghost-black sm iconOnly' },
@@ -28,8 +28,7 @@ import Input from './Input';
28
28
  * @prop {boolean} collapsed — 当前收起状态(受控)
29
29
  * @prop {boolean} [defaultCollapsed=false] — 非受控初始收起状态
30
30
  * @prop {(collapsed: boolean) => void} [onCollapsedChange=null] — 收起状态变化回调
31
- * @prop {'transparent'|'panel'} [tone='transparent'] — 背景风格:`transparent` 根节点透明底,用于①**外层独立白圆角卡**内嵌(大卡片/双白卡左列,由父容器提供白底与圆角)或②**单一大白卡**内左列(与主内容共白底、上下撑满);`panel` 为组件**自带浅灰底**的侧条样式,背景色固定为 `--color-blueGrey-100`,用于灰色独立导航条,**不是**白色独立卡片(白卡请外层 div + `transparent`)。
32
- * @prop {boolean} [resizable=true] — 是否支持右侧拖拽调宽
31
+ * @prop {boolean} [resizable=false] — 已废弃:TagBar 自身不再绘制右侧拖拽把手;独立白卡场景由外层容器负责拖拽调宽
33
32
  * @prop {number} width — 当前宽度(受控)
34
33
  * @prop {number} [defaultWidth=240] — 非受控初始宽度
35
34
  * @prop {number} [minWidth=160] — 最小展开宽度
@@ -362,8 +361,6 @@ const ROW_CONTENT_TERTIARY = 'flex h-full w-full min-w-0 flex-1 items-center gap
362
361
  const BUSINESS_ROW = 'group flex h-9 w-full items-center gap-2 rounded-[8px] px-3 transition-colors duration-150';
363
362
  const BUSINESS_MENU = 'absolute left-0 right-0 top-[calc(100%+8px)] z-30 flex flex-col gap-[4px] rounded-[8px] border border-border-default bg-surface p-1 shadow-lg';
364
363
  const BUSINESS_MENU_ITEM = 'flex w-full items-center gap-2 rounded-[8px] px-3 py-2 text-left text-sm leading-5 text-foreground transition-colors duration-150 hover:bg-fill focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-200';
365
- const RESIZE_HANDLE_CLASS = 'absolute top-0 bottom-0 -right-[6px] z-20 w-3 cursor-col-resize touch-none select-none focus-visible:outline-none';
366
- const RESIZE_HANDLE_BAR_CLASS = 'absolute right-[5px] top-0 bottom-0 w-[2px] rounded-full bg-transparent transition-colors duration-150';
367
364
  const CHEVRON_BUTTON_CLASS = 'inline-flex h-3 w-4 shrink-0 items-center justify-center rounded-[4px] text-foreground-muted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand-200';
368
365
 
369
366
  const ICON_BG_CLASS = {
@@ -736,8 +733,6 @@ export default function TagBar({
736
733
  collapsed,
737
734
  defaultCollapsed = false,
738
735
  onCollapsedChange = null,
739
- tone = 'transparent',
740
- resizable = true,
741
736
  width,
742
737
  defaultWidth = DEFAULT_EXPANDED_WIDTH,
743
738
  minWidth = DEFAULT_MIN_WIDTH,
@@ -772,8 +767,6 @@ export default function TagBar({
772
767
  const [lastExpandedWidth, setLastExpandedWidth] = useState(Math.max(normalizedDefaultWidth, minWidth));
773
768
  const [focusSearchOnExpand, setFocusSearchOnExpand] = useState(false);
774
769
  const [businessMenuOpen, setBusinessMenuOpen] = useState(false);
775
- const [isResizeActive, setIsResizeActive] = useState(false);
776
- const dragStateRef = useRef(null);
777
770
  const businessMenuRef = useRef(null);
778
771
  const businessAreaRef = useRef(null);
779
772
 
@@ -838,13 +831,6 @@ export default function TagBar({
838
831
  const renderedSelectedItemId = isCollapsed ? collapsedTreeSelectedItemId : resolvedSelectedItemId;
839
832
  const isCollapsedBusinessSelected = isCollapsed && resolvedSelectedItemId === currentBusiness.id;
840
833
 
841
- /**
842
- * 宽度策略:
843
- * - 展开态:宽度在 [minWidth, maxWidth] 内(避免出现“非折叠但过窄”的尴尬态)
844
- * - 折叠态:渲染宽度固定为 DEFAULT_COLLAPSED_WIDTH,内部仍可更新 lastExpandedWidth 以便恢复
845
- */
846
- const clampExpandedWidth = useCallback((value) => clampWidth(value, minWidth, normalizedMaxWidth), [minWidth, normalizedMaxWidth]);
847
-
848
834
  const updateWidth = useCallback((nextWidth) => {
849
835
  const clampedWidth = clampWidth(nextWidth, DEFAULT_COLLAPSED_WIDTH, normalizedMaxWidth);
850
836
  if (!isWidthControlled) {
@@ -921,109 +907,9 @@ export default function TagBar({
921
907
  }
922
908
  }, [isCollapsed, updateCollapsed]);
923
909
 
924
- const handleResizePointerDown = useCallback((event) => {
925
- if (!resizable) return;
926
-
927
- event.preventDefault();
928
- setIsResizeActive(true);
929
- dragStateRef.current = {
930
- startX: event.clientX,
931
- startWidth: isCollapsed ? Math.max(lastExpandedWidth, minWidth) : resolvedTargetWidth,
932
- latestWidth: isCollapsed ? Math.max(lastExpandedWidth, minWidth) : resolvedTargetWidth,
933
- latestRawWidth: isCollapsed ? Math.max(lastExpandedWidth, minWidth) : resolvedTargetWidth,
934
- };
935
-
936
- if (!isCollapsedControlled) {
937
- if (innerManualCollapsed) setInnerManualCollapsed(false);
938
- if (innerAutoCollapsed) setInnerAutoCollapsed(false);
939
- }
940
-
941
- const previousUserSelect = document.body.style.userSelect;
942
- document.body.style.userSelect = 'none';
943
-
944
- const handlePointerMove = (moveEvent) => {
945
- if (!dragStateRef.current) return;
946
- const deltaX = moveEvent.clientX - dragStateRef.current.startX;
947
- const nextRawWidth = dragStateRef.current.startWidth + deltaX;
948
- const nextWidth = clampExpandedWidth(nextRawWidth);
949
- const clampedWidth = updateWidth(nextWidth);
950
- dragStateRef.current.latestWidth = clampedWidth;
951
- dragStateRef.current.latestRawWidth = nextRawWidth;
952
- };
953
-
954
- const stopDragging = () => {
955
- const finalRawWidth = dragStateRef.current?.latestRawWidth ?? dragStateRef.current?.startWidth ?? resolvedTargetWidth;
956
- dragStateRef.current = null;
957
- setIsResizeActive(false);
958
- document.body.style.userSelect = previousUserSelect;
959
- window.removeEventListener('pointermove', handlePointerMove);
960
- window.removeEventListener('pointerup', stopDragging);
961
- // 松手时才做折叠判定:避免拖拽过程中闪烁
962
- if (finalRawWidth < normalizedCollapseThreshold) {
963
- updateCollapsed(true, { source: 'auto', restoreWidth: false });
964
- }
965
- };
966
-
967
- window.addEventListener('pointermove', handlePointerMove);
968
- window.addEventListener('pointerup', stopDragging, { once: true });
969
- }, [
970
- resizable,
971
- isCollapsed,
972
- lastExpandedWidth,
973
- minWidth,
974
- resolvedTargetWidth,
975
- isCollapsedControlled,
976
- innerManualCollapsed,
977
- innerAutoCollapsed,
978
- normalizedCollapseThreshold,
979
- clampExpandedWidth,
980
- updateWidth,
981
- updateCollapsed,
982
- ]);
983
-
984
- const handleResizeKeyDown = useCallback((event) => {
985
- if (!resizable) return;
986
-
987
- let nextWidth = isCollapsed ? Math.max(lastExpandedWidth, minWidth) : resolvedTargetWidth;
988
- if (event.key === 'ArrowLeft') nextWidth -= 16;
989
- if (event.key === 'ArrowRight') nextWidth += 16;
990
- if (event.key === 'Home') nextWidth = normalizedCollapseThreshold;
991
- if (event.key === 'End') nextWidth = normalizedMaxWidth;
992
- if (nextWidth === (isCollapsed ? Math.max(lastExpandedWidth, minWidth) : resolvedTargetWidth)) return;
993
-
994
- event.preventDefault();
995
- if (!isCollapsedControlled) {
996
- if (innerManualCollapsed) setInnerManualCollapsed(false);
997
- if (innerAutoCollapsed) setInnerAutoCollapsed(false);
998
- }
999
- updateWidth(clampExpandedWidth(nextWidth));
1000
- if (nextWidth < normalizedCollapseThreshold) {
1001
- updateCollapsed(true, { source: 'auto', restoreWidth: false });
1002
- }
1003
- }, [
1004
- resizable,
1005
- isCollapsed,
1006
- lastExpandedWidth,
1007
- minWidth,
1008
- resolvedTargetWidth,
1009
- normalizedCollapseThreshold,
1010
- normalizedMaxWidth,
1011
- isCollapsedControlled,
1012
- innerManualCollapsed,
1013
- innerAutoCollapsed,
1014
- clampExpandedWidth,
1015
- updateWidth,
1016
- updateCollapsed,
1017
- ]);
1018
-
1019
- const rootBackgroundClass =
1020
- tone === 'panel'
1021
- ? 'bg-blueGrey-100'
1022
- : 'bg-transparent';
1023
-
1024
910
  return (
1025
911
  <aside
1026
- className={`${ROOT_BASE} ${rootBackgroundClass} ${className}`.trim()}
912
+ className={`${ROOT_BASE} bg-transparent ${className}`.trim()}
1027
913
  style={{ width: `${renderedWidth}px`, padding: '16px', ...style }}
1028
914
  aria-label="标签栏"
1029
915
  data-tfds-component="TagBar"
@@ -1105,32 +991,6 @@ export default function TagBar({
1105
991
  />
1106
992
  </div>
1107
993
  ) : null}
1108
-
1109
- {resizable ? (
1110
- <div
1111
- className={RESIZE_HANDLE_CLASS}
1112
- role="separator"
1113
- aria-label="调整标签栏宽度"
1114
- aria-orientation="vertical"
1115
- aria-valuemin={DEFAULT_COLLAPSED_WIDTH}
1116
- aria-valuemax={normalizedMaxWidth}
1117
- aria-valuenow={Math.round(renderedWidth)}
1118
- tabIndex={0}
1119
- onPointerDown={handleResizePointerDown}
1120
- onKeyDown={handleResizeKeyDown}
1121
- onPointerEnter={() => setIsResizeActive(true)}
1122
- onPointerLeave={() => {
1123
- if (!dragStateRef.current) setIsResizeActive(false);
1124
- }}
1125
- onFocus={() => setIsResizeActive(true)}
1126
- onBlur={() => {
1127
- if (!dragStateRef.current) setIsResizeActive(false);
1128
- }}
1129
- data-tfds-component="TagBar.ResizeHandle"
1130
- >
1131
- <span className={`${RESIZE_HANDLE_BAR_CLASS} ${isResizeActive ? 'bg-border-default' : 'bg-transparent'}`} />
1132
- </div>
1133
- ) : null}
1134
994
  </aside>
1135
995
  );
1136
996
  }
@@ -28,8 +28,8 @@ export const TAGBAR_TOKEN_MAP = {
28
28
  { label: '悬浮底', cssProp: 'background', value: 'rgba(83, 96, 143, 0.04)', state: 'hover' },
29
29
  ],
30
30
  整栏: [
31
- { label: '展开背景', cssProp: 'background', value: 'linear-gradient(270deg, rgb(249,250,251) 37.08%, rgb(255,255,255) 100%)' },
32
- { label: '收起背景', cssProp: 'background', token: '--color-blueGrey-100', value: '#F9FAFB', state: 'collapsed' },
31
+ { label: '组件背景', cssProp: 'background', value: 'transparent(背景由所属父容器决定)' },
32
+ { label: '收起背景', cssProp: 'background', value: 'transparent(背景由所属父容器决定)', state: 'collapsed' },
33
33
  { label: '分隔线', cssProp: 'border-color', token: '--color-border-default', value: '#E4E7EC', semanticRef: 'border-default' },
34
34
  ],
35
35
  头部: [
@@ -62,7 +62,7 @@ export const TAGBAR_TOKEN_MAP = {
62
62
  ],
63
63
  尺寸: [
64
64
  { label: '展开宽度', cssProp: 'width', value: '240px' },
65
- { label: '收起宽度', cssProp: 'width', value: '76px' },
65
+ { label: '收起宽度', cssProp: 'width', value: '72px' },
66
66
  { label: '顶部业务高', cssProp: 'height', value: '36px' },
67
67
  { label: '节点高度', cssProp: 'height', value: '32px' },
68
68
  { label: '图标槽宽', cssProp: 'width', value: '16px' },