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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ced4ed49bdd67f0df172275fee1324778c378ae9e0ee99d3977e136ce819596
4
- data.tar.gz: feb7791cec556d78eede014b8f9e3e531bfd31512cdb6fce9f60277e28a6dd20
3
+ metadata.gz: 826553bf7f65cca6b8ae4a32de6da7fd74c698fad3d674f173fd26a4816c9475
4
+ data.tar.gz: bfab5e1c447b458cebb6e6809c928e210542105ba58231de05b2d67cd65d0935
5
5
  SHA512:
6
- metadata.gz: d233f8162d6fbd660000f429aaf480756385da78f4e58aa1ed73680c080afec0e117b1f143cfe6099651b03a009dc1af9cba699620ee8efa55255803dee339fd
7
- data.tar.gz: 64b65816c0c78554be7afdc1c716133f49a98dc4c42dd37d367063f14f6e335b31ef7565294eb42f14d4e895fc01c0d7a7eda25439f2ab192461c007334ca9ef
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) theme.
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, matching the Verona feel.
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 (Coolors-trending), 8 of them curated
18
- full themes that repaint surfaces + text + borders. Non-themed palettes
19
- auto-derive tinted surfaces from the primary via `color-mix()`.
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
- ## Installation
53
+ ## Install in an existing ActiveAdmin project
33
54
 
34
- In your host app's `Gemfile`:
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
- Then:
61
+ ```bash
62
+ bundle install
63
+ ```
41
64
 
42
- ```bash
43
- bundle install
44
- ```
65
+ 2. Import the stylesheet in `app/assets/stylesheets/active_admin.scss`:
45
66
 
46
- ### Asset imports
67
+ ```scss
68
+ @import "fuji_admin/base";
69
+ ```
47
70
 
48
- In `app/assets/stylesheets/active_admin.scss`:
71
+ 3. Require the JavaScript in `app/assets/javascripts/active_admin.js`:
49
72
 
50
- ```scss
51
- @import "fuji_admin/base";
52
- ```
73
+ ```javascript
74
+ //= require fuji_admin/base
75
+ ```
53
76
 
54
- In `app/assets/javascripts/active_admin.js`:
77
+ 4. Restart the Rails server. That's it — your existing resources now render
78
+ with the fuji theme.
55
79
 
56
- ```javascript
57
- //= require fuji_admin/base
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
- ## Configuration
84
+ ### Optional configuration
61
85
 
62
- Add a Rails initializer — all attributes are optional.
86
+ All attributes are optional.
63
87
 
64
88
  ```ruby
65
89
  # config/initializers/fuji_admin.rb
66
90
  FujiAdmin.configure do |config|
67
- # Id of the palette to apply before any user selection is stored.
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
- ## Development against a host app
103
+ ## Choosing a palette
81
104
 
82
- Clone both repos side-by-side:
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
- Bundler's `bundle config local.<gem>` override only works when the host's
91
- Gemfile references a git source, not a published RubyGem. So for live local
92
- editing, point the host's Gemfile at the GitHub source temporarily:
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
- ```ruby
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
- Then tell Bundler to resolve it against your local checkout:
117
+ Once you've chosen a palette, set its `id` in the initializer:
100
118
 
101
- ```bash
102
- bundle config local.fuji_admin ~/development/fuji_admin
119
+ ```ruby
120
+ FujiAdmin.configure do |config|
121
+ config.default_palette = "coastal-sage"
122
+ end
103
123
  ```
104
124
 
105
- This is a per-machine setting stored in `~/.bundle/config` CI / Docker /
106
- Kamal never see it and fall back to the github source. Edits in
107
- `~/development/fuji_admin` reflect in the host app immediately.
108
-
109
- When you're ready to ship, flip the Gemfile back to
110
- `gem "fuji_admin", "~> 0.1"`, publish a new version (`gem build && gem push`),
111
- and run `bundle update fuji_admin` in the host.
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 (matching PrimeReact Verona's float label pattern).
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). Matches Verona's InputText aesthetic so
6
- // stacked forms breathe and feel touch-friendly.
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: inline-flex;
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: inline-flex;
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
- &:hover {
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
- &:hover {
247
+ &:nth-child(even) {
217
248
  background-color: $surface-50;
218
249
  }
219
250
 
220
- &.odd {
221
- background-color: transparent; // we handle alternation via hover
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 so the form
105
- // or attributes table reaches the viewport edges.
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,4 +1,4 @@
1
- // Breakpoints — match PrimeReact Verona's scale for parity with reference UI.
1
+ // Breakpoints — standard mobile-first responsive scale.
2
2
  // Use via mixins/_media.scss.
3
3
 
4
4
  $bp-sm: 576px; // phone landscape
@@ -1,6 +1,6 @@
1
- // Color tokens. Values seeded from Verona (PrimeReact) for a coherent starting
2
- // palette. Override any of these by redeclaring the variable *before* the
3
- // fuji_admin import in the host app's active_admin.scss.
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 (Verona primary ramp)
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 inspired by Verona's card aesthetic.
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);
@@ -1,3 +1,3 @@
1
1
  module FujiAdmin
2
- VERSION = "0.1.2"
2
+ VERSION = "1.0.0"
3
3
  end
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.1.2
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: 2026-04-18 00:00:00.000000000 Z
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: A responsive ActiveAdmin theme
34
- email:
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: 3.5.9
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: []