spree_admin 5.2.0.rc3 → 5.2.0

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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/spree/admin/application.scss +1 -1
  3. data/app/assets/stylesheets/spree/admin/components/_dropdowns.scss +2 -0
  4. data/app/assets/stylesheets/spree/admin/components/_main.scss +2 -233
  5. data/app/assets/stylesheets/spree/admin/components/_sidebar.scss +693 -0
  6. data/app/assets/stylesheets/spree/admin/global/_variables.scss +1 -0
  7. data/app/assets/stylesheets/spree/admin/shared/_base.scss +7 -1
  8. data/app/assets/stylesheets/spree/admin/views/_dashboard.scss +14 -0
  9. data/app/controllers/spree/admin/integrations_controller.rb +1 -1
  10. data/app/controllers/spree/admin/metafields_controller.rb +1 -1
  11. data/app/controllers/spree/admin/page_blocks_controller.rb +1 -1
  12. data/app/controllers/spree/admin/payment_methods_controller.rb +1 -1
  13. data/app/controllers/spree/admin/promotion_actions_controller.rb +1 -1
  14. data/app/controllers/spree/admin/promotion_rules_controller.rb +1 -1
  15. data/app/controllers/spree/admin/promotions_controller.rb +1 -1
  16. data/app/controllers/spree/admin/reports_controller.rb +1 -1
  17. data/app/controllers/spree/admin/taxons_controller.rb +1 -1
  18. data/app/controllers/spree/admin/translations_controller.rb +1 -1
  19. data/app/helpers/spree/admin/base_helper.rb +1 -1
  20. data/app/helpers/spree/admin/drawer_helper.rb +6 -6
  21. data/app/helpers/spree/admin/dropdown_helper.rb +10 -2
  22. data/app/helpers/spree/admin/modal_helper.rb +2 -0
  23. data/app/helpers/spree/admin/navigation_helper.rb +46 -3
  24. data/app/helpers/spree/admin/orders_filters_helper.rb +1 -0
  25. data/app/helpers/spree/admin/promotion_actions_helper.rb +1 -1
  26. data/app/helpers/spree/admin/promotion_rules_helper.rb +1 -1
  27. data/app/helpers/spree/admin/translations_helper.rb +1 -1
  28. data/app/javascript/spree/admin/application.js +2 -1
  29. data/app/javascript/spree/admin/controllers/dropdown_controller.js +85 -14
  30. data/app/javascript/spree/admin/controllers/sidebar_controller.js +231 -0
  31. data/app/javascript/spree/admin/controllers/tooltip_controller.js +84 -31
  32. data/app/models/spree/admin/form_builder.rb +74 -16
  33. data/app/models/spree/admin/navigation/builder.rb +82 -0
  34. data/app/models/spree/admin/navigation/item.rb +177 -0
  35. data/app/models/spree/admin/navigation.rb +193 -0
  36. data/app/views/layouts/spree/admin.html.erb +1 -1
  37. data/app/views/spree/admin/assets/edit.html.erb +1 -1
  38. data/app/views/spree/admin/custom_domains/_form.html.erb +2 -14
  39. data/app/views/spree/admin/gift_cards/_filters.html.erb +26 -18
  40. data/app/views/spree/admin/gift_cards/index.html.erb +1 -1
  41. data/app/views/spree/admin/orders/_customer.html.erb +2 -2
  42. data/app/views/spree/admin/orders/_filters.html.erb +34 -25
  43. data/app/views/spree/admin/orders/_table_filter_dropdown.html.erb +1 -1
  44. data/app/views/spree/admin/page_blocks/forms/_image.html.erb +2 -5
  45. data/app/views/spree/admin/page_links/_form.html.erb +4 -13
  46. data/app/views/spree/admin/page_sections/forms/_header.html.erb +0 -2
  47. data/app/views/spree/admin/payments/_payment.html.erb +7 -0
  48. data/app/views/spree/admin/posts/_form.html.erb +1 -4
  49. data/app/views/spree/admin/posts/filters.html.erb +18 -8
  50. data/app/views/spree/admin/products/_bulk_operations.html.erb +1 -1
  51. data/app/views/spree/admin/products/_filters.html.erb +17 -6
  52. data/app/views/spree/admin/products/_table_filter_dropdown.html.erb +1 -1
  53. data/app/views/spree/admin/profile/edit.html.erb +9 -61
  54. data/app/views/spree/admin/promotions/_filters.html.erb +23 -13
  55. data/app/views/spree/admin/promotions/_table_filter_dropdown.html.erb +1 -1
  56. data/app/views/spree/admin/promotions/form/_settings.html.erb +2 -13
  57. data/app/views/spree/admin/refunds/_form.html.erb +1 -9
  58. data/app/views/spree/admin/return_authorizations/filters.html.erb +1 -1
  59. data/app/views/spree/admin/shared/_audit_nav.html.erb +2 -0
  60. data/app/views/spree/admin/shared/_calendar_range_picker.html.erb +2 -2
  61. data/app/views/spree/admin/shared/_content_header.html.erb +1 -1
  62. data/app/views/spree/admin/shared/_developers_nav.html.erb +2 -4
  63. data/app/views/spree/admin/shared/_header.html.erb +5 -7
  64. data/app/views/spree/admin/shared/_navigation.html.erb +5 -0
  65. data/app/views/spree/admin/shared/_navigation_item.html.erb +64 -0
  66. data/app/views/spree/admin/shared/_new_item_dropdown.html.erb +1 -1
  67. data/app/views/spree/admin/shared/_page_section_image.html.erb +2 -5
  68. data/app/views/spree/admin/shared/_page_section_logo.html.erb +1 -1
  69. data/app/views/spree/admin/shared/_returns_and_refunds_nav.html.erb +2 -3
  70. data/app/views/spree/admin/shared/_shipping_nav.html.erb +3 -2
  71. data/app/views/spree/admin/shared/_sidebar.html.erb +33 -7
  72. data/app/views/spree/admin/shared/_stock_nav.html.erb +6 -3
  73. data/app/views/spree/admin/shared/_tax_nav.html.erb +1 -2
  74. data/app/views/spree/admin/shared/_team_nav.html.erb +2 -3
  75. data/app/views/spree/admin/shared/_user_dropdown.html.erb +26 -17
  76. data/app/views/spree/admin/shared/sidebar/_customers_nav.html.erb +7 -0
  77. data/app/views/spree/admin/shared/sidebar/_orders_nav.html.erb +22 -2
  78. data/app/views/spree/admin/shared/sidebar/_products_nav.html.erb +21 -0
  79. data/app/views/spree/admin/shared/sidebar/_promotions_nav.html.erb +8 -0
  80. data/app/views/spree/admin/shared/sidebar/_returns_nav.html.erb +12 -0
  81. data/app/views/spree/admin/shared/sidebar/_store_dropdown.html.erb +3 -1
  82. data/app/views/spree/admin/shared/sidebar/_store_nav.html.erb +15 -1
  83. data/app/views/spree/admin/shared/sidebar/_storefront_nav.html.erb +25 -3
  84. data/app/views/spree/admin/shared/sortable_tree/_taxonomy.html.erb +1 -1
  85. data/app/views/spree/admin/stock_items/_filters.html.erb +18 -8
  86. data/app/views/spree/admin/stock_locations/_table_row.html.erb +1 -1
  87. data/app/views/spree/admin/stock_transfers/_filters.html.erb +19 -9
  88. data/app/views/spree/admin/storefront/edit.html.erb +2 -14
  89. data/app/views/spree/admin/stores/form/_basic.html.erb +2 -8
  90. data/app/views/spree/admin/stores/form/_emails.html.erb +1 -1
  91. data/app/views/spree/admin/tax_rates/_form.html.erb +1 -10
  92. data/app/views/spree/admin/taxons/_form.html.erb +2 -9
  93. data/app/views/spree/admin/themes/_theme.html.erb +1 -1
  94. data/app/views/spree/admin/translations/translation_rows/_permalink_field_row.html.erb +1 -12
  95. data/app/views/spree/admin/users/_filters.html.erb +23 -13
  96. data/config/initializers/spree_admin_navigation.rb +510 -0
  97. data/config/locales/en.yml +4 -0
  98. data/lib/generators/spree/admin/scaffold/templates/controller.rb.tt +3 -1
  99. data/lib/generators/spree/admin/scaffold/templates/views/_table_row.html.erb.tt +8 -6
  100. data/lib/spree/admin/engine.rb +64 -2
  101. data/lib/spree/admin/runtime_configuration.rb +1 -0
  102. data/lib/spree/admin.rb +20 -0
  103. metadata +17 -15
  104. data/app/assets/stylesheets/spree/admin/components/_offcanvas.scss +0 -26
  105. data/app/javascript/spree/admin/helpers/canvas.js +0 -29
  106. data/app/views/spree/admin/shared/_offcanvas_nav.html.erb +0 -12
