@sequent-org/moodboard 1.4.32 → 1.4.34

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 (137) hide show
  1. package/package.json +5 -1
  2. package/src/assets/fonts/inter/inter-cyrillic-400-normal.woff2 +0 -0
  3. package/src/assets/fonts/inter/inter-cyrillic-500-normal.woff2 +0 -0
  4. package/src/assets/fonts/inter/inter-latin-400-normal.woff2 +0 -0
  5. package/src/assets/fonts/inter/inter-latin-500-normal.woff2 +0 -0
  6. package/src/assets/icons/attachments.svg +3 -1
  7. package/src/assets/icons/comments.svg +2 -2
  8. package/src/assets/icons/connector.svg +6 -0
  9. package/src/assets/icons/emoji.svg +6 -1
  10. package/src/assets/icons/frame.svg +4 -1
  11. package/src/assets/icons/image.svg +5 -1
  12. package/src/assets/icons/laser.svg +1 -0
  13. package/src/assets/icons/lasso.svg +5 -0
  14. package/src/assets/icons/mindmap.svg +10 -2
  15. package/src/assets/icons/note.svg +4 -1
  16. package/src/assets/icons/pan.svg +5 -2
  17. package/src/assets/icons/pencil.svg +4 -1
  18. package/src/assets/icons/reactions.svg +5 -0
  19. package/src/assets/icons/redo.svg +3 -2
  20. package/src/assets/icons/select.svg +2 -8
  21. package/src/assets/icons/shapes.svg +5 -1
  22. package/src/assets/icons/text-add.svg +15 -1
  23. package/src/assets/icons/undo.svg +3 -2
  24. package/src/assets/reactions/1f44d.svg +20 -0
  25. package/src/assets/reactions/1f44e.svg +20 -0
  26. package/src/assets/reactions/2705.svg +20 -0
  27. package/src/assets/reactions/274c.svg +19 -0
  28. package/src/assets/reactions/2753.svg +20 -0
  29. package/src/assets/reactions/2764.svg +22 -0
  30. package/src/assets/reactions/2b50.svg +19 -0
  31. package/src/assets/reactions/plus-one.svg +25 -0
  32. package/src/core/PixiEngine.js +23 -0
  33. package/src/core/bootstrap/CoreInitializer.js +43 -0
  34. package/src/core/commands/GroupDeleteCommand.js +13 -1
  35. package/src/core/commands/UpdateShapeStyleCommand.js +121 -0
  36. package/src/core/commands/UpdateTextStyleCommand.js +17 -6
  37. package/src/core/commands/index.js +3 -0
  38. package/src/core/events/Events.js +22 -0
  39. package/src/core/flows/LayerAndViewportFlow.js +1 -0
  40. package/src/core/flows/ObjectLifecycleFlow.js +155 -7
  41. package/src/core/index.js +28 -1
  42. package/src/grid/CrossGridZoomPhases.js +3 -3
  43. package/src/initNoBundler.js +1 -1
  44. package/src/moodboard/DataManager.js +28 -0
  45. package/src/moodboard/MoodBoard.js +27 -0
  46. package/src/moodboard/bootstrap/MoodBoardInitializer.js +69 -1
  47. package/src/moodboard/bootstrap/MoodBoardUiFactory.js +22 -4
  48. package/src/moodboard/integration/MoodBoardEventBindings.js +5 -1
  49. package/src/moodboard/integration/MoodBoardLoadApi.js +10 -1
  50. package/src/moodboard/lifecycle/MoodBoardDestroyer.js +9 -0
  51. package/src/objects/ConnectorObject.js +2 -2
  52. package/src/objects/FrameObject.js +119 -59
  53. package/src/objects/ShapeObject.js +49 -74
  54. package/src/objects/shape/ShapeDrawer.js +210 -0
  55. package/src/services/ConnectorBindingResolver.js +112 -0
  56. package/src/services/ConnectorRouter.js +210 -0
  57. package/src/services/ai/ChatSessionController.js +14 -8
  58. package/src/services/comments/CommentService.js +344 -0
  59. package/src/tools/object-tools/CommentTool.js +85 -0
  60. package/src/tools/object-tools/DrawingTool.js +110 -10
  61. package/src/tools/object-tools/LaserPointerTool.js +121 -0
  62. package/src/tools/object-tools/SelectTool.js +25 -1
  63. package/src/tools/object-tools/TextTool.js +6 -1
  64. package/src/tools/object-tools/connector/ConnectorDragController.js +50 -3
  65. package/src/tools/object-tools/connector/connectorGesture.js +33 -19
  66. package/src/tools/object-tools/placement/PlacementInputRouter.js +22 -1
  67. package/src/tools/object-tools/selection/BoxSelectController.js +24 -2
  68. package/src/tools/object-tools/selection/FrameTitleInlineEditorController.js +139 -0
  69. package/src/tools/object-tools/selection/InlineEditorController.js +12 -0
  70. package/src/tools/object-tools/selection/InlineEditorDomFactory.js +36 -0
  71. package/src/tools/object-tools/selection/LassoSelectController.js +125 -0
  72. package/src/tools/object-tools/selection/MindmapInlineEditorController.js +1 -0
  73. package/src/tools/object-tools/selection/SelectInputRouter.js +64 -5
  74. package/src/tools/object-tools/selection/SelectToolLifecycleController.js +11 -1
  75. package/src/tools/object-tools/selection/SelectToolSetup.js +13 -1
  76. package/src/tools/object-tools/selection/TextEditorInteractionController.js +46 -12
  77. package/src/tools/object-tools/selection/TextEditorSyncService.js +1 -0
  78. package/src/tools/object-tools/selection/TextInlineEditorController.js +65 -6
  79. package/src/ui/CommentPopover.js +6 -0
  80. package/src/ui/CommentsBar.js +91 -0
  81. package/src/ui/ConnectorPropertiesPanel.js +150 -0
  82. package/src/ui/ContextMenu.js +25 -0
  83. package/src/ui/DrawingPropertiesPanel.js +362 -0
  84. package/src/ui/FilePropertiesPanel.js +5 -0
  85. package/src/ui/FramePropertiesPanel.js +5 -0
  86. package/src/ui/HtmlTextLayer.js +246 -66
  87. package/src/ui/NotePropertiesPanel.js +6 -0
  88. package/src/ui/ShapePropertiesPanel.js +307 -0
  89. package/src/ui/TextPropertiesPanel.js +100 -1
  90. package/src/ui/Toolbar.js +25 -2
  91. package/src/ui/Topbar.js +2 -2
  92. package/src/ui/animation/HoverLiftController.js +6 -7
  93. package/src/ui/chat/ChatComposer.js +63 -9
  94. package/src/ui/chat/ChatWindow.js +329 -166
  95. package/src/ui/comments/CommentListPanel.js +213 -0
  96. package/src/ui/comments/CommentPinLayer.js +448 -0
  97. package/src/ui/comments/CommentThreadPopover.js +539 -0
  98. package/src/ui/comments/commentFormat.js +32 -0
  99. package/src/ui/connector-properties/ConnectorPropertiesPanelBindings.js +223 -0
  100. package/src/ui/connector-properties/ConnectorPropertiesPanelEventBridge.js +114 -0
  101. package/src/ui/connector-properties/ConnectorPropertiesPanelMapper.js +144 -0
  102. package/src/ui/connector-properties/ConnectorPropertiesPanelRenderer.js +447 -0
  103. package/src/ui/connector-properties/ConnectorPropertiesPanelState.js +61 -0
  104. package/src/ui/connectors/ConnectionAnchorsLayer.js +1 -0
  105. package/src/ui/connectors/ConnectorHandlesLayer.js +321 -0
  106. package/src/ui/connectors/ConnectorLabelLayer.js +334 -0
  107. package/src/ui/connectors/ConnectorLayer.js +264 -57
  108. package/src/ui/handles/HandlesDomRenderer.js +5 -13
  109. package/src/ui/handles/HandlesEventBridge.js +1 -0
  110. package/src/ui/handles/SingleSelectionHandlesController.js +4 -0
  111. package/src/ui/mindmap/MindmapCollapseLayer.js +1 -0
  112. package/src/ui/mindmap/MindmapConnectionLayer.js +1 -0
  113. package/src/ui/mindmap/MindmapHtmlTextLayer.js +6 -0
  114. package/src/ui/shape-properties/ShapePropertiesPanelDom.js +533 -0
  115. package/src/ui/shape-properties/ShapePropertiesPanelSync.js +132 -0
  116. package/src/ui/styles/chat.css +710 -18
  117. package/src/ui/styles/index.css +1 -0
  118. package/src/ui/styles/panels.css +112 -2
  119. package/src/ui/styles/shape-properties-panel.css +250 -0
  120. package/src/ui/styles/toolbar.css +7 -2
  121. package/src/ui/styles/topbar.css +1 -1
  122. package/src/ui/styles/workspace.css +257 -6
  123. package/src/ui/text-properties/TextFormatControls.js +88 -0
  124. package/src/ui/text-properties/TextListRenderer.js +137 -0
  125. package/src/ui/text-properties/TextPropertiesPanelBindings.js +27 -0
  126. package/src/ui/text-properties/TextPropertiesPanelEventBridge.js +3 -1
  127. package/src/ui/text-properties/TextPropertiesPanelMapper.js +56 -0
  128. package/src/ui/text-properties/TextPropertiesPanelRenderer.js +24 -0
  129. package/src/ui/text-properties/TextPropertiesPanelState.js +8 -0
  130. package/src/ui/toolbar/ReactionsPopupController.js +88 -0
  131. package/src/ui/toolbar/ToolbarActionRouter.js +71 -5
  132. package/src/ui/toolbar/ToolbarPopupsController.js +120 -118
  133. package/src/ui/toolbar/ToolbarRenderer.js +9 -1
  134. package/src/ui/toolbar/ToolbarStateController.js +4 -1
  135. package/src/utils/iconLoader.js +17 -16
  136. package/src/utils/markdown.js +14 -0
  137. package/src/utils/richText.js +125 -0
