@electerm/electerm-react 2.3.6 → 2.3.30

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 (50) hide show
  1. package/client/common/constants.js +1 -1
  2. package/client/common/has-active-input.js +10 -0
  3. package/client/common/ui-theme.js +25 -12
  4. package/client/components/ai/ai.styl +1 -3
  5. package/client/components/bg/custom-css.jsx +2 -2
  6. package/client/components/common/highlight.styl +1 -2
  7. package/client/components/common/input-context-menu.jsx +294 -0
  8. package/client/components/file-transfer/transfer.styl +6 -8
  9. package/client/components/footer/footer.styl +2 -5
  10. package/client/components/layout/layout.styl +2 -3
  11. package/client/components/main/error-wrapper.jsx +3 -3
  12. package/client/components/main/main.jsx +2 -1
  13. package/client/components/main/ui-theme.jsx +46 -6
  14. package/client/components/main/upgrade.styl +4 -6
  15. package/client/components/main/wrapper.styl +5 -27
  16. package/client/components/quick-commands/qm.styl +3 -5
  17. package/client/components/session/session.styl +11 -13
  18. package/client/components/setting-panel/list.styl +5 -5
  19. package/client/components/setting-panel/setting-wrap.styl +1 -6
  20. package/client/components/setting-panel/terminal-bg-config.jsx +3 -0
  21. package/client/components/setting-sync/setting-sync-form.jsx +0 -1
  22. package/client/components/sftp/file-item.jsx +8 -5
  23. package/client/components/sftp/sftp-entry.jsx +18 -4
  24. package/client/components/sftp/sftp.styl +24 -28
  25. package/client/components/sftp/transfer-tag.styl +3 -5
  26. package/client/components/side-panel-r/right-side-panel.styl +7 -9
  27. package/client/components/sidebar/index.jsx +6 -0
  28. package/client/components/sidebar/info.styl +0 -12
  29. package/client/components/sidebar/sidebar.styl +15 -16
  30. package/client/components/sys-menu/sub-tab-menu.jsx +2 -2
  31. package/client/components/sys-menu/sys-menu.styl +11 -11
  32. package/client/components/tabs/add-btn.jsx +258 -0
  33. package/client/components/tabs/add-btn.styl +12 -0
  34. package/client/components/tabs/index.jsx +8 -56
  35. package/client/components/tabs/tabs.styl +30 -31
  36. package/client/components/terminal/term-search.styl +3 -3
  37. package/client/components/terminal/terminal.jsx +2 -2
  38. package/client/components/terminal/terminal.styl +21 -22
  39. package/client/components/terminal-info/terminal-info.styl +7 -7
  40. package/client/components/theme/terminal-theme-list.styl +2 -2
  41. package/client/components/theme/theme-list-item.jsx +62 -20
  42. package/client/components/tree-list/tree-expander.jsx +4 -2
  43. package/client/css/basic.styl +5 -8
  44. package/client/css/includes/theme.styl +16 -0
  45. package/client/store/ui-theme.js +0 -35
  46. package/package.json +1 -1
  47. package/client/components/common/native-input.styl +0 -7
  48. package/client/components/setting-sync/sync.styl +0 -7
  49. package/client/css/antd-overwrite.styl +0 -10
  50. package/client/css/includes/theme-default.styl +0 -20
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Add button component for tabs
3
+ */
4
+
5
+ import React, { Component } from 'react'
6
+ import { createPortal } from 'react-dom'
7
+ import {
8
+ CodeFilled,
9
+ PlusOutlined,
10
+ RightSquareFilled
11
+ } from '@ant-design/icons'
12
+ import BookmarksList from '../sidebar/bookmark-select'
13
+ import classNames from 'classnames'
14
+ import hasActiveInput from '../../common/has-active-input'
15
+ import './add-btn.styl'
16
+
17
+ const e = window.translate
18
+
19
+ export default class AddBtn extends Component {
20
+ constructor (props) {
21
+ super(props)
22
+ this.state = {
23
+ open: false,
24
+ menuPosition: 'right',
25
+ menuTop: 0,
26
+ menuLeft: 0
27
+ }
28
+ this.addBtnRef = React.createRef()
29
+ this.menuRef = React.createRef()
30
+ this.hideTimeout = null
31
+ this.portalContainer = null
32
+ }
33
+
34
+ getPortalContainer = () => {
35
+ if (!this.portalContainer) {
36
+ this.portalContainer = document.createElement('div')
37
+ this.portalContainer.className = 'add-btn-menu-portal'
38
+ document.body.appendChild(this.portalContainer)
39
+ }
40
+ return this.portalContainer
41
+ }
42
+
43
+ componentDidMount () {
44
+ document.addEventListener('click', this.handleDocumentClick)
45
+ // Listen for dropdown events to prevent menu closing
46
+ document.addEventListener('ant-dropdown-show', this.handleDropdownShow)
47
+ document.addEventListener('ant-dropdown-hide', this.handleDropdownHide)
48
+ }
49
+
50
+ componentWillUnmount () {
51
+ document.removeEventListener('click', this.handleDocumentClick)
52
+ document.removeEventListener('ant-dropdown-show', this.handleDropdownShow)
53
+ document.removeEventListener('ant-dropdown-hide', this.handleDropdownHide)
54
+ if (this.hideTimeout) {
55
+ clearTimeout(this.hideTimeout)
56
+ }
57
+ // Clean up portal container
58
+ if (this.portalContainer) {
59
+ document.body.removeChild(this.portalContainer)
60
+ this.portalContainer = null
61
+ }
62
+ }
63
+
64
+ handleDropdownShow = () => {
65
+ // Cancel any pending hide timeout when dropdown shows
66
+ if (this.hideTimeout) {
67
+ clearTimeout(this.hideTimeout)
68
+ this.hideTimeout = null
69
+ }
70
+ }
71
+
72
+ handleDropdownHide = () => {
73
+ // Small delay after dropdown hides before allowing menu to close
74
+ // This prevents flicker when dropdown closes
75
+ }
76
+
77
+ handleDocumentClick = (e) => {
78
+ // Don't close menu when clicking inside menu or add button
79
+ if (this.menuRef.current && this.menuRef.current.contains(e.target)) {
80
+ return
81
+ }
82
+ if (this.addBtnRef.current && this.addBtnRef.current.contains(e.target)) {
83
+ return
84
+ }
85
+
86
+ // Don't close if clicking on dropdown or active input elements
87
+ if (hasActiveInput()) {
88
+ return
89
+ }
90
+
91
+ this.setState({ open: false })
92
+ }
93
+
94
+ handleMouseEnter = () => {
95
+ if (this.hideTimeout) {
96
+ clearTimeout(this.hideTimeout)
97
+ this.hideTimeout = null
98
+ }
99
+
100
+ // Calculate menu position
101
+ if (this.addBtnRef.current) {
102
+ const rect = this.addBtnRef.current.getBoundingClientRect()
103
+ const windowWidth = window.innerWidth
104
+ const windowHeight = window.innerHeight
105
+
106
+ // Estimate menu width and height
107
+ const estimatedMenuWidth = Math.min(300, windowWidth - 40) // Responsive width
108
+ const estimatedMenuHeight = 400 // Rough estimate
109
+
110
+ // Calculate fixed position coordinates
111
+ let menuTop = rect.bottom + 4 // 4px margin
112
+ let menuLeft = rect.left
113
+ let menuPosition = 'right'
114
+
115
+ // Check if menu would overflow bottom of screen
116
+ if (menuTop + estimatedMenuHeight > windowHeight - 20) {
117
+ menuTop = rect.top - estimatedMenuHeight - 4 // Show above button
118
+ }
119
+
120
+ // If aligning right would cause overflow, align left instead
121
+ if (rect.left + estimatedMenuWidth > windowWidth - 20) {
122
+ menuPosition = 'left'
123
+ menuLeft = rect.right - estimatedMenuWidth
124
+ }
125
+
126
+ // If aligning left would cause overflow (negative position), force right
127
+ if (menuLeft < 20) {
128
+ menuPosition = 'right'
129
+ menuLeft = Math.max(20, rect.left) // Ensure at least 20px from edge
130
+ }
131
+
132
+ // Final check to ensure menu doesn't go off screen
133
+ if (menuLeft + estimatedMenuWidth > windowWidth - 20) {
134
+ menuLeft = windowWidth - estimatedMenuWidth - 20
135
+ }
136
+
137
+ this.setState({
138
+ open: true,
139
+ menuPosition,
140
+ menuTop,
141
+ menuLeft
142
+ })
143
+
144
+ if (!this.state.open) {
145
+ window.openTabBatch = this.props.batch
146
+ }
147
+ }
148
+ }
149
+
150
+ handleMouseLeave = () => {
151
+ this.hideTimeout = setTimeout(() => {
152
+ this.setState({ open: false })
153
+ }, 200)
154
+ }
155
+
156
+ handleMenuMouseEnter = () => {
157
+ if (this.hideTimeout) {
158
+ clearTimeout(this.hideTimeout)
159
+ this.hideTimeout = null
160
+ }
161
+ }
162
+
163
+ handleMenuMouseLeave = () => {
164
+ // Don't close if there's an active input or dropdown
165
+ if (hasActiveInput()) {
166
+ return
167
+ }
168
+
169
+ this.hideTimeout = setTimeout(() => {
170
+ this.setState({ open: false })
171
+ }, 200)
172
+ }
173
+
174
+ handleMenuScroll = (e) => {
175
+ // Prevent scroll events from bubbling up
176
+ e.stopPropagation()
177
+ }
178
+
179
+ handleTabAdd = () => {
180
+ if (!window.store.hasNodePty) {
181
+ window.store.onNewSsh()
182
+ return
183
+ }
184
+ window.store.addTab(
185
+ undefined, undefined,
186
+ this.props.batch
187
+ )
188
+ }
189
+
190
+ renderMenus = () => {
191
+ const { onNewSsh } = window.store
192
+ const cls = 'pd2x pd1y context-item pointer'
193
+ const addTabBtn = window.store.hasNodePty
194
+ ? (
195
+ <div
196
+ className={cls}
197
+ onClick={this.handleTabAdd}
198
+ >
199
+ <RightSquareFilled /> {e('newTab')}
200
+ </div>
201
+ )
202
+ : null
203
+
204
+ const { menuPosition, menuTop, menuLeft } = this.state
205
+
206
+ return (
207
+ <div
208
+ ref={this.menuRef}
209
+ className={`add-menu-wrap add-menu-${menuPosition}`}
210
+ style={{
211
+ maxHeight: window.innerHeight - menuTop - 50,
212
+ top: menuTop,
213
+ left: menuLeft
214
+ }}
215
+ onMouseEnter={this.handleMenuMouseEnter}
216
+ onMouseLeave={this.handleMenuMouseLeave}
217
+ onScroll={this.handleMenuScroll}
218
+ >
219
+ <div
220
+ className={cls}
221
+ onClick={onNewSsh}
222
+ >
223
+ <CodeFilled /> {e('newBookmark')}
224
+ </div>
225
+ {addTabBtn}
226
+ <BookmarksList
227
+ store={window.store}
228
+ />
229
+ </div>
230
+ )
231
+ }
232
+
233
+ render () {
234
+ const { empty, className } = this.props
235
+ const { open } = this.state
236
+ const cls = classNames(
237
+ 'tabs-add-btn pointer',
238
+ className,
239
+ {
240
+ empty
241
+ }
242
+ )
243
+
244
+ return (
245
+ <>
246
+ <PlusOutlined
247
+ title={e('openNewTerm')}
248
+ className={cls}
249
+ onClick={this.handleTabAdd}
250
+ onMouseEnter={this.handleMouseEnter}
251
+ onMouseLeave={this.handleMouseLeave}
252
+ ref={this.addBtnRef}
253
+ />
254
+ {open && createPortal(this.renderMenus(), this.getPortalContainer())}
255
+ </>
256
+ )
257
+ }
258
+ }
@@ -0,0 +1,12 @@
1
+
2
+ .add-menu-wrap
3
+ position fixed
4
+ z-index 1000
5
+ background var(--main)
6
+ border 1px solid var(--main-darker)
7
+ border-radius 6px
8
+ min-width 160px
9
+ max-width 300px
10
+ overflow-y auto
11
+ margin-top 4px
12
+ padding 4px 15px
@@ -8,12 +8,9 @@ import runIdle from '../../common/run-idle'
8
8
  import { throttle } from 'lodash-es'
