@hakumi-dev/hakumi-components 0.1.17-pre → 0.1.19-pre

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 (56) hide show
  1. package/README.md +218 -369
  2. package/app/javascript/hakumi_components/controllers/hakumi/admin_panel_controller.js +5 -7
  3. package/app/javascript/hakumi_components/controllers/hakumi/back_top_controller.js +1 -1
  4. package/app/javascript/hakumi_components/controllers/hakumi/button_controller.js +108 -2
  5. package/app/javascript/hakumi_components/controllers/hakumi/calendar_controller.js +183 -95
  6. package/app/javascript/hakumi_components/controllers/hakumi/color_picker_controller.js +23 -285
  7. package/app/javascript/hakumi_components/controllers/hakumi/date_picker_controller.js +274 -262
  8. package/app/javascript/hakumi_components/controllers/hakumi/float_button_group_controller.js +2 -2
  9. package/app/javascript/hakumi_components/controllers/hakumi/message_controller.js +4 -2
  10. package/app/javascript/hakumi_components/controllers/hakumi/modal_controller.js +119 -125
  11. package/app/javascript/hakumi_components/controllers/hakumi/table/editable.js +291 -0
  12. package/app/javascript/hakumi_components/controllers/hakumi/table_controller.js +166 -366
  13. package/app/javascript/hakumi_components/controllers/hakumi/tabs_controller.js +8 -2
  14. package/app/javascript/hakumi_components/controllers/hakumi/tag_controller.js +27 -25
  15. package/app/javascript/hakumi_components/controllers/hakumi/tag_group_controller.js +19 -18
  16. package/app/javascript/hakumi_components/controllers/hakumi/theme_controller.js +116 -117
  17. package/app/javascript/hakumi_components/controllers/hakumi/transfer_controller.js +17 -1
  18. package/app/javascript/hakumi_components/controllers/hakumi/tree_controller.js +363 -78
  19. package/app/javascript/hakumi_components/controllers/hakumi/typography_controller.js +3 -3
  20. package/app/javascript/hakumi_components/controllers/hakumi/upload_controller.js +320 -204
  21. package/app/javascript/hakumi_components/core/render_component.js +37 -11
  22. package/app/javascript/hakumi_components/utils/color_helper.js +262 -0
  23. package/app/javascript/stylesheets/_base.scss +9 -0
  24. package/app/javascript/stylesheets/_hakumi_components.scss +1 -0
  25. package/app/javascript/stylesheets/components/_breadcrumb.scss +2 -2
  26. package/app/javascript/stylesheets/components/_calendar.scss +13 -13
  27. package/app/javascript/stylesheets/components/_cascader.scss +5 -5
  28. package/app/javascript/stylesheets/components/_checkbox.scss +9 -11
  29. package/app/javascript/stylesheets/components/_color_picker.scss +11 -11
  30. package/app/javascript/stylesheets/components/_date_picker.scss +4 -4
  31. package/app/javascript/stylesheets/components/_descriptions.scss +2 -2
  32. package/app/javascript/stylesheets/components/_drawer.scss +3 -3
  33. package/app/javascript/stylesheets/components/_dropdown.scss +2 -2
  34. package/app/javascript/stylesheets/components/_flex.scss +1 -1
  35. package/app/javascript/stylesheets/components/_float_button.scss +5 -5
  36. package/app/javascript/stylesheets/components/_form_item.scss +92 -0
  37. package/app/javascript/stylesheets/components/_image.scss +15 -15
  38. package/app/javascript/stylesheets/components/_input.scss +23 -113
  39. package/app/javascript/stylesheets/components/_layout.scss +27 -26
  40. package/app/javascript/stylesheets/components/_menu.scss +15 -15
  41. package/app/javascript/stylesheets/components/_modal.scss +13 -13
  42. package/app/javascript/stylesheets/components/_notification.scss +3 -3
  43. package/app/javascript/stylesheets/components/_popover.scss +1 -1
  44. package/app/javascript/stylesheets/components/_segmented.scss +3 -3
  45. package/app/javascript/stylesheets/components/_select.scss +6 -6
  46. package/app/javascript/stylesheets/components/_slider.scss +1 -1
  47. package/app/javascript/stylesheets/components/_spin.scss +2 -2
  48. package/app/javascript/stylesheets/components/_steps.scss +10 -10
  49. package/app/javascript/stylesheets/components/_switch.scss +11 -10
  50. package/app/javascript/stylesheets/components/_table.scss +6 -6
  51. package/app/javascript/stylesheets/components/_tag.scss +2 -2
  52. package/app/javascript/stylesheets/components/_tooltip.scss +4 -4
  53. package/app/javascript/stylesheets/components/_tree_select.scss +3 -3
  54. package/app/javascript/stylesheets/components/_typography.scss +3 -3
  55. package/app/javascript/stylesheets/components/_upload.scss +4 -4
  56. package/package.json +2 -2