@@ -2,5 +2,6 @@
2
2
  @import './toolbar.css';
3
3
  @import './topbar.css';
4
4
  @import './panels.css';
5
+ @import './shape-properties-panel.css';
5
6
  @import './chat.css';
6
7
 
@@ -7,7 +7,7 @@
7
7
  display: inline-flex;
8
8
  align-items: center;
9
9
  gap: 6px;
10
- padding: 8px 10px;
10
+ padding: 8px;
11
11
  background: #fff;
12
12
  border: 1px solid #e0e0e0;
13
13
  border-radius: 9999px;
@@ -76,6 +76,73 @@
76
76
  }
77
77
  .moodboard-zoombar__menu-item:hover { background: #f5f5f5; }
78
78
 
79
+ .moodboard-commentsbar {
80
+ position: absolute;
81
+ bottom: 16px;
82
+ right: 260px;
83
+ display: inline-flex;
84
+ align-items: center;
85
+ gap: 6px;
86
+ padding: 8px;
87
+ background: #fff;
88
+ border: 1px solid #e0e0e0;
89
+ border-radius: 9999px;
90
+ box-shadow: 0 8px 24px rgba(0,0,0,0.12);
91
+ z-index: 3000;
92
+ pointer-events: auto;
93
+ font-family: 'Roboto', Arial, sans-serif;
94
+ }
95
+
96
+ .moodboard-commentsbar__filter {
97
+ display: inline-flex;
98
+ align-items: center;
99
+ gap: 6px;
100
+ height: 30px;
101
+ padding: 0 12px;
102
+ border: none;
103
+ border-radius: 9999px;
104
+ background: none;
105
+ font-family: inherit;
106
+ font-size: 13px;
107
+ color: #444;
108
+ cursor: pointer;
109
+ white-space: nowrap;
110
+ transition: all 0.2s ease;
111
+ }
112
+ .moodboard-commentsbar__filter:hover { background: #e6e6e6; }
113
+ .moodboard-commentsbar__filter[aria-pressed="true"] {
114
+ background: #EEF2FF;
115
+ color: #4338CA;
116
+ }
117
+
118
+ .moodboard-commentsbar__divider {
119
+ width: 1px;
120
+ height: 20px;
121
+ background: #e0e0e0;
122
+ }
123
+
124
+ .moodboard-commentsbar__button {
125
+ display: inline-flex;
126
+ align-items: center;
127
+ justify-content: center;
128
+ width: 30px;
129
+ height: 30px;
130
+ border: none;
131
+ border-radius: 50%;
132
+ background: none;
133
+ padding: 0;
134
+ color: #444;
135
+ cursor: pointer;
136
+ transition: all 0.2s ease;
137
+ }
138
+ .moodboard-commentsbar__button:hover { background: #e6e6e6; }
139
+
140
+ .moodboard-commentsbar__icon {
141
+ display: inline-flex;
142
+ align-items: center;
143
+ justify-content: center;
144
+ }
145
+
79
146
  .moodboard-mapbar {
80
147
  position: absolute;
81
148
  right: 16px;
@@ -83,7 +150,7 @@
83
150
  display: inline-flex;
84
151
  align-items: center;
85
152
  gap: 6px;
86
- padding: 8px 10px;
153
+ padding: 8px;
87
154
  background: #fff;
88
155
  border: 1px solid #e0e0e0;
89
156
  border-radius: 9999px;
@@ -230,3 +297,46 @@
230
297
  position: relative;
231
298
  }
232
299
 
300
+ .text-properties-panel .tpp-format-btn {
301
+ height: 28px;
302
+ min-width: 28px;
303
+ padding: 0 4px;
304
+ border: 1px solid transparent;
305
+ border-radius: 4px;
306
+ background: none;
307
+ cursor: pointer;
308
+ display: inline-flex;
309
+ align-items: center;
310
+ justify-content: center;
311
+ color: #444;
312
+ flex-shrink: 0;
313
+ transition: background 0.15s;
314
+ }
315
+ .text-properties-panel .tpp-format-btn:hover { background: #f0f0f0; }
316
+ .text-properties-panel .tpp-format-btn.is-active {
317
+ background: #e8eaff;
318
+ border-color: #6155F5;
319
+ color: #6155F5;
320
+ }
321
+
322
+ .text-properties-panel .tpp-align-select,
323
+ .text-properties-panel .tpp-list-select {
324
+ border: 1px solid #ddd;
325
+ border-radius: 4px;
326
+ padding: 4px 6px;
327
+ font-size: 12px;
328
+ background-color: #fff;
329
+ height: 28px;
330
+ cursor: pointer;
331
+ font-family: 'Roboto', Arial, sans-serif;
332
+ }
333
+ .text-properties-panel .tpp-align-select { min-width: 86px; }
334
+ .text-properties-panel .tpp-list-select { min-width: 110px; }
335
+
336
+ .text-properties-panel .tpp-lh-slider {
337
+ width: 68px;
338
+ accent-color: #6155F5;
339
+ cursor: pointer;
340
+ flex-shrink: 0;
341
+ }
342
+
@@ -0,0 +1,250 @@
1
+ /* Shape Properties Panel */
2
+
3
+ .shape-properties-panel {
4
+ position: absolute;
5
+ pointer-events: auto;
6
+ display: none;
7
+ flex-direction: column;
8
+ align-items: stretch;
9
+ background-color: #ffffff;
10
+ border: 1px solid #e0e0e0;
11
+ border-radius: 12px;
12
+ box-shadow: 0 6px 24px rgba(0, 0, 0, 0.16);
13
+ font-size: 12px;
14
+ font-family: 'Roboto', Arial, sans-serif;
15
+ z-index: 10000;
16
+ white-space: nowrap;
17
+ user-select: none;
18
+ min-width: 0;
19
+ }
20
+
21
+ .spp-row {
22
+ display: flex;
23
+ flex-direction: row;
24
+ align-items: center;
25
+ gap: 2px;
26
+ padding: 6px 14px;
27
+ height: 40px;
28
+ box-sizing: border-box;
29
+ }
30
+
31
+ .spp-row + .spp-row {
32
+ border-top: 1px solid #f0f0f0;
33
+ }
34
+
35
+ .spp-sep {
36
+ width: 1px;
37
+ height: 18px;
38
+ background: #e0e0e0;
39
+ margin: 0 6px;
40
+ flex-shrink: 0;
41
+ }
42
+
43
+ /* Icon buttons */
44
+ .spp-btn {
45
+ display: inline-flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ width: 28px;
49
+ height: 28px;
50
+ border: 1px solid transparent;
51
+ border-radius: 6px;
52
+ background: none;
53
+ cursor: pointer;
54
+ padding: 0;
55
+ color: #444;
56
+ flex-shrink: 0;
57
+ transition: background 0.12s;
58
+ }
59
+ .spp-btn:hover { background: #f0f0f0; }
60
+ .spp-btn.spp-btn--active {
61
+ background: #EFF6FF;
62
+ border-color: #2563EB;
63
+ color: #2563EB;
64
+ }
65
+
66
+ /* Popover trigger buttons (wider, show label) */
67
+ .spp-trigger {
68
+ display: inline-flex;
69
+ align-items: center;
70
+ gap: 4px;
71
+ height: 28px;
72
+ padding: 0 8px;
73
+ border: 1px solid #ddd;
74
+ border-radius: 6px;
75
+ background: #fff;
76
+ cursor: pointer;
77
+ font-size: 12px;
78
+ font-family: 'Roboto', Arial, sans-serif;
79
+ color: #333;
80
+ flex-shrink: 0;
81
+ transition: background 0.12s;
82
+ }
83
+ .spp-trigger:hover { background: #f5f5f5; }
84
+ .spp-trigger svg { flex-shrink: 0; }
85
+
86
+ /* Label */
87
+ .spp-label {
88
+ font-size: 11px;
89
+ color: #888;
90
+ margin-right: 4px;
91
+ flex-shrink: 0;
92
+ }
93
+
94
+ /* Color swatch button */
95
+ .spp-color-btn {
96
+ width: 24px;
97
+ height: 24px;
98
+ border-radius: 50%;
99
+ border: 1px solid #ccc;
100
+ cursor: pointer;
101
+ padding: 0;
102
+ flex-shrink: 0;
103
+ display: block;
104
+ box-sizing: border-box;
105
+ position: relative;
106
+ }
107
+
108
+ /* Select */
109
+ .spp-select {
110
+ height: 26px;
111
+ border: 1px solid #ddd;
112
+ border-radius: 5px;
113
+ padding: 0 6px;
114
+ font-size: 12px;
115
+ font-family: 'Roboto', Arial, sans-serif;
116
+ background: #fff;
117
+ cursor: pointer;
118
+ color: #333;
119
+ flex-shrink: 0;
120
+ }
121
+ .spp-select--font { min-width: 110px; }
122
+ .spp-select--size { min-width: 54px; }
123
+
124
+ /* Radius row: compact */
125
+ .spp-radius-group {
126
+ display: inline-flex;
127
+ align-items: center;
128
+ gap: 4px;
129
+ }
130
+ .spp-radius-slider {
131
+ width: 64px;
132
+ height: 4px;
133
+ cursor: pointer;
134
+ accent-color: #2563EB;
135
+ }
136
+
137
+ /* ── Popovers ─────────────────────────────────────────────────────────────── */
138
+
139
+ .spp-popover {
140
+ position: absolute;
141
+ z-index: 10001;
142
+ background: #fff;
143
+ border: 1px solid #e0e0e0;
144
+ border-radius: 10px;
145
+ box-shadow: 0 6px 24px rgba(0, 0, 0, 0.16);
146
+ padding: 10px;
147
+ display: none;
148
+ }
149
+
150
+ /* Shape kind grid */
151
+ .spp-kind-grid {
152
+ display: grid;
153
+ grid-template-columns: repeat(4, 40px);
154
+ gap: 6px;
155
+ }
156
+ .spp-kind-btn {
157
+ display: flex;
158
+ flex-direction: column;
159
+ align-items: center;
160
+ justify-content: center;
161
+ width: 40px;
162
+ height: 40px;
163
+ border: 1px solid #e0e0e0;
164
+ border-radius: 7px;
165
+ background: #fafafa;
166
+ cursor: pointer;
167
+ padding: 0;
168
+ gap: 2px;
169
+ font-size: 9px;
170
+ color: #666;
171
+ transition: background 0.12s, border-color 0.12s;
172
+ }
173
+ .spp-kind-btn:hover { background: #f0f0f0; border-color: #ccc; }
174
+ .spp-kind-btn.spp-kind-btn--active {
175
+ background: #EFF6FF;
176
+ border-color: #2563EB;
177
+ color: #2563EB;
178
+ }
179
+ .spp-kind-btn svg { display: block; }
180
+
181
+ /* Color palette */
182
+ .spp-color-grid {
183
+ display: grid;
184
+ grid-template-columns: repeat(6, 26px);
185
+ gap: 5px;
186
+ margin-bottom: 6px;
187
+ }
188
+ .spp-color-swatch {
189
+ width: 26px;
190
+ height: 26px;
191
+ border-radius: 50%;
192
+ border: 1px solid #ddd;
193
+ cursor: pointer;
194
+ padding: 0;
195
+ box-sizing: border-box;
196
+ position: relative;
197
+ display: block;
198
+ transition: transform 0.1s;
199
+ }
200
+ .spp-color-swatch:hover { transform: scale(1.1); }
201
+ .spp-color-swatch--white { border-color: #ccc; }
202
+ .spp-color-swatch .spp-tick {
203
+ position: absolute;
204
+ left: 50%;
205
+ top: 50%;
206
+ width: 8px;
207
+ height: 5px;
208
+ transform: translate(-50%, -50%) rotate(315deg) scaleX(-1);
209
+ border-right: 2px solid #111;
210
+ border-bottom: 2px solid #111;
211
+ display: none;
212
+ pointer-events: none;
213
+ }
214
+ .spp-color-swatch--active .spp-tick { display: block; }
215
+
216
+ /* Border popover layout */
217
+ .spp-border-group {
218
+ display: flex;
219
+ flex-direction: column;
220
+ gap: 8px;
221
+ min-width: 200px;
222
+ }
223
+ .spp-border-row {
224
+ display: flex;
225
+ align-items: center;
226
+ gap: 8px;
227
+ }
228
+ .spp-border-label {
229
+ font-size: 11px;
230
+ color: #888;
231
+ min-width: 68px;
232
+ flex-shrink: 0;
233
+ }
234
+ .spp-style-btns {
235
+ display: flex;
236
+ gap: 4px;
237
+ }
238
+ .spp-slider-full {
239
+ flex: 1;
240
+ height: 4px;
241
+ cursor: pointer;
242
+ accent-color: #2563EB;
243
+ min-width: 80px;
244
+ }
245
+ .spp-slider-value {
246
+ font-size: 11px;
247
+ color: #555;
248
+ min-width: 28px;
249
+ text-align: right;
250
+ }
@@ -46,8 +46,6 @@
46
46
  .moodboard-toolbar__button--active { background: #80D8FF !important; color: inherit !important; border-radius: 50%; }
47
47
  .moodboard-toolbar__button--disabled { opacity: 0.4; cursor: not-allowed; }
48
48
  .moodboard-toolbar__button svg { width: 20px; height: 20px; transition: transform 0.2s ease; color: #212121; }
49
- .moodboard-toolbar__button--text-add svg { height: 16px; width: auto; }
50
- .moodboard-toolbar__button--text-add:hover svg { transform: none; }
51
49
  .moodboard-toolbar__button:hover svg { transform: none; }
52
50
  .moodboard-toolbar__button--image2 svg { color: #7c3aed; }
53
51
 
@@ -63,6 +61,7 @@
63
61
  .moodboard-toolbar__button--comments:hover,
64
62
  .moodboard-toolbar__button--attachments:hover,
65
63
  .moodboard-toolbar__button--emoji:hover,
64
+ .moodboard-toolbar__button--reactions:hover,
66
65
  .moodboard-toolbar__button--frame:hover,
67
66
  .moodboard-toolbar__button--mindmap:hover,
68
67
  .moodboard-toolbar__button--clear:hover,
@@ -74,6 +73,12 @@
74
73
  .moodboard-toolbar__popup--shapes { width: auto; }
75
74
  .moodboard-toolbar__popup--draw { width: auto; padding: 10px; }
76
75
  .moodboard-toolbar__popup--emoji { width: 360px; max-height: 420px; overflow: auto; padding: 8px 10px; }
76
+ .moodboard-toolbar__popup--reactions { width: 232px; padding: 10px; }
77
+ .moodboard-reactions__grid { display: grid; grid-template-columns: repeat(4, 48px); gap: 6px; }
78
+ .moodboard-reactions__btn { width: 48px; height: 48px; border: none; background: #f5f5f5; border-radius: 8px; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 4px; transition: background 0.15s; }
79
+ .moodboard-reactions__btn:hover { background: #e0f4ff; }
80
+ .moodboard-reactions__img { width: 36px; height: 36px; object-fit: contain; }
81
+ .moodboard-reactions__empty { font-size: 12px; color: #999; padding: 8px; text-align: center; }
77
82
 
78
83
  /* Divider inside toolbar */
79
84
  .moodboard-toolbar__divider { width: 100%; height: 1px; background: #e0e0e0; margin: 6px 0; }
@@ -7,7 +7,7 @@
7
7
  display: inline-flex;
8
8
  align-items: center;
9
9
  gap: 6px;
10
- padding: 8px 10px; /* горизонтальные отступы по 30px */
10
+ padding: 8px;
11
11
  background: #fff;
12
12
  border: 1px solid #e0e0e0;
13
13
  border-radius: 9999px; /* полностью круглые края */