iron-cms 0.4.5 → 0.5.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/Rakefile +3 -0
- data/app/assets/builds/iron.css +1154 -1395
- data/app/assets/tailwind/iron/application.css +3 -1
- data/app/assets/tailwind/iron/components/badge.css +97 -0
- data/app/assets/tailwind/iron/components/form.css +1 -1
- data/app/assets/tailwind/iron/components/input.css +2 -2
- data/app/assets/tailwind/iron/lexxy.css +366 -0
- data/app/controllers/iron/home_controller.rb +1 -0
- data/app/helpers/iron/application_helper.rb +4 -13
- data/app/helpers/iron/entries_helper.rb +0 -4
- data/app/helpers/iron/icons_helper.rb +7 -5
- data/app/helpers/iron/ui_helper.rb +22 -0
- data/app/javascript/iron/application.js +5 -3
- data/app/views/iron/block_definitions/_block_definition.html.erb +2 -2
- data/app/views/iron/content_types/_content_type.html.erb +2 -2
- data/app/views/iron/content_types/show.html.erb +1 -1
- data/app/views/iron/entries/fields/_rich_text_area.html.erb +1 -3
- data/app/views/iron/field_definitions/_field_definition.html.erb +2 -4
- data/app/views/iron/home/show.html.erb +46 -2
- data/app/views/iron/locales/_locale.html.erb +1 -1
- data/app/views/iron/users/_user.html.erb +1 -1
- data/app/views/layouts/action_text/contents/_content.html.erb +1 -1
- data/app/views/layouts/iron/_sidebar_content.html.erb +30 -6
- data/app/views/layouts/iron/_user_menu.html.erb +1 -1
- data/app/views/layouts/iron/authentication.html.erb +1 -1
- data/config/importmap.rb +2 -2
- data/lib/iron/engine.rb +2 -0
- data/lib/iron/version.rb +1 -1
- data/lib/iron.rb +0 -1
- data/lib/puma/plugin/iron_tailwindcss.rb +8 -8
- data/lib/tasks/iron_tailwindcss.rake +33 -0
- data/vendor/javascript/lexxy.js +10814 -0
- metadata +20 -8
- data/app/assets/tailwind/iron/actiontext.css +0 -550
- data/app/helpers/iron/block_helper.rb +0 -4
- data/app/helpers/iron/buttons_helper.rb +0 -14
- data/app/helpers/iron/components/badge_helper.rb +0 -70
- data/app/javascript/iron/controllers/trix_controller.js +0 -19
- data/lib/iron/cva.rb +0 -69
- data/vendor/javascript/trix.js +0 -5
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
module Iron
|
|
2
|
-
module Components::BadgeHelper
|
|
3
|
-
def badge_class(**options)
|
|
4
|
-
@badge_variants ||= cva(
|
|
5
|
-
# Base classes
|
|
6
|
-
"inline-flex items-center gap-x-1.5 rounded-md px-1.5 py-0.5 text-sm/5 font-medium sm:text-xs/5 forced-colors:outline",
|
|
7
|
-
variants: {
|
|
8
|
-
color: {
|
|
9
|
-
red: "bg-red-500/15 text-red-700 group-hover:bg-red-500/25 dark:bg-red-500/10 dark:text-red-400 dark:group-hover:bg-red-500/20",
|
|
10
|
-
orange: "bg-orange-500/15 text-orange-700 group-hover:bg-orange-500/25 dark:bg-orange-500/10 dark:text-orange-400 dark:group-hover:bg-orange-500/20",
|
|
11
|
-
amber: "bg-amber-400/20 text-amber-700 group-hover:bg-amber-400/30 dark:bg-amber-400/10 dark:text-amber-400 dark:group-hover:bg-amber-400/15",
|
|
12
|
-
yellow: "bg-yellow-400/20 text-yellow-700 group-hover:bg-yellow-400/30 dark:bg-yellow-400/10 dark:text-yellow-300 dark:group-hover:bg-yellow-400/15",
|
|
13
|
-
lime: "bg-lime-400/20 text-lime-700 group-hover:bg-lime-400/30 dark:bg-lime-400/10 dark:text-lime-300 dark:group-hover:bg-lime-400/15",
|
|
14
|
-
green: "bg-green-500/15 text-green-700 group-hover:bg-green-500/25 dark:bg-green-500/10 dark:text-green-400 dark:group-hover:bg-green-500/20",
|
|
15
|
-
emerald: "bg-emerald-500/15 text-emerald-700 group-hover:bg-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-400 dark:group-hover:bg-emerald-500/20",
|
|
16
|
-
teal: "bg-teal-500/15 text-teal-700 group-hover:bg-teal-500/25 dark:bg-teal-500/10 dark:text-teal-300 dark:group-hover:bg-teal-500/20",
|
|
17
|
-
cyan: "bg-cyan-400/20 text-cyan-700 group-hover:bg-cyan-400/30 dark:bg-cyan-400/10 dark:text-cyan-300 dark:group-hover:bg-cyan-400/15",
|
|
18
|
-
sky: "bg-sky-500/15 text-sky-700 group-hover:bg-sky-500/25 dark:bg-sky-500/10 dark:text-sky-300 dark:group-hover:bg-sky-500/20",
|
|
19
|
-
blue: "bg-blue-500/15 text-blue-700 group-hover:bg-blue-500/25 dark:text-blue-400 dark:group-hover:bg-blue-500/25",
|
|
20
|
-
indigo: "bg-indigo-500/15 text-indigo-700 group-hover:bg-indigo-500/25 dark:text-indigo-400 dark:group-hover:bg-indigo-500/20",
|
|
21
|
-
violet: "bg-violet-500/15 text-violet-700 group-hover:bg-violet-500/25 dark:text-violet-400 dark:group-hover:bg-violet-500/20",
|
|
22
|
-
purple: "bg-purple-500/15 text-purple-700 group-hover:bg-purple-500/25 dark:text-purple-400 dark:group-hover:bg-purple-500/20",
|
|
23
|
-
fuchsia: "bg-fuchsia-400/15 text-fuchsia-700 group-hover:bg-fuchsia-400/25 dark:bg-fuchsia-400/10 dark:text-fuchsia-400 dark:group-hover:bg-fuchsia-400/20",
|
|
24
|
-
pink: "bg-pink-400/15 text-pink-700 group-hover:bg-pink-400/25 dark:bg-pink-400/10 dark:text-pink-400 dark:group-hover:bg-pink-400/20",
|
|
25
|
-
rose: "bg-rose-400/15 text-rose-700 group-hover:bg-rose-400/25 dark:bg-rose-400/10 dark:text-rose-400 dark:group-hover:bg-rose-400/20",
|
|
26
|
-
stone: "bg-stone-600/10 text-stone-700 group-hover:bg-stone-600/20 dark:bg-white/5 dark:text-stone-400 dark:group-hover:bg-white/10"
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
defaults: {
|
|
30
|
-
color: :stone
|
|
31
|
-
}
|
|
32
|
-
)
|
|
33
|
-
@badge_variants.call(options)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def badge(content = nil, **options, &block)
|
|
37
|
-
css_class = options.delete(:class)
|
|
38
|
-
|
|
39
|
-
tag.span class: tw(
|
|
40
|
-
badge_class(**options),
|
|
41
|
-
css_class
|
|
42
|
-
), **options do
|
|
43
|
-
block_given? ? capture(&block) : content
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def badge_button_to(content = nil, url = nil, **options, &block)
|
|
48
|
-
css_class = options.delete(:class)
|
|
49
|
-
|
|
50
|
-
base_class = tw(
|
|
51
|
-
"group relative inline-flex rounded-md focus:outline-hidden focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500",
|
|
52
|
-
css_class
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
if url.nil?
|
|
56
|
-
button_tag class: base_class, **options do
|
|
57
|
-
tag.div class: "btn-touch-target" do
|
|
58
|
-
badge(content || capture(&block), **options)
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
else
|
|
62
|
-
link_to url, class: base_class, **options do
|
|
63
|
-
tag.div class: "btn-touch-target" do
|
|
64
|
-
badge(content || capture(&block), **options)
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Controller } from "@hotwired/stimulus"
|
|
2
|
-
|
|
3
|
-
export default class extends Controller {
|
|
4
|
-
connect() {
|
|
5
|
-
this.element.addEventListener("turbo:before-morph-attribute", this.#preventMorphing);
|
|
6
|
-
this.element.addEventListener("turbo:before-morph-element", this.#preventMorphing);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
// Private
|
|
10
|
-
|
|
11
|
-
#preventMorphing = (event) => {
|
|
12
|
-
const { target } = event;
|
|
13
|
-
|
|
14
|
-
if (target.tagName == "TRIX-EDITOR" || target.tagName == "TRIX-TOOLBAR") {
|
|
15
|
-
event.preventDefault();
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
data/lib/iron/cva.rb
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
module Iron
|
|
2
|
-
module Cva
|
|
3
|
-
class VariantBuilder
|
|
4
|
-
def initialize(base_classes: "", variants: {}, defaults: {}, compound_variants: [], required: [])
|
|
5
|
-
@base_classes = base_classes.split(" ")
|
|
6
|
-
@variants = normalize_keys(variants)
|
|
7
|
-
@defaults = normalize_keys(defaults)
|
|
8
|
-
@compound_variants = compound_variants.map { |cv| normalize_keys(cv) }
|
|
9
|
-
@required = required.map(&:to_sym)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def call(options = {})
|
|
13
|
-
options = normalize_keys(options)
|
|
14
|
-
additional_classes = options.delete(:class)&.split(" ") || []
|
|
15
|
-
classes = @base_classes.dup
|
|
16
|
-
|
|
17
|
-
# Apply default variants
|
|
18
|
-
options = @defaults.merge(options)
|
|
19
|
-
|
|
20
|
-
# Apply variants
|
|
21
|
-
@variants.each do |variant_name, variant_options|
|
|
22
|
-
if value = options[variant_name]
|
|
23
|
-
# Convert the value to symbol if the variant options use symbol keys
|
|
24
|
-
value = value.to_sym if variant_options.keys.first.is_a?(Symbol)
|
|
25
|
-
if variant_classes = variant_options[value]
|
|
26
|
-
classes.concat(variant_classes.split(" "))
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Apply compound variants
|
|
32
|
-
@compound_variants.each do |compound|
|
|
33
|
-
conditions = compound.except(:class)
|
|
34
|
-
matches = conditions.all? do |key, expected_value|
|
|
35
|
-
actual_value = options[key]
|
|
36
|
-
# Convert values to the same type for comparison
|
|
37
|
-
if expected_value.is_a?(Symbol)
|
|
38
|
-
actual_value = actual_value.to_sym if actual_value
|
|
39
|
-
elsif expected_value.is_a?(String)
|
|
40
|
-
actual_value = actual_value.to_s if actual_value
|
|
41
|
-
end
|
|
42
|
-
actual_value == expected_value
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
if matches && compound[:class]
|
|
46
|
-
classes.concat(compound[:class].split(" "))
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# Validate required variants
|
|
51
|
-
@required.each do |required_variant|
|
|
52
|
-
unless options.key?(required_variant)
|
|
53
|
-
raise ArgumentError, "Missing required variant: #{required_variant}"
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
result = classes.uniq
|
|
58
|
-
result.concat(additional_classes)
|
|
59
|
-
result.join(" ")
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
private
|
|
63
|
-
|
|
64
|
-
def normalize_keys(hash)
|
|
65
|
-
hash.transform_keys(&:to_sym)
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|