@@ -25,7 +25,7 @@
25
25
  align-items: center;
26
26
  gap: 8px;
27
27
  cursor: pointer;
28
- transition: all 0.2s ease;
28
+ transition: all $transition-duration-base ease;
29
29
  outline: none;
30
30
  user-select: none;
31
31
 
@@ -43,7 +43,7 @@
43
43
  border: 1px solid var(--hakumi-color-picker-border);
44
44
  background-color: #1677ff;
45
45
  cursor: pointer;
46
- transition: all 0.2s ease;
46
+ transition: all $transition-duration-base ease;
47
47
  overflow: hidden;
48
48
 
49
49
  background-image:
@@ -116,7 +116,7 @@
116
116
  box-shadow: var(--hakumi-color-picker-shadow);
117
117
  border: 1px solid var(--hakumi-color-picker-border);
118
118
  z-index: 1050;
119
- transition: opacity 0.2s ease;
119
+ transition: opacity $transition-duration-base ease;
120
120
 
121
121
  &-hidden {
122
122
  display: none;
@@ -136,7 +136,7 @@
136
136
  cursor: crosshair;
137
137
  user-select: none;
138
138
 
139
- background-image: linear-gradient(to right, #fff, transparent);
139
+ background-image: linear-gradient(to right, var(--color-text-inverse), transparent);
140
140
 
141
141
  &::after {
142
142
  content: '';
@@ -163,7 +163,7 @@
163
163
  position: absolute;
164
164
  width: 16px;
165
165
  height: 16px;
166
- border: 2px solid #fff;
166
+ border: 2px solid var(--color-text-inverse);
167
167
  border-radius: 50%;
168
168
  box-shadow: 0 0 4px rgba(0, 0, 0, 0.5);
169
169
  transform: translate(-50%, -50%);
@@ -199,7 +199,7 @@
199
199
  &-slider-alpha {
200
200
  background:
201
201
  linear-gradient(to right, transparent, #1677ff),
202
- conic-gradient(#d3d3d3 0.25turn, #fff 0turn 0.5turn, #d3d3d3 0turn 0.75turn, #fff 0turn 1turn);
202
+ conic-gradient(#d3d3d3 0.25turn, var(--color-text-inverse) 0turn 0.5turn, #d3d3d3 0turn 0.75turn, var(--color-text-inverse) 0turn 1turn);
203
203
  background-size: 100%, 8px 8px;
204
204
  border: 1px solid var(--hakumi-color-picker-border);
205
205
  }
@@ -210,9 +210,9 @@
210
210
  left: 0;
211
211
  width: 16px;
212
212
  height: 16px;
213
- border: 2px solid #fff;
213
+ border: 2px solid var(--color-text-inverse);
214
214
  border-radius: 50%;
215
- background: #fff;
215
+ background: var(--color-text-inverse);
216
216
  box-shadow: 0 0 4px rgba(0, 0, 0, 0.5);
217
217
  transform: translate(-50%, -50%);
218
218
  cursor: grab;
@@ -246,7 +246,7 @@
246
246
  background: var(--hakumi-color-picker-bg);
247
247
  color: var(--hakumi-color-picker-text);
248
248
  font-size: 12px;
249
- transition: all 0.2s ease;
249
+ transition: all $transition-duration-base ease;
250
250
 
251
251
  &:focus {
252
252
  outline: none;
@@ -271,7 +271,7 @@
271
271
  color: var(--hakumi-color-picker-text);
272
272
  font-size: 12px;
273
273
  cursor: pointer;
274
- transition: all 0.2s ease;
274
+ transition: all $transition-duration-base ease;
275
275
 
276
276
  &:focus {
277
277
  outline: none;
@@ -314,7 +314,7 @@
314
314
  border-radius: 4px;
315
315
  cursor: pointer;
316
316
  border: 1px solid var(--hakumi-color-picker-border);
317
- transition: all 0.2s ease;
317
+ transition: all $transition-duration-base ease;
318
318
  position: relative;
319
319
 
320
320
  background-image:
@@ -75,7 +75,7 @@
75
75
  border: none;
76
76
  cursor: pointer;
77
77
  opacity: 0;
78
- transition: color 0.2s ease, opacity 0.2s ease;
78
+ transition: color $transition-duration-base ease, opacity $transition-duration-base ease;
79
79
 
80
80
  &:hover {
81
81
  color: var(--color-text-secondary);
@@ -94,7 +94,7 @@
94
94
  margin-top: 4px;
95
95
  background-color: var(--color-bg-elevated);
96
96
  border-radius: 8px;
97
- box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);
97
+ box-shadow: var(--shadow-lg);
98
98
  }
99
99
 
100
100
  &-panel {
@@ -205,7 +205,7 @@
205
205
  cursor: pointer;
206
206
  font-size: 13px;
207
207
  line-height: 1.5;
208
- transition: background 0.2s ease;
208
+ transition: background $transition-duration-base ease;
209
209
 
210
210
  &:hover:not(.hakumi-time-picker-cell-selected) {
211
211
  background: var(--color-fill-tertiary);
@@ -243,7 +243,7 @@
243
243
  padding: 4px 12px;
244
244
  cursor: pointer;
245
245
  border-radius: 4px;
246
- transition: background 0.2s ease;
246
+ transition: background $transition-duration-base ease;
247
247
  font-weight: 500;
248
248
 
249
249
  &:hover {
@@ -85,8 +85,8 @@
85
85
  font-size: var(--font-size-sm);
86
86
  }
87
87
 
88
- &-middle &-item-label,
89
- &-middle &-item-content {
88
+ &-default &-item-label,
89
+ &-default &-item-content {
90
90
  padding: var(--spacing-sm) var(--spacing-md);
91
91
  }
92
92
 
@@ -12,14 +12,14 @@
12
12
  inset: 0;
13
13
  background-color: rgba(0, 0, 0, 0.45);
14
14
  opacity: 0;
15
- transition: opacity 0.2s ease;
15
+ transition: opacity $transition-duration-base ease;
16
16
  pointer-events: auto;
17
17
  }
18
18
 
19
19
  &-content-wrapper {
20
20
  position: fixed;
21
21
  background: transparent;
22
- transition: transform 0.3s cubic-bezier(0.08, 0.82, 0.17, 1);
22
+ transition: transform $transition-duration-slow $ease-out-circ;
23
23
  pointer-events: auto;
24
24
  display: flex;
25
25
  }
@@ -71,7 +71,7 @@
71
71
  cursor: pointer;
72
72
  padding: 0;
73
73
  color: var(--color-text-secondary);
74
- transition: color 0.2s ease;
74
+ transition: color $transition-duration-base ease;
75
75
 
76
76
  &:hover {
77
77
  color: var(--color-text-heading);
@@ -28,7 +28,7 @@
28
28
  opacity: 0;
29
29
  visibility: hidden;
30
30
  transform: translateY(-4px);
31
- transition: opacity 0.2s, transform 0.2s, visibility 0.2s;
31
+ transition: opacity $transition-duration-base, transform $transition-duration-base, visibility $transition-duration-base;
32
32
  max-height: min(400px, calc(100vh - 16px));
33
33
  overflow-y: auto;
34
34
 
@@ -103,7 +103,7 @@
103
103
  padding: 0;
104
104
  margin: 0;
105
105
  border-radius: var(--border-radius-sm);
106
- transition: background-color 0.2s;
106
+ transition: background-color $transition-duration-base;
107
107
 
108
108
  &:hover:not(.hakumi-dropdown-menu-item-disabled) {
109
109
  background-color: var(--color-bg-spot);
@@ -60,7 +60,7 @@
60
60
  gap: var(--spacing-xs);
61
61
  }
62
62
 
63
- &-gap-middle {
63
+ &-gap-default {
64
64
  gap: var(--spacing-md);
65
65
  }
66
66
 
@@ -25,7 +25,7 @@
25
25
  background: var(--color-bg-container);
26
26
  color: var(--color-text);
27
27
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
28
- transition: transform 0.2s ease, box-shadow 0.2s ease;
28
+ transition: transform $transition-duration-base ease, box-shadow $transition-duration-base ease;
29
29
 
30
30
  &:hover {
31
31
  transform: translateY(-2px);
@@ -140,9 +140,9 @@
140
140
  .hakumi-float-button-back-top {
141
141
  opacity: 0;
142
142
  pointer-events: none;
143
- transition: opacity 0.2s ease;
143
+ transition: opacity $transition-duration-base ease;
144
144
 
145
- &.is-visible {
145
+ &.hakumi-float-button-back-top-visible {
146
146
  opacity: 1;
147
147
  pointer-events: auto;
148
148
  }
@@ -196,11 +196,11 @@
196
196
  pointer-events: none;
197
197
  visibility: hidden;
198
198
  transform: translateY(10px);
199
- transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease, max-height 0.2s ease;
199
+ transition: opacity $transition-duration-base ease, transform $transition-duration-base ease, visibility $transition-duration-base ease, max-height $transition-duration-base ease;
200
200
  max-height: 0;
201
201
  padding: 0;
202
202
 
203
- &.open {
203
+ &.hakumi-float-button-group-actions-open {
204
204
  display: flex;
205
205
  opacity: 1;
206
206
  pointer-events: auto;
@@ -0,0 +1,92 @@
1
+ // Hakumi Form Item Component
2
+ @use '../variables' as *;
3
+
4
+ .hakumi-form-item {
5
+ margin-bottom: 24px;
6
+ vertical-align: top;
7
+
8
+
9
+ &-label {
10
+ display: inline-block;
11
+ flex-grow: 0;
12
+ overflow: hidden;
13
+ white-space: nowrap;
14
+ text-align: start;
15
+ vertical-align: middle;
16
+ margin-bottom: 8px;
17
+ color: var(--color-text);
18
+ font-size: var(--font-size-base);
19
+ line-height: 1.5715;
20
+
21
+ >label {
22
+ position: relative;
23
+ display: inline-flex;
24
+ align-items: center;
25
+ max-width: 100%;
26
+ height: 32px;
27
+ color: var(--color-text);
28
+ font-size: var(--font-size-base);
29
+
30
+ &::after {
31
+ content: ':';
32
+ position: relative;
33
+ top: -0.5px;
34
+ margin: 0 8px 0 2px;
35
+ }
36
+ }
37
+ }
38
+
39
+
40
+ &-required-mark {
41
+ display: inline-block;
42
+ margin-right: 4px;
43
+ color: var(--color-error);
44
+ font-size: var(--font-size-base);
45
+ line-height: 1;
46
+ content: '*';
47
+ }
48
+
49
+
50
+ &-control {
51
+ display: flex;
52
+ flex-direction: column;
53
+ flex-grow: 1;
54
+
55
+ &-input {
56
+ position: relative;
57
+ display: flex;
58
+ align-items: center;
59
+ min-height: 32px;
60
+
61
+ &-content {
62
+ flex: auto;
63
+ max-width: 100%;
64
+ }
65
+ }
66
+ }
67
+
68
+
69
+ &-explain {
70
+ clear: both;
71
+ color: var(--color-text-secondary);
72
+ font-size: var(--font-size-sm);
73
+ line-height: 1.5715;
74
+ margin-top: 4px;
75
+
76
+ &-error {
77
+ color: var(--color-error);
78
+ }
79
+ }
80
+
81
+
82
+ &-extra {
83
+ clear: both;
84
+ min-height: 24px;
85
+ color: var(--color-text-secondary);
86
+ font-size: var(--font-size-sm);
87
+ line-height: 1.5715;
88
+ transition: color $transition-duration-base $ease-in-out;
89
+ }
90
+
91
+
92
+ }
@@ -17,7 +17,7 @@
17
17
  &-placeholder {
18
18
  .hakumi-image-img {
19
19
  filter: blur(10px);
20
- transition: filter 0.3s ease;
20
+ transition: filter $transition-duration-slow ease;
21
21
  }
22
22
 
23
23
  &.hakumi-image-loaded .hakumi-image-img {
@@ -35,7 +35,7 @@
35
35
  align-items: center;
36
36
  justify-content: center;
37
37
  background-color: var(--color-bg-spot);
38
- transition: opacity 0.3s ease;
38
+ transition: opacity $transition-duration-slow ease;
39
39
 
40
40
  &-content {
41
41
  color: var(--color-text-tertiary);
@@ -82,11 +82,11 @@
82
82
  display: flex;
83
83
  align-items: center;
84
84
  justify-content: center;
85
- color: #fff;
85
+ color: var(--color-text-inverse);
86
86
  background-color: rgba(0, 0, 0, 0.5);
87
87
  cursor: pointer;
88
88
  opacity: 0;
89
- transition: opacity 0.3s ease;
89
+ transition: opacity $transition-duration-slow ease;
90
90
 
91
91
  &-info {
92
92
  display: flex;
@@ -127,7 +127,7 @@
127
127
  z-index: 1080;
128
128
  pointer-events: none;
129
129
  opacity: 0;
130
- transition: opacity 0.3s ease;
130
+ transition: opacity $transition-duration-slow ease;
131
131
 
132
132
  &.hakumi-image-preview-active {
133
133
  opacity: 1;
@@ -175,7 +175,7 @@
175
175
  justify-content: center;
176
176
  max-width: 100%;
177
177
  max-height: 100%;
178
- transition: transform 0.3s ease;
178
+ transition: transform $transition-duration-slow ease;
179
179
  }
180
180
 
181
181
  .hakumi-image-preview-img {
@@ -184,7 +184,7 @@
184
184
  object-fit: contain;
185
185
  cursor: grab;
186
186
  user-select: none;
187
- transition: transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);
187
+ transition: transform $transition-duration-slow $ease-out;
188
188
 
189
189
  &.hakumi-image-preview-img-dragging {
190
190
  cursor: grabbing;
@@ -208,10 +208,10 @@
208
208
  border: none;
209
209
  border-radius: 50%;
210
210
  cursor: pointer;
211
- transition: background-color 0.2s, color 0.2s;
211
+ transition: background-color $transition-duration-base, color $transition-duration-base;
212
212
 
213
213
  &:hover {
214
- color: #fff;
214
+ color: var(--color-text-inverse);
215
215
  background-color: rgba(255, 255, 255, 0.1);
216
216
  }
217
217
 
@@ -237,10 +237,10 @@
237
237
  border: none;
238
238
  border-radius: 50%;
239
239
  cursor: pointer;
240
- transition: background-color 0.2s, color 0.2s, opacity 0.2s;
240
+ transition: background-color $transition-duration-base, color $transition-duration-base, opacity $transition-duration-base;
241
241
 
242
242
  &:hover {
243
- color: #fff;
243
+ color: var(--color-text-inverse);
244
244
  background-color: rgba(0, 0, 0, 0.2);
245
245
  }
246
246
 
@@ -290,10 +290,10 @@
290
290
  border: none;
291
291
  border-radius: 50%;
292
292
  cursor: pointer;
293
- transition: background-color 0.2s, color 0.2s, opacity 0.2s;
293
+ transition: background-color $transition-duration-base, color $transition-duration-base, opacity $transition-duration-base;
294
294
 
295
295
  &:hover:not(:disabled) {
296
- color: #fff;
296
+ color: var(--color-text-inverse);
297
297
  background-color: rgba(255, 255, 255, 0.1);
298
298
  }
299
299
 
@@ -340,11 +340,11 @@
340
340
 
341
341
  .hakumi-image-preview-img {
342
342
  &.hakumi-image-preview-img-zoom-in {
343
- animation: imageZoomIn 0.3s ease forwards;
343
+ animation: imageZoomIn $transition-duration-slow ease forwards;
344
344
  }
345
345
 
346
346
  &.hakumi-image-preview-img-zoom-out {
347
- animation: imageZoomOut 0.3s ease forwards;
347
+ animation: imageZoomOut $transition-duration-slow ease forwards;
348
348
  }
349
349
  }
350
350
 
@@ -4,118 +4,6 @@
4
4
 
5
5
 
6
6
 
7
- .hakumi-form-item {
8
- margin-bottom: 24px;
9
- vertical-align: top;
10
-
11
-
12
- &-label {
13
- display: inline-block;
14
- flex-grow: 0;
15
- overflow: hidden;
16
- white-space: nowrap;
17
- text-align: start;
18
- vertical-align: middle;
19
- margin-bottom: 8px;
20
- color: var(--color-text);
21
- font-size: var(--font-size-base);
22
- line-height: 1.5715;
23
-
24
- >label {
25
- position: relative;
26
- display: inline-flex;
27
- align-items: center;
28
- max-width: 100%;
29
- height: 32px;
30
- color: var(--color-text);
31
- font-size: var(--font-size-base);
32
-
33
- &::after {
34
- content: ':';
35
- position: relative;
36
- top: -0.5px;
37
- margin: 0 8px 0 2px;
38
- }
39
- }
40
- }
41
-
42
-
43
- &-required-mark {
44
- display: inline-block;
45
- margin-right: 4px;
46
- color: var(--color-error);
47
- font-size: var(--font-size-base);
48
- line-height: 1;
49
- content: '*';
50
- }
51
-
52
-
53
- &-control {
54
- display: flex;
55
- flex-direction: column;
56
- flex-grow: 1;
57
-
58
- &-input {
59
- position: relative;
60
- display: flex;
61
- align-items: center;
62
- min-height: 32px;
63
-
64
- &-content {
65
- flex: auto;
66
- max-width: 100%;
67
- }
68
- }
69
- }
70
-
71
-
72
- &-explain {
73
- clear: both;
74
- color: var(--color-text-secondary);
75
- font-size: var(--font-size-sm);
76
- line-height: 1.5715;
77
- margin-top: 4px;
78
-
79
- &-error {
80
- color: var(--color-error);
81
- }
82
- }
83
-
84
-
85
- &-extra {
86
- clear: both;
87
- min-height: 24px;
88
- color: var(--color-text-secondary);
89
- font-size: var(--font-size-sm);
90
- line-height: 1.5715;
91
- transition: color $transition-duration-base $ease-in-out;
92
- }
93
-
94
-
95
- &-has-error {
96
-
97
- .hakumi-input,
98
- .hakumi-input-affix-wrapper,
99
- .hakumi-input:hover,
100
- .hakumi-input-affix-wrapper:hover {
101
- background-color: var(--color-component-bg);
102
- border-color: var(--color-error);
103
- }
104
-
105
- .hakumi-input:focus,
106
- .hakumi-input-affix-wrapper:focus,
107
- .hakumi-input-focused,
108
- .hakumi-input-affix-wrapper-focused {
109
- border-color: var(--color-error-hover);
110
- box-shadow: 0 0 0 2px var(--color-error-outline);
111
- outline: 0;
112
- }
113
- }
114
- }
115
-
116
-
117
-
118
-
119
7
  .hakumi-input {
120
8
  box-sizing: border-box;
121
9
  margin: 0;
@@ -256,6 +144,28 @@
256
144
 
257
145
 
258
146
 
147
+ .hakumi-form-item-has-error {
148
+ .hakumi-input,
149
+ .hakumi-input-affix-wrapper,
150
+ .hakumi-input:hover,
151
+ .hakumi-input-affix-wrapper:hover {
152
+ background-color: var(--color-component-bg);
153
+ border-color: var(--color-error);
154
+ }
155
+
156
+ .hakumi-input:focus,
157
+ .hakumi-input-affix-wrapper:focus,
158
+ .hakumi-input-focused,
159
+ .hakumi-input-affix-wrapper-focused {
160
+ border-color: var(--color-error-hover);
161
+ box-shadow: 0 0 0 2px var(--color-error-outline);
162
+ outline: 0;
163
+ }
164
+ }
165
+
166
+
167
+
168
+
259
169
  .hakumi-input-prefix,
260
170
  .hakumi-input-suffix {
261
171
  display: flex;
@@ -404,4 +314,4 @@ html[data-theme='dark'] {
404
314
  color: rgba(255, 255, 255, 0.85);
405
315
  }
406
316
  }
407
- }
317
+ }