widget_list_theme_ai 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.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +51 -0
- data/docs/ai-theme-rails8-preview.png +0 -0
- data/lib/widget_list_theme_ai/engine.rb +9 -0
- data/lib/widget_list_theme_ai/version.rb +3 -0
- data/lib/widget_list_theme_ai.rb +33 -0
- data/vendor/assets/stylesheets/widget_list_theme_ai.css +243 -0
- metadata +67 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: f0680a854969d0115bdccbff8853b744281ed60248ab09f32a07719982d01e86
|
|
4
|
+
data.tar.gz: c039ffb3708f6dbfcd58e219e969b7aa01eca31d1cc45b3a9fa1a67db3d0feb4
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: d7243f69811346850a4c2fdf135e44ac6318b5e0dc045fae50f93915d254a2f67e37208435a3ce092b723c2ba53f54d48e76b91bebb0b603798147aacedbcae5
|
|
7
|
+
data.tar.gz: 4f4a507f868a9131580769001b74ab1b62a8f559be178953ebea8831942646eb4a7dab3898f817d94176fcac79e3403c12cce6350477c45b5f09531aadc9ab50
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 David Renne
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# widget_list_theme_ai
|
|
2
|
+
|
|
3
|
+
A dark, luminous theme for [widget_list](https://github.com/davidrenne/widget_list). It pairs midnight navy surfaces with cyan and violet accents, strong table contrast, compact controls, and a clear system font stack. The stylesheet stays inside widget_list grids, so it does not restyle the rest of a Rails app. No remote fonts, images, or JavaScript are required.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
*The grid uses this gem; the surrounding page shell is part of the Rails 8 example app.*
|
|
8
|
+
|
|
9
|
+
The theme targets widget_list 2.0.1 or newer on Rails 8 with Sprockets. It is currently under development and is **not yet published to RubyGems**.
|
|
10
|
+
|
|
11
|
+
## Try it locally
|
|
12
|
+
|
|
13
|
+
Clone this repository beside your Rails app and add the local gem to your Gemfile:
|
|
14
|
+
|
|
15
|
+
```ruby
|
|
16
|
+
gem 'sprockets-rails'
|
|
17
|
+
gem 'jquery-rails'
|
|
18
|
+
gem 'widget_list', '~> 2.0', '>= 2.0.1'
|
|
19
|
+
gem 'widget_list_theme_ai', path: '../widget_list_theme_ai'
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Then run `bundle install`. Add the theme stylesheet to `app/assets/config/manifest.js`:
|
|
23
|
+
|
|
24
|
+
```javascript
|
|
25
|
+
//= link widget_list_theme_ai.css
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Load it **after** widget_list's styles in your layout:
|
|
29
|
+
|
|
30
|
+
```erb
|
|
31
|
+
<%= stylesheet_link_tag 'application', 'widget_list', 'widgets', 'widget_list_theme_ai' %>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The theme automatically supplies widget_list defaults when Bundler requires the gem. Existing lists need no controller changes. Per-list options passed to `WidgetList.go!` still take precedence. Run `bin/rails assets:precompile` before deploying. The base gem's [Rails 8 setup guide](https://github.com/davidrenne/widget_list#add-it-to-a-rails-8-app) explains the required JavaScript and database setup.
|
|
35
|
+
|
|
36
|
+
## See it in a working app
|
|
37
|
+
|
|
38
|
+
The [`codex/ai-theme-example` branch of widget_list_example_rails8](https://github.com/davidrenne/widget_list_example_rails8/tree/codex/ai-theme-example) installs this gem and the current widget_list source from sibling checkouts. It shows both Sequel and Ransack lists and a separate administration console. Clone the example and the core gem beside this repository, check out the branches listed in the example README, then run `bundle install`, `bin/rails db:prepare`, `bin/rails db:seed`, and `bin/rails server`.
|
|
39
|
+
|
|
40
|
+
## Design choices
|
|
41
|
+
|
|
42
|
+
- Theme defaults provide colors, alternating rows, typography, and table settings through widget_list's existing `WidgetListThemeHelper::ThemeDefaults` hook.
|
|
43
|
+
- The CSS refines search, export, headers, rows, hover states, and pagination. It is scoped to `.widget_list_outer` and the theme's `.wl-ai` class.
|
|
44
|
+
- Focus rings remain visible, and motion is removed when the operating system requests reduced motion.
|
|
45
|
+
- The example app adds its own hero and page shell. Those styles are not part of this gem.
|
|
46
|
+
|
|
47
|
+
If your application provides its own `WidgetListThemeHelper::ThemeDefaults`, keep one theme provider loaded at a time or merge the desired settings into your own defaults class.
|
|
48
|
+
|
|
49
|
+
## License
|
|
50
|
+
|
|
51
|
+
MIT. See [LICENSE.txt](LICENSE.txt).
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
module WidgetListThemeAi
|
|
2
|
+
class Engine < ::Rails::Engine
|
|
3
|
+
initializer 'widget_list_theme_ai.assets' do |app|
|
|
4
|
+
next unless defined?(Sprockets::Railtie) && app.config.respond_to?(:assets)
|
|
5
|
+
|
|
6
|
+
app.config.assets.precompile += %w[widget_list_theme_ai.css]
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'widget_list_theme_ai/version'
|
|
2
|
+
|
|
3
|
+
# widget_list reads these defaults when it builds each grid. Callers can still
|
|
4
|
+
# override any setting on an individual WidgetList.go! invocation.
|
|
5
|
+
module WidgetListThemeHelper
|
|
6
|
+
class ThemeDefaults
|
|
7
|
+
def self.get_theme_widget_list_defaults
|
|
8
|
+
{
|
|
9
|
+
'fontFamily' => '"Avenir Next", "Segoe UI", Inter, system-ui, sans-serif',
|
|
10
|
+
'headerFooterFontSize' => '12px',
|
|
11
|
+
'dataFontSize' => '14px',
|
|
12
|
+
'titleFontSize' => '28px',
|
|
13
|
+
'headerBGColor' => '#17243d',
|
|
14
|
+
'footerBGColor' => '#101d31',
|
|
15
|
+
'headerFontColor' => '#d8e7fa',
|
|
16
|
+
'footerFontColor' => '#a9bfd8',
|
|
17
|
+
'rowFontColor' => '#dce9fb',
|
|
18
|
+
'rowOffsets' => ['#111e31', '#142238'],
|
|
19
|
+
'tableBorder' => '0',
|
|
20
|
+
'borderedColumns' => false,
|
|
21
|
+
'borderedRows' => true,
|
|
22
|
+
'borderRowStyle' => '1px solid #263a55',
|
|
23
|
+
'cornerRadius' => 20,
|
|
24
|
+
'useBoxShadow' => false,
|
|
25
|
+
'defaultButtonClass' => 'info',
|
|
26
|
+
'class' => 'listContainerPassive wl-ai',
|
|
27
|
+
'tableclass' => 'tableBlowOutPreventer wl-ai-table'
|
|
28
|
+
}
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
require 'widget_list_theme_ai/engine' if defined?(Rails::Engine)
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/* AI theme. Load after widget_list.css and widgets.css. All rules stay in grids. */
|
|
2
|
+
.widget_list_outer {
|
|
3
|
+
--wl-ai-ink: #e8f2ff;
|
|
4
|
+
--wl-ai-muted: #9db2ce;
|
|
5
|
+
--wl-ai-line: #2b4260;
|
|
6
|
+
--wl-ai-cyan: #6ce8e9;
|
|
7
|
+
--wl-ai-violet: #a99aff;
|
|
8
|
+
--wl-ai-font: "Avenir Next", "Segoe UI", Inter, system-ui, sans-serif;
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
color: var(--wl-ai-ink);
|
|
11
|
+
font-family: var(--wl-ai-font);
|
|
12
|
+
padding: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.widget_list_outer *, .widget_list_outer *::before, .widget_list_outer *::after { box-sizing: border-box; }
|
|
16
|
+
|
|
17
|
+
.widget_list_outer > h1,
|
|
18
|
+
.widget_list_outer > div > h1 {
|
|
19
|
+
color: #f1f7ff;
|
|
20
|
+
font-family: var(--wl-ai-font);
|
|
21
|
+
font-weight: 700;
|
|
22
|
+
letter-spacing: -.04em;
|
|
23
|
+
margin: 0 0 6px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.widget_list_outer .horizontal_rule {
|
|
27
|
+
height: 2px;
|
|
28
|
+
margin: 0 0 22px;
|
|
29
|
+
background: linear-gradient(90deg, var(--wl-ai-cyan), var(--wl-ai-violet) 42%, transparent 82%);
|
|
30
|
+
border: 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.widget_list_outer .widget-search-outer {
|
|
34
|
+
background: #111f35 !important;
|
|
35
|
+
border: 1px solid #385473;
|
|
36
|
+
border-radius: 11px;
|
|
37
|
+
box-shadow: inset 0 1px 0 #ffffff0b, 0 8px 24px #00000022;
|
|
38
|
+
height: 43px;
|
|
39
|
+
line-height: 41px;
|
|
40
|
+
max-width: min(100%, 470px);
|
|
41
|
+
margin: 0 10px 18px 0;
|
|
42
|
+
padding: 0 10px 0 0;
|
|
43
|
+
vertical-align: middle;
|
|
44
|
+
transition: border-color .18s, box-shadow .18s;
|
|
45
|
+
}
|
|
46
|
+
.widget_list_outer .widget-search-outer:focus-within {
|
|
47
|
+
border-color: var(--wl-ai-cyan);
|
|
48
|
+
box-shadow: 0 0 0 3px #6ce8e92e, 0 10px 28px #0003;
|
|
49
|
+
}
|
|
50
|
+
.widget_list_outer .widget-search-outer .inputInner {
|
|
51
|
+
background: none !important;
|
|
52
|
+
height: 41px;
|
|
53
|
+
line-height: 41px;
|
|
54
|
+
padding: 0 12px 0 15px;
|
|
55
|
+
}
|
|
56
|
+
.widget_list_outer .widget-search-outer .inputInner input {
|
|
57
|
+
color: var(--wl-ai-ink) !important;
|
|
58
|
+
font: 500 13px/40px var(--wl-ai-font);
|
|
59
|
+
height: 40px;
|
|
60
|
+
outline: 0;
|
|
61
|
+
}
|
|
62
|
+
.widget_list_outer .widget-search-outer .inputInner input::placeholder { color: var(--wl-ai-muted); }
|
|
63
|
+
.widget_list_outer .info-input-field-inactive { color: var(--wl-ai-muted) !important; font-style: normal; }
|
|
64
|
+
.widget_list_outer .widget-search-magnifier,
|
|
65
|
+
.widget_list_outer .widget-search-arrow {
|
|
66
|
+
filter: brightness(0) saturate(100%) invert(84%) sepia(18%) saturate(1070%) hue-rotate(131deg);
|
|
67
|
+
top: -34px;
|
|
68
|
+
}
|
|
69
|
+
.widget_list_outer .widget-search-drilldown {
|
|
70
|
+
background: #182940;
|
|
71
|
+
color: var(--wl-ai-ink);
|
|
72
|
+
border: 1px solid #446080;
|
|
73
|
+
border-radius: 0 0 12px 12px;
|
|
74
|
+
box-shadow: 0 18px 38px #050b19b3;
|
|
75
|
+
padding: 12px;
|
|
76
|
+
top: 40px;
|
|
77
|
+
width: 100%;
|
|
78
|
+
}
|
|
79
|
+
.widget_list_outer .widget-search-drilldown input,
|
|
80
|
+
.widget_list_outer .widget-search-drilldown select {
|
|
81
|
+
background-color: #0e1b2e;
|
|
82
|
+
border: 1px solid #45617f;
|
|
83
|
+
border-radius: 6px;
|
|
84
|
+
color: var(--wl-ai-ink);
|
|
85
|
+
min-height: 30px;
|
|
86
|
+
}
|
|
87
|
+
.widget_list_outer .widget-search-drilldown label,
|
|
88
|
+
.widget_list_outer .widget-search-drilldown h3 { color: var(--wl-ai-ink) !important; }
|
|
89
|
+
.widget_list_outer .widget-search-drilldown a { color: var(--wl-ai-cyan); }
|
|
90
|
+
.widget_list_outer .widget-search-drilldown a:hover { color: #d0fbff; }
|
|
91
|
+
.widget_list_outer .widget-search-drilldown-close { color: var(--wl-ai-cyan); }
|
|
92
|
+
.widget_list_outer .widget-search-results-row:hover,
|
|
93
|
+
.widget_list_outer .widget-search-results-row-selected { background: #233d57; }
|
|
94
|
+
|
|
95
|
+
.widget_list_outer .wl-btn {
|
|
96
|
+
background: #1d3855 !important;
|
|
97
|
+
border: 1px solid #537792 !important;
|
|
98
|
+
border-radius: 8px !important;
|
|
99
|
+
box-shadow: inset 0 1px 0 #ffffff1c, 0 4px 12px #0003 !important;
|
|
100
|
+
color: #e7f8ff !important;
|
|
101
|
+
font: 700 12px/1.3 var(--wl-ai-font) !important;
|
|
102
|
+
letter-spacing: .015em;
|
|
103
|
+
padding: 8px 13px !important;
|
|
104
|
+
text-decoration: none;
|
|
105
|
+
text-shadow: none !important;
|
|
106
|
+
transition: background .18s, border-color .18s, transform .18s;
|
|
107
|
+
}
|
|
108
|
+
.widget_list_outer .wl-btn:hover {
|
|
109
|
+
background: #2a5270 !important;
|
|
110
|
+
border-color: var(--wl-ai-cyan) !important;
|
|
111
|
+
color: white !important;
|
|
112
|
+
transform: translateY(-1px);
|
|
113
|
+
}
|
|
114
|
+
.widget_list_outer .wl-btn:active { transform: translateY(0); }
|
|
115
|
+
|
|
116
|
+
.widget_list_outer .wl-ai {
|
|
117
|
+
overflow: visible;
|
|
118
|
+
border: 1px solid #344a67;
|
|
119
|
+
border-radius: 20px;
|
|
120
|
+
background: #101d31;
|
|
121
|
+
box-shadow: 0 22px 70px #03091675, 0 0 0 1px #87eaff12;
|
|
122
|
+
}
|
|
123
|
+
.widget_list_outer .wl-ai::before {
|
|
124
|
+
content: "";
|
|
125
|
+
display: block;
|
|
126
|
+
height: 3px;
|
|
127
|
+
border-radius: 20px 20px 0 0;
|
|
128
|
+
background: linear-gradient(90deg, #62dfe9, #8598ff 55%, #bd8aff);
|
|
129
|
+
}
|
|
130
|
+
.widget_list_outer .wl-ai table.wl-ai-table {
|
|
131
|
+
width: 100%;
|
|
132
|
+
border: 0 !important;
|
|
133
|
+
border-radius: 17px 17px 0 0;
|
|
134
|
+
border-collapse: separate;
|
|
135
|
+
overflow: hidden;
|
|
136
|
+
box-shadow: none !important;
|
|
137
|
+
color: var(--wl-ai-ink);
|
|
138
|
+
font-family: var(--wl-ai-font);
|
|
139
|
+
}
|
|
140
|
+
.widget_list_outer .wl-ai table.wl-ai-table .summary .header {
|
|
141
|
+
background: linear-gradient(110deg, #203653, #1b2b49 70%, #252b50) !important;
|
|
142
|
+
color: #95e9ec;
|
|
143
|
+
font-size: 12px !important;
|
|
144
|
+
font-weight: 650;
|
|
145
|
+
letter-spacing: .035em;
|
|
146
|
+
line-height: 1.6;
|
|
147
|
+
padding: 14px 20px !important;
|
|
148
|
+
border-radius: 0 !important;
|
|
149
|
+
}
|
|
150
|
+
.widget_list_outer .wl-ai table.wl-ai-table tr.widget_list_header {
|
|
151
|
+
background: #17243d !important;
|
|
152
|
+
color: #d8e7fa !important;
|
|
153
|
+
height: 51px;
|
|
154
|
+
}
|
|
155
|
+
.widget_list_outer .wl-ai table.wl-ai-table tr.widget_list_header td {
|
|
156
|
+
border-top: 1px solid #324563;
|
|
157
|
+
border-bottom: 1px solid #2b4260;
|
|
158
|
+
color: #b8cce5;
|
|
159
|
+
font-size: 11px;
|
|
160
|
+
letter-spacing: .09em;
|
|
161
|
+
padding: 14px 12px;
|
|
162
|
+
text-transform: uppercase;
|
|
163
|
+
white-space: nowrap;
|
|
164
|
+
}
|
|
165
|
+
.widget_list_outer .wl-ai table.wl-ai-table tr.widget_list_header span:hover {
|
|
166
|
+
color: var(--wl-ai-cyan);
|
|
167
|
+
}
|
|
168
|
+
.widget_list_outer .wl-ai table.wl-ai-table tr:not(.summary):not(.widget_list_header) td {
|
|
169
|
+
color: #dce9fb;
|
|
170
|
+
font-size: 13px;
|
|
171
|
+
padding: 15px 12px;
|
|
172
|
+
border-top-color: #263a55 !important;
|
|
173
|
+
transition: background-color .18s;
|
|
174
|
+
}
|
|
175
|
+
.widget_list_outer .wl-ai table.wl-ai-table tr:not(.summary):not(.widget_list_header):hover td {
|
|
176
|
+
background: #203854;
|
|
177
|
+
}
|
|
178
|
+
.widget_list_outer .wl-ai table.wl-ai-table tr:not(.summary):not(.widget_list_header) td a {
|
|
179
|
+
color: #7ee6e8;
|
|
180
|
+
text-decoration: none;
|
|
181
|
+
}
|
|
182
|
+
.widget_list_outer .wl-ai table.wl-ai-table tr:not(.summary):not(.widget_list_header) td a:hover { text-decoration: underline; }
|
|
183
|
+
.widget_list_outer .wl-ai .pagination {
|
|
184
|
+
float: none;
|
|
185
|
+
display: flex;
|
|
186
|
+
align-items: center;
|
|
187
|
+
min-height: 62px;
|
|
188
|
+
padding: 10px 18px;
|
|
189
|
+
background: #101d31;
|
|
190
|
+
border-top: 1px solid #2b4260;
|
|
191
|
+
border-radius: 0 0 20px 20px;
|
|
192
|
+
color: var(--wl-ai-muted);
|
|
193
|
+
font: 500 12px var(--wl-ai-font);
|
|
194
|
+
}
|
|
195
|
+
.widget_list_outer .wl-ai .pagination > div { float: none; width: 100%; }
|
|
196
|
+
.widget_list_outer .wl-ai ul#pagination { float: none; margin: 0; padding: 0; width: 100%; color: var(--wl-ai-muted); }
|
|
197
|
+
.widget_list_outer .wl-ai ul#pagination li div { color: var(--wl-ai-cyan); border-radius: 5px; }
|
|
198
|
+
.widget_list_outer .wl-ai ul#pagination li div:hover,
|
|
199
|
+
.widget_list_outer .wl-ai ul#pagination li div.active { background: #294461; }
|
|
200
|
+
.widget_list_outer .wl-ai ul#pagination li span[class*="previous"],
|
|
201
|
+
.widget_list_outer .wl-ai ul#pagination li span[class*="next"] {
|
|
202
|
+
display: inline-grid;
|
|
203
|
+
place-items: center;
|
|
204
|
+
width: 26px;
|
|
205
|
+
height: 26px;
|
|
206
|
+
margin: 0 4px;
|
|
207
|
+
padding: 0;
|
|
208
|
+
background: #1b324c !important;
|
|
209
|
+
border: 1px solid #3d5975;
|
|
210
|
+
border-radius: 6px;
|
|
211
|
+
color: var(--wl-ai-cyan);
|
|
212
|
+
font-size: 0;
|
|
213
|
+
vertical-align: middle;
|
|
214
|
+
}
|
|
215
|
+
.widget_list_outer .wl-ai ul#pagination li span[class*="previous"]::before { content: "‹"; font-size: 19px; line-height: 1; }
|
|
216
|
+
.widget_list_outer .wl-ai ul#pagination li span[class*="next"]::before { content: "›"; font-size: 19px; line-height: 1; }
|
|
217
|
+
.widget_list_outer .wl-ai ul#pagination li span[class*="disabled"] { opacity: .4; }
|
|
218
|
+
.widget_list_outer .wl-ai ul#pagination li span[class*="active"]:hover { background: #28526b !important; }
|
|
219
|
+
.widget_list_outer .wl-ai ul#pagination input,
|
|
220
|
+
.widget_list_outer .wl-ai ul#pagination select {
|
|
221
|
+
background: #192b43;
|
|
222
|
+
border: 1px solid #46627f;
|
|
223
|
+
border-radius: 5px;
|
|
224
|
+
color: var(--wl-ai-ink);
|
|
225
|
+
font: 600 12px var(--wl-ai-font);
|
|
226
|
+
min-height: 27px;
|
|
227
|
+
padding: 2px 5px !important;
|
|
228
|
+
}
|
|
229
|
+
.widget_list_outer .wl-ai ul#pagination input { width: 33px !important; text-align: center; }
|
|
230
|
+
.widget_list_outer :is(a, input, select, button, [onclick]):focus-visible {
|
|
231
|
+
outline: 2px solid var(--wl-ai-cyan);
|
|
232
|
+
outline-offset: 3px;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@media (max-width: 700px) {
|
|
236
|
+
.widget_list_outer .widget-search-outer { width: 100% !important; display: block; }
|
|
237
|
+
.widget_list_outer .wl-ai { overflow-x: auto; }
|
|
238
|
+
.widget_list_outer .wl-ai table.wl-ai-table { min-width: 650px; }
|
|
239
|
+
.widget_list_outer .wl-ai .pagination { min-width: 650px; }
|
|
240
|
+
}
|
|
241
|
+
@media (prefers-reduced-motion: reduce) {
|
|
242
|
+
.widget_list_outer *, .widget_list_outer *::before, .widget_list_outer *::after { transition: none !important; }
|
|
243
|
+
}
|
metadata
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: widget_list_theme_ai
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- David Renne
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: widget_list
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '2.0'
|
|
19
|
+
- - ">="
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: 2.0.1
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
requirements:
|
|
26
|
+
- - "~>"
|
|
27
|
+
- !ruby/object:Gem::Version
|
|
28
|
+
version: '2.0'
|
|
29
|
+
- - ">="
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: 2.0.1
|
|
32
|
+
description: A modern midnight data-grid theme for widget_list, with cyan and violet
|
|
33
|
+
accents, polished controls, and no external font or JavaScript dependencies.
|
|
34
|
+
executables: []
|
|
35
|
+
extensions: []
|
|
36
|
+
extra_rdoc_files: []
|
|
37
|
+
files:
|
|
38
|
+
- LICENSE.txt
|
|
39
|
+
- README.md
|
|
40
|
+
- docs/ai-theme-rails8-preview.png
|
|
41
|
+
- lib/widget_list_theme_ai.rb
|
|
42
|
+
- lib/widget_list_theme_ai/engine.rb
|
|
43
|
+
- lib/widget_list_theme_ai/version.rb
|
|
44
|
+
- vendor/assets/stylesheets/widget_list_theme_ai.css
|
|
45
|
+
homepage: https://github.com/davidrenne/widget_list_theme_ai
|
|
46
|
+
licenses:
|
|
47
|
+
- MIT
|
|
48
|
+
metadata:
|
|
49
|
+
rubygems_mfa_required: 'true'
|
|
50
|
+
rdoc_options: []
|
|
51
|
+
require_paths:
|
|
52
|
+
- lib
|
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
54
|
+
requirements:
|
|
55
|
+
- - ">="
|
|
56
|
+
- !ruby/object:Gem::Version
|
|
57
|
+
version: '3.2'
|
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
|
+
requirements:
|
|
60
|
+
- - ">="
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: '0'
|
|
63
|
+
requirements: []
|
|
64
|
+
rubygems_version: 3.6.9
|
|
65
|
+
specification_version: 4
|
|
66
|
+
summary: A luminous dark theme for widget_list on Rails
|
|
67
|
+
test_files: []
|