fuji_admin 0.1.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 (61) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +143 -0
  4. data/app/assets/javascripts/fuji_admin/base.js +6 -0
  5. data/app/assets/javascripts/fuji_admin/filters.js +282 -0
  6. data/app/assets/javascripts/fuji_admin/floats.js +73 -0
  7. data/app/assets/javascripts/fuji_admin/menu.js +112 -0
  8. data/app/assets/javascripts/fuji_admin/palettes.js +237 -0
  9. data/app/assets/javascripts/fuji_admin/row_actions.js +123 -0
  10. data/app/assets/stylesheets/fuji_admin/_base.scss +23 -0
  11. data/app/assets/stylesheets/fuji_admin/_base_typography.scss +56 -0
  12. data/app/assets/stylesheets/fuji_admin/_grid.scss +111 -0
  13. data/app/assets/stylesheets/fuji_admin/_reset.scss +48 -0
  14. data/app/assets/stylesheets/fuji_admin/components/_buttons.scss +106 -0
  15. data/app/assets/stylesheets/fuji_admin/components/_comments.scss +44 -0
  16. data/app/assets/stylesheets/fuji_admin/components/_components.scss +22 -0
  17. data/app/assets/stylesheets/fuji_admin/components/_date_picker.scss +147 -0
  18. data/app/assets/stylesheets/fuji_admin/components/_dropdown_menu.scss +76 -0
  19. data/app/assets/stylesheets/fuji_admin/components/_filter_chips.scss +71 -0
  20. data/app/assets/stylesheets/fuji_admin/components/_filter_drawer.scss +224 -0
  21. data/app/assets/stylesheets/fuji_admin/components/_filter_form.scss +85 -0
  22. data/app/assets/stylesheets/fuji_admin/components/_flash.scss +55 -0
  23. data/app/assets/stylesheets/fuji_admin/components/_float_labels.scss +77 -0
  24. data/app/assets/stylesheets/fuji_admin/components/_inputs.scss +237 -0
  25. data/app/assets/stylesheets/fuji_admin/components/_menu_toggle.scss +61 -0
  26. data/app/assets/stylesheets/fuji_admin/components/_pagination.scss +70 -0
  27. data/app/assets/stylesheets/fuji_admin/components/_palette_switcher.scss +600 -0
  28. data/app/assets/stylesheets/fuji_admin/components/_panel.scss +44 -0
  29. data/app/assets/stylesheets/fuji_admin/components/_row_actions.scss +110 -0
  30. data/app/assets/stylesheets/fuji_admin/components/_scopes.scss +58 -0
  31. data/app/assets/stylesheets/fuji_admin/components/_select2.scss +194 -0
  32. data/app/assets/stylesheets/fuji_admin/components/_status_tag.scss +59 -0
  33. data/app/assets/stylesheets/fuji_admin/components/_table_tools.scss +14 -0
  34. data/app/assets/stylesheets/fuji_admin/components/_tables.scss +262 -0
  35. data/app/assets/stylesheets/fuji_admin/components/_watchlist_bar.scss +119 -0
  36. data/app/assets/stylesheets/fuji_admin/layouts/_footer.scss +21 -0
  37. data/app/assets/stylesheets/fuji_admin/layouts/_header.scss +80 -0
  38. data/app/assets/stylesheets/fuji_admin/layouts/_layouts.scss +7 -0
  39. data/app/assets/stylesheets/fuji_admin/layouts/_main_content.scss +118 -0
  40. data/app/assets/stylesheets/fuji_admin/layouts/_sidebar.scss +124 -0
  41. data/app/assets/stylesheets/fuji_admin/layouts/_sizes.scss +12 -0
  42. data/app/assets/stylesheets/fuji_admin/layouts/_wrapper.scss +28 -0
  43. data/app/assets/stylesheets/fuji_admin/mixins/_media.scss +30 -0
  44. data/app/assets/stylesheets/fuji_admin/mixins/_mixins.scss +2 -0
  45. data/app/assets/stylesheets/fuji_admin/pages/_form.scss +61 -0
  46. data/app/assets/stylesheets/fuji_admin/pages/_index.scss +77 -0
  47. data/app/assets/stylesheets/fuji_admin/pages/_login.scss +77 -0
  48. data/app/assets/stylesheets/fuji_admin/pages/_pages.scss +5 -0
  49. data/app/assets/stylesheets/fuji_admin/pages/_show.scss +19 -0
  50. data/app/assets/stylesheets/fuji_admin/variables/_breakpoints.scss +25 -0
  51. data/app/assets/stylesheets/fuji_admin/variables/_colors.scss +51 -0
  52. data/app/assets/stylesheets/fuji_admin/variables/_radii.scss +13 -0
  53. data/app/assets/stylesheets/fuji_admin/variables/_shadows.scss +10 -0
  54. data/app/assets/stylesheets/fuji_admin/variables/_spacing.scss +20 -0
  55. data/app/assets/stylesheets/fuji_admin/variables/_typography.scss +25 -0
  56. data/app/assets/stylesheets/fuji_admin/variables/_variables.scss +9 -0
  57. data/lib/fuji_admin/active_admin_patch.rb +19 -0
  58. data/lib/fuji_admin/configuration.rb +29 -0
  59. data/lib/fuji_admin/version.rb +3 -0
  60. data/lib/fuji_admin.rb +24 -0
  61. metadata +124 -0
