daisyui 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.
Files changed (79) hide show
  1. checksums.yaml +7 -0
  2. data/lib/daisy_ui/accordion.rb +49 -0
  3. data/lib/daisy_ui/alert.rb +76 -0
  4. data/lib/daisy_ui/avatar.rb +41 -0
  5. data/lib/daisy_ui/avatar_group.rb +19 -0
  6. data/lib/daisy_ui/badge.rb +118 -0
  7. data/lib/daisy_ui/base.rb +239 -0
  8. data/lib/daisy_ui/breadcrumbs.rb +25 -0
  9. data/lib/daisy_ui/button.rb +197 -0
  10. data/lib/daisy_ui/calendar.rb +48 -0
  11. data/lib/daisy_ui/card.rb +73 -0
  12. data/lib/daisy_ui/carousel.rb +51 -0
  13. data/lib/daisy_ui/chat.rb +49 -0
  14. data/lib/daisy_ui/checkbox.rb +112 -0
  15. data/lib/daisy_ui/collapse.rb +53 -0
  16. data/lib/daisy_ui/collapsible_sub_menu.rb +55 -0
  17. data/lib/daisy_ui/configurable.rb +45 -0
  18. data/lib/daisy_ui/countdown.rb +16 -0
  19. data/lib/daisy_ui/diff.rb +28 -0
  20. data/lib/daisy_ui/divider.rb +103 -0
  21. data/lib/daisy_ui/dock.rb +65 -0
  22. data/lib/daisy_ui/drawer.rb +61 -0
  23. data/lib/daisy_ui/dropdown.rb +101 -0
  24. data/lib/daisy_ui/fab.rb +34 -0
  25. data/lib/daisy_ui/fieldset.rb +20 -0
  26. data/lib/daisy_ui/file_input.rb +117 -0
  27. data/lib/daisy_ui/filter.rb +21 -0
  28. data/lib/daisy_ui/footer.rb +44 -0
  29. data/lib/daisy_ui/form_control.rb +15 -0
  30. data/lib/daisy_ui/hero.rb +24 -0
  31. data/lib/daisy_ui/hover_gallery.rb +16 -0
  32. data/lib/daisy_ui/indicator.rb +65 -0
  33. data/lib/daisy_ui/input.rb +117 -0
  34. data/lib/daisy_ui/join.rb +35 -0
  35. data/lib/daisy_ui/kbd.rb +54 -0
  36. data/lib/daisy_ui/label.rb +15 -0
  37. data/lib/daisy_ui/link.rb +137 -0
  38. data/lib/daisy_ui/list.rb +37 -0
  39. data/lib/daisy_ui/loading.rb +146 -0
  40. data/lib/daisy_ui/mask.rb +167 -0
  41. data/lib/daisy_ui/menu.rb +79 -0
  42. data/lib/daisy_ui/menu_item.rb +50 -0
  43. data/lib/daisy_ui/mockup_browser.rb +20 -0
  44. data/lib/daisy_ui/mockup_code.rb +16 -0
  45. data/lib/daisy_ui/mockup_phone.rb +24 -0
  46. data/lib/daisy_ui/mockup_window.rb +16 -0
  47. data/lib/daisy_ui/modal.rb +77 -0
  48. data/lib/daisy_ui/navbar.rb +31 -0
  49. data/lib/daisy_ui/pagination.rb +37 -0
  50. data/lib/daisy_ui/progress.rb +75 -0
  51. data/lib/daisy_ui/radial_progress.rb +181 -0
  52. data/lib/daisy_ui/radio.rb +110 -0
  53. data/lib/daisy_ui/range.rb +110 -0
  54. data/lib/daisy_ui/rating.rb +68 -0
  55. data/lib/daisy_ui/select.rb +117 -0
  56. data/lib/daisy_ui/skeleton.rb +19 -0
  57. data/lib/daisy_ui/stack.rb +47 -0
  58. data/lib/daisy_ui/stat.rb +57 -0
  59. data/lib/daisy_ui/status.rb +110 -0
  60. data/lib/daisy_ui/steps.rb +41 -0
  61. data/lib/daisy_ui/sub_menu.rb +37 -0
  62. data/lib/daisy_ui/swap.rb +52 -0
  63. data/lib/daisy_ui/tab.rb +40 -0
  64. data/lib/daisy_ui/tab_with_content.rb +72 -0
  65. data/lib/daisy_ui/tab_without_content.rb +40 -0
  66. data/lib/daisy_ui/table.rb +81 -0
  67. data/lib/daisy_ui/table_row.rb +33 -0
  68. data/lib/daisy_ui/tabs.rb +80 -0
  69. data/lib/daisy_ui/textarea.rb +117 -0
  70. data/lib/daisy_ui/theme_controller.rb +64 -0
  71. data/lib/daisy_ui/timeline.rb +66 -0
  72. data/lib/daisy_ui/toast.rb +61 -0
  73. data/lib/daisy_ui/toggle.rb +110 -0
  74. data/lib/daisy_ui/tooltip.rb +107 -0
  75. data/lib/daisy_ui/updated_at.rb +7 -0
  76. data/lib/daisy_ui/validator.rb +25 -0
  77. data/lib/daisy_ui/version.rb +5 -0
  78. data/lib/daisy_ui.rb +17 -0
  79. metadata +156 -0
