iron-cms 0.4.4 → 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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +21 -0
  3. data/Rakefile +3 -0
  4. data/app/assets/builds/iron.css +1154 -1395
  5. data/app/assets/tailwind/iron/application.css +3 -1
  6. data/app/assets/tailwind/iron/components/badge.css +97 -0
  7. data/app/assets/tailwind/iron/components/form.css +1 -1
  8. data/app/assets/tailwind/iron/components/input.css +2 -2
  9. data/app/assets/tailwind/iron/lexxy.css +366 -0
  10. data/app/controllers/iron/home_controller.rb +1 -0
  11. data/app/helpers/iron/application_helper.rb +4 -13
  12. data/app/helpers/iron/entries_helper.rb +0 -4
  13. data/app/helpers/iron/form_builder.rb +4 -4
  14. data/app/helpers/iron/icons_helper.rb +7 -5
  15. data/app/helpers/iron/ui_helper.rb +22 -0
  16. data/app/javascript/iron/application.js +5 -3
  17. data/app/views/iron/block_definitions/_block_definition.html.erb +2 -2
  18. data/app/views/iron/content_types/_content_type.html.erb +2 -2
  19. data/app/views/iron/content_types/show.html.erb +1 -1
  20. data/app/views/iron/entries/fields/_rich_text_area.html.erb +1 -3
  21. data/app/views/iron/field_definitions/_field_definition.html.erb +2 -4
  22. data/app/views/iron/home/show.html.erb +46 -2
  23. data/app/views/iron/locales/_locale.html.erb +1 -1
  24. data/app/views/iron/shared/_select.html.erb +9 -1
  25. data/app/views/iron/users/_user.html.erb +1 -1
  26. data/app/views/layouts/action_text/contents/_content.html.erb +1 -1
  27. data/app/views/layouts/iron/_sidebar_content.html.erb +30 -6
  28. data/app/views/layouts/iron/_user_menu.html.erb +1 -1
  29. data/app/views/layouts/iron/authentication.html.erb +1 -1
  30. data/config/importmap.rb +2 -2
  31. data/lib/iron/engine.rb +2 -0
  32. data/lib/iron/version.rb +1 -1
  33. data/lib/iron.rb +0 -1
  34. data/lib/puma/plugin/iron_tailwindcss.rb +8 -8
  35. data/lib/tasks/iron_tailwindcss.rake +33 -0
  36. data/vendor/javascript/lexxy.js +10814 -0
  37. metadata +20 -8
  38. data/app/assets/tailwind/iron/actiontext.css +0 -550
  39. data/app/helpers/iron/block_helper.rb +0 -4
  40. data/app/helpers/iron/buttons_helper.rb +0 -14
  41. data/app/helpers/iron/components/badge_helper.rb +0 -70
  42. data/app/javascript/iron/controllers/trix_controller.js +0 -19
  43. data/lib/iron/cva.rb +0 -69
  44. 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