9
9
  import TabTitle from './tab-title'
10
10
  import {
11
- CodeFilled,
12
11
  DownOutlined,
13
12
  LeftOutlined,
14
- PlusOutlined,
15
- RightOutlined,
16
- RightSquareFilled
13
+ RightOutlined
17
14
  } from '@ant-design/icons'
18
15
  import {
19
16
  SingleIcon,
@@ -25,7 +22,7 @@ import {
25
22
  TwoRowsRightIcon,
26
23
  TwoColumnsBottomIcon
27
24
  } from '../icons/split-icons'
28
- import { Dropdown, Popover } from 'antd'
25
+ import { Dropdown } from 'antd'
29
26
  import Tab from './tab'
30
27
  import './tabs.styl'
31
28
  import {
@@ -37,7 +34,7 @@ import {
37
34
  splitMapDesc
38
35
  } from '../../common/constants'
39
36
  import WindowControl from './window-control'
40
- import BookmarksList from '../sidebar/bookmark-select'
37
+ import AddBtn from './add-btn'
41
38
  import AppDrag from './app-drag'
42
39
  import NoSession from './no-session'
43
40
  import classNames from 'classnames'
@@ -190,45 +187,6 @@ export default class Tabs extends Component {
190
187
  window.store.setLayout(key)
191
188
  }
192
189
 
193
- handleOpenChange = (open) => {
194
- if (open) {
195
- window.openTabBatch = this.props.batch
196
- }
197
- }
198
-
199
- renderMenus () {
200
- const { onNewSsh } = window.store
201
- const cls = 'pd2x pd1y context-item pointer'
202
- const addTabBtn = window.store.hasNodePty
203
- ? (
204
- <div
205
- className={cls}
206
- onClick={this.handleTabAdd}
207
- >
208
- <RightSquareFilled /> {e('newTab')}
209
- </div>
210
- )
211
- : null
212
- return (
213
- <div
214
- className='add-menu-wrap' style={{
215
- maxHeight: window.innerHeight - 200
216
- }}
217
- >
218
- <div
219
- className={cls}
220
- onClick={onNewSsh}
221
- >
222
- <CodeFilled /> {e('newBookmark')}
223
- </div>
224
- {addTabBtn}
225
- <BookmarksList
226
- store={window.store}
227
- />
228
- </div>
229
- )
230
- }
231
-
232
190
  renderAddBtn = () => {
233
191
  const cls = classNames(
234
192
  'pointer tabs-add-btn font16',
@@ -237,17 +195,11 @@ export default class Tabs extends Component {
237
195
  }
238
196
  )
239
197
  return (
240
- <Popover
241
- content={this.renderMenus()}
242
- onOpenChange={this.handleOpenChange}
243
- placement='bottomRight'
244
- >
245
- <PlusOutlined
246
- title={e('openNewTerm')}
247
- className={cls}
248
- onClick={this.handleTabAdd}
249
- />
250
- </Popover>
198
+ <AddBtn
199
+ className={cls}
200
+ empty={!this.props.tabs?.length}
201
+ batch={this.props.batch}
202
+ />
251
203
  )
252
204
  }
253
205
 
@@ -1,9 +1,9 @@
1
- @require '../../css/includes/theme-default'
1
+
2
2
  .tabs
3
3
  position relative
4
4
  height 36px
5
5
  overflow hidden
6
- background main-dark
6
+ background var(--main-dark)
7
7
  z-index 12
8
8
  ::-webkit-scrollbar
9
9
  width 0
@@ -41,17 +41,17 @@
41
41
  line-height 36px
42
42
  margin 0 1px 0 0
43
43
  border-radius 3px 3px 0 0
44
- background main-dark
44
+ background var(--main-dark)
45
45
  text-align center
46
- color text-dark
46
+ color var(--text-dark)
47
47
  &.tab-last
48
48
  margin-right 5px
49
49
  .tab-reload
50
50
  .tab-close
51
51
  display none
52
52
  &.active
53
- color text
54
- background main
53
+ color var(--text)
54
+ background var(--main)
55
55
  .tab-count
56
56
  opacity 1
57
57
  &:hover
@@ -63,12 +63,12 @@
63
63
  left -2px
64
64
  top 0
65
65
  width 1px
66
- border 1px dashed text-dark
66
+ border 1px dashed var(--text-dark)
67
67
  height 36px
68
68
  &.error
69
69
  .tab-reload
70
70
  display inline-block
71
- color text-light
71
+ color var(--text-light)
72
72
  @keyframes blink
73
73
  0%
74
74
  background-color #e0e0e0
@@ -86,13 +86,13 @@
86
86
  width 5px
87
87
  height 5px
88
88
  border-radius 5px
89
- background-color text-dark
89
+ background-color var(--text-dark)
90
90
  &.success
91
- background-color success
91
+ background-color var(--success)
92
92
  &.error
93
- background-color error
93
+ background-color var(--error)
94
94
  &.processing
95
- background-color primary
95
+ background-color var(--primary)
96
96
  .is-transporting .tab-traffic
97
97
  display block
98
98
  animation blink 2s infinite
@@ -102,7 +102,7 @@
102
102
  left 10px
103
103
  width 5px
104
104
  border-radius 0
105
- background-color success
105
+ background-color var(--success)
106
106
  .is-terminal-active .tab-terminal-feed
107
107
  display block
108
108
  animation blink 2s infinite
@@ -111,7 +111,7 @@
111
111
  display none
112
112
  left 20px
113
113
  border-radius 0
114
- color success
114
+ color var(--success)
115
115
  background none
116
116
  font-size 8px
117
117
  left 2px
@@ -121,29 +121,29 @@
121
121
  right 5px
122
122
  cursor pointer
123
123
  top 50%
124
+ background var(--main)
124
125
  margin-top -8px
125
- background text-dark
126
126
  border-radius 100%
127
- color text
127
+ color var(--text)
128
128
  height 16px
129
129
  width 16px
130
130
  text-align center
131
131
  line-height 16px
132
132
  font-size 10px
133
133
  &:hover
134
- color text-light
134
+ background var(--primary)
135
+ color var(--primary-contast)
135
136
 
136
137
  .tabs-add-btn
137
138
  display inline-block
138
139
  vertical-align middle
139
140
  margin 0 3px 0 3px
140
- color text
141
141
  &.empty
142
142
  font-size 20px
143
143
  margin-left 20px
144
144
  margin-top 10px
145
145
  &:hover
146
- color text-light
146
+ color var(--text-light)
147
147
  .tabs-extra
148
148
  position absolute
149
149
  height 40px
@@ -153,7 +153,6 @@
153
153
  z-index 20
154
154
 
155
155
  .tabs-dd-icon
156
- color text
157
156
  font-size 12px
158
157
  .tabs-add-btn
159
158
  margin-top 0
@@ -165,21 +164,21 @@
165
164
  z-index 900
166
165
  border-radius 0 0 3px 3px
167
166
  padding 0
168
- background main-light
167
+ background var(--main-lighter)
169
168
 
170
169
  .window-control-box
171
170
  display inline-block
172
171
  padding 5px 10px
173
- color text
172
+ color var(--text)
174
173
  &:hover
175
- color primary
174
+ color var(--primary)
176
175
  cursor pointer
177
176
  .icon-maximize
178
- border-color primary
177
+ border-color var(--primary)
179
178
  .icon-maximize
180
179
  width 10px
181
180
  height 7px
182
- border 1px solid text
181
+ border 1px solid var(--text)
183
182
  cursor pointer
184
183
  &.is-max
185
184
  height 6px
@@ -196,11 +195,11 @@
196
195
  border-right none
197
196
 
198
197
  .control-icon:hover
199
- color text-light
198
+ color var(--text-light)
200
199
  .tab-scroll-icon
201
- color text-dark
200
+ color var(--text-dark)
202
201
  &:hover
203
- color text
202
+ color var(--text)
204
203
 
205
204
  .add-menu-wrap
206
205
  overflow-y scroll
@@ -208,9 +207,9 @@
208
207
  .window-control-minimize
209
208
  .window-control-maximize
210
209
  &:hover
211
- background main-dark
210
+ background var(--main-dark)
212
211
  .window-control-close:hover
213
- background error
212
+ background var(--error)
214
213
 
215
214
  .system-ui
216
215
  .window-controls
@@ -219,7 +218,7 @@
219
218
  margin-right 5px
220
219
  font-size 14px
221
220
  .no-sessions
222
- background main
221
+ background var(--main)
223
222
  text-align center
224
223
  padding 50px 0
225
224
  position absolute
@@ -1,10 +1,10 @@
1
- @require '../../css/includes/theme-default'
1
+
2
2
  .term-search-opt-icon
3
3
  margin 0 3px
4
- color text-light
4
+ color var(--text-light)
5
5
  font-size 15px
6
6
  &:hover
7
- color text
7
+ color var(--text)
8
8
  &.term-search-on
9
9
  background #333
10
10
  color #aaa
@@ -1429,8 +1429,8 @@ class Term extends Component {
1429
1429
  ref: this.domRef,
1430
1430
  className: 'absolute term-wrap-2',
1431
1431
  style: {
1432
- left: '10px',
1433
- top: '10px',
1432
+ left: 0,
1433
+ top: 0,
1434
1434
  right: 0,
1435
1435
  bottom: 0
1436
1436
  }
@@ -1,6 +1,6 @@
1
- @require '../../css/includes/theme-default'
1
+
2
2
  .terms-box
3
- background main
3
+ background var(--main)
4
4
  position relative
5
5
  .loading-wrapper
6
6
  padding 30px
@@ -12,22 +12,22 @@
12
12
  z-index 30
13
13
 
14
14
  .terminal-control
15
- background main
15
+ background var(--main)
16
16
  line-height 32px
17
17
  padding 0 10px
18
18
 
19
19
  .terms-box
20
20
  position relative
21
21
  .term-wrap
22
- background main
22
+ background var(--main)
23
23
  position absolute
24
24
 
25
25
  .vertical
26
26
  .term-wrap.not-first-term
27
- border-top 1px solid main-light
27
+ border-top 1px solid var(--main-lighter)
28
28
  .horizontal
29
29
  .term-wrap.not-first-term
30
- border-left 1px solid main-light
30
+ border-left 1px solid var(--main-lighter)
31
31
  .term-sftp-tabs
32
32
  margin-left 5px
33
33
 
@@ -48,9 +48,9 @@
48
48
  left 0
49
49
  top 0
50
50
  width 100%
51
- background main
52
- color text
53
- box-shadow 0px 3px 3px 0px lighten(main, 25%)
51
+ background var(--main)
52
+ color var(--text)
53
+ box-shadow 0px 3px 3px 0px var(--main-lighter)
54
54
  z-index 66
55
55
  padding-bottom 32px
56
56
  .terminal-normal-buffer-body
@@ -59,9 +59,9 @@
59
59
  .terminal-normal-buffer-close
60
60
  cursor pointer
61
61
  font-size 14px
62
- color text
62
+ color var(--text)
63
63
  &:hover
64
- color text-light
64
+ color var(--text-light)
65
65
  .terminal-normal-buffer-footer
66
66
  position absolute
67
67
  left 0
@@ -69,25 +69,24 @@
69
69
  width 100%
70
70
  height 32px
71
71
  line-height 32px
72
- box-shadow 0px -3px 3px 0px lighten(main, 25%)
73
- background main-light
72
+ box-shadow 0px -3px 3px 0px var(--main)
73
+ background var(--main-lighter)
74
74
  .batch-input-wrap
75
75
  width calc(100% - 80px)
76
76
 
77
77
  .terminal-suggestions-wrap
78
78
  position absolute
79
79
  z-index 100
80
- color text
81
80
  max-height 300px
82
81
  max-width 300px
83
82
  min-width 200px
84
- box-shadow 0px 0px 3px 3px main-light
83
+ box-shadow 0px 0px 3px 3px var(--main-lighter)
85
84
  display flex
86
85
  flex-direction column
87
- background main
86
+ background var(--main)
88
87
  border-radius 4px
89
88
  &.reverse .terminal-suggestions-list
90
- border-top 1px solid main-light
89
+ border-top 1px solid var(--main-lighter)
91
90
  border-bottom none
92
91
 
93
92
  .terminal-suggestions-list
@@ -96,7 +95,7 @@
96
95
  overflow-y auto
97
96
  max-height 268px
98
97
  max-width 300px
99
- border-bottom 1px solid main-light
98
+ border-bottom 1px solid var(--main-lighter)
100
99
 
101
100
  .terminal-suggestions-sticky
102
101
  flex-shrink 0
@@ -109,9 +108,9 @@
109
108
  align-items center
110
109
  padding 5px 10px
111
110
  cursor pointer
112
- color text
111
+ color var(--text)
113
112
  &:hover
114
- background-color main-light
113
+ background-color var(--main-lighter)
115
114
  .suggestion-delete
116
115
  visibility visible
117
116
 
@@ -124,9 +123,9 @@
124
123
  .suggestion-type
125
124
  margin-left 5px
126
125
  font-size 0.8em
127
- color lighten(text, 20%)
126
+ color var(--text)
128
127
  &:hover
129
- color text
128
+ color var(--success)
130
129
 
131
130
  .suggestion-delete
132
131
  margin-left 5px