@@ -0,0 +1,117 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DaisyUI
4
+ # @component html class="textarea"
5
+ class Textarea < Base
6
+ self.component_class = :textarea
7
+
8
+ def initialize(*, as: :textarea, **)
9
+ super
10
+ end
11
+
12
+ def view_template(&)
13
+ public_send(as, class: classes, **attributes, &)
14
+ end
15
+
16
+ register_modifiers(
17
+ # "sm:textarea-ghost"
18
+ # "@sm:textarea-ghost"
19
+ # "md:textarea-ghost"
20
+ # "@md:textarea-ghost"
21
+ # "lg:textarea-ghost"
22
+ # "@lg:textarea-ghost"
23
+ ghost: "textarea-ghost",
24
+ # "sm:textarea-xs"
25
+ # "@sm:textarea-xs"
26
+ # "md:textarea-xs"
27
+ # "@md:textarea-xs"
28
+ # "lg:textarea-xs"
29
+ # "@lg:textarea-xs"
30
+ xs: "textarea-xs",
31
+ # "sm:textarea-sm"
32
+ # "@sm:textarea-sm"
33
+ # "md:textarea-sm"
34
+ # "@md:textarea-sm"
35
+ # "lg:textarea-sm"
36
+ # "@lg:textarea-sm"
37
+ sm: "textarea-sm",
38
+ # "sm:textarea-md"
39
+ # "@sm:textarea-md"
40
+ # "md:textarea-md"
41
+ # "@md:textarea-md"
42
+ # "lg:textarea-md"
43
+ # "@lg:textarea-md"
44
+ md: "textarea-md",
45
+ # "sm:textarea-lg"
46
+ # "@sm:textarea-lg"
47
+ # "md:textarea-lg"
48
+ # "@md:textarea-lg"
49
+ # "lg:textarea-lg"
50
+ # "@lg:textarea-lg"
51
+ lg: "textarea-lg",
52
+ # "sm:textarea-xl"
53
+ # "@sm:textarea-xl"
54
+ # "md:textarea-xl"
55
+ # "@md:textarea-xl"
56
+ # "lg:textarea-xl"
57
+ # "@lg:textarea-xl"
58
+ xl: "textarea-xl",
59
+ # "sm:textarea-neutral"
60
+ # "@sm:textarea-neutral"
61
+ # "md:textarea-neutral"
62
+ # "@md:textarea-neutral"
63
+ # "lg:textarea-neutral"
64
+ # "@lg:textarea-neutral"
65
+ neutral: "textarea-neutral",
66
+ # "sm:textarea-primary"
67
+ # "@sm:textarea-primary"
68
+ # "md:textarea-primary"
69
+ # "@md:textarea-primary"
70
+ # "lg:textarea-primary"
71
+ # "@lg:textarea-primary"
72
+ primary: "textarea-primary",
73
+ # "sm:textarea-secondary"
74
+ # "@sm:textarea-secondary"
75
+ # "md:textarea-secondary"
76
+ # "@md:textarea-secondary"
77
+ # "lg:textarea-secondary"
78
+ # "@lg:textarea-secondary"
79
+ secondary: "textarea-secondary",
80
+ # "sm:textarea-accent"
81
+ # "@sm:textarea-accent"
82
+ # "md:textarea-accent"
83
+ # "@md:textarea-accent"
84
+ # "lg:textarea-accent"
85
+ # "@lg:textarea-accent"
86
+ accent: "textarea-accent",
87
+ # "sm:textarea-info"
88
+ # "@sm:textarea-info"
89
+ # "md:textarea-info"
90
+ # "@md:textarea-info"
91
+ # "lg:textarea-info"
92
+ # "@lg:textarea-info"
93
+ info: "textarea-info",
94
+ # "sm:textarea-success"
95
+ # "@sm:textarea-success"
96
+ # "md:textarea-success"
97
+ # "@md:textarea-success"
98
+ # "lg:textarea-success"
99
+ # "@lg:textarea-success"
100
+ success: "textarea-success",
101
+ # "sm:textarea-warning"
102
+ # "@sm:textarea-warning"
103
+ # "md:textarea-warning"
104
+ # "@md:textarea-warning"
105
+ # "lg:textarea-warning"
106
+ # "@lg:textarea-warning"
107
+ warning: "textarea-warning",
108
+ # "sm:textarea-error"
109
+ # "@sm:textarea-error"
110
+ # "md:textarea-error"
111
+ # "@md:textarea-error"
112
+ # "lg:textarea-error"
113
+ # "@lg:textarea-error"
114
+ error: "textarea-error"
115
+ )
116
+ end
117
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DaisyUI
4
+ # @component html class="theme-controller"
5
+ # Theme controller changes the theme when checkbox/radio is checked
6
+ # Supports common patterns: swap, toggle, dropdown, radio buttons
7
+ class ThemeController < Base
8
+ self.component_class = "theme-controller"
9
+
10
+ register_modifiers(
11
+ # "sm:swap"
12
+ # "md:swap"
13
+ # "lg:swap"
14
+ swap: "swap",
15
+ # "sm:swap sm:swap-rotate"
16
+ # "md:swap md:swap-rotate"
17
+ # "lg:swap lg:swap-rotate"
18
+ swap_rotate: "swap swap-rotate",
19
+ # "sm:swap sm:swap-flip"
20
+ # "md:swap md:swap-flip"
21
+ # "lg:swap lg:swap-flip"
22
+ swap_flip: "swap swap-flip",
23
+ # "sm:toggle"
24
+ # "md:toggle"
25
+ # "lg:toggle"
26
+ toggle: "toggle"
27
+ )
28
+
29
+ def initialize(*, theme_value: nil, checked: false, as: :input, **)
30
+ super(*, as:, **)
31
+ @theme_value = theme_value
32
+ @checked = checked
33
+ end
34
+
35
+ def view_template(&block)
36
+ # Input always has just the theme-controller class
37
+ input_classes = self.class.component_class.to_s
38
+
39
+ attrs = {type: :checkbox, class: input_classes}
40
+ attrs[:value] = theme_value if theme_value
41
+ attrs[:checked] = true if checked
42
+ attrs.merge!(options)
43
+
44
+ if block
45
+ # If block given, wrap in label with modifier classes (swap, toggle, etc.)
46
+ wrapper_classes = merge_classes(*modifier_classes, *responsive_classes)
47
+
48
+ label(class: wrapper_classes) do
49
+ public_send(as, **attrs)
50
+ whitespace
51
+ block.call
52
+ whitespace
53
+ end
54
+ else
55
+ # Just render the input
56
+ public_send(as, **attrs)
57
+ end
58
+ end
59
+
60
+ private
61
+
62
+ attr_reader :theme_value, :checked
63
+ end
64
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DaisyUI
4
+ # @component html class="timeline"
5
+ class Timeline < Base
6
+ self.component_class = :timeline
7
+
8
+ def initialize(*, as: :ul, **)
9
+ super
10
+ end
11
+
12
+ def view_template(&)
13
+ public_send(as, class: classes, **attributes, &)
14
+ end
15
+
16
+ def start(**opts, &)
17
+ div(class: component_classes("timeline-start", options: opts), **opts, &)
18
+ end
19
+
20
+ def middle(**opts, &)
21
+ div(class: component_classes("timeline-middle", options: opts), **opts, &)
22
+ end
23
+
24
+ def end(**opts, &)
25
+ div(class: component_classes("timeline-end", options: opts), **opts, &)
26
+ end
27
+
28
+ register_modifiers(
29
+ # "sm:timeline-snap-icon"
30
+ # "@sm:timeline-snap-icon"
31
+ # "md:timeline-snap-icon"
32
+ # "@md:timeline-snap-icon"
33
+ # "lg:timeline-snap-icon"
34
+ # "@lg:timeline-snap-icon"
35
+ snap_icon: "timeline-snap-icon",
36
+ # "sm:timeline-box"
37
+ # "@sm:timeline-box"
38
+ # "md:timeline-box"
39
+ # "@md:timeline-box"
40
+ # "lg:timeline-box"
41
+ # "@lg:timeline-box"
42
+ box: "timeline-box",
43
+ # "sm:timeline-compact"
44
+ # "@sm:timeline-compact"
45
+ # "md:timeline-compact"
46
+ # "@md:timeline-compact"
47
+ # "lg:timeline-compact"
48
+ # "@lg:timeline-compact"
49
+ compact: "timeline-compact",
50
+ # "sm:timeline-vertical"
51
+ # "@sm:timeline-vertical"
52
+ # "md:timeline-vertical"
53
+ # "@md:timeline-vertical"
54
+ # "lg:timeline-vertical"
55
+ # "@lg:timeline-vertical"
56
+ vertical: "timeline-vertical",
57
+ # "sm:timeline-horizontal"
58
+ # "@sm:timeline-horizontal"
59
+ # "md:timeline-horizontal"
60
+ # "@md:timeline-horizontal"
61
+ # "lg:timeline-horizontal"
62
+ # "@lg:timeline-horizontal"
63
+ horizontal: "timeline-horizontal"
64
+ )
65
+ end
66
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DaisyUI
4
+ # @component html class="toast"
5
+ class Toast < Base
6
+ self.component_class = :toast
7
+
8
+ def initialize(*, as: :div, **)
9
+ super
10
+ end
11
+
12
+ def view_template(&)
13
+ public_send(as, class: classes, **attributes, &)
14
+ end
15
+
16
+ register_modifiers(
17
+ # "sm:toast-start"
18
+ # "@sm:toast-start"
19
+ # "md:toast-start"
20
+ # "@md:toast-start"
21
+ # "lg:toast-start"
22
+ # "@lg:toast-start"
23
+ start: "toast-start",
24
+ # "sm:toast-center"
25
+ # "@sm:toast-center"
26
+ # "md:toast-center"
27
+ # "@md:toast-center"
28
+ # "lg:toast-center"
29
+ # "@lg:toast-center"
30
+ center: "toast-center",
31
+ # "sm:toast-end"
32
+ # "@sm:toast-end"
33
+ # "md:toast-end"
34
+ # "@md:toast-end"
35
+ # "lg:toast-end"
36
+ # "@lg:toast-end"
37
+ end: "toast-end",
38
+ # "sm:toast-top"
39
+ # "@sm:toast-top"
40
+ # "md:toast-top"
41
+ # "@md:toast-top"
42
+ # "lg:toast-top"
43
+ # "@lg:toast-top"
44
+ top: "toast-top",
45
+ # "sm:toast-middle"
46
+ # "@sm:toast-middle"
47
+ # "md:toast-middle"
48
+ # "@md:toast-middle"
49
+ # "lg:toast-middle"
50
+ # "@lg:toast-middle"
51
+ middle: "toast-middle",
52
+ # "sm:toast-bottom"
53
+ # "@sm:toast-bottom"
54
+ # "md:toast-bottom"
55
+ # "@md:toast-bottom"
56
+ # "lg:toast-bottom"
57
+ # "@lg:toast-bottom"
58
+ bottom: "toast-bottom"
59
+ )
60
+ end
61
+ end
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DaisyUI
4
+ # @component html class="toggle"
5
+ class Toggle < Base
6
+ self.component_class = :toggle
7
+
8
+ def initialize(*, as: :input, **)
9
+ super
10
+ end
11
+
12
+ def view_template(&)
13
+ public_send(as, type: :checkbox, class: classes, **attributes, &)
14
+ end
15
+
16
+ register_modifiers(
17
+ # "sm:toggle-xs"
18
+ # "@sm:toggle-xs"
19
+ # "md:toggle-xs"
20
+ # "@md:toggle-xs"
21
+ # "lg:toggle-xs"
22
+ # "@lg:toggle-xs"
23
+ xs: "toggle-xs",
24
+ # "sm:toggle-sm"
25
+ # "@sm:toggle-sm"
26
+ # "md:toggle-sm"
27
+ # "@md:toggle-sm"
28
+ # "lg:toggle-sm"
29
+ # "@lg:toggle-sm"
30
+ sm: "toggle-sm",
31
+ # "sm:toggle-md"
32
+ # "@sm:toggle-md"
33
+ # "md:toggle-md"
34
+ # "@md:toggle-md"
35
+ # "lg:toggle-md"
36
+ # "@lg:toggle-md"
37
+ md: "toggle-md",
38
+ # "sm:toggle-lg"
39
+ # "@sm:toggle-lg"
40
+ # "md:toggle-lg"
41
+ # "@md:toggle-lg"
42
+ # "lg:toggle-lg"
43
+ # "@lg:toggle-lg"
44
+ lg: "toggle-lg",
45
+ # "sm:toggle-xl"
46
+ # "@sm:toggle-xl"
47
+ # "md:toggle-xl"
48
+ # "@md:toggle-xl"
49
+ # "lg:toggle-xl"
50
+ # "@lg:toggle-xl"
51
+ xl: "toggle-xl",
52
+ # "sm:toggle-primary"
53
+ # "@sm:toggle-primary"
54
+ # "md:toggle-primary"
55
+ # "@md:toggle-primary"
56
+ # "lg:toggle-primary"
57
+ # "@lg:toggle-primary"
58
+ primary: "toggle-primary",
59
+ # "sm:toggle-secondary"
60
+ # "@sm:toggle-secondary"
61
+ # "md:toggle-secondary"
62
+ # "@md:toggle-secondary"
63
+ # "lg:toggle-secondary"
64
+ # "@lg:toggle-secondary"
65
+ secondary: "toggle-secondary",
66
+ # "sm:toggle-accent"
67
+ # "@sm:toggle-accent"
68
+ # "md:toggle-accent"
69
+ # "@md:toggle-accent"
70
+ # "lg:toggle-accent"
71
+ # "@lg:toggle-accent"
72
+ accent: "toggle-accent",
73
+ # "sm:toggle-neutral"
74
+ # "@sm:toggle-neutral"
75
+ # "md:toggle-neutral"
76
+ # "@md:toggle-neutral"
77
+ # "lg:toggle-neutral"
78
+ # "@lg:toggle-neutral"
79
+ neutral: "toggle-neutral",
80
+ # "sm:toggle-success"
81
+ # "@sm:toggle-success"
82
+ # "md:toggle-success"
83
+ # "@md:toggle-success"
84
+ # "lg:toggle-success"
85
+ # "@lg:toggle-success"
86
+ success: "toggle-success",
87
+ # "sm:toggle-warning"
88
+ # "@sm:toggle-warning"
89
+ # "md:toggle-warning"
90
+ # "@md:toggle-warning"
91
+ # "lg:toggle-warning"
92
+ # "@lg:toggle-warning"
93
+ warning: "toggle-warning",
94
+ # "sm:toggle-info"
95
+ # "@sm:toggle-info"
96
+ # "md:toggle-info"
97
+ # "@md:toggle-info"
98
+ # "lg:toggle-info"
99
+ # "@lg:toggle-info"
100
+ info: "toggle-info",
101
+ # "sm:toggle-error"
102
+ # "@sm:toggle-error"
103
+ # "md:toggle-error"
104
+ # "@md:toggle-error"
105
+ # "lg:toggle-error"
106
+ # "@lg:toggle-error"
107
+ error: "toggle-error"
108
+ )
109
+ end
110
+ end
@@ -0,0 +1,107 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DaisyUI
4
+ class Tooltip < Base
5
+ self.component_class = :tooltip
6
+
7
+ def initialize(*, tip:, as: :div, **)
8
+ super(*, as:, **)
9
+ @tip = tip
10
+ end
11
+
12
+ def view_template(&)
13
+ public_send(as, class: classes, data_tip: tip, **attributes, &)
14
+ end
15
+
16
+ private
17
+
18
+ attr_reader :tip
19
+
20
+ register_modifiers(
21
+ # "sm:tooltip-open"
22
+ # "@sm:tooltip-open"
23
+ # "md:tooltip-open"
24
+ # "@md:tooltip-open"
25
+ # "lg:tooltip-open"
26
+ # "@lg:tooltip-open"
27
+ open: "tooltip-open",
28
+ # "sm:tooltip-top"
29
+ # "@sm:tooltip-top"
30
+ # "md:tooltip-top"
31
+ # "@md:tooltip-top"
32
+ # "lg:tooltip-top"
33
+ # "@lg:tooltip-top"
34
+ top: "tooltip-top",
35
+ # "sm:tooltip-bottom"
36
+ # "@sm:tooltip-bottom"
37
+ # "md:tooltip-bottom"
38
+ # "@md:tooltip-bottom"
39
+ # "lg:tooltip-bottom"
40
+ # "@lg:tooltip-bottom"
41
+ bottom: "tooltip-bottom",
42
+ # "sm:tooltip-left"
43
+ # "@sm:tooltip-left"
44
+ # "md:tooltip-left"
45
+ # "@md:tooltip-left"
46
+ # "lg:tooltip-left"
47
+ # "@lg:tooltip-left"
48
+ left: "tooltip-left",
49
+ # "sm:tooltip-right"
50
+ # "@sm:tooltip-right"
51
+ # "md:tooltip-right"
52
+ # "@md:tooltip-right"
53
+ # "lg:tooltip-right"
54
+ # "@lg:tooltip-right"
55
+ right: "tooltip-right",
56
+ # "sm:tooltip-primary"
57
+ # "@sm:tooltip-primary"
58
+ # "md:tooltip-primary"
59
+ # "@md:tooltip-primary"
60
+ # "lg:tooltip-primary"
61
+ # "@lg:tooltip-primary"
62
+ primary: "tooltip-primary",
63
+ # "sm:tooltip-secondary"
64
+ # "@sm:tooltip-secondary"
65
+ # "md:tooltip-secondary"
66
+ # "@md:tooltip-secondary"
67
+ # "lg:tooltip-secondary"
68
+ # "@lg:tooltip-secondary"
69
+ secondary: "tooltip-secondary",
70
+ # "sm:tooltip-accent"
71
+ # "@sm:tooltip-accent"
72
+ # "md:tooltip-accent"
73
+ # "@md:tooltip-accent"
74
+ # "lg:tooltip-accent"
75
+ # "@lg:tooltip-accent"
76
+ accent: "tooltip-accent",
77
+ # "sm:tooltip-info"
78
+ # "@sm:tooltip-info"
79
+ # "md:tooltip-info"
80
+ # "@md:tooltip-info"
81
+ # "lg:tooltip-info"
82
+ # "@lg:tooltip-info"
83
+ info: "tooltip-info",
84
+ # "sm:tooltip-success"
85
+ # "@sm:tooltip-success"
86
+ # "md:tooltip-success"
87
+ # "@md:tooltip-success"
88
+ # "lg:tooltip-success"
89
+ # "@lg:tooltip-success"
90
+ success: "tooltip-success",
91
+ # "sm:tooltip-warning"
92
+ # "@sm:tooltip-warning"
93
+ # "md:tooltip-warning"
94
+ # "@md:tooltip-warning"
95
+ # "lg:tooltip-warning"
96
+ # "@lg:tooltip-warning"
97
+ warning: "tooltip-warning",
98
+ # "sm:tooltip-error"
99
+ # "@sm:tooltip-error"
100
+ # "md:tooltip-error"
101
+ # "@md:tooltip-error"
102
+ # "lg:tooltip-error"
103
+ # "@lg:tooltip-error"
104
+ error: "tooltip-error"
105
+ )
106
+ end
107
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DaisyUI
4
+ # This timestamp is automatically updated when releasing a new version
5
+ # Format: YYYY-MM-DD HH:MM:SS UTC
6
+ UPDATED_AT = "2025-11-08 01:13:57 UTC"
7
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DaisyUI
4
+ # @component html class="validator"
5
+ class Validator < Base
6
+ self.component_class = :validator
7
+
8
+ def initialize(*, as: :input, **)
9
+ super
10
+ end
11
+
12
+ def view_template(&block)
13
+ block&.call(self)
14
+
15
+ public_send(as, class: classes, **attributes)
16
+
17
+ # Render hint if it was set
18
+ @hint&.call
19
+ end
20
+
21
+ def hint(**options, &block)
22
+ @hint = -> { p(class: component_classes("validator-hint", options: options), **options, &block) }
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DaisyUI
4
+ VERSION = "1.0.0"
5
+ end
data/lib/daisy_ui.rb ADDED
@@ -0,0 +1,17 @@
1
+ require "phlex"
2
+ require "zeitwerk"
3
+ require_relative "daisy_ui/version"
4
+ require_relative "daisy_ui/updated_at"
5
+
6
+ loader = Zeitwerk::Loader.for_gem
7
+ loader.inflector.inflect(
8
+ "daisy_ui" => "DaisyUI"
9
+ )
10
+ loader.ignore("#{__dir__}/daisy_ui/updated_at.rb")
11
+ loader.setup # ready!
12
+ loader.load_file("#{__dir__}/daisy_ui/base.rb")
13
+
14
+ module DaisyUI
15
+ extend Configurable
16
+ extend Phlex::Kit
17
+ end