@fluentui/web-components 3.0.0-beta.71 → 3.0.0-beta.73

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 (179) hide show
  1. package/CHANGELOG.md +20 -2
  2. package/dist/dts/accordion/accordion.template.d.ts +1 -1
  3. package/dist/dts/accordion-item/accordion-item.d.ts +2 -2
  4. package/dist/dts/accordion-item/accordion-item.template.d.ts +1 -1
  5. package/dist/dts/anchor-button/anchor-button.d.ts +2 -2
  6. package/dist/dts/anchor-button/anchor-button.options.d.ts +1 -1
  7. package/dist/dts/anchor-button/anchor-button.template.d.ts +1 -1
  8. package/dist/dts/avatar/avatar.d.ts +1 -1
  9. package/dist/dts/avatar/avatar.template.d.ts +1 -1
  10. package/dist/dts/badge/badge.options.d.ts +1 -1
  11. package/dist/dts/badge/badge.template.d.ts +1 -1
  12. package/dist/dts/button/button.d.ts +1 -2
  13. package/dist/dts/button/button.options.d.ts +1 -1
  14. package/dist/dts/button/button.template.d.ts +2 -2
  15. package/dist/dts/compound-button/compound-button.options.d.ts +1 -1
  16. package/dist/dts/compound-button/compound-button.template.d.ts +1 -1
  17. package/dist/dts/counter-badge/counter-badge.options.d.ts +1 -1
  18. package/dist/dts/counter-badge/counter-badge.template.d.ts +2 -2
  19. package/dist/dts/dialog/dialog.template.d.ts +1 -1
  20. package/dist/dts/dialog-body/dialog-body.template.d.ts +1 -1
  21. package/dist/dts/divider/divider.d.ts +1 -1
  22. package/dist/dts/divider/divider.template.d.ts +1 -1
  23. package/dist/dts/drawer/drawer.template.d.ts +1 -1
  24. package/dist/dts/drawer-body/drawer-body.template.d.ts +1 -1
  25. package/dist/dts/field/field.d.ts +1 -1
  26. package/dist/dts/field/field.template.d.ts +1 -1
  27. package/dist/dts/image/image.template.d.ts +1 -1
  28. package/dist/dts/index-rollup.d.ts +1 -0
  29. package/dist/dts/index.d.ts +1 -0
  30. package/dist/dts/label/label.template.d.ts +2 -2
  31. package/dist/dts/link/link.d.ts +1 -1
  32. package/dist/dts/link/link.template.d.ts +1 -1
  33. package/dist/dts/menu/menu.d.ts +1 -1
  34. package/dist/dts/menu/menu.template.d.ts +1 -1
  35. package/dist/dts/menu-button/menu-button.template.d.ts +1 -1
  36. package/dist/dts/menu-item/menu-item.d.ts +1 -1
  37. package/dist/dts/menu-list/menu-list.template.d.ts +1 -1
  38. package/dist/dts/message-bar/message-bar.template.d.ts +1 -1
  39. package/dist/dts/patterns/start-end.d.ts +1 -1
  40. package/dist/dts/radio/radio.template.d.ts +1 -1
  41. package/dist/dts/radio-group/radio-group.template.d.ts +1 -1
  42. package/dist/dts/rating-display/rating-display.template.d.ts +1 -1
  43. package/dist/dts/slider/slider.d.ts +3 -3
  44. package/dist/dts/spinner/spinner.d.ts +1 -1
  45. package/dist/dts/spinner/spinner.template.d.ts +1 -1
  46. package/dist/dts/switch/switch.template.d.ts +2 -2
  47. package/dist/dts/tab/tab.d.ts +2 -1
  48. package/dist/dts/tab/tab.template.d.ts +1 -1
  49. package/dist/dts/tab-panel/tab-panel.template.d.ts +2 -2
  50. package/dist/dts/tablist/tablist.template.d.ts +1 -1
  51. package/dist/dts/tabs/tabs.d.ts +1 -1
  52. package/dist/dts/tabs/tabs.options.d.ts +2 -2
  53. package/dist/dts/tabs/tabs.template.d.ts +3 -3
  54. package/dist/dts/text/text.d.ts +1 -1
  55. package/dist/dts/text/text.template.d.ts +1 -1
  56. package/dist/dts/text-input/text-input.d.ts +1 -2
  57. package/dist/dts/textarea/textarea.template.d.ts +1 -1
  58. package/dist/dts/toggle-button/toggle-button.template.d.ts +1 -1
  59. package/dist/dts/tooltip/define.d.ts +1 -0
  60. package/dist/dts/tooltip/index.d.ts +5 -0
  61. package/dist/dts/tooltip/tooltip.d.ts +88 -0
  62. package/dist/dts/tooltip/tooltip.definition.d.ts +9 -0
  63. package/dist/dts/tooltip/tooltip.options.d.ts +24 -0
  64. package/dist/dts/tooltip/tooltip.styles.d.ts +5 -0
  65. package/dist/dts/tooltip/tooltip.template.d.ts +6 -0
  66. package/dist/dts/utils/element-internals.d.ts +23 -1
  67. package/dist/dts/utils/template-helpers.d.ts +1 -2
  68. package/dist/esm/accordion/accordion.template.js.map +1 -1
  69. package/dist/esm/accordion-item/accordion-item.js +4 -13
  70. package/dist/esm/accordion-item/accordion-item.js.map +1 -1
  71. package/dist/esm/accordion-item/accordion-item.template.js.map +1 -1
  72. package/dist/esm/anchor-button/anchor-button.js +5 -20
  73. package/dist/esm/anchor-button/anchor-button.js.map +1 -1
  74. package/dist/esm/anchor-button/anchor-button.template.js.map +1 -1
  75. package/dist/esm/avatar/avatar.js +3 -5
  76. package/dist/esm/avatar/avatar.js.map +1 -1
  77. package/dist/esm/avatar/avatar.template.js.map +1 -1
  78. package/dist/esm/badge/badge.js +6 -27
  79. package/dist/esm/badge/badge.js.map +1 -1
  80. package/dist/esm/badge/badge.template.js.map +1 -1
  81. package/dist/esm/button/button.js +6 -22
  82. package/dist/esm/button/button.js.map +1 -1
  83. package/dist/esm/button/button.template.js.map +1 -1
  84. package/dist/esm/checkbox/checkbox.js +5 -15
  85. package/dist/esm/checkbox/checkbox.js.map +1 -1
  86. package/dist/esm/compound-button/compound-button.template.js.map +1 -1
  87. package/dist/esm/counter-badge/counter-badge.js +6 -26
  88. package/dist/esm/counter-badge/counter-badge.js.map +1 -1
  89. package/dist/esm/counter-badge/counter-badge.template.js.map +1 -1
  90. package/dist/esm/dialog/dialog.template.js.map +1 -1
  91. package/dist/esm/dialog-body/dialog-body.template.js.map +1 -1
  92. package/dist/esm/divider/divider.js +6 -21
  93. package/dist/esm/divider/divider.js.map +1 -1
  94. package/dist/esm/divider/divider.template.js.map +1 -1
  95. package/dist/esm/drawer/drawer.template.js.map +1 -1
  96. package/dist/esm/drawer-body/drawer-body.template.js.map +1 -1
  97. package/dist/esm/field/field.js.map +1 -1
  98. package/dist/esm/field/field.template.js.map +1 -1
  99. package/dist/esm/image/image.js +4 -13
  100. package/dist/esm/image/image.js.map +1 -1
  101. package/dist/esm/image/image.template.js.map +1 -1
  102. package/dist/esm/index-rollup.js +1 -0
  103. package/dist/esm/index-rollup.js.map +1 -1
  104. package/dist/esm/index.js +1 -0
  105. package/dist/esm/index.js.map +1 -1
  106. package/dist/esm/label/label.js +4 -13
  107. package/dist/esm/label/label.js.map +1 -1
  108. package/dist/esm/label/label.template.js.map +1 -1
  109. package/dist/esm/link/link.js +3 -7
  110. package/dist/esm/link/link.js.map +1 -1
  111. package/dist/esm/link/link.template.js.map +1 -1
  112. package/dist/esm/menu/menu.js +0 -3
  113. package/dist/esm/menu/menu.js.map +1 -1
  114. package/dist/esm/menu/menu.template.js.map +1 -1
  115. package/dist/esm/menu-button/menu-button.template.js.map +1 -1
  116. package/dist/esm/menu-item/menu-item.js +0 -7
  117. package/dist/esm/menu-item/menu-item.js.map +1 -1
  118. package/dist/esm/menu-item/menu-item.template.js +1 -3
  119. package/dist/esm/menu-item/menu-item.template.js.map +1 -1
  120. package/dist/esm/menu-list/menu-list.js +1 -2
  121. package/dist/esm/menu-list/menu-list.js.map +1 -1
  122. package/dist/esm/menu-list/menu-list.template.js.map +1 -1
  123. package/dist/esm/message-bar/message-bar.js +5 -19
  124. package/dist/esm/message-bar/message-bar.js.map +1 -1
  125. package/dist/esm/message-bar/message-bar.template.js.map +1 -1
  126. package/dist/esm/patterns/start-end.js.map +1 -1
  127. package/dist/esm/progress-bar/progress-bar.js +5 -19
  128. package/dist/esm/progress-bar/progress-bar.js.map +1 -1
  129. package/dist/esm/progress-bar/progress-bar.options.js.map +1 -1
  130. package/dist/esm/radio/radio.template.js.map +1 -1
  131. package/dist/esm/radio-group/radio-group.js +1 -2
  132. package/dist/esm/radio-group/radio-group.js.map +1 -1
  133. package/dist/esm/radio-group/radio-group.template.js.map +1 -1
  134. package/dist/esm/rating-display/rating-display.js +4 -9
  135. package/dist/esm/rating-display/rating-display.js.map +1 -1
  136. package/dist/esm/rating-display/rating-display.template.js.map +1 -1
  137. package/dist/esm/slider/slider.js +5 -16
  138. package/dist/esm/slider/slider.js.map +1 -1
  139. package/dist/esm/spinner/spinner.js +4 -13
  140. package/dist/esm/spinner/spinner.js.map +1 -1
  141. package/dist/esm/switch/switch.template.js.map +1 -1
  142. package/dist/esm/tab/tab.js +1 -1
  143. package/dist/esm/tab/tab.js.map +1 -1
  144. package/dist/esm/tab/tab.template.js.map +1 -1
  145. package/dist/esm/tab-panel/tab-panel.template.js.map +1 -1
  146. package/dist/esm/tablist/tablist.js +6 -22
  147. package/dist/esm/tablist/tablist.js.map +1 -1
  148. package/dist/esm/tabs/tabs.js.map +1 -1
  149. package/dist/esm/tabs/tabs.template.js.map +1 -1
  150. package/dist/esm/text/text.js +6 -25
  151. package/dist/esm/text/text.js.map +1 -1
  152. package/dist/esm/text/text.template.js.map +1 -1
  153. package/dist/esm/text-input/text-input.js +5 -16
  154. package/dist/esm/text-input/text-input.js.map +1 -1
  155. package/dist/esm/textarea/textarea.js +10 -23
  156. package/dist/esm/textarea/textarea.js.map +1 -1
  157. package/dist/esm/textarea/textarea.template.js.map +1 -1
  158. package/dist/esm/tooltip/define.js +4 -0
  159. package/dist/esm/tooltip/define.js.map +1 -0
  160. package/dist/esm/tooltip/index.js +6 -0
  161. package/dist/esm/tooltip/index.js.map +1 -0
  162. package/dist/esm/tooltip/tooltip.definition.js +17 -0
  163. package/dist/esm/tooltip/tooltip.definition.js.map +1 -0
  164. package/dist/esm/tooltip/tooltip.js +188 -0
  165. package/dist/esm/tooltip/tooltip.js.map +1 -0
  166. package/dist/esm/tooltip/tooltip.options.js +19 -0
  167. package/dist/esm/tooltip/tooltip.options.js.map +1 -0
  168. package/dist/esm/tooltip/tooltip.styles.js +95 -0
  169. package/dist/esm/tooltip/tooltip.styles.js.map +1 -0
  170. package/dist/esm/tooltip/tooltip.template.js +11 -0
  171. package/dist/esm/tooltip/tooltip.template.js.map +1 -0
  172. package/dist/esm/utils/element-internals.js +45 -0
  173. package/dist/esm/utils/element-internals.js.map +1 -1
  174. package/dist/esm/utils/template-helpers.js +1 -1
  175. package/dist/esm/utils/template-helpers.js.map +1 -1
  176. package/dist/web-components.d.ts +130 -6
  177. package/dist/web-components.js +1134 -940
  178. package/dist/web-components.min.js +343 -330
  179. package/package.json +1 -1
