@jetbrains/ring-ui 7.0.72 → 7.0.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 (282) hide show
  1. package/babel.config.js +14 -8
  2. package/components/alert/alert.d.ts +1 -1
  3. package/components/alert/{alert.js → alert.jsx} +14 -8
  4. package/components/alert/{container.js → container.jsx} +4 -3
  5. package/components/alert-service/alert-service.d.ts +1 -1
  6. package/components/alert-service/{alert-service.js → alert-service.jsx} +8 -5
  7. package/components/auth/auth-core.js +6 -7
  8. package/components/auth/{down-notification.js → down-notification.jsx} +12 -4
  9. package/components/auth/{iframe-flow.js → iframe-flow.jsx} +6 -5
  10. package/components/auth/storage.js +1 -1
  11. package/components/auth/token-validator.js +1 -1
  12. package/components/auth/window-flow.js +2 -2
  13. package/components/auth-dialog/auth-dialog.d.ts +1 -1
  14. package/components/auth-dialog/{auth-dialog.js → auth-dialog.jsx} +18 -2
  15. package/components/auth-dialog-service/{auth-dialog-service.js → auth-dialog-service.jsx} +3 -2
  16. package/components/avatar/avatar-info.d.ts +1 -1
  17. package/components/avatar/{avatar-info.js → avatar-info.jsx} +4 -3
  18. package/components/avatar/avatar.d.ts +1 -1
  19. package/components/avatar/{avatar.js → avatar.jsx} +11 -6
  20. package/components/avatar/fallback-avatar.d.ts +1 -1
  21. package/components/avatar/{fallback-avatar.js → fallback-avatar.jsx} +16 -2
  22. package/components/avatar-stack/avatar-stack.d.ts +1 -1
  23. package/components/avatar-stack/avatar-stack.jsx +24 -0
  24. package/components/banner/banner.d.ts +1 -1
  25. package/components/banner/{banner.js → banner.jsx} +15 -3
  26. package/components/breadcrumbs/breadcrumbs.d.ts +1 -1
  27. package/components/breadcrumbs/{breadcrumbs.js → breadcrumbs.jsx} +4 -2
  28. package/components/button/button.d.ts +1 -1
  29. package/components/button/{button.js → button.jsx} +13 -5
  30. package/components/button-group/button-group.d.ts +1 -1
  31. package/components/button-group/{button-group.js → button-group.jsx} +5 -2
  32. package/components/button-group/caption.d.ts +1 -1
  33. package/components/button-group/{caption.js → caption.jsx} +1 -2
  34. package/components/button-set/button-set.d.ts +1 -1
  35. package/components/button-set/{button-set.js → button-set.jsx} +3 -2
  36. package/components/button-toolbar/button-toolbar.d.ts +1 -1
  37. package/components/button-toolbar/{button-toolbar.js → button-toolbar.jsx} +1 -2
  38. package/components/checkbox/checkbox.d.ts +1 -1
  39. package/components/checkbox/{checkbox.js → checkbox.jsx} +13 -2
  40. package/components/code/code.d.ts +1 -1
  41. package/components/code/{code.js → code.jsx} +8 -5
  42. package/components/collapse/collapse-content.jsx +65 -0
  43. package/components/collapse/{collapse-control.js → collapse-control.jsx} +6 -3
  44. package/components/collapse/{collapse.js → collapse.jsx} +12 -8
  45. package/components/confirm/confirm.d.ts +1 -1
  46. package/components/confirm/{confirm.js → confirm.jsx} +13 -2
  47. package/components/confirm-service/{confirm-service.js → confirm-service.jsx} +3 -2
  48. package/components/content-layout/content-layout.d.ts +1 -1
  49. package/components/content-layout/{content-layout.js → content-layout.jsx} +6 -2
  50. package/components/content-layout/sidebar.d.ts +1 -1
  51. package/components/content-layout/{sidebar.js → sidebar.jsx} +11 -2
  52. package/components/contenteditable/contenteditable.d.ts +2 -2
  53. package/components/contenteditable/{contenteditable.js → contenteditable.jsx} +5 -6
  54. package/components/control-help/control-help.d.ts +1 -1
  55. package/components/control-help/{control-help.js → control-help.jsx} +1 -2
  56. package/components/control-label/{control-label.js → control-label.jsx} +5 -3
  57. package/components/data-list/data-list.d.ts +1 -1
  58. package/components/data-list/{data-list.js → data-list.jsx} +17 -8
  59. package/components/data-list/data-list.mock.d.ts +1 -1
  60. package/components/data-list/data-list.mock.jsx +215 -0
  61. package/components/data-list/item.d.ts +2 -2
  62. package/components/data-list/{item.js → item.jsx} +23 -7
  63. package/components/data-list/title.d.ts +1 -1
  64. package/components/data-list/{title.js → title.jsx} +11 -2
  65. package/components/date-picker/consts.js +1 -1
  66. package/components/date-picker/date-input.d.ts +1 -1
  67. package/components/date-picker/{date-input.js → date-input.jsx} +1 -2
  68. package/components/date-picker/date-picker.d.ts +1 -1
  69. package/components/date-picker/{date-picker.js → date-picker.jsx} +24 -12
  70. package/components/date-picker/date-popup.d.ts +1 -1
  71. package/components/date-picker/{date-popup.js → date-popup.jsx} +20 -9
  72. package/components/date-picker/day.d.ts +1 -1
  73. package/components/date-picker/{day.js → day.jsx} +4 -3
  74. package/components/date-picker/month-names.d.ts +1 -1
  75. package/components/date-picker/{month-names.js → month-names.jsx} +12 -7
  76. package/components/date-picker/month-slider.d.ts +1 -1
  77. package/components/date-picker/{month-slider.js → month-slider.jsx} +4 -3
  78. package/components/date-picker/month.d.ts +1 -1
  79. package/components/date-picker/{month.js → month.jsx} +4 -3
  80. package/components/date-picker/months.d.ts +1 -1
  81. package/components/date-picker/{months.js → months.jsx} +9 -6
  82. package/components/date-picker/weekdays.d.ts +1 -1
  83. package/components/date-picker/{weekdays.js → weekdays.jsx} +6 -3
  84. package/components/date-picker/years.d.ts +1 -1
  85. package/components/date-picker/{years.js → years.jsx} +9 -6
  86. package/components/dialog/dialog.d.ts +1 -1
  87. package/components/dialog/{dialog.js → dialog.jsx} +39 -16
  88. package/components/dropdown/anchor.d.ts +1 -1
  89. package/components/dropdown/anchor.jsx +8 -0
  90. package/components/dropdown/dropdown.d.ts +1 -1
  91. package/components/dropdown/{dropdown.js → dropdown.jsx} +10 -7
  92. package/components/dropdown-menu/{dropdown-menu.js → dropdown-menu.jsx} +10 -5
  93. package/components/editable-heading/editable-heading.d.ts +2 -2
  94. package/components/editable-heading/{editable-heading.js → editable-heading.jsx} +31 -3
  95. package/components/error-bubble/error-bubble.d.ts +1 -1
  96. package/components/error-bubble/error-bubble.jsx +23 -0
  97. package/components/error-message/error-message.d.ts +1 -1
  98. package/components/error-message/error-message.jsx +25 -0
  99. package/components/footer/{footer.js → footer.jsx} +14 -7
  100. package/components/global/create-stateful-context.d.ts +1 -1
  101. package/components/global/{create-stateful-context.js → create-stateful-context.jsx} +3 -2
  102. package/components/global/{focus-sensor-hoc.js → focus-sensor-hoc.jsx} +1 -2
  103. package/components/global/get-uid.js +1 -1
  104. package/components/global/react-dom-renderer.d.ts +1 -1
  105. package/components/global/{react-dom-renderer.js → react-dom-renderer.jsx} +1 -2
  106. package/components/global/{rerender-hoc.js → rerender-hoc.jsx} +2 -3
  107. package/components/global/{theme.js → theme.jsx} +12 -4
  108. package/components/grid/col.d.ts +1 -1
  109. package/components/grid/{col.js → col.jsx} +3 -2
  110. package/components/grid/grid.d.ts +1 -1
  111. package/components/grid/{grid.js → grid.jsx} +3 -2
  112. package/components/grid/row.d.ts +1 -1
  113. package/components/grid/{row.js → row.jsx} +3 -2
  114. package/components/group/group.d.ts +1 -1
  115. package/components/group/{group.js → group.jsx} +3 -2
  116. package/components/header/header-icon.d.ts +1 -1
  117. package/components/header/{header-icon.js → header-icon.jsx} +1 -2
  118. package/components/header/header.d.ts +1 -1
  119. package/components/header/{header.js → header.jsx} +4 -3
  120. package/components/header/links.d.ts +1 -1
  121. package/components/header/{links.js → links.jsx} +1 -2
  122. package/components/header/logo.d.ts +1 -1
  123. package/components/header/{logo.js → logo.jsx} +3 -2
  124. package/components/header/{profile.js → profile.jsx} +19 -6
  125. package/components/header/services-link.d.ts +1 -1
  126. package/components/header/services-link.jsx +16 -0
  127. package/components/header/services.d.ts +1 -1
  128. package/components/header/{services.js → services.jsx} +16 -11
  129. package/components/header/smart-profile.d.ts +1 -1
  130. package/components/header/{smart-profile.js → smart-profile.jsx} +1 -2
  131. package/components/header/smart-services.d.ts +1 -1
  132. package/components/header/{smart-services.js → smart-services.jsx} +1 -2
  133. package/components/header/tray.d.ts +1 -1
  134. package/components/header/{tray.js → tray.jsx} +4 -3
  135. package/components/heading/{heading.js → heading.jsx} +16 -9
  136. package/components/i18n/{i18n-context.js → i18n-context.jsx} +1 -2
  137. package/components/icon/icon-svg.d.ts +1 -1
  138. package/components/icon/{icon-svg.js → icon-svg.jsx} +2 -3
  139. package/components/icon/icon.d.ts +1 -1
  140. package/components/icon/{icon.js → icon.jsx} +4 -3
  141. package/components/input/input.d.ts +1 -1
  142. package/components/input/{input.js → input.jsx} +16 -2
  143. package/components/island/{adaptive-island-hoc.js → adaptive-island-hoc.jsx} +5 -2
  144. package/components/island/content.d.ts +1 -1
  145. package/components/island/{content.js → content.jsx} +13 -6
  146. package/components/island/header.d.ts +1 -1
  147. package/components/island/{header.js → header.jsx} +13 -6
  148. package/components/island/island.d.ts +1 -1
  149. package/components/island/{island.js → island.jsx} +3 -2
  150. package/components/link/clickable-link.d.ts +1 -1
  151. package/components/link/{clickable-link.js → clickable-link.jsx} +4 -2
  152. package/components/link/{link.js → link.jsx} +6 -3
  153. package/components/list/list-custom.d.ts +1 -1
  154. package/components/list/{list-custom.js → list-custom.jsx} +4 -2
  155. package/components/list/list-hint.d.ts +1 -1
  156. package/components/list/{list-hint.js → list-hint.jsx} +3 -2
  157. package/components/list/list-item.d.ts +1 -1
  158. package/components/list/{list-item.js → list-item.jsx} +33 -5
  159. package/components/list/list-separator.d.ts +1 -1
  160. package/components/list/{list-separator.js → list-separator.jsx} +3 -2
  161. package/components/list/list-title.d.ts +1 -1
  162. package/components/list/list-title.jsx +19 -0
  163. package/components/list/list-users-groups-source.js +1 -1
  164. package/components/list/list.classes.js +1 -1
  165. package/components/list/list.d.ts +6 -6
  166. package/components/list/{list.js → list.jsx} +45 -23
  167. package/components/loader/loader.d.ts +1 -1
  168. package/components/loader/{loader.js → loader.jsx} +12 -6
  169. package/components/loader-inline/loader-inline.d.ts +1 -1
  170. package/components/loader-inline/{loader-inline.js → loader-inline.jsx} +5 -3
  171. package/components/loader-screen/loader-screen.d.ts +1 -1
  172. package/components/loader-screen/{loader-screen.js → loader-screen.jsx} +3 -2
  173. package/components/login-dialog/login-dialog.d.ts +1 -1
  174. package/components/login-dialog/{login-dialog.js → login-dialog.jsx} +9 -2
  175. package/components/login-dialog/{service.js → service.jsx} +3 -2
  176. package/components/markdown/markdown.d.ts +1 -1
  177. package/components/markdown/{markdown.js → markdown.jsx} +3 -2
  178. package/components/message/message.d.ts +1 -1
  179. package/components/message/{message.js → message.jsx} +21 -2
  180. package/components/pager/pager.d.ts +5 -5
  181. package/components/pager/{pager.js → pager.jsx} +56 -12
  182. package/components/panel/panel.d.ts +1 -1
  183. package/components/panel/{panel.js → panel.jsx} +3 -2
  184. package/components/popup/popup.d.ts +2 -2
  185. package/components/popup/{popup.js → popup.jsx} +26 -14
  186. package/components/popup/popup.target.jsx +10 -0
  187. package/components/popup-menu/popup-menu.d.ts +1 -1
  188. package/components/popup-menu/{popup-menu.js → popup-menu.jsx} +3 -2
  189. package/components/progress-bar/progress-bar.d.ts +1 -1
  190. package/components/progress-bar/{progress-bar.js → progress-bar.jsx} +3 -2
  191. package/components/query-assist/query-assist-suggestions.d.ts +1 -1
  192. package/components/query-assist/{query-assist-suggestions.js → query-assist-suggestions.jsx} +10 -5
  193. package/components/query-assist/query-assist.d.ts +2 -2
  194. package/components/query-assist/{query-assist.js → query-assist.jsx} +46 -8
  195. package/components/radio/radio-item.d.ts +1 -1
  196. package/components/radio/{radio-item.js → radio-item.jsx} +11 -3
  197. package/components/radio/radio.d.ts +1 -1
  198. package/components/radio/{radio.js → radio.jsx} +1 -2
  199. package/components/scrollable-section/scrollable-section.d.ts +1 -1
  200. package/components/scrollable-section/{scrollable-section.js → scrollable-section.jsx} +2 -3
  201. package/components/select/select-filter.d.ts +1 -1
  202. package/components/select/{select-filter.js → select-filter.jsx} +5 -2
  203. package/components/select/select-popup.d.ts +7 -7
  204. package/components/select/{select-popup.js → select-popup.jsx} +43 -13
  205. package/components/select/select.d.ts +3 -3
  206. package/components/select/{select.js → select.jsx} +92 -44
  207. package/components/shortcuts/{shortcuts-hoc.js → shortcuts-hoc.jsx} +3 -2
  208. package/components/slider/{slider.js → slider.jsx} +50 -32
  209. package/components/tab-trap/{tab-trap.js → tab-trap.jsx} +39 -33
  210. package/components/table/cell.d.ts +1 -1
  211. package/components/table/{cell.js → cell.jsx} +3 -2
  212. package/components/table/{disable-hover-hoc.js → disable-hover-hoc.jsx} +2 -3
  213. package/components/table/header-cell.d.ts +1 -1
  214. package/components/table/{header-cell.js → header-cell.jsx} +12 -2
  215. package/components/table/header.d.ts +2 -2
  216. package/components/table/{header.js → header.jsx} +19 -6
  217. package/components/table/multitable.d.ts +1 -1
  218. package/components/table/{multitable.js → multitable.jsx} +4 -3
  219. package/components/table/row-with-focus-sensor.d.ts +1 -1
  220. package/components/table/{row-with-focus-sensor.js → row-with-focus-sensor.jsx} +1 -2
  221. package/components/table/row.d.ts +1 -1
  222. package/components/table/{row.js → row.jsx} +24 -5
  223. package/components/table/{selection-shortcuts-hoc.js → selection-shortcuts-hoc.jsx} +1 -2
  224. package/components/table/simple-table.d.ts +1 -1
  225. package/components/table/{simple-table.js → simple-table.jsx} +2 -3
  226. package/components/table/smart-table.d.ts +1 -1
  227. package/components/table/{smart-table.js → smart-table.jsx} +1 -2
  228. package/components/table/table.d.ts +2 -2
  229. package/components/table/{table.js → table.jsx} +30 -9
  230. package/components/tabs/collapsible-more.d.ts +3 -3
  231. package/components/tabs/{collapsible-more.js → collapsible-more.jsx} +14 -7
  232. package/components/tabs/collapsible-tab.d.ts +1 -1
  233. package/components/tabs/{collapsible-tab.js → collapsible-tab.jsx} +3 -4
  234. package/components/tabs/collapsible-tabs.d.ts +2 -2
  235. package/components/tabs/{collapsible-tabs.js → collapsible-tabs.jsx} +11 -3
  236. package/components/tabs/dumb-tabs.d.ts +2 -2
  237. package/components/tabs/{dumb-tabs.js → dumb-tabs.jsx} +10 -4
  238. package/components/tabs/smart-tabs.d.ts +1 -1
  239. package/components/tabs/{smart-tabs.js → smart-tabs.jsx} +3 -2
  240. package/components/tabs/tab-link.d.ts +1 -1
  241. package/components/tabs/tab-link.jsx +16 -0
  242. package/components/tabs/tab.d.ts +1 -1
  243. package/components/tabs/{tab.js → tab.jsx} +3 -2
  244. package/components/tag/tag.d.ts +5 -5
  245. package/components/tag/{tag.js → tag.jsx} +24 -16
  246. package/components/tags-input/tags-input.d.ts +1 -1
  247. package/components/tags-input/{tags-input.js → tags-input.jsx} +13 -5
  248. package/components/tags-list/tags-list.d.ts +2 -2
  249. package/components/tags-list/{tags-list.js → tags-list.jsx} +8 -4
  250. package/components/text/text.d.ts +1 -1
  251. package/components/text/{text.js → text.jsx} +3 -2
  252. package/components/toggle/toggle.d.ts +1 -1
  253. package/components/toggle/toggle.jsx +37 -0
  254. package/components/tooltip/tooltip.d.ts +1 -1
  255. package/components/tooltip/{tooltip.js → tooltip.jsx} +12 -3
  256. package/components/upload/{upload.js → upload.jsx} +7 -4
  257. package/components/user-agreement/{service.js → service.jsx} +13 -4
  258. package/components/user-agreement/user-agreement.d.ts +1 -1
  259. package/components/user-agreement/user-agreement.jsx +61 -0
  260. package/components/user-card/card.d.ts +1 -1
  261. package/components/user-card/card.jsx +64 -0
  262. package/components/user-card/smart-user-card-tooltip.d.ts +2 -2
  263. package/components/user-card/{smart-user-card-tooltip.js → smart-user-card-tooltip.jsx} +6 -3
  264. package/components/user-card/tooltip.d.ts +2 -2
  265. package/components/user-card/{tooltip.js → tooltip.jsx} +12 -9
  266. package/package.json +28 -33
  267. package/components/avatar-stack/avatar-stack.js +0 -18
  268. package/components/collapse/collapse-content.js +0 -76
  269. package/components/data-list/data-list.mock.js +0 -170
  270. package/components/dropdown/anchor.js +0 -7
  271. package/components/error-bubble/error-bubble.js +0 -17
  272. package/components/error-message/error-message.js +0 -17
  273. package/components/header/services-link.js +0 -15
  274. package/components/list/list-title.js +0 -13
  275. package/components/popup/popup.target.js +0 -7
  276. package/components/tabs/tab-link.js +0 -9
  277. package/components/toggle/toggle.js +0 -22
  278. package/components/user-agreement/user-agreement.js +0 -33
  279. package/components/user-card/card.js +0 -31
  280. /package/components/global/{controls-height.js → controls-height.jsx} +0 -0
  281. /package/components/link/{clickableLink.js → clickableLink.jsx} +0 -0
  282. /package/components/tabs/{custom-item.js → custom-item.jsx} +0 -0
