spina 2.12.0 → 2.13.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of spina might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Rakefile +17 -17
- data/app/assets/builds/spina/tailwind.css +79 -47
- data/app/components/spina/application_component.rb +1 -1
- data/app/components/spina/forms/group_component.rb +2 -3
- data/app/components/spina/forms/label_component.rb +2 -3
- data/app/components/spina/forms/password_field_component.rb +1 -1
- data/app/components/spina/forms/switch_component.rb +2 -3
- data/app/components/spina/forms/text_field_component.rb +8 -9
- data/app/components/spina/forms/trix_toolbar_component.rb +1 -3
- data/app/components/spina/hooks/hook_component.rb +3 -5
- data/app/components/spina/hooks/partial_component.rb +4 -5
- data/app/components/spina/main_navigation/link_component.rb +1 -3
- data/app/components/spina/main_navigation/sub_nav_component.rb +6 -7
- data/app/components/spina/media_picker/image_component.rb +1 -3
- data/app/components/spina/media_picker/modal_component.rb +4 -6
- data/app/components/spina/pages/actions_component.rb +1 -3
- data/app/components/spina/pages/list_component.rb +3 -4
- data/app/components/spina/pages/location_component.rb +10 -11
- data/app/components/spina/pages/new_page_button_component.rb +4 -5
- data/app/components/spina/pages/page_component.rb +8 -9
- data/app/components/spina/pages/page_select_component.rb +3 -4
- data/app/components/spina/pages/tab_button_component.rb +1 -3
- data/app/components/spina/pages/translations_component.rb +9 -11
- data/app/components/spina/user_interface/dropdown_button_component.rb +4 -4
- data/app/components/spina/user_interface/dropdown_component.rb +8 -9
- data/app/components/spina/user_interface/flash_message_component.rb +3 -5
- data/app/components/spina/user_interface/header_component.rb +2 -2
- data/app/components/spina/user_interface/modal_component.rb +1 -3
- data/app/components/spina/user_interface/tab_link_component.rb +1 -3
- data/app/components/spina/user_interface/translations_component.rb +8 -10
- data/app/controllers/concerns/spina/api/paginable.rb +36 -37
- data/app/controllers/concerns/spina/current_spina_account.rb +1 -1
- data/app/controllers/concerns/spina/current_theme.rb +6 -7
- data/app/controllers/concerns/spina/frontend.rb +58 -44
- data/app/controllers/spina/admin/accounts_controller.rb +9 -10
- data/app/controllers/spina/admin/admin_controller.rb +18 -18
- data/app/controllers/spina/admin/attachments_controller.rb +15 -10
- data/app/controllers/spina/admin/embeds_controller.rb +17 -19
- data/app/controllers/spina/admin/images_controller.rb +24 -25
- data/app/controllers/spina/admin/layout_controller.rb +19 -20
- data/app/controllers/spina/admin/media_folders_controller.rb +4 -5
- data/app/controllers/spina/admin/media_picker_controller.rb +2 -4
- data/app/controllers/spina/admin/move_pages_controller.rb +8 -10
- data/app/controllers/spina/admin/navigation_items_controller.rb +13 -14
- data/app/controllers/spina/admin/navigations_controller.rb +26 -26
- data/app/controllers/spina/admin/page_translations_controller.rb +1 -3
- data/app/controllers/spina/admin/pages_controller.rb +34 -34
- data/app/controllers/spina/admin/parent_pages_controller.rb +1 -3
- data/app/controllers/spina/admin/password_resets_controller.rb +8 -9
- data/app/controllers/spina/admin/resources_controller.rb +14 -15
- data/app/controllers/spina/admin/sessions_controller.rb +2 -2
- data/app/controllers/spina/admin/settings_controller.rb +28 -29
- data/app/controllers/spina/admin/theme_controller.rb +10 -11
- data/app/controllers/spina/admin/users_controller.rb +28 -29
- data/app/controllers/spina/api/api_controller.rb +17 -17
- data/app/controllers/spina/api/images_controller.rb +1 -3
- data/app/controllers/spina/api/navigations_controller.rb +2 -4
- data/app/controllers/spina/api/pages_controller.rb +8 -9
- data/app/controllers/spina/api/resources_controller.rb +2 -4
- data/app/controllers/spina/application_controller.rb +4 -3
- data/app/controllers/spina/pages_controller.rb +4 -5
- data/app/controllers/spina/sitemaps_controller.rb +0 -2
- data/app/helpers/spina/admin/icons_helper.rb +151 -153
- data/app/helpers/spina/admin/images_helper.rb +0 -2
- data/app/helpers/spina/admin/pages_helper.rb +3 -5
- data/app/helpers/spina/attachments_helper.rb +1 -3
- data/app/helpers/spina/images_helper.rb +5 -7
- data/app/helpers/spina/pages_helper.rb +0 -2
- data/app/helpers/spina/spina_helper.rb +1 -3
- data/app/jobs/spina/replace_signed_id_job.rb +10 -11
- data/app/jobs/spina/resource_pages_update_job.rb +1 -1
- data/app/mailers/spina/application_mailer.rb +2 -2
- data/app/mailers/spina/user_mailer.rb +4 -6
- data/app/models/concerns/spina/gravatar.rb +11 -12
- data/app/models/concerns/spina/partable.rb +4 -6
- data/app/models/concerns/spina/translated_content.rb +5 -5
- data/app/models/spina/account.rb +9 -10
- data/app/models/spina/application_record.rb +2 -3
- data/app/models/spina/attachment.rb +3 -4
- data/app/models/spina/current.rb +1 -1
- data/app/models/spina/embeds/base.rb +2 -2
- data/app/models/spina/embeds/button.rb +4 -4
- data/app/models/spina/embeds/vimeo.rb +17 -18
- data/app/models/spina/embeds/youtube.rb +18 -19
- data/app/models/spina/image.rb +4 -4
- data/app/models/spina/media_folder.rb +1 -1
- data/app/models/spina/navigation.rb +1 -2
- data/app/models/spina/navigation_item.rb +2 -2
- data/app/models/spina/page.rb +32 -38
- data/app/models/spina/parts/attachment.rb +1 -2
- data/app/models/spina/parts/base.rb +5 -4
- data/app/models/spina/parts/image.rb +3 -4
- data/app/models/spina/parts/image_collection.rb +2 -3
- data/app/models/spina/parts/image_variant.rb +3 -4
- data/app/models/spina/parts/repeater_content.rb +2 -2
- data/app/models/spina/resource.rb +3 -4
- data/app/models/spina/rewrite_rule.rb +1 -1
- data/app/models/spina/setting.rb +0 -2
- data/app/models/spina/user.rb +3 -4
- data/app/presenters/spina/content_presenter.rb +11 -12
- data/app/presenters/spina/menu_presenter.rb +55 -55
- data/app/presenters/spina/rich_text_presenter.rb +28 -29
- data/app/serializers/spina/api/base_serializer.rb +1 -1
- data/app/serializers/spina/api/image_serializer.rb +6 -6
- data/app/serializers/spina/api/navigation_serializer.rb +4 -7
- data/app/serializers/spina/api/page_serializer.rb +9 -12
- data/app/serializers/spina/api/resource_serializer.rb +5 -5
- data/app/views/layouts/spina/admin/application.html.erb +1 -0
- data/app/views/spina/admin/parts/attachments/_attachment.html.erb +3 -0
- data/app/views/spina/admin/parts/attachments/_form.html.erb +22 -1
- data/app/views/spina/admin/parts/repeaters/_fields.html.erb +2 -2
- data/app/views/spina/admin/parts/repeaters/_form.html.erb +4 -4
- data/app/views/spina/admin/shared/_navigation.html.erb +3 -1
- data/app/views/spina/admin/shared/_version.html.erb +18 -0
- data/app/views/spina/sitemaps/show.xml.builder +1 -1
- data/config/initializers/importmap.rb +3 -3
- data/config/initializers/yaml_column_permitted_classes.rb +3 -3
- data/config/locales/de.yml +1 -0
- data/config/locales/en.yml +3 -0
- data/config/locales/nl.yml +4 -1
- data/config/routes.rb +10 -17
- data/db/migrate/1_create_spina_tables.rb +57 -57
- data/db/migrate/3_create_spina_navigations.rb +1 -1
- data/db/seeds.rb +0 -1
- data/lib/generators/spina/embed_generator.rb +5 -6
- data/lib/generators/spina/install_generator.rb +48 -41
- data/lib/generators/spina/tailwind_config_generator.rb +3 -4
- data/lib/generators/spina/templates/app/models/spina/embeds/embed.rb.tt +20 -18
- data/lib/generators/spina/templates/config/initializers/spina.rb +11 -11
- data/lib/generators/spina/templates/config/initializers/themes/default.rb +17 -17
- data/lib/generators/spina/templates/config/initializers/themes/demo.rb +22 -22
- data/lib/spina/admin_sectionable.rb +5 -8
- data/lib/spina/attr_json_monkeypatch.rb +4 -7
- data/lib/spina/attr_json_spina_parts_model.rb +1 -3
- data/lib/spina/authentication/basic.rb +9 -10
- data/lib/spina/authentication/sessions.rb +10 -11
- data/lib/spina/embeddable.rb +14 -17
- data/lib/spina/embeds/trix_conversion.rb +25 -26
- data/lib/spina/embeds.rb +1 -3
- data/lib/spina/engine.rb +18 -19
- data/lib/spina/part.rb +1 -6
- data/lib/spina/plugin.rb +9 -13
- data/lib/spina/railtie.rb +5 -7
- data/lib/spina/theme.rb +13 -17
- data/lib/spina/theme_reloader.rb +12 -13
- data/lib/spina/version.rb +1 -1
- data/lib/spina.rb +39 -40
- data/lib/tasks/install.rake +8 -14
- data/lib/tasks/tailwind.rake +10 -8
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab6900c802d27484924d6d0bcc6bc5120ebdd7bbd71ab151b87209aa7835c341
|
4
|
+
data.tar.gz: 479551a874aeafc4707a5d33770b0e630f4a438274ee8bd61e1f5e6749a59f95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 014c4c2cab3b756b3e9d932e18aaa9b95c145e625793fa962d6ba2671a6ce7fa6af0377c87b54e4bd3a16fe7425fc82f877afdb5655c92d9eea764bcc08c0d2e
|
7
|
+
data.tar.gz: 189ce7c2f1aa01e5da754884ce766ca520a358498326363d946fd46dfe89e139fd086476df5e4382a34053c4eddcb03e6389b8338062fdf83b8ab1ed579bbc0f
|
data/Rakefile
CHANGED
@@ -1,35 +1,35 @@
|
|
1
1
|
begin
|
2
|
-
require
|
2
|
+
require "bundler/setup"
|
3
3
|
rescue LoadError
|
4
|
-
puts
|
4
|
+
puts "You must `gem install bundler` and `bundle install` to run rake tasks"
|
5
5
|
end
|
6
6
|
|
7
|
-
require
|
7
|
+
require "rdoc/task"
|
8
8
|
|
9
9
|
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
-
rdoc.rdoc_dir =
|
11
|
-
rdoc.title
|
12
|
-
rdoc.options <<
|
13
|
-
rdoc.rdoc_files.include(
|
14
|
-
rdoc.rdoc_files.include(
|
10
|
+
rdoc.rdoc_dir = "rdoc"
|
11
|
+
rdoc.title = "Spina"
|
12
|
+
rdoc.options << "--line-numbers"
|
13
|
+
rdoc.rdoc_files.include("README.rdoc")
|
14
|
+
rdoc.rdoc_files.include("lib/**/*.rb")
|
15
15
|
end
|
16
16
|
|
17
17
|
APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
|
18
|
-
load
|
18
|
+
load "rails/tasks/engine.rake"
|
19
19
|
|
20
|
-
load
|
20
|
+
load "rails/tasks/statistics.rake"
|
21
21
|
|
22
|
-
load
|
23
|
-
load
|
22
|
+
load "lib/tasks/install.rake"
|
23
|
+
load "lib/tasks/tailwind.rake"
|
24
24
|
|
25
|
-
require
|
25
|
+
require "bundler/gem_tasks"
|
26
26
|
|
27
|
-
require
|
27
|
+
require "rake/testtask"
|
28
28
|
|
29
29
|
Rake::TestTask.new(:test) do |t|
|
30
|
-
t.libs <<
|
31
|
-
t.pattern =
|
30
|
+
t.libs << "test"
|
31
|
+
t.pattern = "test/**/*_test.rb"
|
32
32
|
t.verbose = false
|
33
33
|
end
|
34
34
|
|
35
|
-
task :
|
35
|
+
task default: :test
|
@@ -1744,7 +1744,7 @@ a, button {
|
|
1744
1744
|
|
1745
1745
|
.btn-green {
|
1746
1746
|
--tw-bg-opacity: 1;
|
1747
|
-
background-color: rgb(
|
1747
|
+
background-color: rgb(16 185 129 / var(--tw-bg-opacity));
|
1748
1748
|
}
|
1749
1749
|
|
1750
1750
|
/* Forms */
|
@@ -2079,6 +2079,14 @@ trix-editor [data-trix-mutable]::selection,
|
|
2079
2079
|
margin-right: 0.5rem;
|
2080
2080
|
}
|
2081
2081
|
|
2082
|
+
.-ml-1 {
|
2083
|
+
margin-left: -0.25rem;
|
2084
|
+
}
|
2085
|
+
|
2086
|
+
.mr-1 {
|
2087
|
+
margin-right: 0.25rem;
|
2088
|
+
}
|
2089
|
+
|
2082
2090
|
.mt-5 {
|
2083
2091
|
margin-top: 1.25rem;
|
2084
2092
|
}
|
@@ -2087,18 +2095,10 @@ trix-editor [data-trix-mutable]::selection,
|
|
2087
2095
|
margin-right: 0.5rem;
|
2088
2096
|
}
|
2089
2097
|
|
2090
|
-
.mr-1 {
|
2091
|
-
margin-right: 0.25rem;
|
2092
|
-
}
|
2093
|
-
|
2094
2098
|
.ml-2 {
|
2095
2099
|
margin-left: 0.5rem;
|
2096
2100
|
}
|
2097
2101
|
|
2098
|
-
.-ml-1 {
|
2099
|
-
margin-left: -0.25rem;
|
2100
|
-
}
|
2101
|
-
|
2102
2102
|
.-mb-3 {
|
2103
2103
|
margin-bottom: -0.75rem;
|
2104
2104
|
}
|
@@ -2111,10 +2111,6 @@ trix-editor [data-trix-mutable]::selection,
|
|
2111
2111
|
margin-bottom: 0.5rem;
|
2112
2112
|
}
|
2113
2113
|
|
2114
|
-
.-ml-2 {
|
2115
|
-
margin-left: -0.5rem;
|
2116
|
-
}
|
2117
|
-
|
2118
2114
|
.mr-4 {
|
2119
2115
|
margin-right: 1rem;
|
2120
2116
|
}
|
@@ -2143,10 +2139,6 @@ trix-editor [data-trix-mutable]::selection,
|
|
2143
2139
|
margin-left: 2rem;
|
2144
2140
|
}
|
2145
2141
|
|
2146
|
-
.mr-1\.5 {
|
2147
|
-
margin-right: 0.375rem;
|
2148
|
-
}
|
2149
|
-
|
2150
2142
|
.mt-6 {
|
2151
2143
|
margin-top: 1.5rem;
|
2152
2144
|
}
|
@@ -2171,6 +2163,10 @@ trix-editor [data-trix-mutable]::selection,
|
|
2171
2163
|
margin-bottom: 1.25rem;
|
2172
2164
|
}
|
2173
2165
|
|
2166
|
+
.-ml-2 {
|
2167
|
+
margin-left: -0.5rem;
|
2168
|
+
}
|
2169
|
+
|
2174
2170
|
.mr-3 {
|
2175
2171
|
margin-right: 0.75rem;
|
2176
2172
|
}
|
@@ -2191,14 +2187,6 @@ trix-editor [data-trix-mutable]::selection,
|
|
2191
2187
|
margin-right: -1rem;
|
2192
2188
|
}
|
2193
2189
|
|
2194
|
-
.-ml-0\.5 {
|
2195
|
-
margin-left: -0.125rem;
|
2196
|
-
}
|
2197
|
-
|
2198
|
-
.-ml-0 {
|
2199
|
-
margin-left: -0px;
|
2200
|
-
}
|
2201
|
-
|
2202
2190
|
.block {
|
2203
2191
|
display: block;
|
2204
2192
|
}
|
@@ -2231,6 +2219,10 @@ trix-editor [data-trix-mutable]::selection,
|
|
2231
2219
|
display: none;
|
2232
2220
|
}
|
2233
2221
|
|
2222
|
+
.h-5 {
|
2223
|
+
height: 1.25rem;
|
2224
|
+
}
|
2225
|
+
|
2234
2226
|
.h-12 {
|
2235
2227
|
height: 3rem;
|
2236
2228
|
}
|
@@ -2247,8 +2239,8 @@ trix-editor [data-trix-mutable]::selection,
|
|
2247
2239
|
height: 1rem;
|
2248
2240
|
}
|
2249
2241
|
|
2250
|
-
.h-
|
2251
|
-
height:
|
2242
|
+
.h-3 {
|
2243
|
+
height: 0.75rem;
|
2252
2244
|
}
|
2253
2245
|
|
2254
2246
|
.h-9 {
|
@@ -2259,10 +2251,6 @@ trix-editor [data-trix-mutable]::selection,
|
|
2259
2251
|
height: 1.5rem;
|
2260
2252
|
}
|
2261
2253
|
|
2262
|
-
.h-3 {
|
2263
|
-
height: 0.75rem;
|
2264
|
-
}
|
2265
|
-
|
2266
2254
|
.h-10 {
|
2267
2255
|
height: 2.5rem;
|
2268
2256
|
}
|
@@ -2299,6 +2287,10 @@ trix-editor [data-trix-mutable]::selection,
|
|
2299
2287
|
width: 100%;
|
2300
2288
|
}
|
2301
2289
|
|
2290
|
+
.w-5 {
|
2291
|
+
width: 1.25rem;
|
2292
|
+
}
|
2293
|
+
|
2302
2294
|
.w-56 {
|
2303
2295
|
width: 14rem;
|
2304
2296
|
}
|
@@ -2307,12 +2299,16 @@ trix-editor [data-trix-mutable]::selection,
|
|
2307
2299
|
width: 1rem;
|
2308
2300
|
}
|
2309
2301
|
|
2302
|
+
.w-3 {
|
2303
|
+
width: 0.75rem;
|
2304
|
+
}
|
2305
|
+
|
2310
2306
|
.w-32 {
|
2311
2307
|
width: 8rem;
|
2312
2308
|
}
|
2313
2309
|
|
2314
|
-
.w-
|
2315
|
-
width: 1.
|
2310
|
+
.w-6 {
|
2311
|
+
width: 1.5rem;
|
2316
2312
|
}
|
2317
2313
|
|
2318
2314
|
.w-auto {
|
@@ -2323,10 +2319,6 @@ trix-editor [data-trix-mutable]::selection,
|
|
2323
2319
|
width: 16rem;
|
2324
2320
|
}
|
2325
2321
|
|
2326
|
-
.w-6 {
|
2327
|
-
width: 1.5rem;
|
2328
|
-
}
|
2329
|
-
|
2330
2322
|
.w-8 {
|
2331
2323
|
width: 2rem;
|
2332
2324
|
}
|
@@ -2339,10 +2331,6 @@ trix-editor [data-trix-mutable]::selection,
|
|
2339
2331
|
width: 12rem;
|
2340
2332
|
}
|
2341
2333
|
|
2342
|
-
.w-3 {
|
2343
|
-
width: 0.75rem;
|
2344
|
-
}
|
2345
|
-
|
2346
2334
|
.w-14 {
|
2347
2335
|
width: 3.5rem;
|
2348
2336
|
}
|
@@ -2743,6 +2731,11 @@ trix-editor [data-trix-mutable]::selection,
|
|
2743
2731
|
border-color: rgb(104 101 180 / var(--tw-border-opacity));
|
2744
2732
|
}
|
2745
2733
|
|
2734
|
+
.border-emerald-600 {
|
2735
|
+
--tw-border-opacity: 1;
|
2736
|
+
border-color: rgb(5 150 105 / var(--tw-border-opacity));
|
2737
|
+
}
|
2738
|
+
|
2746
2739
|
.border-spina-dark {
|
2747
2740
|
--tw-border-opacity: 1;
|
2748
2741
|
border-color: rgb(58 58 112 / var(--tw-border-opacity));
|
@@ -2787,6 +2780,11 @@ trix-editor [data-trix-mutable]::selection,
|
|
2787
2780
|
background-color: rgb(0 0 0 / var(--tw-bg-opacity));
|
2788
2781
|
}
|
2789
2782
|
|
2783
|
+
.bg-gray-400 {
|
2784
|
+
--tw-bg-opacity: 1;
|
2785
|
+
background-color: rgb(156 163 175 / var(--tw-bg-opacity));
|
2786
|
+
}
|
2787
|
+
|
2790
2788
|
.bg-gray-200 {
|
2791
2789
|
--tw-bg-opacity: 1;
|
2792
2790
|
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
@@ -2797,14 +2795,14 @@ trix-editor [data-trix-mutable]::selection,
|
|
2797
2795
|
background-color: rgb(104 101 180 / var(--tw-bg-opacity));
|
2798
2796
|
}
|
2799
2797
|
|
2800
|
-
.bg-
|
2798
|
+
.bg-emerald-500 {
|
2801
2799
|
--tw-bg-opacity: 1;
|
2802
|
-
background-color: rgb(
|
2800
|
+
background-color: rgb(16 185 129 / var(--tw-bg-opacity));
|
2803
2801
|
}
|
2804
2802
|
|
2805
|
-
.bg-
|
2803
|
+
.bg-yellow-500 {
|
2806
2804
|
--tw-bg-opacity: 1;
|
2807
|
-
background-color: rgb(
|
2805
|
+
background-color: rgb(234 179 8 / var(--tw-bg-opacity));
|
2808
2806
|
}
|
2809
2807
|
|
2810
2808
|
.bg-green-300 {
|
@@ -2982,6 +2980,21 @@ trix-editor [data-trix-mutable]::selection,
|
|
2982
2980
|
padding-bottom: 2rem;
|
2983
2981
|
}
|
2984
2982
|
|
2983
|
+
.px-5 {
|
2984
|
+
padding-left: 1.25rem;
|
2985
|
+
padding-right: 1.25rem;
|
2986
|
+
}
|
2987
|
+
|
2988
|
+
.py-0\.5 {
|
2989
|
+
padding-top: 0.125rem;
|
2990
|
+
padding-bottom: 0.125rem;
|
2991
|
+
}
|
2992
|
+
|
2993
|
+
.py-0 {
|
2994
|
+
padding-top: 0px;
|
2995
|
+
padding-bottom: 0px;
|
2996
|
+
}
|
2997
|
+
|
2985
2998
|
.pr-3 {
|
2986
2999
|
padding-right: 0.75rem;
|
2987
3000
|
}
|
@@ -3132,6 +3145,10 @@ trix-editor [data-trix-mutable]::selection,
|
|
3132
3145
|
line-height: 1rem;
|
3133
3146
|
}
|
3134
3147
|
|
3148
|
+
.tracking-wider {
|
3149
|
+
letter-spacing: 0.05em;
|
3150
|
+
}
|
3151
|
+
|
3135
3152
|
.text-gray-800 {
|
3136
3153
|
--tw-text-opacity: 1;
|
3137
3154
|
color: rgb(31 41 55 / var(--tw-text-opacity));
|
@@ -3192,9 +3209,9 @@ trix-editor [data-trix-mutable]::selection,
|
|
3192
3209
|
color: rgb(209 213 219 / var(--tw-text-opacity));
|
3193
3210
|
}
|
3194
3211
|
|
3195
|
-
.text-
|
3212
|
+
.text-emerald-500 {
|
3196
3213
|
--tw-text-opacity: 1;
|
3197
|
-
color: rgb(
|
3214
|
+
color: rgb(16 185 129 / var(--tw-text-opacity));
|
3198
3215
|
}
|
3199
3216
|
|
3200
3217
|
.text-blue-600 {
|
@@ -3443,6 +3460,11 @@ trix-editor [data-trix-mutable]::selection,
|
|
3443
3460
|
background-color: rgb(254 226 226 / var(--tw-bg-opacity));
|
3444
3461
|
}
|
3445
3462
|
|
3463
|
+
.hover\:bg-emerald-600:hover {
|
3464
|
+
--tw-bg-opacity: 1;
|
3465
|
+
background-color: rgb(5 150 105 / var(--tw-bg-opacity));
|
3466
|
+
}
|
3467
|
+
|
3446
3468
|
.hover\:bg-opacity-50:hover {
|
3447
3469
|
--tw-bg-opacity: 0.5;
|
3448
3470
|
}
|
@@ -3533,6 +3555,16 @@ trix-editor [data-trix-mutable]::selection,
|
|
3533
3555
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
3534
3556
|
}
|
3535
3557
|
|
3558
|
+
.group:hover .group-hover\:bg-pink-500 {
|
3559
|
+
--tw-bg-opacity: 1;
|
3560
|
+
background-color: rgb(236 72 153 / var(--tw-bg-opacity));
|
3561
|
+
}
|
3562
|
+
|
3563
|
+
.group:hover .group-hover\:text-spina {
|
3564
|
+
--tw-text-opacity: 1;
|
3565
|
+
color: rgb(104 101 180 / var(--tw-text-opacity));
|
3566
|
+
}
|
3567
|
+
|
3536
3568
|
.group:hover .group-hover\:opacity-100 {
|
3537
3569
|
opacity: 1;
|
3538
3570
|
}
|
@@ -2,16 +2,15 @@ module Spina
|
|
2
2
|
module Forms
|
3
3
|
class LabelComponent < ApplicationComponent
|
4
4
|
attr_reader :f, :method
|
5
|
-
|
5
|
+
|
6
6
|
def initialize(f, method)
|
7
7
|
@f = f
|
8
8
|
@method = method
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def call
|
12
12
|
f.label method, class: "font-medium text-sm text-gray-700 block"
|
13
13
|
end
|
14
|
-
|
15
14
|
end
|
16
15
|
end
|
17
16
|
end
|
@@ -2,20 +2,20 @@ module Spina
|
|
2
2
|
module Forms
|
3
3
|
class TextFieldComponent < ApplicationComponent
|
4
4
|
attr_accessor :f, :method, :size, :autofocus
|
5
|
-
|
5
|
+
|
6
6
|
def initialize(f, method, size: "md", autofocus: false)
|
7
7
|
@f = f
|
8
8
|
@method = method
|
9
9
|
@size = size
|
10
10
|
@autofocus = autofocus
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def controllers
|
14
14
|
contr = []
|
15
15
|
contr << "autofocus" if autofocus
|
16
16
|
contr.join(" ")
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def size_styles
|
20
20
|
case size
|
21
21
|
when "lg"
|
@@ -24,7 +24,7 @@ module Spina
|
|
24
24
|
"text-sm"
|
25
25
|
end
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
def error_styles
|
29
29
|
if has_errors?
|
30
30
|
"border-red-500 ring-red-500 ring-1"
|
@@ -32,19 +32,18 @@ module Spina
|
|
32
32
|
""
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
def error_messages
|
37
37
|
f.object.errors[method.to_sym]
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
def has_errors?
|
41
41
|
error_messages.present?
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
def placeholder
|
45
45
|
f.object.class.human_attribute_name(method)
|
46
46
|
end
|
47
|
-
|
48
47
|
end
|
49
48
|
end
|
50
|
-
end
|
49
|
+
end
|
@@ -1,21 +1,19 @@
|
|
1
1
|
module Spina
|
2
2
|
module Hooks
|
3
3
|
class HookComponent < ApplicationComponent
|
4
|
-
|
5
4
|
def initialize(partial:)
|
6
5
|
@partial = partial
|
7
6
|
end
|
8
|
-
|
7
|
+
|
9
8
|
def call
|
10
9
|
render Spina::Hooks::PartialComponent.with_collection(plugins, partial: @partial)
|
11
10
|
end
|
12
|
-
|
11
|
+
|
13
12
|
def plugins
|
14
13
|
Spina::Plugin.all.find_all do |plugin|
|
15
14
|
helpers.current_theme.plugins.include?(plugin.name)
|
16
15
|
end
|
17
16
|
end
|
18
|
-
|
19
17
|
end
|
20
18
|
end
|
21
|
-
end
|
19
|
+
end
|
@@ -2,20 +2,19 @@ module Spina
|
|
2
2
|
module Hooks
|
3
3
|
class PartialComponent < ApplicationComponent
|
4
4
|
with_collection_parameter :plugin
|
5
|
-
|
5
|
+
|
6
6
|
def initialize(plugin:, partial:)
|
7
7
|
@plugin = plugin
|
8
8
|
@partial = partial
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def call
|
12
12
|
render partial: "spina/admin/hooks/#{@plugin.namespace}/#{@partial}"
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def render?
|
16
16
|
helpers.lookup_context.exists? "spina/admin/hooks/#{@plugin.namespace}/_#{@partial}"
|
17
17
|
end
|
18
|
-
|
19
18
|
end
|
20
19
|
end
|
21
|
-
end
|
20
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module Spina
|
2
2
|
module MainNavigation
|
3
3
|
class LinkComponent < ApplicationComponent
|
4
|
-
|
5
4
|
def initialize(label, path, active: false)
|
6
5
|
@label = label
|
7
6
|
@path = path
|
@@ -15,7 +14,6 @@ module Spina
|
|
15
14
|
"opacity-50"
|
16
15
|
end
|
17
16
|
end
|
18
|
-
|
19
17
|
end
|
20
18
|
end
|
21
|
-
end
|
19
|
+
end
|
@@ -1,17 +1,17 @@
|
|
1
1
|
module Spina
|
2
2
|
module MainNavigation
|
3
|
-
class SubNavComponent < ApplicationComponent
|
3
|
+
class SubNavComponent < ApplicationComponent
|
4
4
|
renders_one :icon
|
5
5
|
renders_one :links
|
6
|
-
|
6
|
+
|
7
7
|
def initialize(name = :content)
|
8
8
|
@name = name
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def active?
|
12
12
|
helpers.admin_section == @name
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def button_classes
|
16
16
|
if active?
|
17
17
|
"opacity-100"
|
@@ -19,7 +19,7 @@ module Spina
|
|
19
19
|
"opacity-50"
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def ul_classes
|
24
24
|
if active?
|
25
25
|
"md:translate-x-20 "
|
@@ -27,7 +27,6 @@ module Spina
|
|
27
27
|
"translate-x-full"
|
28
28
|
end
|
29
29
|
end
|
30
|
-
|
31
30
|
end
|
32
31
|
end
|
33
|
-
end
|
32
|
+
end
|
@@ -1,21 +1,20 @@
|
|
1
1
|
module Spina
|
2
2
|
module MediaPicker
|
3
3
|
class ModalComponent < ApplicationComponent
|
4
|
-
|
5
4
|
def initialize(target, images:, media_folder: nil)
|
6
5
|
@target = target
|
7
6
|
@images = images
|
8
7
|
@media_folder = media_folder
|
9
8
|
end
|
10
|
-
|
9
|
+
|
11
10
|
def media_folders
|
12
11
|
@media_folders ||= Spina::MediaFolder.order(:name)
|
13
12
|
end
|
14
|
-
|
13
|
+
|
15
14
|
def image_count
|
16
15
|
@image_count ||= Spina::Image.count
|
17
16
|
end
|
18
|
-
|
17
|
+
|
19
18
|
def media_folder_classes(media_folder)
|
20
19
|
if media_folder == @media_folder
|
21
20
|
"text-gray-900 bg-spina-dark bg-opacity-20"
|
@@ -23,7 +22,6 @@ module Spina
|
|
23
22
|
"text-gray-600 hover:bg-gray-200 bg-opacity-100 hover:bg-gray-200"
|
24
23
|
end
|
25
24
|
end
|
26
|
-
|
27
25
|
end
|
28
26
|
end
|
29
|
-
end
|
27
|
+
end
|
@@ -2,17 +2,16 @@ module Spina
|
|
2
2
|
module Pages
|
3
3
|
class ListComponent < ApplicationComponent
|
4
4
|
attr_reader :depth, :sortable, :draggable, :paginated
|
5
|
-
|
5
|
+
|
6
6
|
def initialize(pages:, sortable: true, draggable: nil)
|
7
7
|
@pages = pages
|
8
8
|
@sortable = sortable
|
9
|
-
|
9
|
+
|
10
10
|
# List of pages is only draggable if there's no pagination
|
11
11
|
@paginated = pages.respond_to?(:total_pages)
|
12
12
|
@draggable = draggable
|
13
13
|
@draggable = !paginated || pages.total_pages == 1 if draggable.nil?
|
14
14
|
end
|
15
|
-
|
16
15
|
end
|
17
16
|
end
|
18
|
-
end
|
17
|
+
end
|