superdesk-ui-framework 3.0.66 → 3.0.68

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 (78) hide show
  1. package/app/styles/components/_list-item.scss +22 -11
  2. package/app-typescript/components/Autocomplete.tsx +9 -3
  3. package/app-typescript/components/Badge.tsx +16 -2
  4. package/app-typescript/components/Dropdown.tsx +3 -1
  5. package/app-typescript/components/DropdownFirst.tsx +14 -2
  6. package/app-typescript/components/DurationInput.tsx +19 -4
  7. package/app-typescript/components/EmptyState.tsx +11 -2
  8. package/app-typescript/components/Layouts/Panel.tsx +12 -1
  9. package/app-typescript/components/Lists/ContentList.tsx +5 -1
  10. package/app-typescript/components/Modal.tsx +10 -1
  11. package/app-typescript/components/Navigation/BottomNav.tsx +9 -2
  12. package/app-typescript/components/Navigation/QuickNavBar.tsx +10 -2
  13. package/app-typescript/components/Navigation/SideBarMenu.tsx +9 -4
  14. package/app-typescript/components/SidebarMenu.tsx +8 -1
  15. package/app-typescript/components/TabList.tsx +5 -1
  16. package/app-typescript/components/TagInput.tsx +4 -1
  17. package/app-typescript/components/ThemeSelector.tsx +13 -2
  18. package/app-typescript/components/TreeMenu.tsx +127 -122
  19. package/app-typescript/components/TreeSelect/TreeSelect.tsx +157 -141
  20. package/app-typescript/components/WithPortal.tsx +49 -0
  21. package/app-typescript/components/avatar/avatar-image.tsx +2 -0
  22. package/app-typescript/components/avatar/avatar.tsx +2 -1
  23. package/dist/examples.bundle.js +1446 -1318
  24. package/dist/playgrounds/planning.html +121 -43
  25. package/dist/playgrounds/react-playgrounds/CoreLayout.tsx +398 -385
  26. package/dist/playgrounds/react-playgrounds/EditorTest.tsx +359 -365
  27. package/dist/playgrounds/react-playgrounds/FirstPlayground.tsx +33 -33
  28. package/dist/playgrounds/react-playgrounds/Multiedit.tsx +227 -231
  29. package/dist/playgrounds/react-playgrounds/PageLayoutTest.tsx +41 -38
  30. package/dist/playgrounds/react-playgrounds/PersonalProfile.tsx +76 -96
  31. package/dist/playgrounds/react-playgrounds/RundownEditor.tsx +73 -101
  32. package/dist/playgrounds/react-playgrounds/Rundowns.tsx +788 -729
  33. package/dist/playgrounds/react-playgrounds/SamsPlayground.tsx +35 -26
  34. package/dist/playgrounds/react-playgrounds/TestGround.tsx +99 -128
  35. package/dist/playgrounds/react-playgrounds/UiPlayground.tsx +40 -25
  36. package/dist/playgrounds/react-playgrounds/components/GraphicButton.tsx +6 -5
  37. package/dist/playgrounds/react-playgrounds/components/Layout.tsx +0 -2
  38. package/dist/playgrounds/react-playgrounds/components/SearchBar.tsx +16 -9
  39. package/dist/playgrounds/react-playgrounds/tsconfig.json +4 -0
  40. package/dist/superdesk-ui.bundle.css +24 -14
  41. package/dist/superdesk-ui.bundle.js +830 -727
  42. package/dist/vendor.bundle.js +14 -14
  43. package/examples/pages/playgrounds/planning.html +121 -43
  44. package/examples/pages/playgrounds/react-playgrounds/CoreLayout.tsx +398 -385
  45. package/examples/pages/playgrounds/react-playgrounds/EditorTest.tsx +359 -365
  46. package/examples/pages/playgrounds/react-playgrounds/FirstPlayground.tsx +33 -33
  47. package/examples/pages/playgrounds/react-playgrounds/Multiedit.tsx +227 -231
  48. package/examples/pages/playgrounds/react-playgrounds/PageLayoutTest.tsx +41 -38
  49. package/examples/pages/playgrounds/react-playgrounds/PersonalProfile.tsx +76 -96
  50. package/examples/pages/playgrounds/react-playgrounds/RundownEditor.tsx +73 -101
  51. package/examples/pages/playgrounds/react-playgrounds/Rundowns.tsx +788 -729
  52. package/examples/pages/playgrounds/react-playgrounds/SamsPlayground.tsx +35 -26
  53. package/examples/pages/playgrounds/react-playgrounds/TestGround.tsx +99 -128
  54. package/examples/pages/playgrounds/react-playgrounds/UiPlayground.tsx +40 -25
  55. package/examples/pages/playgrounds/react-playgrounds/components/GraphicButton.tsx +6 -5
  56. package/examples/pages/playgrounds/react-playgrounds/components/Layout.tsx +0 -2
  57. package/examples/pages/playgrounds/react-playgrounds/components/SearchBar.tsx +16 -9
  58. package/examples/pages/playgrounds/react-playgrounds/tsconfig.json +4 -0
  59. package/package.json +3 -2
  60. package/react/components/Autocomplete.js +2 -2
  61. package/react/components/Badge.js +1 -1
  62. package/react/components/Dropdown.js +3 -1
  63. package/react/components/DropdownFirst.js +6 -2
  64. package/react/components/DurationInput.js +5 -1
  65. package/react/components/EmptyState.js +2 -1
  66. package/react/components/Lists/ContentList.js +1 -1
  67. package/react/components/Navigation/BottomNav.js +4 -1
  68. package/react/components/Navigation/QuickNavBar.js +2 -1
  69. package/react/components/Navigation/SideBarMenu.js +3 -1
  70. package/react/components/TabList.js +2 -1
  71. package/react/components/TagInput.js +1 -1
  72. package/react/components/TreeSelect/TreeSelect.d.ts +3 -2
  73. package/react/components/TreeSelect/TreeSelect.js +81 -73
  74. package/react/components/WithPortal.d.ts +14 -0
  75. package/react/components/WithPortal.js +69 -0
  76. package/react/components/avatar/avatar.js +2 -1
  77. /package/dist/playgrounds/dummy-data/{items.js → items.ts} +0 -0
  78. /package/examples/pages/playgrounds/dummy-data/{items.js → items.ts} +0 -0