package/babel.config.js CHANGED
@@ -4,6 +4,20 @@ module.exports = function config(api) {
4
4
  api.cache(true);
5
5
 
6
6
  return {
7
+ plugins: [
8
+ [
9
+ 'babel-plugin-react-compiler',
10
+ {
11
+ target: '18', // should be the minimal supported version from peerDependencies
12
+ },
13
+ ],
14
+ [
15
+ 'babel-plugin-transform-define',
16
+ {
17
+ SUPPORTED_BROWSERS: browserslist(),
18
+ },
19
+ ],
20
+ ],
7
21
  presets: [
8
22
  [
9
23
  '@jetbrains/babel-preset-jetbrains',
@@ -17,14 +31,6 @@ module.exports = function config(api) {
17
31
  },
18
32
  ],
19
33
  ],
20
- plugins: [
21
- [
22
- 'babel-plugin-transform-define',
23
- {
24
- SUPPORTED_BROWSERS: browserslist(),
25
- },
26
- ],
27
- ],
28
34
  env: {
29
35
  test: {
30
36
  plugins: ['require-context-hook'],
@@ -92,6 +92,6 @@ export default class Alert extends PureComponent<AlertProps, State> {
92
92
  */
93
93
  private _getIcon;
94
94
  storeAlertRef: (node: HTMLDivElement | null) => void;
95
- render(): import("react/jsx-runtime").JSX.Element;
95
+ render(): React.JSX.Element;
96
96
  }
97
97
  export { default as Container } from './container';
@@ -1,5 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  import { PureComponent } from 'react';
2
+ import * as React from 'react';
3
3
  import classNames from 'classnames';
4
4
  import exceptionIcon from '@jetbrains/icons/exception';
5
5
  import checkmarkIcon from '@jetbrains/icons/checkmark';
@@ -114,11 +114,13 @@ export default class Alert extends PureComponent {
114
114
  * @private
115
115
  */
116
116
  _getCaption() {
117
- return (_jsx("span", { className: classNames(styles.caption, this.props.captionClassName, {
117
+ return (<span className={classNames(styles.caption, this.props.captionClassName, {
118
118
  [styles.withCloseButton]: this.props.closeable,
119
- }), onClick: this._handleCaptionsLinksClick,
120
- // We only process clicks on `a` elements, see above
121
- role: 'presentation', children: this.props.children }));
119
+ })} onClick={this._handleCaptionsLinksClick}
120
+ // We only process clicks on `a` elements, see above
121
+ role='presentation'>
122
+ {this.props.children}
123
+ </span>);
122
124
  }
123
125
  /**
124
126
  * @private
@@ -127,10 +129,10 @@ export default class Alert extends PureComponent {
127
129
  _getIcon() {
128
130
  const glyph = TypeToIcon[this.props.type];
129
131
  if (glyph) {
130
- return _jsx(Icon, { glyph: glyph, className: styles.icon, color: TypeToIconColor[this.props.type] || Color.DEFAULT });
132
+ return <Icon glyph={glyph} className={styles.icon} color={TypeToIconColor[this.props.type] || Color.DEFAULT}/>;
131
133
  }
132
134
  if (this.props.type === AlertType.LOADING) {
133
- return _jsx(Loader, { className: styles.loader });
135
+ return <Loader className={styles.loader}/>;
134
136
  }
135
137
  return '';
136
138
  }
@@ -149,7 +151,11 @@ export default class Alert extends PureComponent {
149
151
  });
150
152
  const height = this.state.height;
151
153
  const style = height ? { marginBottom: -height } : undefined;
152
- return (_jsxs(ThemeProvider, { theme: theme, className: classes, "data-test": dataTests('alert', dataTest), "data-test-type": type, style: style, ref: this.storeAlertRef, children: [this._getIcon(), this._getCaption(), this.props.closeable ? (_jsx(Button, { icon: closeIcon, className: classNames(styles.close, closeButtonClassName), "data-test": 'alert-close', "aria-label": 'close alert', onClick: this.closeRequest })) : ('')] }));
154
+ return (<ThemeProvider theme={theme} className={classes} data-test={dataTests('alert', dataTest)} data-test-type={type} style={style} ref={this.storeAlertRef}>
155
+ {this._getIcon()}
156
+ {this._getCaption()}
157
+ {this.props.closeable ? (<Button icon={closeIcon} className={classNames(styles.close, closeButtonClassName)} data-test='alert-close' aria-label='close alert' onClick={this.closeRequest}/>) : ('')}
158
+ </ThemeProvider>);
153
159
  }
154
160
  }
155
161
  export { default as Container } from './container';
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
1
  import { Children, cloneElement, PureComponent, isValidElement } from 'react';
3
2
  import { createPortal } from 'react-dom';
4
3
  import classNames from 'classnames';
@@ -11,7 +10,8 @@ export default class Alerts extends PureComponent {
11
10
  if (!show) {
12
11
  return null;
13
12
  }
14
- return createPortal(_jsx("div", { "data-test": 'alert-container', className: classes, "aria-live": 'polite', ...restProps, children: Children.map(children, child => {
13
+ return createPortal(<div data-test='alert-container' className={classes} aria-live='polite' {...restProps}>
14
+ {Children.map(children, child => {
15
15
  if (!isValidElement(child)) {
16
16
  return child;
17
17
  }
@@ -19,6 +19,7 @@ export default class Alerts extends PureComponent {
19
19
  return cloneElement(child, {
20
20
  className: alertClassNames,
21
21
  });
22
- }) }), document.body);
22
+ })}
23
+ </div>, document.body);
23
24
  }
24
25
  }
@@ -15,7 +15,7 @@ export declare class AlertService {
15
15
  containerElement: HTMLDivElement;
16
16
  reactRoot: import("react-dom/client").Root;
17
17
  _getShowingAlerts(): AlertItem[];
18
- renderAlertContainer(alerts: readonly AlertItem[]): import("react/jsx-runtime").JSX.Element;
18
+ renderAlertContainer(alerts: readonly AlertItem[]): import("react").JSX.Element;
19
19
  /**
20
20
  * Renders alert container into virtual node to skip maintaining container
21
21
  */
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
1
  import { createRoot } from 'react-dom/client';
3
2
  import getUID from '../global/get-uid';
4
3
  import Alert, { ANIMATION_TIME, Container as AlertContainer } from '../alert/alert';
@@ -17,12 +16,16 @@ export class AlertService {
17
16
  }
18
17
  renderAlertContainer(alerts) {
19
18
  if (alerts.length === 0) {
20
- return _jsx("span", {});
19
+ return <span />;
21
20
  }
22
- return (_jsx(AlertContainer, { children: alerts.map(alert => {
21
+ return (<AlertContainer>
22
+ {alerts.map(alert => {
23
23
  const { message, key, ...rest } = alert;
24
- return (_jsx(Alert, { ...rest, children: message }, key));
25
- }) }));
24
+ return (<Alert key={key} {...rest}>
25
+ {message}
26
+ </Alert>);
27
+ })}
28
+ </AlertContainer>);
26
29
  }
27
30
  /**
28
31
  * Renders alert container into virtual node to skip maintaining container
@@ -9,13 +9,12 @@ import AuthResponseParser from './response-parser';
9
9
  import AuthRequestBuilder from './request-builder';
10
10
  import BackgroundFlow from './background-flow';
11
11
  import TokenValidator from './token-validator';
12
- /* eslint-disable @typescript-eslint/no-magic-numbers */
12
+ /* eslint-disable no-magic-numbers */
13
13
  export const DEFAULT_EXPIRES_TIMEOUT = 40 * 60;
14
14
  export const DEFAULT_BACKGROUND_TIMEOUT = 10 * 1000;
15
15
  const DEFAULT_BACKEND_CHECK_TIMEOUT = 10 * 1000;
16
16
  const BACKGROUND_REDIRECT_TIMEOUT = 20 * 1000;
17
17
  const DEFAULT_WAIT_FOR_REDIRECT_TIMEOUT = 5 * 1000;
18
- /* eslint-enable @typescript-eslint/no-magic-numbers */
19
18
  export const USER_CHANGED_EVENT = 'userChange';
20
19
  export const DOMAIN_USER_CHANGED_EVENT = 'domainUser';
21
20
  export const LOGOUT_EVENT = 'logout';
@@ -480,11 +479,11 @@ class Auth {
480
479
  const actualTranslations = translations ?? getTranslations();
481
480
  this._createInitDeferred();
482
481
  const closeDialog = () => {
483
- /* eslint-disable @typescript-eslint/no-use-before-define */
482
+ /* eslint-disable no-use-before-define */
484
483
  stopTokenListening?.();
485
484
  stopMessageListening?.();
486
485
  hide?.();
487
- /* eslint-enable @typescript-eslint/no-use-before-define */
486
+ /* eslint-enable no-use-before-define */
488
487
  };
489
488
  const onConfirm = () => {
490
489
  if (!embeddedLogin) {
@@ -540,7 +539,7 @@ class Auth {
540
539
  this._createInitDeferred();
541
540
  const done = () => {
542
541
  this._initDeferred?.resolve?.();
543
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
542
+ // eslint-disable-next-line no-use-before-define
544
543
  hide?.();
545
544
  };
546
545
  const hide = this._authDialogService?.({
@@ -595,11 +594,11 @@ class Auth {
595
594
  let timerId;
596
595
  return new Promise((resolve, reject) => {
597
596
  const done = () => {
598
- /* eslint-disable @typescript-eslint/no-use-before-define */
597
+ /* eslint-disable no-use-before-define */
599
598
  hide();
600
599
  window.removeEventListener('online', onCheckAgain);
601
600
  stopListeningCloseMessage?.();
602
- /* eslint-enable @typescript-eslint/no-use-before-define */
601
+ /* eslint-enable no-use-before-define */
603
602
  this._storage?.sendMessage(Auth.CLOSE_BACKEND_DOWN_MESSAGE, Date.now());
604
603
  clearTimeout(timerId);
605
604
  };
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import * as React from 'react';
2
2
  import alertService from '../alert-service/alert-service';
3
3
  import Alert from '../alert/alert';
4
4
  import Link from '../link/link';
@@ -18,7 +18,15 @@ function renderAlert(message, type = Alert.Type.WARNING) {
18
18
  }
19
19
  function Message({ translations, onCheckAgain }) {
20
20
  const { backendIsNotAvailable, checkAgain, errorMessage } = translations;
21
- return (_jsxs("div", { "data-test": 'ring-backend-down-notification', children: [_jsx(Group, { children: _jsx("div", { className: styles.title, children: backendIsNotAvailable }) }), _jsxs("span", { className: styles.error, children: [errorMessage, " "] }), _jsx(Link, { onClick: onCheckAgain, "data-test": 'check-again', children: checkAgain })] }));
21
+ return (<div data-test='ring-backend-down-notification'>
22
+ <Group>
23
+ <div className={styles.title}>{backendIsNotAvailable}</div>
24
+ </Group>
25
+ <span className={styles.error}>{errorMessage} </span>
26
+ <Link onClick={onCheckAgain} data-test='check-again'>
27
+ {checkAgain}
28
+ </Link>
29
+ </div>);
22
30
  }
23
31
  export default function onBackendDown({ onCheckAgain, translations }) {
24
32
  async function checkAgainWithoutClosing(e) {
@@ -29,9 +37,9 @@ export default function onBackendDown({ onCheckAgain, translations }) {
29
37
  await onCheckAgain();
30
38
  }
31
39
  catch (err) {
32
- renderAlert(_jsx(Message, { translations: translations, onCheckAgain: checkAgainWithoutClosing }));
40
+ renderAlert(<Message translations={translations} onCheckAgain={checkAgainWithoutClosing}/>);
33
41
  }
34
42
  }
35
- renderAlert(_jsx(Message, { translations: translations, onCheckAgain: checkAgainWithoutClosing }));
43
+ renderAlert(<Message translations={translations} onCheckAgain={checkAgainWithoutClosing}/>);
36
44
  return () => alertService.remove(key);
37
45
  }
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
1
  import loginDialogService from '../login-dialog/service';
3
2
  import Link from '../link/link';
4
3
  import AuthResponseParser from './response-parser';
@@ -21,13 +20,15 @@ export default class IFrameFlow {
21
20
  */
22
21
  async _load() {
23
22
  const authRequest = await this._requestBuilder.prepareAuthRequest({ request_credentials: 'required', auth_mode: 'bypass_to_login' }, { nonRedirect: false });
24
- const renderFallbackLink = () => (_jsx(Link, { href: authRequest.url, target: '_self', children: this._translations.nothingHappensLink }));
23
+ const renderFallbackLink = () => (<Link href={authRequest.url} target='_self'>
24
+ {this._translations.nothingHappensLink}
25
+ </Link>);
25
26
  return new Promise((resolve, reject) => {
26
27
  this.hideDialog = loginDialogService({
27
28
  url: authRequest.url,
28
29
  loader: true,
29
30
  onCancel: () => {
30
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
31
+ // eslint-disable-next-line no-use-before-define
31
32
  cleanUp();
32
33
  this.stop();
33
34
  },
@@ -36,14 +37,14 @@ export default class IFrameFlow {
36
37
  this.reject = reject;
37
38
  const removeTokenListener = this._storage.onTokenChange(token => {
38
39
  if (token) {
39
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
40
+ // eslint-disable-next-line no-use-before-define
40
41
  cleanUp();
41
42
  resolve(token.accessToken);
42
43
  }
43
44
  });
44
45
  const removeStateListener = this._storage.onStateChange(authRequest.stateId, state => {
45
46
  if (state && state.error) {
46
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
47
+ // eslint-disable-next-line no-use-before-define
47
48
  cleanUp();
48
49
  reject(new AuthResponseParser.AuthError(state));
49
50
  }
@@ -12,7 +12,7 @@ import Storage from '../storage/storage';
12
12
  * @property {string[]} scopes
13
13
  */
14
14
  const DEFAULT_STATE_QUOTA = 102400; // 100 kb ~~ 200 tabs with a large list of scopes
15
- // eslint-disable-next-line @typescript-eslint/no-magic-numbers
15
+ // eslint-disable-next-line no-magic-numbers
16
16
  const DEFAULT_STATE_TTL = 1000 * 60 * 60 * 24; // nobody will need auth state after a day
17
17
  const UPDATE_USER_TIMEOUT = 1000;
18
18
  export default class AuthStorage {
@@ -30,7 +30,7 @@ export default class TokenValidator {
30
30
  /**
31
31
  * @const {number}
32
32
  */
33
- // eslint-disable-next-line @typescript-eslint/no-magic-numbers
33
+ // eslint-disable-next-line no-magic-numbers
34
34
  static DEFAULT_REFRESH_BEFORE = 10 * 60; // 20 min in s
35
35
  /**
36
36
  * Error class for auth token validation
@@ -39,10 +39,10 @@ export default class WindowFlow {
39
39
  return;
40
40
  }
41
41
  cleanRun = true;
42
- /* eslint-disable @typescript-eslint/no-use-before-define */
42
+ /* eslint-disable no-use-before-define */
43
43
  removeStateListener();
44
44
  removeTokenListener();
45
- /* eslint-enable @typescript-eslint/no-use-before-define */
45
+ /* eslint-enable no-use-before-define */
46
46
  this._loginWindow?.close();
47
47
  clearTimeout(this._timeoutId);
48
48
  };
@@ -38,5 +38,5 @@ export default class AuthDialog extends Component<AuthDialogProps> {
38
38
  componentWillUnmount(): void;
39
39
  onEscPress: () => void;
40
40
  onRetryPress: () => Promise<void>;
41
- render(): import("react/jsx-runtime").JSX.Element;
41
+ render(): import("react").JSX.Element;
42
42
  }
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  import { Component } from 'react';
3
2
  import classNames from 'classnames';
4
3
  import { Content } from '../island/island';
@@ -54,6 +53,23 @@ export default class AuthDialog extends Component {
54
53
  const title = (this.props.title || defaultTitle)
55
54
  .replace('%serviceName%', serviceName ?? '')
56
55
  .replace('{{serviceName}}', serviceName ?? '');
57
- return (_jsx(Dialog, { label: title, "data-test": 'ring-auth-dialog', className: className, contentClassName: classNames(className, styles.dialog), onEscPress: this.onEscPress, show: show, trapFocus: true, children: _jsx(Content, { children: _jsxs("div", { className: styles.content, children: [serviceImage && _jsx("img", { alt: `${serviceName} logo`, className: styles.logo, src: serviceImage }), _jsx(H2, { className: styles.title, children: title }), errorMessage && _jsx("div", { className: styles.error, children: errorMessage }), _jsx(Button, { primary: true, className: styles.firstButton, "data-test": 'auth-dialog-confirm-button', onClick: onConfirm, children: confirmLabel }), onTryAgain && (_jsx(Button, { className: styles.button, "data-test": 'auth-dialog-retry-button', onClick: () => this.onRetryPress(), loader: retrying, disabled: retrying, children: tryAgainLabel })), _jsx(Button, { className: styles.button, "data-test": 'auth-dialog-cancel-button', onClick: onCancel, children: cancelLabel })] }) }) }));
56
+ return (<Dialog label={title} data-test='ring-auth-dialog' className={className} contentClassName={classNames(className, styles.dialog)} onEscPress={this.onEscPress} show={show} trapFocus>
57
+ <Content>
58
+ <div className={styles.content}>
59
+ {serviceImage && <img alt={`${serviceName} logo`} className={styles.logo} src={serviceImage}/>}
60
+ <H2 className={styles.title}>{title}</H2>
61
+ {errorMessage && <div className={styles.error}>{errorMessage}</div>}
62
+ <Button primary className={styles.firstButton} data-test='auth-dialog-confirm-button' onClick={onConfirm}>
63
+ {confirmLabel}
64
+ </Button>
65
+ {onTryAgain && (<Button className={styles.button} data-test='auth-dialog-retry-button' onClick={() => this.onRetryPress()} loader={retrying} disabled={retrying}>
66
+ {tryAgainLabel}
67
+ </Button>)}
68
+ <Button className={styles.button} data-test='auth-dialog-cancel-button' onClick={onCancel}>
69
+ {cancelLabel}
70
+ </Button>
71
+ </div>
72
+ </Content>
73
+ </Dialog>);
58
74
  }
59
75
  }
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
1
  import { createRoot } from 'react-dom/client';
3
2
  import { ControlsHeightContext, getGlobalControlsHeight } from '../global/controls-height';
4
3
  import AuthDialog from '../auth-dialog/auth-dialog';
@@ -11,7 +10,9 @@ export const reactRoot = createRoot(containerElement);
11
10
  * Renders AuthDialog into virtual node to skip maintaining container
12
11
  */
13
12
  function renderAuthDialog(props) {
14
- reactRoot.render(_jsx(ControlsHeightContext.Provider, { value: getGlobalControlsHeight(), children: _jsx(AuthDialog, { ...props }) }));
13
+ reactRoot.render(<ControlsHeightContext.Provider value={getGlobalControlsHeight()}>
14
+ <AuthDialog {...props}/>
15
+ </ControlsHeightContext.Provider>);
15
16
  }
16
17
  export default function showAuthDialog(props = {}) {
17
18
  renderAuthDialog({
@@ -5,5 +5,5 @@ interface InfoAvatarProps {
5
5
  children?: ReactNode;
6
6
  }
7
7
  export declare const fontSizes: Record<Size, number>;
8
- export default function AvatarInfo({ size, children }: InfoAvatarProps): import("react/jsx-runtime").JSX.Element;
8
+ export default function AvatarInfo({ size, children }: InfoAvatarProps): import("react").JSX.Element;
9
9
  export {};
@@ -1,7 +1,6 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
1
  import classNames from 'classnames';
3
- import styles from './avatar.css';
4
2
  import { Size } from './avatar-size';
3
+ import styles from './avatar.css';
5
4
  export const fontSizes = {
6
5
  [Size.Size16]: 9,
7
6
  [Size.Size18]: 9,
@@ -15,5 +14,7 @@ export const fontSizes = {
15
14
  };
16
15
  export default function AvatarInfo({ size, children }) {
17
16
  const fontSize = fontSizes[size];
18
- return (_jsx("span", { style: { fontSize }, className: classNames(styles.avatarInfo), children: children }));
17
+ return (<span style={{ fontSize }} className={classNames(styles.avatarInfo)}>
18
+ {children}
19
+ </span>);
19
20
  }
@@ -24,6 +24,6 @@ export default class Avatar extends PureComponent<AvatarProps> {
24
24
  };
25
25
  handleError: () => void;
26
26
  handleSuccess: () => void;
27
- render(): import("react/jsx-runtime").JSX.Element;
27
+ render(): import("react").JSX.Element;
28
28
  }
29
29
  export type AvatarAttrs = React.JSX.LibraryManagedAttributes<typeof Avatar, AvatarProps>;
@@ -1,14 +1,13 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  import { PureComponent } from 'react';
3
2
  import classNames from 'classnames';
4
3
  import deprecate from 'util-deprecate';
5
4
  import { encodeURL, isDataURI, parseQueryString } from '../global/url';
6
5
  import { getPixelRatio } from '../global/dom';
7
6
  import memoize from '../global/memoize';
8
- import styles from './avatar.css';
9
7
  import FallbackAvatar from './fallback-avatar';
10
8
  import { Size } from './avatar-size';
11
9
  import AvatarInfo from './avatar-info';
10
+ import styles from './avatar.css';
12
11
  export { Size };
13
12
  const warnSize = memoize((size) => deprecate(() => { }, `Avatar: Size${size} is deprecated and will be removed in 8.0. The supported sizes are: Size20, Size24, Size28, Size32, Size40.`));
14
13
  export default class Avatar extends PureComponent {
@@ -49,9 +48,12 @@ export default class Avatar extends PureComponent {
49
48
  [styles.round]: round,
50
49
  });
51
50
  if (!url || this.state.errorUrl === url) {
52
- return (_jsxs("span", { ...restProps, "data-test": 'avatar', className: classNames(classes, {
51
+ return (<span {...restProps} data-test='avatar' className={classNames(classes, {
53
52
  [styles.empty]: (username === null || username === undefined) && (info === null || info === undefined),
54
- }), style: styleObj, children: [username && _jsx(FallbackAvatar, { size: size, round: round, username: username }), info && _jsx(AvatarInfo, { size: size, children: info })] }));
53
+ })} style={styleObj}>
54
+ {username && <FallbackAvatar size={size} round={round} username={username}/>}
55
+ {info && <AvatarInfo size={size}>{info}</AvatarInfo>}
56
+ </span>);
55
57
  }
56
58
  let src = url;
57
59
  if (!skipParams && !isDataURI(url)) {
@@ -72,8 +74,11 @@ export default class Avatar extends PureComponent {
72
74
  subavatarSizeString,
73
75
  };
74
76
  subavatarSrc = skipParams ? subavatar : encodeURL(urlStart, queryParams);
75
- return (_jsxs("div", { children: [_jsx("img", { ...restProps, onError: this.handleError, onLoad: this.handleSuccess, className: classNames(classes, styles.avatarShadow), style: styleObj, src: src, alt: 'User avatar' }), _jsx("img", { ...restProps, "data-test": 'avatar', onError: this.handleError, onLoad: this.handleSuccess, className: classNames(styles.subavatar), style: styleObjGroup, src: subavatarSrc, alt: 'Subavatar' })] }));
77
+ return (<div>
78
+ <img {...restProps} onError={this.handleError} onLoad={this.handleSuccess} className={classNames(classes, styles.avatarShadow)} style={styleObj} src={src} alt='User avatar'/>
79
+ <img {...restProps} data-test='avatar' onError={this.handleError} onLoad={this.handleSuccess} className={classNames(styles.subavatar)} style={styleObjGroup} src={subavatarSrc} alt='Subavatar'/>
80
+ </div>);
76
81
  }
77
- return (_jsx("img", { ...restProps, "data-test": 'avatar', onError: this.handleError, onLoad: this.handleSuccess, className: classNames(classes, styles.avatarShadow), style: styleObj, src: src, alt: 'User avatar' }));
82
+ return (<img {...restProps} data-test='avatar' onError={this.handleError} onLoad={this.handleSuccess} className={classNames(classes, styles.avatarShadow)} style={styleObj} src={src} alt='User avatar'/>);
78
83
  }
79
84
  }
@@ -4,4 +4,4 @@ export interface FallbackAvatarProps {
4
4
  size: Size;
5
5
  round: boolean | null | undefined;
6
6
  }
7
- export default function FallbackAvatar({ username, size, round }: FallbackAvatarProps): import("react/jsx-runtime").JSX.Element;
7
+ export default function FallbackAvatar({ username, size, round }: FallbackAvatarProps): import("react").JSX.Element;
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  import { useMemo } from 'react';
3
2
  import getUID from '../global/get-uid';
4
3
  import { Size } from './avatar-size';
@@ -186,5 +185,20 @@ export default function FallbackAvatar({ username, size, round }) {
186
185
  const underscore = sizes.underscore;
187
186
  const radius = round ? '50%' : sizes.radius;
188
187
  const gradientId = useMemo(() => getUID('gradient-'), []);
189
- return (_jsxs("svg", { viewBox: `0 0 ${size} ${size}`, xmlns: 'http://www.w3.org/2000/svg', children: [_jsx("defs", { children: _jsxs("linearGradient", { id: gradientId, x1: '1', y1: '1', x2: '0', y2: '0', children: [_jsx("stop", { stopColor: fromColor, offset: '0' }), _jsx("stop", { stopColor: toColor, offset: '0.8' })] }) }), _jsxs("g", { children: [_jsx("rect", { fill: `url(#${gradientId})`, x: '0', y: '0', width: size, height: size, rx: radius, ry: radius }), _jsx("text", { x: sizes.text.x, y: sizes.text.y, fontFamily: "var(--ring-font-family, 'Arial, Helvetica, sans-serif')", fontSize: sizes.fontSize, fontWeight: '600', letterSpacing: sizes.letterSpacing, fill: '#FFFFFF', dominantBaseline: sizes.dominantBaseline, textAnchor: sizes.textAnchor, cursor: 'default', children: _jsx("tspan", { children: extractLetters(username) }) }), underscore && (_jsx("rect", { fill: '#FFFFFF', x: underscore.x, y: underscore.y, width: underscore.width, height: underscore.height })), _jsx("title", { children: username })] })] }));
188
+ return (<svg viewBox={`0 0 ${size} ${size}`} xmlns='http://www.w3.org/2000/svg'>
189
+ <defs>
190
+ <linearGradient id={gradientId} x1='1' y1='1' x2='0' y2='0'>
191
+ <stop stopColor={fromColor} offset='0'/>
192
+ <stop stopColor={toColor} offset='0.8'/>
193
+ </linearGradient>
194
+ </defs>
195
+ <g>
196
+ <rect fill={`url(#${gradientId})`} x='0' y='0' width={size} height={size} rx={radius} ry={radius}/>
197
+ <text x={sizes.text.x} y={sizes.text.y} fontFamily="var(--ring-font-family, 'Arial, Helvetica, sans-serif')" fontSize={sizes.fontSize} fontWeight='600' letterSpacing={sizes.letterSpacing} fill='#FFFFFF' dominantBaseline={sizes.dominantBaseline} textAnchor={sizes.textAnchor} cursor='default'>
198
+ <tspan>{extractLetters(username)}</tspan>
199
+ </text>
200
+ {underscore && (<rect fill='#FFFFFF' x={underscore.x} y={underscore.y} width={underscore.width} height={underscore.height}/>)}
201
+ <title>{username}</title>
202
+ </g>
203
+ </svg>);
190
204
  }
@@ -12,4 +12,4 @@ export interface AvatarProps<T = unknown> extends HTMLAttributes<HTMLDivElement>
12
12
  extraItems?: readonly ListDataItem<T>[] | null | undefined;
13
13
  dropdownMenuProps?: DropdownMenuProps<T> | null | undefined;
14
14
  }
15
- export default function AvatarStack({ children, className, size, extraItems, dropdownMenuProps, ...restProps }: AvatarProps): import("react/jsx-runtime").JSX.Element;
15
+ export default function AvatarStack({ children, className, size, extraItems, dropdownMenuProps, ...restProps }: AvatarProps): import("react").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { Children, useState } from 'react';
2
+ import classNames from 'classnames';
3
+ import DropdownMenu from '../dropdown-menu/dropdown-menu';
4
+ import Avatar, { Size } from '../avatar/avatar';
5
+ import { fontSizes } from '../avatar/avatar-info';
6
+ import styles from './avatar-stack.css';
7
+ export default function AvatarStack({ children, className, size = Size.Size20, extraItems, dropdownMenuProps, ...restProps }) {
8
+ const [dropdownOpen, setDropdownOpen] = useState(false);
9
+ return (<div className={classNames(styles.avatarStack, className, styles[`size${size}`], {
10
+ [styles.hovered]: dropdownOpen,
11
+ })} {...restProps} style={{ height: size, ...restProps.style }}>
12
+ {Children.map(children, (child, index) => (<div className={styles.item} style={{ '--ring-avatar-stack-index': index }}>
13
+ {child}
14
+ </div>))}
15
+ {extraItems?.length ? (<DropdownMenu hoverMode hoverShowTimeOut={10} onShow={() => setDropdownOpen(true)} onHide={() => setDropdownOpen(false)} className={styles.extra} style={{
16
+ width: size,
17
+ height: size,
18
+ '--ring-avatar-stack-index': Children.count(children),
19
+ fontSize: fontSizes[size],
20
+ }} anchor={(<button type='button' className={styles.extraButton}>
21
+ <Avatar size={size} info={<span className={styles.extraText}>{`+${extraItems.length}`}</span>}/>
22
+ </button>)} data={extraItems} menuProps={{ offset: 4, ...dropdownMenuProps?.menuProps }} {...dropdownMenuProps}/>) : null}
23
+ </div>);
24
+ }
@@ -14,6 +14,6 @@ export interface BannerProps {
14
14
  ['data-test']?: string;
15
15
  translations?: BannerTranslations;
16
16
  }
17
- export declare function Banner(props: BannerProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function Banner(props: BannerProps): React.JSX.Element;
18
18
  declare const _default: React.MemoExoticComponent<typeof Banner>;
19
19
  export default _default;
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  import React from 'react';
3
2
  import classnames from 'classnames';
4
3
  import infoIcon from '@jetbrains/icons/info-filled';
@@ -24,7 +23,7 @@ export function Banner(props) {
24
23
  else if (mode === 'warning') {
25
24
  icon = warningIcon;
26
25
  }
27
- return (_jsxs("div", { className: classnames({
26
+ return (<div className={classnames({
28
27
  [styles.banner]: true,
29
28
  [styles.inline]: inline,
30
29
  [styles.info]: mode === 'info',
@@ -33,6 +32,19 @@ export function Banner(props) {
33
32
  [styles.warning]: mode === 'warning',
34
33
  [styles.purple]: mode === 'purple',
35
34
  [styles.grey]: mode === 'grey',
36
- }, className), "data-test": dataTest, children: [withIcon && _jsx(Icon, { glyph: icon, className: styles.icon }), _jsxs("div", { children: [title && _jsx("div", { className: styles.title, children: title }), _jsx("div", { className: styles.description, children: children })] }), onClose && (_jsx(Tooltip, { title: closeButtonTitle ?? translations.close, className: styles.closeButtonWrapper, children: _jsx(Link, { className: styles.closeButton, pseudo: true, onClick: onClose, "aria-label": 'Close', children: _jsx(Icon, { glyph: closeIcon }) }) }))] }));
35
+ }, className)} data-test={dataTest}>
36
+ {withIcon && <Icon glyph={icon} className={styles.icon}/>}
37
+
38
+ <div>
39
+ {title && <div className={styles.title}>{title}</div>}
40
+ <div className={styles.description}>{children}</div>
41
+ </div>
42
+
43
+ {onClose && (<Tooltip title={closeButtonTitle ?? translations.close} className={styles.closeButtonWrapper}>
44
+ <Link className={styles.closeButton} pseudo onClick={onClose} aria-label='Close'>
45
+ <Icon glyph={closeIcon}/>
46
+ </Link>
47
+ </Tooltip>)}
48
+ </div>);
37
49
  }
38
50
  export default React.memo(Banner);
@@ -3,4 +3,4 @@ export interface BreadcrumbsSeparatorAttrs {
3
3
  separatorClassName?: string | null | undefined;
4
4
  children?: ReactNode;
5
5
  }
6
- export default function Breadcrumbs({ separatorClassName, children }: BreadcrumbsSeparatorAttrs): import("react/jsx-runtime").JSX.Element[];
6
+ export default function Breadcrumbs({ separatorClassName, children }: BreadcrumbsSeparatorAttrs): import("react").JSX.Element[];
@@ -1,9 +1,11 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  import classNames from 'classnames';
3
2
  import { Children, Fragment } from 'react';
4
3
  import styles from './breadcrumbs.css';
5
4
  export default function Breadcrumbs({ separatorClassName, children }) {
6
5
  return Children.toArray(children).map((child, index) => (
7
6
  // eslint-disable-next-line react/no-array-index-key
8
- _jsxs(Fragment, { children: [index > 0 && _jsx("span", { className: classNames(styles.separator, separatorClassName), children: '/' }), child] }, index)));
7
+ <Fragment key={index}>
8
+ {index > 0 && <span className={classNames(styles.separator, separatorClassName)}>{'/'}</span>}
9
+ {child}
10
+ </Fragment>));
9
11
  }
@@ -54,7 +54,7 @@ export declare class Button extends PureComponent<ButtonProps> {
54
54
  static contextType: React.Context<ControlsHeight | (() => ControlsHeight)>;
55
55
  context: React.ContextType<typeof ControlsHeightContext>;
56
56
  buttonRef: React.RefObject<HTMLButtonElement | null>;
57
- render(): import("react/jsx-runtime").JSX.Element;
57
+ render(): React.JSX.Element;
58
58
  }
59
59
  export { Size as IconSize };
60
60
  export type ContainerProps<T extends ButtonProps> = React.JSX.LibraryManagedAttributes<typeof Button, T>;