@@ -0,0 +1,188 @@
1
+ import { __decorate } from "tslib";
2
+ import { attr, FASTElement, nullableNumberConverter } from '@microsoft/fast-element';
3
+ import { uniqueId } from '@microsoft/fast-web-utilities';
4
+ const SUPPORTS_CSS_ANCHOR_POSITIONING = CSS.supports('anchor-name: --a');
5
+ const SUPPORTS_HTML_ANCHOR_POSITIONING = 'anchor' in HTMLElement.prototype;
6
+ /**
7
+ * A Tooltip Custom HTML Element.
8
+ * Based on ARIA APG Tooltip Pattern {@link https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/ }
9
+ * @public
10
+ */
11
+ export class Tooltip extends FASTElement {
12
+ /**
13
+ * Reference to the anchor element
14
+ * @internal
15
+ */
16
+ get anchorElement() {
17
+ var _a;
18
+ const rootNode = this.getRootNode();
19
+ return (rootNode instanceof ShadowRoot ? rootNode : document).getElementById((_a = this.anchor) !== null && _a !== void 0 ? _a : '');
20
+ }
21
+ constructor() {
22
+ super();
23
+ /**
24
+ * The attached element internals
25
+ */
26
+ this.elementInternals = this.attachInternals();
27
+ /**
28
+ * The item ID
29
+ *
30
+ * @public
31
+ * @remarks
32
+ * HTML Attribute: id
33
+ */
34
+ this.id = uniqueId('tooltip-');
35
+ /**
36
+ * The default delay for the tooltip
37
+ * @internal
38
+ */
39
+ this.defaultDelay = 250;
40
+ /**
41
+ * The id of the anchor element for the tooltip
42
+ */
43
+ this.anchor = '';
44
+ /**
45
+ * Reference to the anchor positioning style element
46
+ * @internal
47
+ */
48
+ this.anchorPositioningStyleElement = null;
49
+ /**
50
+ * Show the tooltip on mouse enter
51
+ */
52
+ this.mouseenterAnchorHandler = () => this.showTooltip(this.delay);
53
+ /**
54
+ * Hide the tooltip on mouse leave
55
+ */
56
+ this.mouseleaveAnchorHandler = () => this.hideTooltip(this.delay);
57
+ /**
58
+ * Show the tooltip on focus
59
+ */
60
+ this.focusAnchorHandler = () => this.showTooltip(0);
61
+ /**
62
+ * Hide the tooltip on blur
63
+ */
64
+ this.blurAnchorHandler = () => this.hideTooltip(0);
65
+ this.elementInternals.role = 'tooltip';
66
+ }
67
+ connectedCallback() {
68
+ var _a, _b, _c, _d;
69
+ super.connectedCallback();
70
+ // If the anchor element is not found, tooltip will not be shown
71
+ if (!this.anchorElement) {
72
+ return;
73
+ }
74
+ // @ts-expect-error - Baseline 2024
75
+ const anchorName = this.anchorElement.style.anchorName || `--${this.anchor}`;
76
+ const describedBy = this.anchorElement.getAttribute('aria-describedby');
77
+ this.anchorElement.setAttribute('aria-describedby', describedBy ? `${describedBy} ${this.id}` : this.id);
78
+ if (SUPPORTS_CSS_ANCHOR_POSITIONING) {
79
+ if (!SUPPORTS_HTML_ANCHOR_POSITIONING) {
80
+ // @ts-expect-error - Baseline 2024
81
+ this.anchorElement.style.anchorName = anchorName;
82
+ // @ts-expect-error - Baseline 2024
83
+ this.style.positionAnchor = anchorName;
84
+ }
85
+ }
86
+ else {
87
+ // Provide style fallback for browsers that do not support anchor positioning
88
+ if (!this.anchorPositioningStyleElement) {
89
+ this.anchorPositioningStyleElement = document.createElement('style');
90
+ document.head.append(this.anchorPositioningStyleElement);
91
+ }
92
+ // Given a position with <direction>-<alignment> format, return the proper CSS properties
93
+ // eslint-disable-next-line prefer-const
94
+ let [direction, alignment] = (_b = (_a = this.positioning) === null || _a === void 0 ? void 0 : _a.split('-')) !== null && _b !== void 0 ? _b : [];
95
+ if (alignment === undefined && (direction === 'above' || direction === 'below')) {
96
+ alignment = 'centerX';
97
+ }
98
+ if (alignment === undefined && (direction === 'before' || direction === 'after')) {
99
+ alignment = 'centerY';
100
+ }
101
+ const directionCSSMap = {
102
+ above: `bottom: anchor(${anchorName} top);`,
103
+ below: `top: anchor(${anchorName} bottom);`,
104
+ before: `right: anchor(${anchorName} left);`,
105
+ after: `left: anchor(${anchorName} right);`,
106
+ };
107
+ const directionCSS = (_c = directionCSSMap[direction]) !== null && _c !== void 0 ? _c : directionCSSMap.above;
108
+ const alignmentCSSMap = {
109
+ start: `left: anchor(${anchorName} left);`,
110
+ end: `right: anchor(${anchorName} right);`,
111
+ top: `top: anchor(${anchorName} top);`,
112
+ bottom: `bottom: anchor(${anchorName} bottom);`,
113
+ centerX: `left: anchor(${anchorName} center); translate: -50% 0;`,
114
+ centerY: `top: anchor(${anchorName} center); translate: 0 -50%;`,
115
+ };
116
+ const alignmentCSS = (_d = alignmentCSSMap[alignment]) !== null && _d !== void 0 ? _d : alignmentCSSMap.centerX;
117
+ this.anchorPositioningStyleElement.textContent = `
118
+ #${this.anchor} {
119
+ anchor-name: ${anchorName};
120
+ }
121
+ #${this.id} {
122
+ inset: unset;
123
+ ${directionCSS}
124
+ ${alignmentCSS}
125
+ position: absolute;
126
+ }
127
+ `;
128
+ if (window.CSS_ANCHOR_POLYFILL) {
129
+ window.CSS_ANCHOR_POLYFILL.call({ element: this.anchorPositioningStyleElement });
130
+ }
131
+ }
132
+ this.anchorElement.addEventListener('focus', this.focusAnchorHandler);
133
+ this.anchorElement.addEventListener('blur', this.blurAnchorHandler);
134
+ this.anchorElement.addEventListener('mouseenter', this.mouseenterAnchorHandler);
135
+ this.anchorElement.addEventListener('mouseleave', this.mouseleaveAnchorHandler);
136
+ }
137
+ disconnectedCallback() {
138
+ var _a, _b, _c, _d;
139
+ super.disconnectedCallback();
140
+ (_a = this.anchorElement) === null || _a === void 0 ? void 0 : _a.removeEventListener('focus', this.focusAnchorHandler);
141
+ (_b = this.anchorElement) === null || _b === void 0 ? void 0 : _b.removeEventListener('blur', this.blurAnchorHandler);
142
+ (_c = this.anchorElement) === null || _c === void 0 ? void 0 : _c.removeEventListener('mouseenter', this.mouseenterAnchorHandler);
143
+ (_d = this.anchorElement) === null || _d === void 0 ? void 0 : _d.removeEventListener('mouseleave', this.mouseleaveAnchorHandler);
144
+ }
145
+ /**
146
+ * Shows the tooltip
147
+ * @param delay Number of milliseconds to delay showing the tooltip
148
+ * @internal
149
+ */
150
+ showTooltip(delay = this.defaultDelay) {
151
+ setTimeout(() => {
152
+ this.setAttribute('aria-hidden', 'false');
153
+ //// @ts-expect-error - Baseline 2024
154
+ this.showPopover();
155
+ }, delay);
156
+ }
157
+ /**
158
+ * Hide the tooltip
159
+ * @param delay Number of milliseconds to delay hiding the tooltip
160
+ * @internal
161
+ */
162
+ hideTooltip(delay = this.defaultDelay) {
163
+ setTimeout(() => {
164
+ var _a;
165
+ // Detect if the tooltip or anchor element is still hovered and enqueue another hide
166
+ if (this.matches(':hover') || ((_a = this.anchorElement) === null || _a === void 0 ? void 0 : _a.matches(':hover'))) {
167
+ this.hideTooltip(delay);
168
+ return;
169
+ }
170
+ this.setAttribute('aria-hidden', 'true');
171
+ //// @ts-expect-error - Baseline 2024
172
+ this.hidePopover();
173
+ }, delay);
174
+ }
175
+ }
176
+ __decorate([
177
+ attr
178
+ ], Tooltip.prototype, "id", void 0);
179
+ __decorate([
180
+ attr({ converter: nullableNumberConverter })
181
+ ], Tooltip.prototype, "delay", void 0);
182
+ __decorate([
183
+ attr
184
+ ], Tooltip.prototype, "positioning", void 0);
185
+ __decorate([
186
+ attr
187
+ ], Tooltip.prototype, "anchor", void 0);
188
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../../src/tooltip/tooltip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The TooltipPositioning options and their corresponding CSS values
3
+ * @public
4
+ */
5
+ export const TooltipPositioningOption = {
6
+ 'above-start': 'block-start span-inline-end',
7
+ above: 'block-start',
8
+ 'above-end': 'block-start span-inline-start',
9
+ 'below-start': 'block-end span-inline-end',
10
+ below: 'block-end',
11
+ 'below-end': 'block-end span-inline-start',
12
+ 'before-top': 'inline-start span-block-end',
13
+ before: 'inline-start',
14
+ 'before-bottom': 'inline-start span-block-start',
15
+ 'after-top': 'inline-end span-block-end',
16
+ after: 'inline-end',
17
+ 'after-bottom': 'inline-end span-block-start',
18
+ };
19
+ //# sourceMappingURL=tooltip.options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.options.js","sourceRoot":"","sources":["../../../src/tooltip/tooltip.options.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,aAAa,EAAE,6BAA6B;IAC5C,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,+BAA+B;IAC5C,aAAa,EAAE,2BAA2B;IAC1C,KAAK,EAAE,WAAW;IAClB,WAAW,EAAE,6BAA6B;IAC1C,YAAY,EAAE,6BAA6B;IAC3C,MAAM,EAAE,cAAc;IACtB,eAAe,EAAE,+BAA+B;IAChD,WAAW,EAAE,2BAA2B;IACxC,KAAK,EAAE,YAAY;IACnB,cAAc,EAAE,6BAA6B;CACrC,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { css } from '@microsoft/fast-element';
2
+ import { display } from '../utils/display.js';
3
+ import { borderRadiusMedium, colorNeutralBackground1, colorNeutralForeground1, colorNeutralShadowAmbient, colorNeutralShadowKey, colorTransparentStroke, fontFamilyBase, fontSizeBase200, lineHeightBase200, spacingHorizontalMNudge, spacingHorizontalXS, spacingVerticalXS, } from '../theme/design-tokens.js';
4
+ import { TooltipPositioningOption } from './tooltip.options.js';
5
+ /**
6
+ * Styles for the tooltip component
7
+ * @public
8
+ */
9
+ export const styles = css `
10
+ ${display('inline-flex')}
11
+
12
+ :host(:not(:popover-open)) {
13
+ display: none;
14
+ }
15
+
16
+ :host {
17
+ --position-area: block-start;
18
+ --position-try-options: flip-block;
19
+ --block-offset: ${spacingVerticalXS};
20
+ --inline-offset: ${spacingHorizontalXS};
21
+ background: ${colorNeutralBackground1};
22
+ border-radius: ${borderRadiusMedium};
23
+ border: 1px solid ${colorTransparentStroke};
24
+ box-sizing: border-box;
25
+ color: ${colorNeutralForeground1};
26
+ display: inline-flex;
27
+ filter: drop-shadow(0 0 2px ${colorNeutralShadowAmbient}) drop-shadow(0 4px 8px ${colorNeutralShadowKey});
28
+ font-family: ${fontFamilyBase};
29
+ font-size: ${fontSizeBase200};
30
+ inset: unset;
31
+ line-height: ${lineHeightBase200};
32
+ margin: unset; /* Remove browser default for [popover] */
33
+ max-width: 240px;
34
+ padding: 4px ${spacingHorizontalMNudge} 6px;
35
+ position: absolute;
36
+ position-area: var(--position-area);
37
+ position-try-options: var(--position-try-options);
38
+ width: auto;
39
+ z-index: 1;
40
+ }
41
+
42
+ @supports (inset-area: block-start) {
43
+ :host {
44
+ inset-area: var(--position-area);
45
+ position-try-fallbacks: var(--position-try-options);
46
+ }
47
+ }
48
+
49
+ :host(:is([positioning^='above'], [positioning^='below'], :not([positioning]))) {
50
+ margin-block: var(--block-offset);
51
+ }
52
+
53
+ :host(:is([positioning^='before'], [positioning^='after'])) {
54
+ margin-inline: var(--inline-offset);
55
+ --position-try-options: flip-inline;
56
+ }
57
+
58
+ :host([positioning='above-start']) {
59
+ --position-area: ${TooltipPositioningOption['above-start']};
60
+ }
61
+ :host([positioning='above']) {
62
+ --position-area: ${TooltipPositioningOption.above};
63
+ }
64
+ :host([positioning='above-end']) {
65
+ --position-area: ${TooltipPositioningOption['above-end']};
66
+ }
67
+ :host([positioning='below-start']) {
68
+ --position-area: ${TooltipPositioningOption['below-start']};
69
+ }
70
+ :host([positioning='below']) {
71
+ --position-area: ${TooltipPositioningOption.below};
72
+ }
73
+ :host([positioning='below-end']) {
74
+ --position-area: ${TooltipPositioningOption.below};
75
+ }
76
+ :host([positioning='before-top']) {
77
+ --position-area: ${TooltipPositioningOption['before-top']};
78
+ }
79
+ :host([positioning='before']) {
80
+ --position-area: ${TooltipPositioningOption.before};
81
+ }
82
+ :host([positioning='before-bottom']) {
83
+ --position-area: ${TooltipPositioningOption['before-bottom']};
84
+ }
85
+ :host([positioning='after-top']) {
86
+ --position-area: ${TooltipPositioningOption['after-top']};
87
+ }
88
+ :host([positioning='after']) {
89
+ --position-area: ${TooltipPositioningOption.after};
90
+ }
91
+ :host([positioning='after-bottom']) {
92
+ --position-area: ${TooltipPositioningOption['after-bottom']};
93
+ }
94
+ `;
95
+ //# sourceMappingURL=tooltip.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.styles.js","sourceRoot":"","sources":["../../../src/tooltip/tooltip.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;IACrB,OAAO,CAAC,aAAa,CAAC;;;;;;;;;sBASJ,iBAAiB;uBAChB,mBAAmB;kBACxB,uBAAuB;qBACpB,kBAAkB;wBACf,sBAAsB;;aAEjC,uBAAuB;;kCAEF,yBAAyB,2BAA2B,qBAAqB;mBACxF,cAAc;iBAChB,eAAe;;mBAEb,iBAAiB;;;mBAGjB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;uBAyBnB,wBAAwB,CAAC,aAAa,CAAC;;;uBAGvC,wBAAwB,CAAC,KAAK;;;uBAG9B,wBAAwB,CAAC,WAAW,CAAC;;;uBAGrC,wBAAwB,CAAC,aAAa,CAAC;;;uBAGvC,wBAAwB,CAAC,KAAK;;;uBAG9B,wBAAwB,CAAC,KAAK;;;uBAG9B,wBAAwB,CAAC,YAAY,CAAC;;;uBAGtC,wBAAwB,CAAC,MAAM;;;uBAG/B,wBAAwB,CAAC,eAAe,CAAC;;;uBAGzC,wBAAwB,CAAC,WAAW,CAAC;;;uBAGrC,wBAAwB,CAAC,KAAK;;;uBAG9B,wBAAwB,CAAC,cAAc,CAAC;;CAE9D,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { html } from '@microsoft/fast-element';
2
+ /**
3
+ * Template for the tooltip component
4
+ * @public
5
+ */
6
+ export const template = html `
7
+ <template popover aria-hidden="true">
8
+ <slot></slot>
9
+ </template>
10
+ `;
11
+ //# sourceMappingURL=tooltip.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.template.js","sourceRoot":"","sources":["../../../src/tooltip/tooltip.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAG/C;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAS;;;;CAIpC,CAAC"}
@@ -38,6 +38,9 @@ export function stateSelector(state) {
38
38
  * @internal
39
39
  */
40
40
  export function toggleState(elementInternals, state, force) {
41
+ if (!state) {
42
+ return;
43
+ }
41
44
  if (!CustomStatesSetSupported) {
42
45
  elementInternals.shadowRoot.host.toggleAttribute(`state--${state}`, force);
43
46
  return;
@@ -51,4 +54,46 @@ export function toggleState(elementInternals, state, force) {
51
54
  // @ts-expect-error - Baseline 2024
52
55
  elementInternals.states.delete(state);
53
56
  }
57
+ /**
58
+ * A weak map to store the valid states for attributes.
59
+ * @internal
60
+ */
61
+ const matchingStateMap = new WeakMap();
62
+ /**
63
+ * Check if a given attribute value is a valid state. Attribute values are often kebab-cased, so this function converts
64
+ * the kebab-cased `state` to camelCase and checks if it exists in as a key in the `States` object.
65
+ *
66
+ * @param States - the object containing valid states for the attribute
67
+ * @param state - the state to check
68
+ * @returns true if the state is in the States object
69
+ * @internal
70
+ */
71
+ export function hasMatchingState(States, state) {
72
+ if (!States || !state) {
73
+ return false;
74
+ }
75
+ if (matchingStateMap.has(States)) {
76
+ return matchingStateMap.get(States).has(state);
77
+ }
78
+ const stateSet = new Set(Object.values(States));
79
+ matchingStateMap.set(States, stateSet);
80
+ return stateSet.has(state);
81
+ }
82
+ /**
83
+ * Swap an old state for a new state.
84
+ *
85
+ * @param elementInternals - the `ElementInternals` instance for the component
86
+ * @param prev - the previous state to remove
87
+ * @param next - the new state to add
88
+ * @param States - the object containing valid states for the attribute
89
+ * @param prefix - an optional prefix to add to the state
90
+ *
91
+ * @internal
92
+ */
93
+ export function swapStates(elementInternals, prev = '', next = '', States, prefix = '') {
94
+ toggleState(elementInternals, `${prefix}${prev}`, false);
95
+ if (!States || hasMatchingState(States, next)) {
96
+ toggleState(elementInternals, `${prefix}${next}`, true);
97
+ }
98
+ }
54
99
  //# sourceMappingURL=element-internals.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"element-internals.js","sourceRoot":"","sources":["../../../src/utils/element-internals.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AAE5E;;;GAGG;AACH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiC,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAmB,KAAQ;;IACtD,OAAO,CAAC,MAAA,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,mCAC1B,SAAS;SACN,GAAG,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC;SAC/E,GAAG,CAAC,KAAK,CAAC,CAAqB,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,gBAAkC,EAAE,KAAa,EAAE,KAAe;IAC5F,IAAI,CAAC,wBAAwB,EAAE;QAC7B,gBAAgB,CAAC,UAAW,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5E,OAAO;KACR;IACD,mCAAmC;IACnC,IAAI,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAChD,mCAAmC;QACnC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO;KACR;IACD,mCAAmC;IACnC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"element-internals.js","sourceRoot":"","sources":["../../../src/utils/element-internals.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AAE5E;;;GAGG;AACH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiC,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAmB,KAAQ;;IACtD,OAAO,CAAC,MAAA,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,mCAC1B,SAAS;SACN,GAAG,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC;SAC/E,GAAG,CAAC,KAAK,CAAC,CAAqB,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,gBAAkC,EAAE,KAAyB,EAAE,KAAe;IACxG,IAAI,CAAC,KAAK,EAAE;QACV,OAAO;KACR;IAED,IAAI,CAAC,wBAAwB,EAAE;QAC7B,gBAAgB,CAAC,UAAW,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5E,OAAO;KACR;IACD,mCAAmC;IACnC,IAAI,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAChD,mCAAmC;QACnC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO;KACR;IACD,mCAAmC;IACnC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAuC,CAAC;AAE5E;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA0C,EAAE,KAAyB;IACpG,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;QACrB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAChC,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACjD;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACxB,gBAAkC,EAClC,OAA2B,EAAE,EAC7B,OAA2B,EAAE,EAC7B,MAA+B,EAC/B,SAAiB,EAAE;IAEnB,WAAW,CAAC,gBAAgB,EAAE,GAAG,MAAM,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IAEzD,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;QAC7C,WAAW,CAAC,gBAAgB,EAAE,GAAG,MAAM,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;KACzD;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  //Copied from @microsoft/fast-foundation
2
- import { InlineTemplateDirective } from '@microsoft/fast-element';
2
+ import { InlineTemplateDirective, } from '@microsoft/fast-element';
3
3
  /**
4
4
  * A function to compose template options.
5
5
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"template-helpers.js","sourceRoot":"","sources":["../../../src/utils/template-helpers.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EAA8B,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAiB9F;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAgD;IAEhD,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,uBAAuB,CAAC,KAAK,CAAC;KACtC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;KAC1C;IAED,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;KACtB;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"template-helpers.js","sourceRoot":"","sources":["../../../src/utils/template-helpers.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EAGL,uBAAuB,GAExB,MAAM,yBAAyB,CAAC;AAgBjC;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAgD;IAEhD,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,uBAAuB,CAAC,KAAK,CAAC;KACtC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;KAC1C;IAED,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;KACtB;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -9,7 +9,7 @@ import type { HostBehavior } from '@microsoft/fast-element';
9
9
  import type { HostController } from '@microsoft/fast-element';
10
10
  import { HTMLDirective } from '@microsoft/fast-element';
11
11
  import { Orientation } from '@microsoft/fast-web-utilities';
12
- import type { SyntheticViewTemplate } from '@microsoft/fast-element';
12
+ import { SyntheticViewTemplate } from '@microsoft/fast-element';
13
13
  import { ViewTemplate } from '@microsoft/fast-element';
14
14
 
15
15
  /**
@@ -127,7 +127,7 @@ export declare class AccordionItem extends BaseAccordionItem {
127
127
  * @param prev - previous value
128
128
  * @param next - next value
129
129
  */
130
- sizeChanged(prev: AccordionItemSize, next: AccordionItemSize): void;
130
+ sizeChanged(prev: AccordionItemSize | undefined, next: AccordionItemSize | undefined): void;
131
131
  /**
132
132
  * Sets expand and collapsed icon position.
133
133
  *
@@ -141,7 +141,7 @@ export declare class AccordionItem extends BaseAccordionItem {
141
141
  * @param prev - previous value
142
142
  * @param next - next value
143
143
  */
144
- markerPositionChanged(prev: AccordionItemMarkerPosition, next: AccordionItemMarkerPosition): void;
144
+ markerPositionChanged(prev: AccordionItemMarkerPosition | undefined, next: AccordionItemMarkerPosition | undefined): void;
145
145
  /**
146
146
  * Sets the width of the focus state.
147
147
  *
@@ -1629,7 +1629,7 @@ export declare class BaseDivider extends FASTElement {
1629
1629
  * @param next - the current orientation value
1630
1630
  * @internal
1631
1631
  */
1632
- orientationChanged(previous: string | null, next: string | null): void;
1632
+ orientationChanged(previous: DividerRole | undefined, next: DividerRole | undefined): void;
1633
1633
  }
1634
1634
 
1635
1635
  /**
@@ -8280,7 +8280,7 @@ export declare class Slider extends FASTElement implements SliderConfiguration {
8280
8280
  * HTML Attribute: size
8281
8281
  */
8282
8282
  size?: SliderSize;
8283
- protected sizeChanged(prev: string, next: string): void;
8283
+ protected sizeChanged(prev: SliderSize | undefined, next: SliderSize | undefined): void;
8284
8284
  handleChange(_: any, propertyName: string): void;
8285
8285
  private stepStyles?;
8286
8286
  /**
@@ -8519,7 +8519,7 @@ export declare class Slider extends FASTElement implements SliderConfiguration {
8519
8519
  * apply different behavior when it’s vertical.
8520
8520
  */
8521
8521
  orientation?: Orientation;
8522
- protected orientationChanged(prev: string | undefined, next: string | undefined): void;
8522
+ protected orientationChanged(prev: Orientation | undefined, next: Orientation | undefined): void;
8523
8523
  /**
8524
8524
  * The selection mode.
8525
8525
  *
@@ -9943,6 +9943,130 @@ export declare const ToggleButtonStyles: ElementStyles;
9943
9943
  */
9944
9944
  export declare const ToggleButtonTemplate: ElementViewTemplate<ToggleButton>;
9945
9945
 
9946
+ /**
9947
+ * A Tooltip Custom HTML Element.
9948
+ * Based on ARIA APG Tooltip Pattern {@link https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/ }
9949
+ * @public
9950
+ */
9951
+ export declare class Tooltip extends FASTElement {
9952
+ /**
9953
+ * The attached element internals
9954
+ */
9955
+ elementInternals: ElementInternals;
9956
+ /**
9957
+ * The item ID
9958
+ *
9959
+ * @public
9960
+ * @remarks
9961
+ * HTML Attribute: id
9962
+ */
9963
+ id: string;
9964
+ /**
9965
+ * Set the delay for the tooltip
9966
+ */
9967
+ delay?: number;
9968
+ /**
9969
+ * The default delay for the tooltip
9970
+ * @internal
9971
+ */
9972
+ private defaultDelay;
9973
+ /**
9974
+ * Set the positioning of the tooltip
9975
+ */
9976
+ positioning?: TooltipPositioningOption;
9977
+ /**
9978
+ * The id of the anchor element for the tooltip
9979
+ */
9980
+ anchor: string;
9981
+ /**
9982
+ * Reference to the anchor element
9983
+ * @internal
9984
+ */
9985
+ private get anchorElement();
9986
+ /**
9987
+ * Reference to the anchor positioning style element
9988
+ * @internal
9989
+ */
9990
+ protected anchorPositioningStyleElement: HTMLStyleElement | null;
9991
+ constructor();
9992
+ connectedCallback(): void;
9993
+ disconnectedCallback(): void;
9994
+ /**
9995
+ * Shows the tooltip
9996
+ * @param delay Number of milliseconds to delay showing the tooltip
9997
+ * @internal
9998
+ */
9999
+ showTooltip(delay?: number): void;
10000
+ /**
10001
+ * Hide the tooltip
10002
+ * @param delay Number of milliseconds to delay hiding the tooltip
10003
+ * @internal
10004
+ */
10005
+ hideTooltip(delay?: number): void;
10006
+ /**
10007
+ * Show the tooltip on mouse enter
10008
+ */
10009
+ mouseenterAnchorHandler: () => void;
10010
+ /**
10011
+ * Hide the tooltip on mouse leave
10012
+ */
10013
+ mouseleaveAnchorHandler: () => void;
10014
+ /**
10015
+ * Show the tooltip on focus
10016
+ */
10017
+ focusAnchorHandler: () => void;
10018
+ /**
10019
+ * Hide the tooltip on blur
10020
+ */
10021
+ blurAnchorHandler: () => void;
10022
+ }
10023
+
10024
+ /**
10025
+ * The {@link Tooltip } custom element definition.
10026
+ *
10027
+ * @public
10028
+ * @remarks
10029
+ * HTML Element: `<fluent-tooltip>`
10030
+ */
10031
+ export declare const TooltipDefinition: FASTElementDefinition<typeof Tooltip>;
10032
+
10033
+ /**
10034
+ * The TooltipPositioning options and their corresponding CSS values
10035
+ * @public
10036
+ */
10037
+ export declare const TooltipPositioningOption: {
10038
+ readonly 'above-start': "block-start span-inline-end";
10039
+ readonly above: "block-start";
10040
+ readonly 'above-end': "block-start span-inline-start";
10041
+ readonly 'below-start': "block-end span-inline-end";
10042
+ readonly below: "block-end";
10043
+ readonly 'below-end': "block-end span-inline-start";
10044
+ readonly 'before-top': "inline-start span-block-end";
10045
+ readonly before: "inline-start";
10046
+ readonly 'before-bottom': "inline-start span-block-start";
10047
+ readonly 'after-top': "inline-end span-block-end";
10048
+ readonly after: "inline-end";
10049
+ readonly 'after-bottom': "inline-end span-block-start";
10050
+ };
10051
+
10052
+ /**
10053
+ * The TooltipPositioning type
10054
+ * @public
10055
+ */
10056
+ export declare type TooltipPositioningOption = ValuesOf<typeof TooltipPositioningOption>;
10057
+
10058
+ /**
10059
+ * Styles for the tooltip component
10060
+ * @public
10061
+ */
10062
+ export declare const TooltipStyles: ElementStyles;
10063
+
10064
+ /**
10065
+ * Template for the tooltip component
10066
+ * @public
10067
+ */
10068
+ export declare const TooltipTemplate: ViewTemplate<Tooltip, any>;
10069
+
9946
10070
  export declare const typographyBody1StrongerStyles: CSSDirective;
9947
10071
 
9948
10072
  export declare const typographyBody1StrongStyles: CSSDirective;