@@ -549,22 +549,34 @@ $sd-ListItem-column-border: var(--sd-colour-line--x-light);
549
549
 
550
550
  // NESTED list items
551
551
  .sd-list-item-nested {
552
- display: flex;
553
- flex-direction: column;
554
- //margin-block-start: .8rem;
552
+ --parent-item-height: 58px;
553
+ display: grid;
554
+ grid-template-rows: var(--parent-item-height) 0fr;
555
+ transition: grid-template-rows 0.3s ease-out;
556
+ & > .sd-list-item {
557
+ max-height: var(--parent-item-height);
558
+ height: var(--parent-item-height);
559
+ }
555
560
  }
556
561
 
557
562
  .sd-list-item-nested__childs {
558
563
  position: relative;
559
564
  z-index: 0;
560
- display: flex;
561
- flex-direction: column;
565
+ overflow: hidden !important;
566
+ display: grid;
567
+ grid-template-rows: 1fr;
562
568
  margin-inline-start: 1rem;
569
+ transition: all 0.3s ease-out;
563
570
 
564
571
  .sd-list-item {
565
572
  margin-block-start: 0;
566
573
  border-block-start: 1px solid var(--sd-colour-line--x-light);
567
574
  }
575
+ .sd-list-item-nested__childs-inner {
576
+ overflow: hidden;
577
+ opacity: 0;
578
+ transition: opacity 0.2s ease-out;
579
+ }
568
580
  }
569
581
 
