mdui 2.0.1 → 2.0.2

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 (97) hide show
  1. package/LICENSE +21 -21
  2. package/components/avatar/index.js +2 -1
  3. package/components/badge/index.js +2 -1
  4. package/components/bottom-app-bar/index.d.ts +2 -2
  5. package/components/bottom-app-bar/index.js +4 -3
  6. package/components/button/button-base.d.ts +2 -2
  7. package/components/button/button-base.js +15 -14
  8. package/components/button/index.js +2 -1
  9. package/components/button-icon/index.js +2 -1
  10. package/components/card/index.d.ts +1 -1
  11. package/components/card/index.js +5 -2
  12. package/components/checkbox/index.js +7 -10
  13. package/components/checkbox/style.js +1 -1
  14. package/components/chip/index.js +2 -1
  15. package/components/circular-progress/index.js +3 -3
  16. package/components/collapse/collapse-item-style.js +1 -1
  17. package/components/collapse/collapse-item.d.ts +2 -1
  18. package/components/collapse/collapse-item.js +23 -20
  19. package/components/collapse/collapse.d.ts +6 -6
  20. package/components/collapse/collapse.js +57 -34
  21. package/components/dialog/index.d.ts +3 -2
  22. package/components/dialog/index.js +27 -23
  23. package/components/divider/index.js +2 -1
  24. package/components/dropdown/index.d.ts +4 -5
  25. package/components/dropdown/index.js +56 -51
  26. package/components/fab/index.d.ts +1 -0
  27. package/components/fab/index.js +10 -5
  28. package/components/icon/index.js +2 -1
  29. package/components/layout/helper.d.ts +5 -6
  30. package/components/layout/helper.js +42 -48
  31. package/components/layout/layout-item-base.js +1 -2
  32. package/components/layout/layout-item.js +3 -3
  33. package/components/layout/layout-main.js +2 -1
  34. package/components/layout/layout.js +2 -1
  35. package/components/linear-progress/index.js +3 -3
  36. package/components/list/list-item.js +3 -2
  37. package/components/list/list-subheader.js +2 -1
  38. package/components/list/list.js +2 -1
  39. package/components/menu/menu-item.d.ts +1 -0
  40. package/components/menu/menu-item.js +45 -28
  41. package/components/menu/menu.d.ts +4 -1
  42. package/components/menu/menu.js +82 -56
  43. package/components/navigation-bar/navigation-bar-item-style.js +1 -1
  44. package/components/navigation-bar/navigation-bar-item.d.ts +6 -2
  45. package/components/navigation-bar/navigation-bar-item.js +26 -10
  46. package/components/navigation-bar/navigation-bar.d.ts +6 -6
  47. package/components/navigation-bar/navigation-bar.js +49 -42
  48. package/components/navigation-drawer/index.d.ts +5 -1
  49. package/components/navigation-drawer/index.js +62 -41
  50. package/components/navigation-rail/navigation-rail-item-style.js +1 -1
  51. package/components/navigation-rail/navigation-rail-item.d.ts +6 -2
  52. package/components/navigation-rail/navigation-rail-item.js +20 -8
  53. package/components/navigation-rail/navigation-rail.d.ts +4 -5
  54. package/components/navigation-rail/navigation-rail.js +51 -44
  55. package/components/radio/radio-group.d.ts +6 -4
  56. package/components/radio/radio-group.js +61 -48
  57. package/components/radio/radio-style.js +1 -1
  58. package/components/radio/radio.d.ts +3 -2
  59. package/components/radio/radio.js +24 -17
  60. package/components/range-slider/index.js +7 -9
  61. package/components/ripple/index.js +2 -1
  62. package/components/segmented-button/segmented-button-group.d.ts +6 -3
  63. package/components/segmented-button/segmented-button-group.js +84 -69
  64. package/components/segmented-button/segmented-button.d.ts +2 -2
  65. package/components/segmented-button/segmented-button.js +5 -4
  66. package/components/select/index.d.ts +2 -2
  67. package/components/select/index.js +26 -24
  68. package/components/slider/index.js +7 -9
  69. package/components/slider/slider-base-style.js +1 -1
  70. package/components/slider/slider-base.js +1 -5
  71. package/components/snackbar/index.js +2 -1
  72. package/components/switch/index.js +6 -9
  73. package/components/switch/style.js +1 -1
  74. package/components/tabs/tab-panel.js +2 -1
  75. package/components/tabs/tab-style.js +1 -1
  76. package/components/tabs/tab.js +10 -5
  77. package/components/tabs/tabs-style.js +1 -1
  78. package/components/tabs/tabs.d.ts +6 -5
  79. package/components/tabs/tabs.js +52 -38
  80. package/components/text-field/index.d.ts +2 -2
  81. package/components/text-field/index.js +32 -54
  82. package/components/text-field/style.js +1 -1
  83. package/components/tooltip/index.d.ts +5 -5
  84. package/components/tooltip/index.js +30 -25
  85. package/components/top-app-bar/top-app-bar-title-style.js +1 -1
  86. package/components/top-app-bar/top-app-bar-title.js +16 -12
  87. package/components/top-app-bar/top-app-bar.d.ts +2 -2
  88. package/components/top-app-bar/top-app-bar.js +6 -4
  89. package/custom-elements.json +3421 -3126
  90. package/functions/getTheme.js +3 -3
  91. package/functions/snackbar.js +1 -2
  92. package/functions/utils/colorScheme.js +2 -2
  93. package/html-data.zh-cn.json +438 -438
  94. package/mdui.esm.js +8 -8
  95. package/mdui.global.js +8 -8
  96. package/package.json +7 -7
  97. package/web-types.zh-cn.json +770 -770