@@ -0,0 +1,693 @@
1
+ .store-dropdown {
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: space-between;
5
+ padding-left: 0.5rem;
6
+ padding-right: 0.75rem;
7
+ background-color: $sidebar-bg;
8
+ width: $sidebar-width;
9
+ border-right: 1px solid $border-color;
10
+ height: calc($header-height + 1px);
11
+ transition: width 0.1s ease;
12
+ }
13
+
14
+ .store-dropdown-button {
15
+ padding: 0.25rem;
16
+ display: flex;
17
+ align-items: center;
18
+ justify-content: space-between;
19
+ text-align: left;
20
+ gap: 0.5rem;
21
+ box-shadow: none !important;
22
+
23
+ &:hover {
24
+ background-color: $gray-50;
25
+ }
26
+ }
27
+
28
+ .store-chooser {
29
+ display: flex;
30
+ flex-direction: column;
31
+ gap: 0.25rem;
32
+ padding: 0.25rem;
33
+ margin: 0.25rem;
34
+ border: 1px solid $border-color;
35
+ border-radius: $border-radius-lg;
36
+
37
+ .store-chooser-item {
38
+ display: flex;
39
+ align-items: center;
40
+ gap: 0.5rem;
41
+ border-radius: $border-radius;
42
+ padding: 0.25rem;
43
+ text-wrap: nowrap;
44
+
45
+ &:hover {
46
+ text-decoration: none;
47
+ background-color: $dropdown-link-hover-bg;
48
+ }
49
+
50
+ &.active {
51
+ cursor: not-allowed;
52
+ background-color: $action;
53
+ }
54
+ }
55
+ }
56
+
57
+ // User dropdown in sidebar
58
+ .user-dropdown {
59
+ position: fixed;
60
+ bottom: 0;
61
+ left: 0;
62
+ display: none;
63
+ align-items: center;
64
+ justify-content: space-between;
65
+ padding: 0.75rem 0.5rem;
66
+ background-color: $sidebar-bg;
67
+ width: $sidebar-width;
68
+ border-right: 1px solid $border-color;
69
+ border-top: 1px solid $border-color;
70
+ transition: width 0.1s ease;
71
+ z-index: 10;
72
+
73
+ @media (min-width: 992px) {
74
+ display: flex;
75
+ }
76
+
77
+ > .dropdown {
78
+ width: 100%;
79
+ overflow: hidden;
80
+ }
81
+ }
82
+
83
+ .user-dropdown-button {
84
+ padding: 0.25rem;
85
+ display: flex;
86
+ align-items: center;
87
+ justify-content: flex-start;
88
+ text-align: left;
89
+ gap: 0.5rem;
90
+ box-shadow: none !important;
91
+ width: 100%;
92
+ overflow: hidden;
93
+
94
+ &:hover {
95
+ background-color: $gray-50;
96
+ }
97
+
98
+ .user-name {
99
+ flex: 1;
100
+ width: 0;
101
+ min-width: 0;
102
+ overflow: hidden;
103
+ text-overflow: ellipsis;
104
+ white-space: nowrap;
105
+ font-size: 0.875rem;
106
+ }
107
+ }
108
+
109
+ // Toggle button
110
+ .sidebar-toggle-btn {
111
+ width: 32px;
112
+ height: 32px;
113
+ padding: 0;
114
+ display: flex;
115
+ align-items: center;
116
+ justify-content: center;
117
+ border-radius: $border-radius;
118
+ background-color: transparent;
119
+ border: none;
120
+ z-index: 10;
121
+
122
+ &:hover {
123
+ background-color: $gray-50;
124
+ }
125
+ }
126
+
127
+ #main-sidebar {
128
+ display: flex;
129
+ flex-direction: column;
130
+ gap: 0.5rem;
131
+ width: $sidebar-width;
132
+ background-color: $sidebar-bg;
133
+ box-shadow: inset -1px 0 0 $border-color;
134
+ height: calc(100vh - $header-height);
135
+ overflow-x: hidden;
136
+ position: fixed;
137
+ top: $header-height;
138
+ padding-top: 0.8rem;
139
+ transition: width 0.1s ease, padding 0.1s ease;
140
+
141
+ @media (max-width: 992px) {
142
+ display: none;
143
+ }
144
+
145
+ // Sidebar content
146
+ .sidebar-content {
147
+ opacity: 1;
148
+ transition: opacity 0.2s ease;
149
+ }
150
+
151
+ .nav {
152
+ padding-left: 0.75rem;
153
+ padding-right: 0.75rem;
154
+ gap: 0.25rem;
155
+ display: flex;
156
+ flex-direction: column;
157
+ }
158
+
159
+ .nav-link {
160
+ border-radius: $border-radius-lg;
161
+ display: flex;
162
+ align-items: center;
163
+ padding-left: 0.25rem;
164
+ padding-right: 0.25rem;
165
+ padding-top: 0.25rem;
166
+ padding-bottom: 0.25rem;
167
+ color: inherit;
168
+ white-space: nowrap;
169
+ transition: background-color 0.1s ease-in-out;
170
+
171
+ .ti {
172
+ margin-right: 0.5rem;
173
+ border-radius: $border-radius;
174
+ padding: 0.2rem 0.2rem;
175
+ flex-shrink: 0;
176
+ }
177
+
178
+ &:hover {
179
+ background-color: $gray-50;
180
+
181
+ .ti {
182
+ color: theme-color('primary');
183
+ }
184
+ }
185
+ &.active {
186
+ color: theme-color('primary');
187
+ background-color: $white;
188
+ box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.04) 0px 0px 0px 1px, rgba(0, 0, 0, 0.04) 0px 1px 2px -1px, rgba(0, 0, 0, 0.02) 0px 2px 4px 0px;
189
+ font-weight: $font-weight-medium;
190
+
191
+ .ti {
192
+ background-color: theme-color('primary');
193
+ color: $white;
194
+ }
195
+ }
196
+
197
+ .badge:not(.badge-info) {
198
+ @extend .badge-light;
199
+ border-radius: $border-radius;
200
+ }
201
+ }
202
+
203
+ .nav-submenu {
204
+ display: flex;
205
+ flex-direction: column;
206
+ list-style: none;
207
+ padding-top: 0.25rem;
208
+ padding-left: 2rem;
209
+ &:before {
210
+ content: '';
211
+ position: absolute;
212
+ left: 1rem;
213
+ top: 0;
214
+ bottom: 0.25rem;
215
+ width: 1px;
216
+ background-color: $gray-200;
217
+ }
218
+ position: relative;
219
+
220
+ .nav-link {
221
+ font-weight: 400;
222
+ padding-top: 0.25rem;
223
+ padding-bottom: 0.25rem;
224
+
225
+ &:hover {
226
+ background-color: $gray-50;
227
+ }
228
+ &.active, &:active, &:focus {
229
+ font-weight: 600;
230
+ background-color: transparent !important;
231
+ box-shadow: none;
232
+
233
+ &:before {
234
+ content: '';
235
+ position: absolute;
236
+ left: calc(-1rem - 1px);
237
+ top: 10%;
238
+ width: 3px;
239
+ height: 80%;
240
+ background-color: theme-color('primary');
241
+ border-radius: $border-radius-sm;
242
+ }
243
+ }
244
+ }
245
+ }
246
+
247
+ .dropdown {
248
+ padding-left: 0.5rem;
249
+ padding-right: 0.5rem;
250
+
251
+ .btn {
252
+ padding: 0.25rem 0.25rem;
253
+ border-radius: $border-radius;
254
+ display: flex;
255
+ align-items: center;
256
+
257
+ &:hover, &:focus, &:active {
258
+ background-color: $gray-50;
259
+ }
260
+ }
261
+
262
+ .dropdown-menu {
263
+ width: calc(100% - 1rem) !important;
264
+ }
265
+ }
266
+ }
267
+
268
+ // Disable transitions during initial page load to prevent animation flash
269
+ body.sidebar-no-transition {
270
+ #main-sidebar,
271
+ .store-dropdown,
272
+ .user-dropdown,
273
+ #content,
274
+ .sidebar-toggle-btn {
275
+ transition: none !important;
276
+ }
277
+ }
278
+
279
+ // Collapsed state
280
+ body.sidebar-collapsed {
281
+ .sidebar-toggle-btn {
282
+ transform: rotate(180deg);
283
+ }
284
+
285
+ #main-sidebar {
286
+ width: $sidebar-width-collapsed;
287
+ padding-left: 0;
288
+ padding-right: 0;
289
+
290
+ .sidebar-content {
291
+ // Keep content visible but modify layout
292
+ opacity: 1;
293
+ pointer-events: auto;
294
+
295
+ .nav > .nav-item > .nav-link {
296
+ justify-content: center;
297
+ padding-left: 0;
298
+ padding-right: 0;
299
+ width: 40px;
300
+ height: 40px;
301
+ margin: 0 auto;
302
+ overflow: visible;
303
+ font-size: 0;
304
+ position: relative;
305
+
306
+ .ti {
307
+ margin-right: 0;
308
+ font-size: 1.25rem;
309
+ }
310
+
311
+ // Hide text labels (direct text nodes)
312
+ span:not(.badge) {
313
+ display: none;
314
+ }
315
+
316
+ // Position badges as notification counters
317
+ .badge {
318
+ display: flex;
319
+ position: absolute;
320
+ top: 0;
321
+ right: 0;
322
+ transform: translate(25%, -25%);
323
+ min-width: 18px;
324
+ height: 18px;
325
+ padding: 0 0.25rem;
326
+ font-size: 0.625rem;
327
+ line-height: 18px;
328
+ border-radius: 9px;
329
+ justify-content: center;
330
+ align-items: center;
331
+ }
332
+ }
333
+
334
+ #nav-link-vendors .badge {
335
+ display: none !important;
336
+ }
337
+
338
+ .nav-section-header {
339
+ width: $sidebar-width-collapsed - 20px;
340
+ span {
341
+ display: none;
342
+ }
343
+ }
344
+ }
345
+
346
+ .nav {
347
+ padding-left: 0;
348
+ padding-right: 0;
349
+ align-items: center;
350
+ }
351
+
352
+ // Hide submenus and dropdowns when collapsed
353
+ .nav-submenu,
354
+ .dropdown {
355
+ display: none;
356
+ }
357
+
358
+ // Hide enterprise edition notice
359
+ #enterprise-edition-notice {
360
+ display: none;
361
+ }
362
+
363
+ // Hide any mt-auto sections
364
+ .mt-auto {
365
+ display: none;
366
+ }
367
+
368
+ .nav-submenu {
369
+ gap: 0.25rem !important;
370
+ }
371
+ }
372
+
373
+ .store-dropdown {
374
+ width: $sidebar-width-collapsed;
375
+ overflow: visible;
376
+ justify-content: center;
377
+ padding-left: 0;
378
+ padding-right: 0;
379
+
380
+ #new-item-dropdown,
381
+ .store-name {
382
+ display: none !important;
383
+ }
384
+
385
+ .store-dropdown-button {
386
+ width: 44px;
387
+ height: 44px;
388
+ padding: 0.25rem;
389
+ justify-content: center;
390
+ overflow: hidden;
391
+
392
+ // Hide dropdown toggle arrow
393
+ &::after {
394
+ display: none;
395
+ }
396
+
397
+ .store-logo, img, .ti {
398
+ margin: 0;
399
+ }
400
+
401
+ // Keep the icon/logo element visible
402
+ .rounded-sm, .bg-white, .border, .text-dark, .bg-gray-200,
403
+ div[class*="rounded"], div[class*="bg-"] {
404
+ display: flex !important;
405
+ width: 32px;
406
+ height: 32px;
407
+ font-size: 1rem;
408
+ }
409
+
410
+ // Hide all text spans and chevron when collapsed
411
+ span:not([class*="rounded"]):not([class*="bg-"]),
412
+ .ti-chevron-down,
413
+ small,
414
+ strong {
415
+ display: none;
416
+ }
417
+
418
+ // Keep only icons/logos visible
419
+ img, .ti:not(.ti-chevron-down) {
420
+ display: block;
421
+ }
422
+ }
423
+ }
424
+
425
+ .user-dropdown {
426
+ width: $sidebar-width-collapsed;
427
+ overflow: visible;
428
+ justify-content: center;
429
+ padding-left: 0;
430
+ padding-right: 0;
431
+
432
+ .dropdown {
433
+ display: block !important;
434
+ }
435
+
436
+ .user-name {
437
+ display: none !important;
438
+ }
439
+
440
+ .user-dropdown-button {
441
+ width: 44px;
442
+ height: 44px;
443
+ padding: 0.25rem;
444
+ justify-content: center;
445
+ overflow: visible;
446
+
447
+ // Hide dropdown toggle arrow
448
+ &::after {
449
+ display: none;
450
+ }
451
+
452
+ // Keep avatar visible and centered
453
+ .avatar {
454
+ display: flex !important;
455
+ margin: 0;
456
+ }
457
+ }
458
+ }
459
+
460
+ #content {
461
+ @media (min-width: 992px) {
462
+ margin-left: $sidebar-width-collapsed + 1px;
463
+ }
464
+ }
465
+ }
466
+
467
+ // Mobile Sidebar
468
+ .sidebar-mobile {
469
+ position: fixed;
470
+ inset: 0;
471
+ z-index: 1050;
472
+ visibility: hidden;
473
+ pointer-events: none;
474
+
475
+ .sidebar-backdrop {
476
+ position: absolute;
477
+ inset: 0;
478
+ background-color: rgba($black, 0.5);
479
+ opacity: 0;
480
+ transition: opacity 0.1s ease;
481
+ }
482
+
483
+ .sidebar-panel {
484
+ position: absolute;
485
+ left: 0;
486
+ top: 0;
487
+ bottom: 0;
488
+ width: $sidebar-width;
489
+ background-color: $sidebar-bg;
490
+ overflow-y: auto;
491
+ transform: translateX(-100%);
492
+ transition: transform 0.1s ease;
493
+ box-shadow: $box-shadow-lg;
494
+ display: flex;
495
+ flex-direction: column;
496
+
497
+ .sidebar-mobile-header {
498
+ display: flex;
499
+ justify-content: flex-end;
500
+ padding: 0.75rem;
501
+ border-bottom: 1px solid $border-color;
502
+ background-color: $sidebar-bg;
503
+ position: sticky;
504
+ top: 0;
505
+ z-index: 1;
506
+
507
+ .btn {
508
+ padding: 0.25rem;
509
+ width: 32px;
510
+ height: 32px;
511
+ display: flex;
512
+ align-items: center;
513
+ justify-content: center;
514
+ }
515
+ }
516
+
517
+ .sidebar-mobile-content {
518
+ padding-top: 0.5rem;
519
+ flex: 1;
520
+ overflow-y: auto;
521
+
522
+ // Match desktop expanded sidebar styles
523
+ .nav {
524
+ padding-left: 0.75rem;
525
+ padding-right: 0.75rem;
526
+ gap: 0.25rem;
527
+ display: flex;
528
+ flex-direction: column;
529
+ }
530
+
531
+ .nav-link {
532
+ border-radius: $border-radius-lg;
533
+ display: flex;
534
+ align-items: center;
535
+ padding-left: 0.25rem;
536
+ padding-right: 0.25rem;
537
+ padding-top: 0.25rem;
538
+ padding-bottom: 0.25rem;
539
+ color: inherit;
540
+ white-space: nowrap;
541
+ transition: background-color 0.1s ease-in-out;
542
+
543
+ .ti {
544
+ margin-right: 0.5rem;
545
+ border-radius: $border-radius;
546
+ padding: 0.2rem 0.2rem;
547
+ flex-shrink: 0;
548
+ }
549
+
550
+ &:hover {
551
+ background-color: $gray-50;
552
+
553
+ .ti {
554
+ color: theme-color('primary');
555
+ }
556
+ }
557
+
558
+ &.active {
559
+ color: theme-color('primary');
560
+ background-color: $white;
561
+ box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.04) 0px 0px 0px 1px, rgba(0, 0, 0, 0.04) 0px 1px 2px -1px, rgba(0, 0, 0, 0.02) 0px 2px 4px 0px;
562
+ font-weight: $font-weight-medium;
563
+
564
+ .ti {
565
+ background-color: theme-color('primary');
566
+ color: $white;
567
+ }
568
+ }
569
+
570
+ .badge:not(.badge-info) {
571
+ @extend .badge-light;
572
+ border-radius: $border-radius;
573
+ }
574
+ }
575
+
576
+ .nav-submenu {
577
+ display: flex;
578
+ flex-direction: column;
579
+ list-style: none;
580
+ padding-top: 0.25rem;
581
+ padding-left: 2rem;
582
+ position: relative;
583
+
584
+ &:before {
585
+ content: '';
586
+ position: absolute;
587
+ left: 1rem;
588
+ top: 0;
589
+ bottom: 0.25rem;
590
+ width: 1px;
591
+ background-color: $gray-200;
592
+ }
593
+
594
+ .nav-link {
595
+ font-weight: 400;
596
+ padding-top: 0.25rem;
597
+ padding-bottom: 0.25rem;
598
+
599
+ &:hover {
600
+ background-color: $gray-50;
601
+ }
602
+
603
+ &.active, &:active, &:focus {
604
+ font-weight: 600;
605
+ background-color: transparent !important;
606
+ box-shadow: none;
607
+
608
+ &:before {
609
+ content: '';
610
+ position: absolute;
611
+ left: calc(-1rem - 1px);
612
+ top: 10%;
613
+ width: 3px;
614
+ height: 80%;
615
+ background-color: theme-color('primary');
616
+ border-radius: $border-radius-sm;
617
+ }
618
+ }
619
+ }
620
+ }
621
+
622
+ .dropdown {
623
+ padding-left: 0.5rem;
624
+ padding-right: 0.5rem;
625
+
626
+ .btn {
627
+ padding: 0.25rem 0.25rem;
628
+ border-radius: $border-radius;
629
+ display: flex;
630
+ align-items: center;
631
+
632
+ &:hover, &:focus, &:active {
633
+ background-color: $gray-50;
634
+ }
635
+ }
636
+
637
+ .dropdown-menu {
638
+ width: calc(100% - 1rem) !important;
639
+ }
640
+ }
641
+ }
642
+
643
+ // User dropdown in mobile sidebar
644
+ .user-dropdown {
645
+ position: relative;
646
+ display: flex;
647
+ width: 100%;
648
+ border-right: none;
649
+ border-top: 1px solid $border-color;
650
+ margin-top: auto;
651
+ }
652
+ }
653
+
654
+ &.sidebar-mobile-open {
655
+ visibility: visible;
656
+ pointer-events: auto;
657
+
658
+ .sidebar-backdrop {
659
+ opacity: 1;
660
+ }
661
+
662
+ .sidebar-panel {
663
+ transform: translateX(0);
664
+ }
665
+ }
666
+ }
667
+
668
+ #enterprise-edition-notice {
669
+ @extend .alert;
670
+ @extend .alert-info;
671
+
672
+ background-image: none;
673
+ position: relative;
674
+ font-size: $font-size-sm;
675
+ padding: 0.5rem 1rem;
676
+ margin: 0.75rem;
677
+ border-width: 1px;
678
+ box-shadow: $box-shadow-xs;
679
+ p {
680
+ margin-bottom: 0.5rem;
681
+ }
682
+
683
+ .btn-close {
684
+ position: absolute;
685
+ right: 0.25rem;
686
+ top: 0.25rem;
687
+ color: inherit !important;
688
+
689
+ &:hover {
690
+ background-color: transparent !important;
691
+ }
692
+ }
693
+ }
@@ -227,6 +227,7 @@ $list-group-item-padding-y: 0.75rem !default;
227
227
  $header-bg: $body-bg !default;
228
228
  $header-height: 58px !default;
229
229
  $sidebar-width: 220px !default;
230
+ $sidebar-width-collapsed: 59px !default;
230
231
  $sidebar-bg: $light !default;
231
232
 
232
233
  $progress-bar-bg: rgba($blue, 0.75) !default;
@@ -379,6 +379,10 @@ small,
379
379
  border: 2px dashed $blue !important;
380
380
  }
381
381
 
382
+ .sort-handle {
383
+ cursor: grab;
384
+ }
385
+
382
386
  .handle {
383
387
  cursor: grab !important;
384
388
  }
@@ -702,8 +706,10 @@ div.uppy-Root {
702
706
  .breadcrumb {
703
707
  gap: 0.5rem;
704
708
  align-items: center;
705
- color: $text-muted;
706
709
  font-weight: $font-weight-medium;
710
+ height: 32px;
711
+ border-left: 1px solid $gray-50;
712
+ border-radius: 0;
707
713
 
708
714
  li {
709
715
  a {