570
582
  .sd-list-item-nested__parent {
@@ -574,19 +586,18 @@ $sd-ListItem-column-border: var(--sd-colour-line--x-light);
574
586
 
575
587
  .sd-list-item-nested--collapsed {
576
588
  .sd-list-item-nested__childs {
577
- transition: all ease-in 0.2s;
578
- max-height: 0;
579
589
  opacity: 0;
580
- margin-block-end: 0;
581
- overflow: hidden;
582
590
  }
583
591
  }
584
592
 
585
593
  .sd-list-item-nested--expanded {
594
+ grid-template-rows: var(--parent-item-height) 1fr;
586
595
  .sd-list-item-nested__childs {
587
- transition: all ease-in 0.2s;
588
- max-height: 114rem;
596
+ grid-template-rows: 1fr;
589
597
  opacity: 1;
598
+ .sd-list-item-nested__childs-inner {
599
+ opacity: 1;
600
+ }
590
601
  }
591
602
  }
592
603
 
@@ -146,9 +146,15 @@ export class Autocomplete extends React.Component<IProps, IState> {
146
146
  onChange={(event: {originalEvent: Event, value: any}) => this.handleChange(event)}
147
147
  onSelect={(event: {originalEvent: Event, value: any}) => this.handleSelect(event)} />
148
148
 
149
- {this.props.isSearchField && this.state.selectedItem ?
150
- <button className="sd-searchbar__cancel" onClick={() => this.handleInputClear()}><i className="icon-remove-sign" aria-label="remove-sign"></i></button>
151
- : null }
149
+ {this.props.isSearchField && this.state.selectedItem
150
+ ? <button
151
+ className="sd-searchbar__cancel"
152
+ onClick={() => this.handleInputClear()}
153
+ >
154
+ <i className="icon-remove-sign" aria-label="remove-sign" />
155
+ </button>
156
+ : null
157
+ }
152
158
 
153
159
  {!this.props.isSearchField ?
154
160
  <div className='sd-input__message-box'>
@@ -22,11 +22,25 @@ export class Badge extends React.PureComponent<IProps> {
22
22
  return (
23
23
  <div className='element-with-badge' data-test-id={this.props['data-test-id']}>
24
24
  {this.props.children}
25
- <span className={classes} style={{backgroundColor: this.props.hexColor}} data-test-id="badge-content">{this.props.text}</span>
25
+ <span
26
+ className={classes}
27
+ style={{backgroundColor: this.props.hexColor}}
28
+ data-test-id="badge-content"
29
+ >
30
+ {this.props.text}
31
+ </span>
26
32
  </div>
27
33
  );
28
34
  } else {
29
- return <span className={classes} style={{backgroundColor: this.props.hexColor}} data-test-id={this.props['data-test-id']}>{this.props.text}</span>;
35
+ return (
36
+ <span
37
+ className={classes}
38
+ style={{backgroundColor: this.props.hexColor}}
39
+ data-test-id={this.props['data-test-id']}
40
+ >
41
+ {this.props.text}
42
+ </span>
43
+ );
30
44
  }
31
45
  }
32
46
  }
@@ -259,7 +259,9 @@ export const Dropdown = ({
259
259
  <div ref={buttonRef} style={{ display: 'content' }}>
260
260
  {(() => {
261
261
  const attrs = {
262
- className: children.props.className ? (children.props.className + ' dropdown__toggle dropdown-toggle') : 'dropdown__toggle dropdown-toggle',
262
+ className: children.props.className
263
+ ? (children.props.className + ' dropdown__toggle dropdown-toggle')
264
+ : 'dropdown__toggle dropdown-toggle',
263
265
  'aria-haspopup': "menu",
264
266
  'aria-expanded': open,
265
267
  onClick: toggleDisplay,
@@ -125,7 +125,13 @@ export const DropdownFirst = ({
125
125
  if (headerFooter) {
126
126
  return (
127
127
  <div className={classes} >
128
- <button className={navDropdown ? 'dropdown__toggle navbtn dropdown-toggle' : 'dropdown__toggle nav-btn dropdown-toggle'} onClick={isOpen}>
128
+ <button
129
+ className={navDropdown
130
+ ? 'dropdown__toggle navbtn dropdown-toggle'
131
+ : 'dropdown__toggle nav-btn dropdown-toggle'
132
+ }
133
+ onClick={isOpen}
134
+ >
129
135
  {icon ?
130
136
  (<i className={"icon-" + icon}></i>) :
131
137
  (<React.Fragment>{name}<span className="dropdown__caret"></span></React.Fragment>)
@@ -157,7 +163,13 @@ export const DropdownFirst = ({
157
163
  } else {
158
164
  return (
159
165
  <div className={classes} >
160
- <button className={navDropdown ? 'dropdown__toggle navbtn dropdown-toggle' : 'dropdown__toggle nav-btn dropdown-toggle'} onClick={isOpen}>
166
+ <button
167
+ className={navDropdown
168
+ ? 'dropdown__toggle navbtn dropdown-toggle'
169
+ : 'dropdown__toggle nav-btn dropdown-toggle'
170
+ }
171
+ onClick={isOpen}
172
+ >
161
173
  {icon ?
162
174
  (<i className={"icon-" + icon}></i>) :
163
175
  (<React.Fragment>{name}<span className="dropdown__caret"></span></React.Fragment>)
@@ -261,7 +261,13 @@ export class DurationInput extends React.PureComponent<IProps, IState> {
261
261
  }
262
262
 
263
263
  handleFocusOnKeyUp(event: React.KeyboardEvent<HTMLInputElement>, ref: HTMLInputElement | null) {
264
- if (event.key !== 'ArrowRight' && event.key !== 'ArrowLeft' && event.key !== 'ArrowUp' && event.key !== 'ArrowDown' && event.key !== 'Backspace') {
264
+ if (
265
+ event.key !== 'ArrowRight'
266
+ && event.key !== 'ArrowLeft'
267
+ && event.key !== 'ArrowUp'
268
+ && event.key !== 'ArrowDown'
269
+ && event.key !== 'Backspace'
270
+ ) {
265
271
  if ((event.keyCode > 46 && event.keyCode < 58) || (event.keyCode > 95 && event.keyCode < 106)) {
266
272
  const target = event.target as HTMLInputElement;
267
273
  if (target.value.length >= 2) {
@@ -278,9 +284,18 @@ export class DurationInput extends React.PureComponent<IProps, IState> {
278
284
  if (this.props.preview) {
279
285
  return (
280
286
  <div className='sd-input__duration-input-preview'>
281
- <div><span className='duration-input-preview'>{this.state.hours}</span><span className='sd-input__suffix'>h</span></div>
282
- <div><span className='duration-input-preview'>{this.state.minutes}</span><span className='sd-input__suffix'>m</span></div>
283
- <div><span className='duration-input-preview'>{this.state.seconds}</span><span className='sd-input__suffix'>s</span></div>
287
+ <div>
288
+ <span className='duration-input-preview'>{this.state.hours}</span>
289
+ <span className='sd-input__suffix'>h</span>
290
+ </div>
291
+ <div>
292
+ <span className='duration-input-preview'>{this.state.minutes}</span>
293
+ <span className='sd-input__suffix'>m</span>
294
+ </div>
295
+ <div>
296
+ <span className='duration-input-preview'>{this.state.seconds}</span>
297
+ <span className='sd-input__suffix'>s</span>
298
+ </div>
284
299
  </div>
285
300
  );
286
301
  }
@@ -16,10 +16,19 @@ export class EmptyState extends React.PureComponent<IProps> {
16
16
  [`content-state__image--${this.props.size}`]: this.props.size || this.props.size !== undefined,
17
17
  });
18
18
 
19
- let image = require(`../../app/img/empty_states/empty-state--${this.props.size ? this.props.size : 'small'}-${this.props.illustration ? this.props.illustration : '1'}.svg`);
19
+ let image = require(
20
+ `../../app/img/empty_states/empty-state--${
21
+ this.props.size ? this.props.size : 'small'
22
+ }-${
23
+ this.props.illustration ? this.props.illustration : '1'
24
+ }.svg`,
25
+ );
20
26
 
21
27
  return (
22
- <div className={'content-state--empty-container' + (this.props.absolutePositioned ? ' content-state__empty-container--absolute' : '')}>
28
+ <div className={
29
+ 'content-state--empty-container'
30
+ + (this.props.absolutePositioned ? ' content-state__empty-container--absolute' : '')}
31
+ >
23
32
  <div className='content-state__empty-info'>
24
33
  <figure className={classes}>
25
34
  <img src={image} alt={this.props.illustration} />
@@ -11,7 +11,18 @@ interface IPropsPanel {
11
11
  side?: 'left' | 'right';
12
12
  theme?: 'light' | 'dark';
13
13
  className?: string;
14
- size?: 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large' | 'xx-large' | 'xxx-large' | 'full' | 'auto' | {custom: React.CSSProperties['width']};
14
+ size?:
15
+ 'xx-small'
16
+ | 'x-small'
17
+ | 'small'
18
+ | 'medium'
19
+ | 'large'
20
+ | 'x-large'
21
+ | 'xx-large'
22
+ | 'xxx-large'
23
+ | 'full'
24
+ | 'auto'
25
+ | {custom: React.CSSProperties['width']};
15
26
  background?: 'transparent' | 'light' | 'grey'; // defaults to light (white)
16
27
  open?: boolean;
17
28
  }
@@ -66,7 +66,11 @@ class ContentListItem extends React.PureComponent<IPropsItem> {
66
66
  }
67
67
  {this.props.itemColum.map((item, index) => {
68
68
  return <div
69
- className={`sd-list-item__column ${item.fullwidth && 'sd-list-item__column--grow'} ${!item.border && 'sd-list-item__column--no-border'}`}
69
+ className={`
70
+ sd-list-item__column
71
+ ${item.fullwidth && 'sd-list-item__column--grow'}
72
+ ${!item.border && 'sd-list-item__column--no-border'}`
73
+ }
70
74
  key={index}>
71
75
  {item.itemRow.map((e, i) => {
72
76
  return (
@@ -13,7 +13,16 @@ interface IProps {
13
13
  contentBg?: 'default' | 'medium' | 'dark';
14
14
  contentPadding?: 'none' | 'small' | 'medium' | 'large';
15
15
  size?: 'small' | 'medium' | 'large' | 'x-large';
16
- position?: "center" | "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right";
16
+ position?:
17
+ "center"
18
+ | "top"
19
+ | "bottom"
20
+ | "left"
21
+ | "right"
22
+ | "top-left"
23
+ | "top-right"
24
+ | "bottom-left"
25
+ | "bottom-right";
17
26
  maximized?: boolean;
18
27
  maximizable?: boolean;
19
28
  headerTemplate?: JSX.Element | string;
@@ -58,8 +58,15 @@ export class BottomNav extends React.PureComponent<IProps, IState> {
58
58
  <ul className='sd-bottom-nav-list'>
59
59
  {this.props.items.map((item, index) => {
60
60
  return (
61
- <li key={index}
62
- className={'sd-bottom-nav-list__item' + (item['active'] ? ' sd-bottom-nav-list__item--active' : (index === this.state.index ? ' sd-bottom-nav-list__item--active' : ''))}>
61
+ <li
62
+ key={index}
63
+ className={
64
+ 'sd-bottom-nav-list__item'
65
+ + (item['active']
66
+ ? ' sd-bottom-nav-list__item--active'
67
+ : (index === this.state.index ? ' sd-bottom-nav-list__item--active' : ''))
68
+ }
69
+ >
63
70
  <a className='sd-bottom-nav-list__item-title' onClick={(event) => {
64
71
  this.handleClick(index);
65
72
  item.onClick(event);
@@ -76,7 +76,12 @@ export class QuickNavBar extends React.PureComponent<IProps, IState> {
76
76
  );
77
77
  } else {
78
78
  return (
79
- <li key={index} data-sd-tooltip={item['tooltip']} data-flow='right' className="sd-quickbar-menu__list-item">
79
+ <li
80
+ key={index}
81
+ data-sd-tooltip={item['tooltip']}
82
+ data-flow='right'
83
+ className="sd-quickbar-menu__list-item"
84
+ >
80
85
  <a role='button' aria-label={item['tooltip']} className={'sd-quickbar__btn'}
81
86
  onClick={() => this.handleClick(item, index, event)}>
82
87
  <Icon size={'small'} name={item['icon']} />
@@ -98,7 +103,10 @@ export class QuickNavBar extends React.PureComponent<IProps, IState> {
98
103
  <li key={index} data-sd-tooltip={item['tooltip']} data-flow='right'>
99
104
  <a role='button'
100
105
  aria-label={item['tooltip']}
101
- className={'sd-quickbar__btn' + (index === this.state.index ? ' sd-quickbar__btn--active' : '')}
106
+ className={
107
+ 'sd-quickbar__btn'
108
+ + (index === this.state.index ? ' sd-quickbar__btn--active' : '')
109
+ }
102
110
  onClick={() => this.handleClick(item, index, event)}>
103
111
  <Icon size={'small'} name={item['icon']} />
104
112
  </a>
@@ -67,9 +67,13 @@ export class SideBarMenu extends React.PureComponent<IProps, IState> {
67
67
  data-sd-tooltip={item['tooltip']}
68
68
  data-flow='right'
69
69
  className={item.hover ? 'authoring-active__item' : ''}>
70
- <a className={'sd-sidebar-menu__btn'
71
- + (this.state.hover ? ' sd-sidebar-menu__btn--closed ' : '')
72
- + (item['active'] ? ' sd-sidebar-menu__btn--active' : (index === this.state.index ? ' sd-sidebar-menu__btn--active' : ''))}
70
+ <a
71
+ className={'sd-sidebar-menu__btn'
72
+ + (this.state.hover ? ' sd-sidebar-menu__btn--closed ' : '')
73
+ + (item['active']
74
+ ? ' sd-sidebar-menu__btn--active'
75
+ : (index === this.state.index ? ' sd-sidebar-menu__btn--active' : '')
76
+ )}
73
77
  onClick={() => {
74
78
  this.handleClick(index);
75
79
  if (item.hover) {
@@ -78,7 +82,8 @@ export class SideBarMenu extends React.PureComponent<IProps, IState> {
78
82
  item.onCLick();
79
83
  }
80
84
  }
81
- }}>
85
+ }}
86
+ >
82
87
  <span className='sd-sidebar-menu__main-icon '>
83
88
  <Icon size={item['size']} name={item['icon']} />
84
89
  </span>
@@ -50,7 +50,14 @@ export class SidebarMenu extends React.PureComponent<IProps, IState> {
50
50
  } else {
51
51
  return (
52
52
  <li key={index} data-sd-tooltip={item['tooltip']} data-flow='right'>
53
- <a className={'sd-sidebar-menu__btn' + (index === this.state.closeIndex ? ' sd-sidebar-menu__btn--closed ' : '') + (item['active'] ? ' sd-sidebar-menu__btn--active' : (index === this.state.index ? ' sd-sidebar-menu__btn--active' : ''))}
53
+ <a className={
54
+ 'sd-sidebar-menu__btn'
55
+ + (index === this.state.closeIndex ? ' sd-sidebar-menu__btn--closed ' : '')
56
+ + (item['active']
57
+ ? ' sd-sidebar-menu__btn--active'
58
+ : (index === this.state.index ? ' sd-sidebar-menu__btn--active' : '')
59
+ )
60
+ }
54
61
  onClick={() => this.handleClick(index)}>
55
62
  <span className='sd-sidebar-menu__main-icon '>
56
63
  <Icon size={item['size']} name={item['icon']} />
@@ -63,7 +63,11 @@ class TabList extends React.PureComponent<ITabList, IState> {
63
63
  onClick={() => this.handleChange(index)}
64
64
  role='tab'
65
65
  aria-selected={this.state.index === index ? 'true' : 'false'}
66
- className={'sd-nav-tabs__tab' + (this.state.index === index ? ' sd-nav-tabs__tab--active' : '')}>
66
+ className={
67
+ 'sd-nav-tabs__tab'
68
+ + (this.state.index === index ? ' sd-nav-tabs__tab--active' : '')
69
+ }
70
+ >
67
71
  <span>{item.props.label}</span>
68
72
  </button>)}
69
73
  </div>
@@ -41,7 +41,10 @@ export class TagInput extends React.Component<IProps> {
41
41
  tabindex={this.props.tabindex}
42
42
  >
43
43
  <Chips
44
- className={`tags-input--multi-select sd-input__input ${this.props.disabled ? ' tags-input__padding-disabled' : ''}`}
44
+ className={`
45
+ tags-input--multi-select sd-input__input
46
+ ${this.props.disabled ? ' tags-input__padding-disabled' : ''}`
47
+ }
45
48
  allowDuplicate={false}
46
49
  separator=","
47
50
  onChange={(event) => onChange(event.value)}
@@ -40,12 +40,23 @@ export class ThemeSelector extends React.Component<IProps> {
40
40
  <div className='sd-theme-selector__item'
41
41
  key={index}
42
42
  tabIndex={-1}>
43
- <figure className="sd-theme-selector__item-thumb" data-theme={item.theme + '-ui'} aria-hidden="true">
43
+ <figure
44
+ className="sd-theme-selector__item-thumb"
45
+ data-theme={item.theme + '-ui'}
46
+ aria-hidden="true"
47
+ >
44
48
  <svg viewBox="0 0 156 94" xmlns="http://www.w3.org/2000/svg">
45
49
  <g fill="none" fillRule="evenodd">
46
50
  <path d="m0 0h156v94h-156z" fill="var(--sd-colour-panel-bg--100)" />
47
51
  <circle cx="144" cy="33" fill="var(--color-text-lighter)" r="4" />
48
- <rect fill="var(--sd-colour-interactive)" height="15" rx="2" width="58" x="91" y="71" />
52
+ <rect
53
+ fill="var(--sd-colour-interactive)"
54
+ height="15"
55
+ rx="2"
56
+ width="58"
57
+ x="91"
58
+ y="71"
59
+ />
49
60
  <g fill="var(--sd-colour-btn-bg-neutral)">
50
61
  <rect height="15" rx="2" width="58" x="29" y="52" />
51
62
  <rect height="15" rx="2" width="58" x="29" y="71" />