@@ -98,12 +98,16 @@ export declare class Tooltip extends LitElement {
98
98
  */
99
99
  open: boolean;
100
100
  private observeResize?;
101
- private target;
102
101
  private hoverTimeout;
103
102
  private readonly popupRef;
104
103
  private readonly hasSlotController;
105
104
  private readonly hoverController;
105
+ private readonly definedController;
106
106
  constructor();
107
+ /**
108
+ * 获取第一个非 <style> 和 content slot 的子元素,作为 tooltip 的目标元素
109
+ */
110
+ private get target();
107
111
  private onPositionChange;
108
112
  private onOpenChange;
109
113
  connectedCallback(): void;
@@ -115,10 +119,6 @@ export declare class Tooltip extends LitElement {
115
119
  * 请求关闭 tooltip。鼠标未悬浮在 tooltip 上时,直接关闭;否则等鼠标移走再关闭
116
120
  */
117
121
  private requestClose;
118
- /**
119
- * 获取第一个非 <style> 和 content slot 的子元素,作为 tooltip 的目标元素
120
- */
121
- private getTarget;
122
122
  private hasTrigger;
123
123
  private onFocus;
124
124
  private onBlur;
@@ -9,6 +9,7 @@ import '@mdui/jq/methods/filter.js';
9
9
  import '@mdui/jq/methods/height.js';
10
10
  import '@mdui/jq/methods/prop.js';
11
11
  import '@mdui/jq/methods/width.js';
12
+ import { DefinedController } from '@mdui/shared/controllers/defined.js';
12
13
  import { HasSlotController } from '@mdui/shared/controllers/has-slot.js';
13
14
  import { HoverController } from '@mdui/shared/controllers/hover.js';
14
15
  import { watch } from '@mdui/shared/decorators/watch.js';
@@ -47,7 +48,7 @@ import { style } from './style.js';
47
48
  * @cssprop --shape-corner-rich - variant="rich" 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐[引用设计令牌](/docs/2/styles/design-tokens#shape-corner)
48
49
  * @cssprop --z-index - 组件的 CSS 的 `z-index` 值
49
50
  */
50
- export let Tooltip = class Tooltip extends LitElement {
51
+ let Tooltip = class Tooltip extends LitElement {
51
52
  constructor() {
52
53
  super();
53
54
  /**
@@ -107,6 +108,9 @@ export let Tooltip = class Tooltip extends LitElement {
107
108
  this.popupRef = createRef();
108
109
  this.hasSlotController = new HasSlotController(this, 'headline', 'action');
109
110
  this.hoverController = new HoverController(this, this.popupRef);
111
+ this.definedController = new DefinedController(this, {
112
+ needDomReady: true,
113
+ });
110
114
  this.onDocumentClick = this.onDocumentClick.bind(this);
111
115
  this.onWindowScroll = this.onWindowScroll.bind(this);
112
116
  this.onFocus = this.onFocus.bind(this);
@@ -116,8 +120,16 @@ export let Tooltip = class Tooltip extends LitElement {
116
120
  this.onMouseEnter = this.onMouseEnter.bind(this);
117
121
  this.onMouseLeave = this.onMouseLeave.bind(this);
118
122
  }
123
+ /**
124
+ * 获取第一个非 <style> 和 content slot 的子元素,作为 tooltip 的目标元素
125
+ */
126
+ get target() {
127
+ return [...this.children].find((el) => el.tagName.toLowerCase() !== 'style' &&
128
+ el.getAttribute('slot') !== 'content');
129
+ }
119
130
  async onPositionChange() {
120
131
  if (this.open) {
132
+ await this.definedController.whenDefined();
121
133
  this.updatePositioner();
122
134
  }
123
135
  }
@@ -128,6 +140,7 @@ export let Tooltip = class Tooltip extends LitElement {
128
140
  // 打开
129
141
  // 要区分是否首次渲染,首次渲染时不触发事件,不执行动画;非首次渲染,触发事件,执行动画
130
142
  if (this.open) {
143
+ await this.definedController.whenDefined();
131
144
  // 先关闭页面中所有其他相同 variant 的 tooltip
132
145
  $(`mdui-tooltip[variant="${this.variant}"]`)
133
146
  .filter((_, element) => element !== this)
@@ -167,36 +180,34 @@ export let Tooltip = class Tooltip extends LitElement {
167
180
  await animateTo(this.popupRef.value, [{ transform: 'scale(1)' }, { transform: 'scale(0)' }], { duration, easing });
168
181
  this.popupRef.value.hidden = true;
169
182
  emit(this, 'closed');
170
- return;
171
183
  }
172
184
  }
173
185
  connectedCallback() {
174
186
  super.connectedCallback();
175
187
  document.addEventListener('pointerdown', this.onDocumentClick);
176
188
  window.addEventListener('scroll', this.onWindowScroll);
177
- // trigger 尺寸变化时,重新调整 tooltip 的位置
178
- this.updateComplete.then(() => {
179
- this.observeResize = observeResize(this.target, () => {
180
- this.updatePositioner();
181
- });
182
- });
183
189
  }
184
190
  disconnectedCallback() {
185
- var _a;
186
191
  super.disconnectedCallback();
187
192
  document.removeEventListener('pointerdown', this.onDocumentClick);
188
193
  window.removeEventListener('scroll', this.onWindowScroll);
189
- (_a = this.observeResize) === null || _a === void 0 ? void 0 : _a.unobserve();
194
+ this.observeResize?.unobserve();
190
195
  }
191
196
  firstUpdated(changedProperties) {
192
197
  super.firstUpdated(changedProperties);
193
- this.target = this.getTarget();
194
- this.target.addEventListener('focus', this.onFocus);
195
- this.target.addEventListener('blur', this.onBlur);
196
- this.target.addEventListener('pointerdown', this.onClick);
197
- this.target.addEventListener('keydown', this.onKeydown);
198
- this.target.addEventListener('mouseenter', this.onMouseEnter);
199
- this.target.addEventListener('mouseleave', this.onMouseLeave);
198
+ this.definedController.whenDefined().then(() => {
199
+ const target = this.target;
200
+ target.addEventListener('focus', this.onFocus);
201
+ target.addEventListener('blur', this.onBlur);
202
+ target.addEventListener('pointerdown', this.onClick);
203
+ target.addEventListener('keydown', this.onKeydown);
204
+ target.addEventListener('mouseenter', this.onMouseEnter);
205
+ target.addEventListener('mouseleave', this.onMouseLeave);
206
+ // trigger 尺寸变化时,重新调整 tooltip 的位置
207
+ this.observeResize = observeResize(target, () => {
208
+ this.updatePositioner();
209
+ });
210
+ });
200
211
  }
201
212
  render() {
202
213
  const hasHeadline = this.isRich() &&
@@ -210,7 +221,7 @@ export let Tooltip = class Tooltip extends LitElement {
210
221
  /**
211
222
  * 请求关闭 tooltip。鼠标未悬浮在 tooltip 上时,直接关闭;否则等鼠标移走再关闭
212
223
  */
213
- async requestClose() {
224
+ requestClose() {
214
225
  if (!this.hoverController.isHover) {
215
226
  this.open = false;
216
227
  return;
@@ -228,13 +239,6 @@ export let Tooltip = class Tooltip extends LitElement {
228
239
  }
229
240
  }, true);
230
241
  }
231
- /**
232
- * 获取第一个非 <style> 和 content slot 的子元素,作为 tooltip 的目标元素
233
- */
234
- getTarget() {
235
- return [...this.children].find((el) => el.tagName.toLowerCase() !== 'style' &&
236
- el.getAttribute('slot') !== 'content');
237
- }
238
242
  hasTrigger(trigger) {
239
243
  const triggers = this.trigger.split(' ');
240
244
  return triggers.includes(trigger);
@@ -495,3 +499,4 @@ __decorate([
495
499
  Tooltip = __decorate([
496
500
  customElement('mdui-tooltip')
497
501
  ], Tooltip);
502
+ export { Tooltip };
@@ -1,2 +1,2 @@
1
1
  import { css } from 'lit';
2
- export const topAppBarTitleStyle = css `:host{display:block;width:100%;flex-shrink:initial!important;overflow:hidden;color:rgb(var(--mdui-color-on-surface));font-size:var(--mdui-typescale-title-large-size);font-weight:var(--mdui-typescale-title-large-weight);letter-spacing:var(--mdui-typescale-title-large-tracking);line-height:var(--mdui-typescale-title-large-line-height);line-height:2.5rem}.label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:1;transition:opacity var(--mdui-motion-duration-short2) var(--mdui-motion-easing-linear)}:host([variant=center-aligned]) .label{text-align:center}:host([variant=large]:not([shrink])) .label,:host([variant=medium]:not([shrink])) .label{opacity:0}:host([variant=large][shrink]) .label,:host([variant=medium][shrink]) .label{transition-delay:var(--mdui-motion-duration-short2)}.label-large{display:none;position:absolute;width:100%;left:0;margin-right:0;padding:0 1rem;transition:opacity var(--mdui-motion-duration-short2) var(--mdui-motion-easing-linear)}:host([variant=large]) .label-large,:host([variant=medium]) .label-large{display:block}:host([variant=medium]) .label-large{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;bottom:.75rem;font-size:var(--mdui-typescale-headline-small-size);font-weight:var(--mdui-typescale-headline-small-weight);letter-spacing:var(--mdui-typescale-headline-small-tracking);line-height:var(--mdui-typescale-headline-small-line-height)}:host([variant=large]) .label-large{display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2;bottom:1.25rem;font-size:var(--mdui-typescale-headline-medium-size);font-weight:var(--mdui-typescale-headline-medium-weight);letter-spacing:var(--mdui-typescale-headline-medium-tracking);line-height:var(--mdui-typescale-headline-medium-line-height)}:host([variant=large]:not([shrink])) .label-large,:host([variant=medium]:not([shrink])) .label-large{opacity:1;transition-delay:var(--mdui-motion-duration-short2)}:host([variant=large][shrink]) .label-large,:host([variant=medium][shrink]) .label-large{opacity:0;z-index:-1}`;
2
+ export const topAppBarTitleStyle = css `:host{display:block;width:100%;flex-shrink:initial!important;overflow:hidden;color:rgb(var(--mdui-color-on-surface));font-size:var(--mdui-typescale-title-large-size);font-weight:var(--mdui-typescale-title-large-weight);letter-spacing:var(--mdui-typescale-title-large-tracking);line-height:var(--mdui-typescale-title-large-line-height);line-height:2.5rem}.label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:1;transition:opacity var(--mdui-motion-duration-short2) var(--mdui-motion-easing-linear)}.label.variant-center-aligned{text-align:center}.label.variant-large:not(.shrink),.label.variant-medium:not(.shrink){opacity:0}.label.variant-large.shrink,.label.variant-medium.shrink{transition-delay:var(--mdui-motion-duration-short2)}.label-large{display:none;position:absolute;width:100%;left:0;margin-right:0;padding:0 1rem;transition:opacity var(--mdui-motion-duration-short2) var(--mdui-motion-easing-linear)}.label-large.variant-large,.label-large.variant-medium{display:block}.label-large.variant-medium{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;bottom:.75rem;font-size:var(--mdui-typescale-headline-small-size);font-weight:var(--mdui-typescale-headline-small-weight);letter-spacing:var(--mdui-typescale-headline-small-tracking);line-height:var(--mdui-typescale-headline-small-line-height)}.label-large.variant-large{display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2;bottom:1.25rem;font-size:var(--mdui-typescale-headline-medium-size);font-weight:var(--mdui-typescale-headline-medium-weight);letter-spacing:var(--mdui-typescale-headline-medium-tracking);line-height:var(--mdui-typescale-headline-medium-line-height)}.label-large.variant-large:not(.shrink),.label-large.variant-medium:not(.shrink){opacity:1;transition-delay:var(--mdui-motion-duration-short2)}.label-large.variant-large.shrink,.label-large.variant-medium.shrink{opacity:0;z-index:-1}`;
@@ -1,9 +1,9 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { html, LitElement } from 'lit';
3
- import { customElement, property } from 'lit/decorators.js';
3
+ import { customElement, state } from 'lit/decorators.js';
4
+ import { classMap } from 'lit/directives/class-map.js';
4
5
  import { createRef, ref } from 'lit/directives/ref.js';
5
6
  import { HasSlotController } from '@mdui/shared/controllers/has-slot.js';
6
- import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
7
7
  import { getInnerHtmlFromSlot } from '@mdui/shared/helpers/slot.js';
8
8
  import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
9
9
  import { topAppBarTitleStyle } from './top-app-bar-title-style.js';
@@ -25,7 +25,7 @@ import { topAppBarTitleStyle } from './top-app-bar-title-style.js';
25
25
  * @csspart label 文本内容
26
26
  * @csspart label-large 展开状态的文本内容
27
27
  */
28
- export let TopAppBarTitle = class TopAppBarTitle extends LitElement {
28
+ let TopAppBarTitle = class TopAppBarTitle extends LitElement {
29
29
  constructor() {
30
30
  super(...arguments);
31
31
  /**
@@ -42,9 +42,16 @@ export let TopAppBarTitle = class TopAppBarTitle extends LitElement {
42
42
  }
43
43
  render() {
44
44
  const hasLabelLargeSlot = this.hasSlotController.test('label-large');
45
- return html `<slot part="label" class="label" ${ref(this.defaultSlotRef)} @slotchange="${() => this.onSlotChange(hasLabelLargeSlot)}"></slot>${hasLabelLargeSlot
46
- ? html `<slot name="label-large" part="label-large" class="label-large"></slot>`
47
- : html `<div ${ref(this.labelLargeRef)} part="label-large" class="label-large"></div>`}`;
45
+ const className = classMap({
46
+ shrink: this.shrink,
47
+ 'variant-center-aligned': this.variant === 'center-aligned',
48
+ 'variant-small': this.variant === 'small',
49
+ 'variant-medium': this.variant === 'medium',
50
+ 'variant-large': this.variant === 'large',
51
+ });
52
+ return html `<slot part="label" class="label ${className}" ${ref(this.defaultSlotRef)} @slotchange="${() => this.onSlotChange(hasLabelLargeSlot)}"></slot>${hasLabelLargeSlot
53
+ ? html `<slot name="label-large" part="label-large" class="label-large ${className}"></slot>`
54
+ : html `<div ${ref(this.labelLargeRef)} part="label-large" class="label-large ${className}"></div>`}`;
48
55
  }
49
56
  /**
50
57
  * default slot 变化时,同步到 label-large 中
@@ -62,15 +69,12 @@ TopAppBarTitle.styles = [
62
69
  topAppBarTitleStyle,
63
70
  ];
64
71
  __decorate([
65
- property({ reflect: true })
72
+ state()
66
73
  ], TopAppBarTitle.prototype, "variant", void 0);
67
74
  __decorate([
68
- property({
69
- type: Boolean,
70
- reflect: true,
71
- converter: booleanConverter,
72
- })
75
+ state()
73
76
  ], TopAppBarTitle.prototype, "shrink", void 0);
74
77
  TopAppBarTitle = __decorate([
75
78
  customElement('mdui-top-app-bar-title')
76
79
  ], TopAppBarTitle);
80
+ export { TopAppBarTitle };
@@ -1,7 +1,7 @@
1
1
  import { LayoutItemBase } from '../layout/layout-item-base.js';
2
2
  import type { LayoutPlacement } from '../layout/helper.js';
3
3
  import type { ScrollPaddingPosition } from '@mdui/shared/mixins/scrollBehavior.js';
4
- import type { CSSResultGroup, TemplateResult } from 'lit';
4
+ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
5
5
  declare const TopAppBar_base: import("@open-wc/dedupe-mixin").Constructor<import("@mdui/shared/mixins/scrollBehavior.js").ScrollBehaviorMixinInterface> & typeof LayoutItemBase;
6
6
  /**
7
7
  * @summary 顶部应用栏组件
@@ -61,7 +61,7 @@ export declare class TopAppBar extends TopAppBar_base {
61
61
  protected get layoutPlacement(): LayoutPlacement;
62
62
  private onVariantChange;
63
63
  private onShrinkChange;
64
- connectedCallback(): void;
64
+ protected firstUpdated(_changedProperties: PropertyValues): void;
65
65
  protected render(): TemplateResult;
66
66
  protected runScrollNoThreshold(isScrollingUp: boolean, scrollTop: number): void;
67
67
  protected runScrollThreshold(isScrollingUp: boolean, scrollTop: number): void;
@@ -30,7 +30,7 @@ import { topAppBarStyle } from './top-app-bar-style.js';
30
30
  * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐[引用设计令牌](/docs/2/styles/design-tokens#shape-corner)
31
31
  * @cssprop --z-index - 组件的 CSS 的 `z-index` 值
32
32
  */
33
- export let TopAppBar = class TopAppBar extends ScrollBehaviorMixin(LayoutItemBase) {
33
+ let TopAppBar = class TopAppBar extends ScrollBehaviorMixin(LayoutItemBase) {
34
34
  constructor() {
35
35
  super(...arguments);
36
36
  /**
@@ -64,7 +64,8 @@ export let TopAppBar = class TopAppBar extends ScrollBehaviorMixin(LayoutItemBas
64
64
  async onVariantChange() {
65
65
  if (this.hasUpdated) {
66
66
  // variant 变更时,重新为 scrollTargetContainer 元素添加 padding-top。避免 top-app-bar 覆盖内容
67
- this.addEventListener('transitionend', () => {
67
+ this.addEventListener('transitionend', async () => {
68
+ await this.scrollBehaviorDefinedController.whenDefined();
68
69
  this.updateContainerPadding();
69
70
  }, { once: true });
70
71
  }
@@ -83,8 +84,8 @@ export let TopAppBar = class TopAppBar extends ScrollBehaviorMixin(LayoutItemBas
83
84
  titleElement.shrink = this.shrink;
84
85
  });
85
86
  }
86
- connectedCallback() {
87
- super.connectedCallback();
87
+ firstUpdated(_changedProperties) {
88
+ super.firstUpdated(_changedProperties);
88
89
  this.addEventListener('transitionend', (e) => {
89
90
  if (e.target === this) {
90
91
  emit(this, this.hide ? 'hidden' : 'shown');
@@ -176,3 +177,4 @@ __decorate([
176
177
  TopAppBar = __decorate([
177
178
  customElement('mdui-top-app-bar')
178
179
  ], TopAppBar);
180
+ export { TopAppBar };