fuji_admin 0.1.2 → 1.0.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.
- checksums.yaml +4 -4
- data/README.md +160 -52
- data/app/assets/stylesheets/fuji_admin/components/_buttons.scss +2 -0
- data/app/assets/stylesheets/fuji_admin/components/_float_labels.scss +2 -9
- data/app/assets/stylesheets/fuji_admin/components/_inputs.scss +2 -2
- data/app/assets/stylesheets/fuji_admin/components/_palette_switcher.scss +2 -0
- data/app/assets/stylesheets/fuji_admin/components/_panel.scss +27 -0
- data/app/assets/stylesheets/fuji_admin/components/_scopes.scss +7 -2
- data/app/assets/stylesheets/fuji_admin/components/_tables.scss +35 -4
- data/app/assets/stylesheets/fuji_admin/layouts/_main_content.scss +4 -3
- data/app/assets/stylesheets/fuji_admin/pages/_index.scss +4 -4
- data/app/assets/stylesheets/fuji_admin/variables/_breakpoints.scss +1 -1
- data/app/assets/stylesheets/fuji_admin/variables/_colors.scss +4 -4
- data/app/assets/stylesheets/fuji_admin/variables/_shadows.scss +1 -1
- data/lib/fuji_admin/version.rb +1 -1
- metadata +18 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 826553bf7f65cca6b8ae4a32de6da7fd74c698fad3d674f173fd26a4816c9475
|
|
4
|
+
data.tar.gz: bfab5e1c447b458cebb6e6809c928e210542105ba58231de05b2d67cd65d0935
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f80c521d6cae049d7e6f9c7d5e70026c6a641bb0b92d6be6f100c7791f40484f7a31ebd4169126ba09b21925f82b7ec052768ff4d0075aa5b439aceeca47a999
|
|
7
|
+
data.tar.gz: b69ca7a0eb6353ff2a336518f01e191b0e6c824113d4fe29b5dab9c0d0f602f5ff6cde664b1f2d755a1f789ddbe36cf1d0fd988959430b8aab2ac55b0c314461
|
data/README.md
CHANGED
|
@@ -1,9 +1,30 @@
|
|
|
1
1
|
# Fuji Admin
|
|
2
2
|
|
|
3
|
-
A responsive [ActiveAdmin](https://github.com/activeadmin/activeadmin)
|
|
3
|
+
A responsive, modern theme for [ActiveAdmin](https://github.com/activeadmin/activeadmin).
|
|
4
4
|
Clean card-based layout, slide-in filter drawer, float-label inputs,
|
|
5
5
|
row-action dropdowns, and a live palette switcher with 30 built-in palettes.
|
|
6
6
|
|
|
7
|
+
## Why fuji_admin
|
|
8
|
+
|
|
9
|
+
Fuji Admin drops onto an existing ActiveAdmin app without touching a single
|
|
10
|
+
line of your `app/admin/` files — every existing resource, filter, form, and
|
|
11
|
+
table immediately looks a decade newer. It replaces AA's piecemeal defaults
|
|
12
|
+
with a cohesive design system — Saira typography, card-based layout, proper
|
|
13
|
+
elevation, and consistent spacing tokens — rather than painting over the
|
|
14
|
+
framework. A runtime palette switcher lets you (or your users) repaint every
|
|
15
|
+
primary surface, button, link, and chip live, with 30 curated palettes
|
|
16
|
+
available and derived tinted surfaces via `color-mix()` so no palette ever
|
|
17
|
+
feels "recolored". Forms get animated floating labels on text inputs and
|
|
18
|
+
textareas, refactored fieldset chrome, and clean button styling without
|
|
19
|
+
any Formtastic changes. Mobile posture is taken seriously: panels flatten
|
|
20
|
+
into sections, index tables switch to compact padding with opt-in
|
|
21
|
+
column-wrapping, and wide tables scroll horizontally instead of collapsing.
|
|
22
|
+
The filter sidebar is rethought as a right-side drawer with active-filter
|
|
23
|
+
chips above the table, reclaiming huge amounts of horizontal space for wide
|
|
24
|
+
index pages. Every design token (color, shadow, radius, space, font) is an
|
|
25
|
+
overridable SCSS variable, so one line in your `active_admin.scss` can rebrand
|
|
26
|
+
the whole app.
|
|
27
|
+
|
|
7
28
|
## Features
|
|
8
29
|
|
|
9
30
|
- **Responsive layout** — fixed header + sidebar nav at `lg+`, auto-injected
|
|
@@ -11,12 +32,12 @@ row-action dropdowns, and a live palette switcher with 30 built-in palettes.
|
|
|
11
32
|
- **Filter drawer** — AA's `#sidebar` is turned into a right-side slide-in
|
|
12
33
|
panel with a "Filters" toggle in the title bar. Includes a chip strip
|
|
13
34
|
above the table showing each active Ransack filter (click × to remove).
|
|
14
|
-
- **Float labels** on text inputs
|
|
35
|
+
- **Float labels** on text inputs and textareas.
|
|
15
36
|
- **Row-action dropdown** — 2+ row actions collapse into a single `⋯`
|
|
16
37
|
menu per row, rendered above any clipping parents via `position: fixed`.
|
|
17
|
-
- **Palette switcher** — 30 palettes
|
|
18
|
-
|
|
19
|
-
|
|
38
|
+
- **Palette switcher** — 30 palettes, 8 of them curated full themes that
|
|
39
|
+
repaint surfaces + text + borders. Non-themed palettes auto-derive tinted
|
|
40
|
+
surfaces from the primary via `color-mix()`.
|
|
20
41
|
- **Refactored form chrome** — fieldset legends rendered as proper card
|
|
21
42
|
headers, not floating `<legend>` text over borders.
|
|
22
43
|
- **Full component set** — buttons, inputs, selects, Select2, jQuery UI
|
|
@@ -29,43 +50,45 @@ row-action dropdowns, and a live palette switcher with 30 built-in palettes.
|
|
|
29
50
|
- Ruby `>= 3.1.0`
|
|
30
51
|
- ActiveAdmin `>= 3.0`, `< 4.0`
|
|
31
52
|
|
|
32
|
-
##
|
|
53
|
+
## Install in an existing ActiveAdmin project
|
|
33
54
|
|
|
34
|
-
|
|
55
|
+
1. Add to your `Gemfile`:
|
|
35
56
|
|
|
36
|
-
```ruby
|
|
37
|
-
gem "fuji_admin", "~> 0.1"
|
|
38
|
-
```
|
|
57
|
+
```ruby
|
|
58
|
+
gem "fuji_admin", "~> 0.1"
|
|
59
|
+
```
|
|
39
60
|
|
|
40
|
-
|
|
61
|
+
```bash
|
|
62
|
+
bundle install
|
|
63
|
+
```
|
|
41
64
|
|
|
42
|
-
|
|
43
|
-
bundle install
|
|
44
|
-
```
|
|
65
|
+
2. Import the stylesheet in `app/assets/stylesheets/active_admin.scss`:
|
|
45
66
|
|
|
46
|
-
|
|
67
|
+
```scss
|
|
68
|
+
@import "fuji_admin/base";
|
|
69
|
+
```
|
|
47
70
|
|
|
48
|
-
|
|
71
|
+
3. Require the JavaScript in `app/assets/javascripts/active_admin.js`:
|
|
49
72
|
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
```
|
|
73
|
+
```javascript
|
|
74
|
+
//= require fuji_admin/base
|
|
75
|
+
```
|
|
53
76
|
|
|
54
|
-
|
|
77
|
+
4. Restart the Rails server. That's it — your existing resources now render
|
|
78
|
+
with the fuji theme.
|
|
55
79
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
80
|
+
No changes to your `app/admin/*.rb` files are required. If you were
|
|
81
|
+
previously using a different theme (e.g. `arctic_admin`), remove its gem and
|
|
82
|
+
asset imports to avoid conflicting styles.
|
|
59
83
|
|
|
60
|
-
|
|
84
|
+
### Optional configuration
|
|
61
85
|
|
|
62
|
-
|
|
86
|
+
All attributes are optional.
|
|
63
87
|
|
|
64
88
|
```ruby
|
|
65
89
|
# config/initializers/fuji_admin.rb
|
|
66
90
|
FujiAdmin.configure do |config|
|
|
67
|
-
#
|
|
68
|
-
# Must match one of the ids in app/assets/javascripts/fuji_admin/palettes.js.
|
|
91
|
+
# Palette applied before any user selection is stored.
|
|
69
92
|
config.default_palette = "forest-meadow"
|
|
70
93
|
|
|
71
94
|
# Render the floating palette-picker UI. Defaults to false. Flip on in
|
|
@@ -77,43 +100,79 @@ end
|
|
|
77
100
|
Configuration is surfaced to the browser via `<meta>` tags injected into
|
|
78
101
|
ActiveAdmin's `<head>` — no host-layout changes required.
|
|
79
102
|
|
|
80
|
-
##
|
|
103
|
+
## Choosing a palette
|
|
81
104
|
|
|
82
|
-
|
|
105
|
+
You have three ways to apply a palette. Pick whichever fits your workflow.
|
|
83
106
|
|
|
84
|
-
|
|
85
|
-
~/development/
|
|
86
|
-
├── fuji_admin/
|
|
87
|
-
└── my_admin_app/
|
|
88
|
-
```
|
|
107
|
+
### 1. Live-preview with the palette picker (development)
|
|
89
108
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
109
|
+
Flip `config.palette_picker = true` in the initializer and reload. A small
|
|
110
|
+
floating trigger appears in the bottom-right corner; opening it shows all 30
|
|
111
|
+
palettes with swatches. Click one and the entire UI repaints instantly — no
|
|
112
|
+
reload. Your selection is persisted to `localStorage` for that browser, so
|
|
113
|
+
you can use it to audition palettes when picking your default.
|
|
93
114
|
|
|
94
|
-
|
|
95
|
-
# Host app Gemfile — during fuji_admin development
|
|
96
|
-
gem "fuji_admin", github: "BarbaricCorgi/fuji_admin"
|
|
97
|
-
```
|
|
115
|
+
### 2. Set a project-wide default
|
|
98
116
|
|
|
99
|
-
|
|
117
|
+
Once you've chosen a palette, set its `id` in the initializer:
|
|
100
118
|
|
|
101
|
-
```
|
|
102
|
-
|
|
119
|
+
```ruby
|
|
120
|
+
FujiAdmin.configure do |config|
|
|
121
|
+
config.default_palette = "coastal-sage"
|
|
122
|
+
end
|
|
103
123
|
```
|
|
104
124
|
|
|
105
|
-
This is
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
125
|
+
This palette is applied for every user who hasn't picked their own via the
|
|
126
|
+
runtime picker. Leaving `palette_picker = false` in production means the
|
|
127
|
+
default is the *only* palette used, which is usually what you want for a
|
|
128
|
+
consistent brand.
|
|
129
|
+
|
|
130
|
+
### 3. Bundled palette IDs
|
|
131
|
+
|
|
132
|
+
Use any of these as `default_palette`:
|
|
133
|
+
|
|
134
|
+
| ID | Tone |
|
|
135
|
+
| ----------------- | ----------------------------- |
|
|
136
|
+
| `fuji-default` | Deep indigo (fuji base) |
|
|
137
|
+
| `navy-amber` | Teal + amber accents |
|
|
138
|
+
| `warm-sunset` | Terracotta + teal |
|
|
139
|
+
| `forest-meadow` | Olive & green earth tones |
|
|
140
|
+
| `dusty-rose` | Muted pink + maroon |
|
|
141
|
+
| `ocean-blue` | Ocean cyans |
|
|
142
|
+
| `terracotta` | Warm terracotta + sage |
|
|
143
|
+
| `coastal-sage` | Sage-green neutral *(theme)* |
|
|
144
|
+
| `royal-purple` | Deep violet |
|
|
145
|
+
| `editorial-navy` | Slate navy + off-white *(theme)* |
|
|
146
|
+
| `cheerful` | Primary-bright multi |
|
|
147
|
+
| `crimson-spice` | Crimson + saffron |
|
|
148
|
+
| `mint-ocean` | Mint → deep-cyan ramp |
|
|
149
|
+
| `burgundy-gold` | Burgundy + gold *(theme)* |
|
|
150
|
+
| `scarlet` | Monochrome scarlet |
|
|
151
|
+
| `teal-warmth` | Teal + warm ochre |
|
|
152
|
+
| `deep-cyan` | Deep cyan + sand *(theme)* |
|
|
153
|
+
| `tropical` | Tropical aqua + coral *(theme)* |
|
|
154
|
+
| `spice-road` | Magenta + orange |
|
|
155
|
+
| `sunset-gradient` | Full spectrum sunset |
|
|
156
|
+
| `coral-reef` | Coral + seafoam |
|
|
157
|
+
| `electric` | Vivid cyberpunk |
|
|
158
|
+
| `muted-taupe` | Grey-purple taupe *(theme)* |
|
|
159
|
+
| `warm-lilac` | Lilac ramp |
|
|
160
|
+
| `rose-garden` | Rose + pink |
|
|
161
|
+
| `forest-deep` | Deep forest |
|
|
162
|
+
| `pink-sunset` | Soft pinks |
|
|
163
|
+
| `twilight-purple` | Deep indigo-purple |
|
|
164
|
+
| `olive-gold` | Olive + mustard *(theme)* |
|
|
165
|
+
| `sage-terracotta` | Sage + terracotta *(theme)* |
|
|
166
|
+
| `indigo-glow` | Vivid indigo + multi |
|
|
167
|
+
|
|
168
|
+
Palettes marked *(theme)* are curated full themes with hand-picked surface,
|
|
169
|
+
text, and border colors. Un-marked palettes auto-derive tinted surfaces from
|
|
170
|
+
the primary at runtime.
|
|
112
171
|
|
|
113
172
|
## Customising palettes
|
|
114
173
|
|
|
115
174
|
The 30 bundled palettes live in
|
|
116
|
-
`app/assets/javascripts/fuji_admin/palettes.js`. Each has:
|
|
175
|
+
`app/assets/javascripts/fuji_admin/palettes.js`. Each entry has:
|
|
117
176
|
|
|
118
177
|
```javascript
|
|
119
178
|
{
|
|
@@ -135,6 +194,55 @@ Palettes without a `theme` block get auto-derived surfaces + text by mixing
|
|
|
135
194
|
the `primary` with white / black at runtime via `color-mix()`, so every
|
|
136
195
|
palette reads as a coherent mini-theme.
|
|
137
196
|
|
|
197
|
+
To override the theme's design tokens wholesale (font, radii, spacing,
|
|
198
|
+
shadows, base colors), declare the SCSS variable *before* the fuji_admin
|
|
199
|
+
import:
|
|
200
|
+
|
|
201
|
+
```scss
|
|
202
|
+
// app/assets/stylesheets/active_admin.scss
|
|
203
|
+
$primary-color: #2bb673;
|
|
204
|
+
$font-family-body: "Inter", sans-serif;
|
|
205
|
+
$border-radius-card: 12px;
|
|
206
|
+
|
|
207
|
+
@import "fuji_admin/base";
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Every variable in `fuji_admin/variables/*` is marked `!default`, so your
|
|
211
|
+
declaration wins.
|
|
212
|
+
|
|
213
|
+
## Development against a host app
|
|
214
|
+
|
|
215
|
+
Clone both repos side-by-side:
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
~/development/
|
|
219
|
+
├── fuji_admin/
|
|
220
|
+
└── my_admin_app/
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Bundler's `bundle config local.<gem>` override only works when the host's
|
|
224
|
+
Gemfile references a git source, not a published RubyGem. So for live local
|
|
225
|
+
editing, point the host's Gemfile at the GitHub source temporarily:
|
|
226
|
+
|
|
227
|
+
```ruby
|
|
228
|
+
# Host app Gemfile — during fuji_admin development
|
|
229
|
+
gem "fuji_admin", github: "BarbaricCorgi/fuji_admin"
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Then tell Bundler to resolve it against your local checkout:
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
bundle config local.fuji_admin ~/development/fuji_admin
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
This is a per-machine setting stored in `~/.bundle/config` — CI / Docker /
|
|
239
|
+
Kamal never see it and fall back to the github source. Edits in
|
|
240
|
+
`~/development/fuji_admin` reflect in the host app immediately.
|
|
241
|
+
|
|
242
|
+
When you're ready to ship, flip the Gemfile back to
|
|
243
|
+
`gem "fuji_admin", "~> 0.1"`, publish a new version (`gem build && gem push`),
|
|
244
|
+
and run `bundle update fuji_admin` in the host.
|
|
245
|
+
|
|
138
246
|
## License
|
|
139
247
|
|
|
140
248
|
MIT — see [LICENSE.txt](LICENSE.txt).
|
|
@@ -68,9 +68,11 @@
|
|
|
68
68
|
|
|
69
69
|
// Primary button surface — form submit, action item buttons, batch actions.
|
|
70
70
|
form input[type="submit"],
|
|
71
|
+
form button[type="submit"],
|
|
71
72
|
a.button,
|
|
72
73
|
a:link.button,
|
|
73
74
|
a:visited.button,
|
|
75
|
+
button.button,
|
|
74
76
|
fieldset.actions > ol > li.button_action > button,
|
|
75
77
|
#title_bar #titlebar_right .action_item > a,
|
|
76
78
|
.batch_actions_selector > a,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Float labels — applied by fuji_admin/floats.js to text-like formtastic
|
|
2
2
|
// wrappers inside `fieldset.inputs`. The label rests inside the input at
|
|
3
3
|
// baseline, then animates up to sit on the top border when the input has
|
|
4
|
-
// focus or a value (
|
|
4
|
+
// focus or a value (standard float-label pattern).
|
|
5
5
|
//
|
|
6
6
|
// Only `.fuji-float` wrappers get this treatment; selects, booleans, radios
|
|
7
7
|
// and date pickers keep their stacked label so their native controls stay
|
|
@@ -22,7 +22,7 @@ fieldset.inputs ol > li.fuji-float {
|
|
|
22
22
|
font-weight: $font-weight-regular;
|
|
23
23
|
line-height: 1.4;
|
|
24
24
|
color: $text-color-muted;
|
|
25
|
-
background-color: $surface-0; // masks input border when floated
|
|
25
|
+
background-color: var(--fuji-surface, #{$surface-0}); // masks input border when floated; palette-aware
|
|
26
26
|
pointer-events: none;
|
|
27
27
|
text-transform: none;
|
|
28
28
|
letter-spacing: 0;
|
|
@@ -68,10 +68,3 @@ fieldset.inputs ol > li.fuji-float {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
// Textarea variant — label docks at the top of the textarea when resting,
|
|
72
|
-
// not centred (textareas are tall so centring would look awkward).
|
|
73
|
-
fieldset.inputs ol > li.text.fuji-float {
|
|
74
|
-
> label {
|
|
75
|
-
top: calc(#{$input-padding-y} + 1px);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// and native selects. Select2 and date pickers get their own components.
|
|
3
3
|
//
|
|
4
4
|
// Sizing approach: pad to ~40px total height (10px y / 12px x + 1px borders +
|
|
5
|
-
// ~1.4 line-height on 14px text)
|
|
6
|
-
//
|
|
5
|
+
// ~1.4 line-height on 14px text) so stacked forms breathe and feel
|
|
6
|
+
// touch-friendly.
|
|
7
7
|
|
|
8
8
|
$input-padding-y: 10px;
|
|
9
9
|
$input-padding-x: $space-3;
|
|
@@ -26,9 +26,11 @@ $fuji-primary: var(--fuji-primary, #{$primary-color});
|
|
|
26
26
|
|
|
27
27
|
// Primary buttons — keep text white regardless of palette/theme.
|
|
28
28
|
form input[type="submit"],
|
|
29
|
+
form button[type="submit"],
|
|
29
30
|
a.button,
|
|
30
31
|
a:link.button,
|
|
31
32
|
a:visited.button,
|
|
33
|
+
button.button,
|
|
32
34
|
fieldset.actions > ol > li.button_action > button,
|
|
33
35
|
#title_bar #titlebar_right .action_item > a,
|
|
34
36
|
#title_bar #titlebar_right .dropdown_menu > a.dropdown_menu_button,
|
|
@@ -25,6 +25,33 @@
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
// Mobile: flatten panels so they read as plain sections inside the outer
|
|
29
|
+
// #main_content card, reclaiming the horizontal space eaten by nested card
|
|
30
|
+
// chrome. `.sidebar_section.panel` is excluded — it uses a different layout.
|
|
31
|
+
.panel:not(.sidebar_section) {
|
|
32
|
+
@include media-down(md) {
|
|
33
|
+
background-color: transparent;
|
|
34
|
+
border: 0;
|
|
35
|
+
border-radius: 0;
|
|
36
|
+
box-shadow: none;
|
|
37
|
+
margin-bottom: 0;
|
|
38
|
+
border-bottom: 1px solid $surface-200;
|
|
39
|
+
|
|
40
|
+
&:last-child {
|
|
41
|
+
border-bottom: 0;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
> h3 {
|
|
45
|
+
padding: $space-4 0 $space-2;
|
|
46
|
+
border-bottom: 0;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.panel_contents {
|
|
50
|
+
padding: 0 0 $space-4;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
28
55
|
// Inside the sidebar, tighten the defaults slightly.
|
|
29
56
|
#sidebar .sidebar_section.panel {
|
|
30
57
|
box-shadow: none;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
.scopes,
|
|
6
6
|
.table_tools .scopes {
|
|
7
|
-
display:
|
|
7
|
+
display: flex;
|
|
8
8
|
flex-wrap: wrap;
|
|
9
9
|
gap: 0;
|
|
10
10
|
padding: $space-1;
|
|
@@ -13,8 +13,13 @@
|
|
|
13
13
|
list-style: none;
|
|
14
14
|
margin: 0;
|
|
15
15
|
|
|
16
|
+
@include media-down(md) {
|
|
17
|
+
align-self: flex-start;
|
|
18
|
+
}
|
|
19
|
+
|
|
16
20
|
> ul {
|
|
17
|
-
display:
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-wrap: wrap;
|
|
18
23
|
list-style: none;
|
|
19
24
|
padding: 0;
|
|
20
25
|
margin: 0;
|
|
@@ -55,10 +55,14 @@ table.index_table {
|
|
|
55
55
|
tr {
|
|
56
56
|
transition: background-color 0.15s ease;
|
|
57
57
|
|
|
58
|
-
&:
|
|
58
|
+
&:nth-child(even) {
|
|
59
59
|
background-color: $surface-50;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
&:hover {
|
|
63
|
+
background-color: $surface-100;
|
|
64
|
+
}
|
|
65
|
+
|
|
62
66
|
&.selected {
|
|
63
67
|
background-color: $primary-50;
|
|
64
68
|
}
|
|
@@ -128,6 +132,33 @@ table.index_table {
|
|
|
128
132
|
}
|
|
129
133
|
}
|
|
130
134
|
}
|
|
135
|
+
|
|
136
|
+
@include media-down(md) {
|
|
137
|
+
font-size: $font-size-xs;
|
|
138
|
+
line-height: $line-height-tight;
|
|
139
|
+
|
|
140
|
+
thead th,
|
|
141
|
+
tbody tr td {
|
|
142
|
+
padding: 0.3rem 0.3rem;
|
|
143
|
+
white-space: nowrap;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
thead th.col-selectable,
|
|
147
|
+
tbody tr td.col-selectable {
|
|
148
|
+
width: 36px;
|
|
149
|
+
min-width: 36px;
|
|
150
|
+
max-width: 36px;
|
|
151
|
+
padding: 0 $space-2;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
thead th.col-wide,
|
|
155
|
+
tbody tr td.col-wide {
|
|
156
|
+
min-width: 200px;
|
|
157
|
+
max-width: 400px;
|
|
158
|
+
white-space: normal;
|
|
159
|
+
overflow-wrap: anywhere;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
131
162
|
}
|
|
132
163
|
|
|
133
164
|
// Show-page attributes table — two-column label/value rows.
|
|
@@ -213,12 +244,12 @@ table.index_table {
|
|
|
213
244
|
tr {
|
|
214
245
|
transition: background-color 0.15s ease;
|
|
215
246
|
|
|
216
|
-
&:
|
|
247
|
+
&:nth-child(even) {
|
|
217
248
|
background-color: $surface-50;
|
|
218
249
|
}
|
|
219
250
|
|
|
220
|
-
|
|
221
|
-
background-color:
|
|
251
|
+
&:hover {
|
|
252
|
+
background-color: $surface-100;
|
|
222
253
|
}
|
|
223
254
|
|
|
224
255
|
td {
|
|
@@ -101,14 +101,15 @@ body.new {
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
// On edit / view / new pages, flatten the card at mobile sizes
|
|
105
|
-
//
|
|
104
|
+
// On edit / view / new pages, flatten the card at mobile sizes: drop the
|
|
105
|
+
// border-radius and shadow but keep horizontal padding so content has a
|
|
106
|
+
// gutter (flat panels below no longer provide their own).
|
|
106
107
|
body.show,
|
|
107
108
|
body.edit,
|
|
108
109
|
body.new {
|
|
109
110
|
@include media-down(md) {
|
|
110
111
|
#main_content {
|
|
111
|
-
padding: 0;
|
|
112
|
+
padding: 0 $content-padding-mobile;
|
|
112
113
|
border-radius: 0;
|
|
113
114
|
box-shadow: none;
|
|
114
115
|
}
|
|
@@ -17,10 +17,6 @@
|
|
|
17
17
|
border-radius: 0;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
.paginated_collection_contents {
|
|
21
|
-
overflow-x: auto;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
20
|
.pagination_information,
|
|
25
21
|
.pagination {
|
|
26
22
|
padding: $space-3 0;
|
|
@@ -31,6 +27,10 @@
|
|
|
31
27
|
}
|
|
32
28
|
}
|
|
33
29
|
|
|
30
|
+
.paginated_collection_contents {
|
|
31
|
+
overflow-x: auto;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
34
|
// Batch-actions checkbox column width.
|
|
35
35
|
table.index_table tbody td.col-selectable {
|
|
36
36
|
width: 32px;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// Color tokens
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// Color tokens — a coherent neutral + indigo starting palette. Override any
|
|
2
|
+
// of these by redeclaring the variable *before* the fuji_admin import in
|
|
3
|
+
// the host app's active_admin.scss.
|
|
4
4
|
|
|
5
5
|
// Surfaces — neutral backgrounds & borders
|
|
6
6
|
$surface-0: #ffffff !default; // card
|
|
@@ -22,7 +22,7 @@ $text-color: #212121 !default;
|
|
|
22
22
|
$text-color-secondary: #616161 !default;
|
|
23
23
|
$text-color-muted: #9e9e9e !default;
|
|
24
24
|
|
|
25
|
-
// Primary — deep indigo/blue
|
|
25
|
+
// Primary — deep indigo/blue
|
|
26
26
|
$primary-50: #f2f5fc !default;
|
|
27
27
|
$primary-100: #d4daed !default;
|
|
28
28
|
$primary-200: #b2bce0 !default;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Box shadow tokens. Soft, layered
|
|
1
|
+
// Box shadow tokens. Soft, layered for a card-based aesthetic.
|
|
2
2
|
|
|
3
3
|
$shadow-xs: 0 1px 2px rgba(16, 24, 40, 0.04);
|
|
4
4
|
$shadow-sm: 0 1px 3px rgba(16, 24, 40, 0.06), 0 1px 2px rgba(16, 24, 40, 0.04);
|
data/lib/fuji_admin/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fuji_admin
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- barbariccorgi
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: activeadmin
|
|
@@ -30,8 +29,20 @@ dependencies:
|
|
|
30
29
|
- - "<"
|
|
31
30
|
- !ruby/object:Gem::Version
|
|
32
31
|
version: '4.0'
|
|
33
|
-
description:
|
|
34
|
-
|
|
32
|
+
description: |
|
|
33
|
+
Fuji Admin is a drop-in theme for ActiveAdmin that upgrades every default
|
|
34
|
+
surface — tables, forms, filters, panels, pagination, scopes, batch
|
|
35
|
+
actions — into a cohesive, modern design system without requiring any
|
|
36
|
+
changes to your app/admin files. Ships with a card-based responsive
|
|
37
|
+
layout, slide-in filter drawer with active-filter chips, animated
|
|
38
|
+
floating labels on text inputs and textareas, row-action dropdowns, and
|
|
39
|
+
a runtime palette switcher with 30 built-in palettes (8 curated full
|
|
40
|
+
themes) that repaint surfaces, text, borders, and primary accents live.
|
|
41
|
+
Mobile posture is first-class: panels flatten into sections, index
|
|
42
|
+
tables get compact padding with opt-in column wrapping, and wide tables
|
|
43
|
+
scroll horizontally. Every design token (color, shadow, radius, space,
|
|
44
|
+
font) is an overridable SCSS variable so brands can customize without
|
|
45
|
+
forking.
|
|
35
46
|
executables: []
|
|
36
47
|
extensions: []
|
|
37
48
|
extra_rdoc_files: []
|
|
@@ -102,7 +113,6 @@ metadata:
|
|
|
102
113
|
source_code_uri: https://github.com/BarbaricCorgi/fuji_admin
|
|
103
114
|
changelog_uri: https://github.com/BarbaricCorgi/fuji_admin/releases
|
|
104
115
|
bug_tracker_uri: https://github.com/BarbaricCorgi/fuji_admin/issues
|
|
105
|
-
post_install_message:
|
|
106
116
|
rdoc_options: []
|
|
107
117
|
require_paths:
|
|
108
118
|
- lib
|
|
@@ -117,8 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
117
127
|
- !ruby/object:Gem::Version
|
|
118
128
|
version: '0'
|
|
119
129
|
requirements: []
|
|
120
|
-
rubygems_version:
|
|
121
|
-
signing_key:
|
|
130
|
+
rubygems_version: 4.0.10
|
|
122
131
|
specification_version: 4
|
|
123
|
-
summary: A responsive ActiveAdmin theme
|
|
132
|
+
summary: A modern, responsive ActiveAdmin theme with a live palette switcher
|
|
124
133
|
test_files: []
|