@@ -0,0 +1,106 @@
1
+ // Buttons — primary, secondary, and the handful of specialised AA variants.
2
+ //
3
+ // AA emits buttons as many different selectors (form submits, action items,
4
+ // filter buttons, batch actions). A shared mixin keeps visuals consistent.
5
+
6
+ @mixin fuji-button-base {
7
+ display: inline-flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ gap: $space-2;
11
+ padding: $space-2 $space-4;
12
+ font-size: $font-size-sm;
13
+ font-weight: $font-weight-medium;
14
+ line-height: 1.4;
15
+ border: 1px solid transparent;
16
+ border-radius: $border-radius;
17
+ cursor: pointer;
18
+ text-decoration: none;
19
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
20
+
21
+ &:focus-visible {
22
+ outline: none;
23
+ box-shadow: $shadow-focus;
24
+ }
25
+
26
+ &:disabled,
27
+ &.disabled {
28
+ opacity: 0.5;
29
+ cursor: not-allowed;
30
+ }
31
+ }
32
+
33
+ @mixin fuji-button-primary {
34
+ @include fuji-button-base;
35
+ background-color: $primary-color;
36
+ color: $primary-color-text;
37
+ border-color: $primary-color;
38
+
39
+ &:hover {
40
+ background-color: $primary-700;
41
+ border-color: $primary-700;
42
+ color: $primary-color-text;
43
+ text-decoration: none;
44
+ }
45
+
46
+ &:active {
47
+ background-color: $primary-800;
48
+ border-color: $primary-800;
49
+ }
50
+ }
51
+
52
+ @mixin fuji-button-secondary {
53
+ @include fuji-button-base;
54
+ background-color: $surface-0;
55
+ color: $text-color;
56
+ border-color: $surface-border;
57
+
58
+ &:hover {
59
+ background-color: $surface-100;
60
+ color: $text-color;
61
+ text-decoration: none;
62
+ }
63
+
64
+ &:active {
65
+ background-color: $surface-200;
66
+ }
67
+ }
68
+
69
+ // Primary button surface — form submit, action item buttons, batch actions.
70
+ form input[type="submit"],
71
+ a.button,
72
+ a:link.button,
73
+ a:visited.button,
74
+ fieldset.actions > ol > li.button_action > button,
75
+ #title_bar #titlebar_right .action_item > a,
76
+ .batch_actions_selector > a,
77
+ .table_tools .batch_actions_selector > a {
78
+ @include fuji-button-primary;
79
+ }
80
+
81
+ // Batch-actions dropdown button is also a `.dropdown_menu`, which would
82
+ // otherwise pick up the secondary (outlined) style from _dropdown_menu.scss
83
+ // at higher specificity. Re-apply primary with a specificity that wins.
84
+ .dropdown_menu.batch_actions_selector > a.dropdown_menu_button,
85
+ .table_tools .dropdown_menu.batch_actions_selector > a.dropdown_menu_button {
86
+ @include fuji-button-primary;
87
+
88
+ &::after {
89
+ border-top-color: $primary-color-text;
90
+ }
91
+ }
92
+
93
+ // Secondary / cancel surface.
94
+ form fieldset.buttons li.cancel a,
95
+ form fieldset.actions li.cancel a,
96
+ form.filter_form a.clear_filters_btn,
97
+ form.filter_form input[type="submit"].clear_filters_btn {
98
+ @include fuji-button-secondary;
99
+ }
100
+
101
+ // Filter form submit — secondary but accented.
102
+ form.filter_form input[type="submit"] {
103
+ @include fuji-button-primary;
104
+ width: 100%;
105
+ margin-top: $space-3;
106
+ }
@@ -0,0 +1,44 @@
1
+ // Record comments — AA's active_admin_comments partial renders comment
2
+ // entries plus a new-comment form. Keep it aligned with the panel aesthetic.
3
+
4
+ .active_admin_comments,
5
+ .comments {
6
+ .active_admin_comment {
7
+ padding: $space-4 0;
8
+ border-bottom: 1px solid $surface-200;
9
+
10
+ &:last-child {
11
+ border-bottom: 0;
12
+ }
13
+
14
+ .active_admin_comment_meta {
15
+ display: flex;
16
+ gap: $space-2;
17
+ align-items: center;
18
+ font-size: $font-size-xs;
19
+ color: $text-color-muted;
20
+ margin-bottom: $space-2;
21
+ }
22
+
23
+ .active_admin_comment_author {
24
+ font-weight: $font-weight-semibold;
25
+ color: $text-color-secondary;
26
+ }
27
+
28
+ .active_admin_comment_body {
29
+ font-size: $font-size-sm;
30
+ color: $text-color;
31
+ line-height: $line-height-relaxed;
32
+ }
33
+ }
34
+
35
+ form.active_admin_comment {
36
+ padding-top: $space-4;
37
+
38
+ fieldset.inputs {
39
+ border: 0;
40
+ padding: 0;
41
+ background: transparent;
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,22 @@
1
+ // Aggregator.
2
+ @import "buttons";
3
+ @import "inputs";
4
+ @import "panel";
5
+ @import "tables";
6
+ @import "pagination";
7
+ @import "status_tag";
8
+ @import "flash";
9
+ @import "scopes";
10
+ @import "table_tools";
11
+ @import "dropdown_menu";
12
+ @import "filter_form";
13
+ @import "comments";
14
+ @import "menu_toggle";
15
+ @import "select2";
16
+ @import "date_picker";
17
+ @import "filter_drawer";
18
+ @import "filter_chips";
19
+ @import "float_labels";
20
+ @import "row_actions";
21
+ @import "watchlist_bar";
22
+ @import "palette_switcher";
@@ -0,0 +1,147 @@
1
+ // jQuery UI date picker — AA injects this when a field is declared
2
+ // `as: :datepicker`. It's appended to <body> as `#ui-datepicker-div`.
3
+
4
+ #ui-datepicker-div {
5
+ background-color: $surface-0;
6
+ border: 1px solid $surface-border;
7
+ border-radius: $border-radius-card;
8
+ box-shadow: $shadow-lg;
9
+ padding: $space-2;
10
+ font-family: inherit;
11
+ font-size: $font-size-sm;
12
+ z-index: 100;
13
+
14
+ // --- Header -----------------------------------------------------------
15
+ .ui-datepicker-header {
16
+ position: relative;
17
+ display: flex;
18
+ align-items: center;
19
+ justify-content: space-between;
20
+ padding: $space-2 $space-3 $space-3;
21
+ background: transparent;
22
+ border: 0;
23
+ }
24
+
25
+ .ui-datepicker-title {
26
+ flex: 1;
27
+ text-align: center;
28
+ font-weight: $font-weight-semibold;
29
+ color: $text-color;
30
+ }
31
+
32
+ .ui-datepicker-prev,
33
+ .ui-datepicker-next {
34
+ position: static;
35
+ width: 28px;
36
+ height: 28px;
37
+ padding: 0;
38
+ border-radius: $radius-sm;
39
+ background: transparent;
40
+ border: 0;
41
+ color: $text-color-secondary;
42
+ cursor: pointer;
43
+ transition: background-color 0.15s ease, color 0.15s ease;
44
+ display: inline-flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+
48
+ &:hover {
49
+ background-color: $surface-100;
50
+ color: $text-color;
51
+ }
52
+
53
+ span {
54
+ display: none;
55
+ }
56
+
57
+ &::before {
58
+ content: "";
59
+ display: inline-block;
60
+ width: 0;
61
+ height: 0;
62
+ border-top: 5px solid transparent;
63
+ border-bottom: 5px solid transparent;
64
+ }
65
+ }
66
+
67
+ .ui-datepicker-prev::before {
68
+ border-right: 6px solid currentColor;
69
+ }
70
+
71
+ .ui-datepicker-next::before {
72
+ border-left: 6px solid currentColor;
73
+ }
74
+
75
+ // --- Calendar grid ----------------------------------------------------
76
+ table.ui-datepicker-calendar {
77
+ width: 100%;
78
+ margin: 0;
79
+ border-collapse: separate;
80
+ border-spacing: 2px;
81
+
82
+ th {
83
+ padding: $space-1 0;
84
+ font-size: $font-size-xs;
85
+ font-weight: $font-weight-medium;
86
+ color: $text-color-muted;
87
+ text-transform: uppercase;
88
+ letter-spacing: 0.04em;
89
+ text-align: center;
90
+ }
91
+
92
+ td {
93
+ padding: 0;
94
+ text-align: center;
95
+
96
+ a,
97
+ span {
98
+ display: flex;
99
+ align-items: center;
100
+ justify-content: center;
101
+ width: 32px;
102
+ height: 32px;
103
+ margin: 0 auto;
104
+ border-radius: $radius-sm;
105
+ color: $text-color;
106
+ text-decoration: none;
107
+ font-size: $font-size-sm;
108
+ font-weight: $font-weight-regular;
109
+ cursor: pointer;
110
+ transition: background-color 0.12s ease, color 0.12s ease;
111
+ }
112
+
113
+ a:hover {
114
+ background-color: $surface-100;
115
+ color: $text-color;
116
+ text-decoration: none;
117
+ }
118
+
119
+ &.ui-datepicker-other-month a,
120
+ &.ui-datepicker-other-month span {
121
+ color: $text-color-muted;
122
+ }
123
+
124
+ &.ui-datepicker-today a,
125
+ &.ui-datepicker-today span {
126
+ background-color: $surface-100;
127
+ color: $primary-color;
128
+ font-weight: $font-weight-semibold;
129
+ }
130
+
131
+ &.ui-datepicker-current-day a,
132
+ &.ui-datepicker-current-day span {
133
+ background-color: $primary-color;
134
+ color: $primary-color-text;
135
+
136
+ &:hover {
137
+ background-color: $primary-700;
138
+ }
139
+ }
140
+
141
+ &.ui-datepicker-unselectable span {
142
+ color: $text-color-muted;
143
+ cursor: not-allowed;
144
+ }
145
+ }
146
+ }
147
+ }
@@ -0,0 +1,76 @@
1
+ // Dropdown menus — AA renders as `div.dropdown_menu` containing a trigger
2
+ // `a.dropdown_menu_button` and a `div.dropdown_menu_list_wrapper` with an
3
+ // inner `ul.dropdown_menu_list`. Used for batch actions, download formats,
4
+ // and action item menus.
5
+
6
+ .dropdown_menu {
7
+ position: relative;
8
+ display: inline-flex;
9
+
10
+ > a.dropdown_menu_button {
11
+ @include fuji-button-secondary;
12
+
13
+ &::after {
14
+ content: "";
15
+ display: inline-block;
16
+ width: 0;
17
+ height: 0;
18
+ margin-left: $space-2;
19
+ border-left: 4px solid transparent;
20
+ border-right: 4px solid transparent;
21
+ border-top: 5px solid currentColor;
22
+ }
23
+ }
24
+
25
+ .dropdown_menu_list_wrapper {
26
+ position: absolute;
27
+ top: calc(100% + #{$space-1});
28
+ right: 0;
29
+ min-width: 180px;
30
+ background-color: $surface-0;
31
+ border: 1px solid $surface-border;
32
+ border-radius: $border-radius;
33
+ box-shadow: $shadow-md;
34
+ padding: $space-1;
35
+ z-index: 30;
36
+ }
37
+
38
+ // Remove AA's legacy nipple/arrow pointer artifacts.
39
+ .dropdown_menu_nipple {
40
+ display: none;
41
+ }
42
+
43
+ ul.dropdown_menu_list {
44
+ list-style: none;
45
+ padding: 0;
46
+ margin: 0;
47
+
48
+ li {
49
+ display: block;
50
+
51
+ a {
52
+ display: block;
53
+ padding: $space-2 $space-3;
54
+ font-size: $font-size-sm;
55
+ color: $text-color;
56
+ border-radius: $radius-sm;
57
+ transition: background-color 0.15s ease, color 0.15s ease;
58
+
59
+ &:hover {
60
+ background-color: $surface-100;
61
+ color: $primary-color;
62
+ text-decoration: none;
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+
69
+ // Primary-flavoured trigger when used inside the title bar action row.
70
+ #title_bar #titlebar_right .dropdown_menu > a.dropdown_menu_button {
71
+ @include fuji-button-primary;
72
+
73
+ &::after {
74
+ border-top-color: $primary-color-text;
75
+ }
76
+ }
@@ -0,0 +1,71 @@
1
+ // Active-filter chip strip — rendered above the table by fuji_admin/filters.js
2
+ // when the URL has Ransack query params.
3
+
4
+ .fuji-filter-chips {
5
+ display: flex;
6
+ flex-wrap: wrap;
7
+ align-items: center;
8
+ gap: $space-2;
9
+ padding: 0 0 $space-4;
10
+ margin: 0;
11
+
12
+ &__pill {
13
+ display: inline-flex;
14
+ align-items: center;
15
+ gap: $space-2;
16
+ padding: $space-1 $space-2 $space-1 $space-3;
17
+ background-color: $primary-50;
18
+ border: 1px solid $primary-100;
19
+ border-radius: $radius-full;
20
+ color: $primary-700;
21
+ font-size: $font-size-xs;
22
+ font-weight: $font-weight-medium;
23
+ line-height: 1.4;
24
+ text-decoration: none;
25
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
26
+
27
+ &:hover {
28
+ background-color: $primary-100;
29
+ border-color: $primary-200;
30
+ color: $primary-800;
31
+ text-decoration: none;
32
+
33
+ .fuji-filter-chips__remove {
34
+ background-color: $primary-200;
35
+ color: $primary-800;
36
+ }
37
+ }
38
+ }
39
+
40
+ &__label {
41
+ white-space: nowrap;
42
+ }
43
+
44
+ &__remove {
45
+ display: inline-flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ width: 18px;
49
+ height: 18px;
50
+ border-radius: $radius-full;
51
+ background-color: $primary-100;
52
+ color: $primary-700;
53
+ font-size: $font-size-sm;
54
+ line-height: 1;
55
+ transition: background-color 0.15s ease, color 0.15s ease;
56
+ }
57
+
58
+ &__clear {
59
+ margin-left: $space-2;
60
+ padding: $space-1 $space-2;
61
+ font-size: $font-size-xs;
62
+ font-weight: $font-weight-medium;
63
+ color: $text-color-secondary;
64
+ text-decoration: none;
65
+
66
+ &:hover {
67
+ color: $color-danger;
68
+ text-decoration: underline;
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,224 @@
1
+ // Filters drawer. Turns AA's `#sidebar` (when the page has `.with_sidebar`)
2
+ // into a right-anchored slide-in panel, triggered by a "Filters" button in
3
+ // the title bar.
4
+
5
+ // --- Toggle button in the title bar -----------------------------------------
6
+ .fuji-filters-toggle {
7
+ display: inline-flex;
8
+ align-items: center;
9
+ gap: $space-2;
10
+ padding: $space-2 $space-3;
11
+ font-family: inherit;
12
+ font-size: $font-size-sm;
13
+ font-weight: $font-weight-medium;
14
+ line-height: 1.4;
15
+ color: $text-color;
16
+ background-color: $surface-0;
17
+ border: 1px solid $surface-border;
18
+ border-radius: $border-radius;
19
+ cursor: pointer;
20
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
21
+
22
+ &:hover {
23
+ background-color: $surface-100;
24
+ border-color: $surface-400;
25
+ }
26
+
27
+ &:focus-visible {
28
+ outline: none;
29
+ box-shadow: $shadow-focus;
30
+ }
31
+
32
+ &__icon {
33
+ display: inline-flex;
34
+ color: $text-color-secondary;
35
+ }
36
+
37
+ &__count {
38
+ display: inline-flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ min-width: 18px;
42
+ height: 18px;
43
+ padding: 0 $space-1;
44
+ margin-left: $space-1;
45
+ background-color: $primary-color;
46
+ color: $primary-color-text;
47
+ border-radius: $radius-full;
48
+ font-size: $font-size-xs;
49
+ font-weight: $font-weight-semibold;
50
+ line-height: 1;
51
+
52
+ &[hidden] {
53
+ display: none;
54
+ }
55
+ }
56
+
57
+ &--active {
58
+ border-color: $primary-200;
59
+ background-color: $primary-50;
60
+ color: $primary-700;
61
+
62
+ .fuji-filters-toggle__icon {
63
+ color: $primary-color;
64
+ }
65
+ }
66
+ }
67
+
68
+ // --- Drawer container (repurposed AA #sidebar) ------------------------------
69
+ body.active_admin #sidebar {
70
+ position: fixed;
71
+ top: 0;
72
+ right: 0;
73
+ bottom: 0;
74
+ width: 100%;
75
+ max-width: 420px;
76
+ margin: 0;
77
+ padding: 0;
78
+ background-color: $surface-0;
79
+ border-left: 1px solid $surface-border;
80
+ box-shadow: $shadow-xl;
81
+ z-index: 30;
82
+ transform: translateX(100%);
83
+ transition: transform 0.25s ease;
84
+ overflow: hidden;
85
+ display: flex;
86
+ flex-direction: column;
87
+ }
88
+
89
+ // Matches the default rule's specificity (2 IDs + 1 class) so it actually
90
+ // wins the cascade when the drawer is open.
91
+ body.active_admin.fuji-filters-open #sidebar {
92
+ transform: translateX(0);
93
+ }
94
+
95
+ // Drawer header (injected by JS) ---------------------------------------------
96
+ .fuji-filters-drawer__header {
97
+ display: flex;
98
+ align-items: center;
99
+ justify-content: space-between;
100
+ padding: $space-4 $space-5;
101
+ border-bottom: 1px solid $surface-200;
102
+ flex: 0 0 auto;
103
+ }
104
+
105
+ .fuji-filters-drawer__title {
106
+ margin: 0;
107
+ font-size: $font-size-lg;
108
+ font-weight: $font-weight-semibold;
109
+ color: $text-color;
110
+ }
111
+
112
+ .fuji-filters-drawer__close {
113
+ display: inline-flex;
114
+ align-items: center;
115
+ justify-content: center;
116
+ width: 32px;
117
+ height: 32px;
118
+ padding: 0;
119
+ background: transparent;
120
+ border: 0;
121
+ border-radius: $border-radius;
122
+ color: $text-color-secondary;
123
+ cursor: pointer;
124
+ transition: background-color 0.15s ease, color 0.15s ease;
125
+
126
+ &:hover {
127
+ background-color: $surface-100;
128
+ color: $text-color;
129
+ }
130
+
131
+ &:focus-visible {
132
+ outline: none;
133
+ box-shadow: $shadow-focus;
134
+ }
135
+ }
136
+
137
+ // Sidebar sections shared reset — strip the default panel chrome so both
138
+ // sections sit naturally inside the drawer body.
139
+ body.active_admin #sidebar .sidebar_section.panel {
140
+ margin: 0;
141
+ border: 0;
142
+ border-radius: 0;
143
+ background: transparent;
144
+ box-shadow: none;
145
+
146
+ > h3 {
147
+ display: none; // "Filters" / "Search status:" — drawer header replaces them.
148
+ }
149
+
150
+ .panel_contents {
151
+ padding: 0;
152
+ }
153
+ }
154
+
155
+ // Filter form panel (the main body — scrollable).
156
+ body.active_admin #sidebar #filters_sidebar_section {
157
+ order: 2;
158
+ flex: 1 1 auto;
159
+ overflow-y: auto;
160
+ padding: $space-5;
161
+ }
162
+
163
+ // "Search status" / Current filters panel (compact chip strip at top).
164
+ body.active_admin #sidebar .sidebar_section.panel:not(#filters_sidebar_section) {
165
+ order: 1;
166
+ flex: 0 0 auto;
167
+ padding: $space-4 $space-5;
168
+ border-bottom: 1px solid $surface-200;
169
+ background-color: $surface-50;
170
+
171
+ // AA emits the summary as a bare <div style="margin-top:10px"> with an
172
+ // inline <h4> label and a <ul> of current_filter entries.
173
+ .panel_contents > div {
174
+ margin-top: 0 !important; // override AA's inline margin-top:10px
175
+
176
+ > h4 {
177
+ margin: 0 0 $space-2 !important; // override inline margin-bottom:10px
178
+ font-size: $font-size-xs;
179
+ font-weight: $font-weight-semibold;
180
+ text-transform: uppercase;
181
+ letter-spacing: 0.04em;
182
+ color: $text-color-muted;
183
+ }
184
+
185
+ > ul {
186
+ display: flex;
187
+ flex-wrap: wrap;
188
+ gap: $space-1;
189
+ list-style: none;
190
+ padding: 0;
191
+ margin: 0;
192
+ }
193
+ }
194
+
195
+ li.current_filter {
196
+ display: inline-flex;
197
+ align-items: center;
198
+ gap: $space-1;
199
+ padding: $space-1 $space-3;
200
+ background-color: $primary-50;
201
+ border: 1px solid $primary-100;
202
+ border-radius: $radius-full;
203
+ font-size: $font-size-xs;
204
+ line-height: 1.4;
205
+
206
+ span {
207
+ color: $text-color-secondary;
208
+ }
209
+
210
+ b {
211
+ color: $primary-700;
212
+ font-weight: $font-weight-semibold;
213
+ }
214
+ }
215
+
216
+ .current_scope_name {
217
+ color: $primary-700;
218
+ font-weight: $font-weight-semibold;
219
+ }
220
+ }
221
+
222
+ // Legacy flex reset removed — layouts/_main_content.scss no longer applies a
223
+ // two-column flex to `#active_admin_content.with_sidebar`, so no override is
224
+ // needed here.