loco_motion-rails 0.0.6 → 0.0.7

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +95 -67
  3. data/app/components/daisy/actions/button_component.rb +5 -2
  4. data/app/components/daisy/actions/dropdown_component.rb +1 -1
  5. data/app/components/daisy/actions/modal_component.rb +56 -14
  6. data/app/components/daisy/actions/swap_component.rb +3 -1
  7. data/app/components/daisy/actions/theme_controller_component.rb +1 -1
  8. data/app/components/daisy/data_display/accordion_component.rb +2 -1
  9. data/app/components/daisy/data_display/avatar_component.rb +3 -1
  10. data/app/components/daisy/data_display/badge_component.rb +16 -2
  11. data/app/components/daisy/data_display/card_component.rb +2 -1
  12. data/app/components/daisy/data_display/carousel_component.rb +1 -1
  13. data/app/components/daisy/data_display/chat_component.rb +5 -8
  14. data/app/components/daisy/data_display/collapse_component.rb +3 -1
  15. data/app/components/daisy/data_display/countdown_component.rb +2 -1
  16. data/app/components/daisy/data_display/diff_component.rb +1 -1
  17. data/app/components/daisy/data_display/kbd_component.rb +14 -1
  18. data/app/components/daisy/data_display/stat_component.rb +3 -1
  19. data/app/components/daisy/data_display/table_component.rb +1 -1
  20. data/app/components/daisy/data_display/timeline_component.rb +1 -1
  21. data/app/components/daisy/data_display/timeline_event_component.rb +1 -1
  22. data/app/components/daisy/feedback/alert_component.rb +1 -1
  23. data/app/components/daisy/feedback/loading_component.rb +11 -0
  24. data/app/components/daisy/feedback/progress_component.rb +20 -0
  25. data/app/components/daisy/feedback/radial_progress_component.rb +29 -0
  26. data/app/components/daisy/feedback/skeleton_component.rb +9 -0
  27. data/app/components/daisy/feedback/toast_component.rb +9 -0
  28. data/app/components/daisy/feedback/tooltip_component.rb +41 -0
  29. data/app/components/daisy/layout/artboard_component.rb +11 -0
  30. data/app/components/daisy/layout/divider_component.rb +32 -0
  31. data/app/components/daisy/layout/drawer_component.html.haml +9 -0
  32. data/app/components/daisy/layout/drawer_component.rb +110 -0
  33. data/app/components/daisy/layout/footer_component.rb +29 -0
  34. data/app/components/daisy/layout/hero_component.html.haml +5 -0
  35. data/app/components/daisy/layout/hero_component.rb +21 -0
  36. data/app/components/daisy/layout/indicator_component.rb +36 -0
  37. data/app/components/daisy/layout/join_component.rb +1 -1
  38. data/app/components/daisy/layout/stack_component.rb +9 -0
  39. data/app/components/daisy/navigation/bottom_nav_component.rb +2 -2
  40. data/app/components/daisy/navigation/breadcrumbs_component.rb +1 -1
  41. data/app/components/daisy/navigation/link_component.rb +38 -10
  42. data/app/components/daisy/navigation/menu_component.rb +45 -5
  43. data/app/components/daisy/navigation/navbar_component.rb +1 -1
  44. data/app/components/daisy/navigation/steps_component.rb +2 -2
  45. data/app/components/daisy/navigation/tabs_component.rb +1 -1
  46. data/app/components/hero/icon_component.rb +10 -1
  47. data/lib/daisy.rb +13 -3
  48. data/lib/hero.rb +7 -0
  49. data/lib/loco_motion/basic_component.rb +1 -1
  50. data/lib/loco_motion/concerns/tippable_component.rb +26 -0
  51. data/lib/loco_motion/configuration.rb +35 -0
  52. data/lib/loco_motion/helpers.rb +89 -0
  53. data/lib/loco_motion.rb +6 -36
  54. metadata +35 -6
  55. data/app/components/daisy/data_display/badge_component.html.haml +0 -2
  56. data/app/components/daisy/data_display/kbd_component.html.haml +0 -2
  57. data/app/components/daisy/navigation/link_component.html.haml +0 -4
  58. data/lib/daisy/helpers.rb +0 -61
@@ -0,0 +1,35 @@
1
+ module LocoMotion
2
+
3
+ class << self
4
+ def configure
5
+ yield(configuration)
6
+ end
7
+
8
+ #
9
+ # Return the current instance of the LocoMotion::Configuration or create a
10
+ # new one.
11
+ #
12
+ def configuration
13
+ @configuration ||= Configuration.new
14
+ end
15
+
16
+ #
17
+ # Mostly used for internal testing; not needed in Rails
18
+ #
19
+ def require_components
20
+ comp_files = Dir.glob(File.dirname(__FILE__) + '/../../app/components/**/*.rb')
21
+
22
+ comp_files.each do |file|
23
+ require file
24
+ end
25
+ end
26
+ end
27
+
28
+ #
29
+ # Unused for now. Was previously using to setup a base class for all
30
+ # LocoMotion components to inherit from.
31
+ #
32
+ class Configuration
33
+ end
34
+
35
+ end
@@ -0,0 +1,89 @@
1
+ module LocoMotion
2
+ COMPONENTS = {
3
+ ### Hero Components
4
+
5
+ "Hero::IconComponent" => { names: "icon", group: "Hero", title: "Icons", example: "icons" },
6
+
7
+ ### Daisy Components
8
+
9
+ # Actions
10
+ "Daisy::Actions::ButtonComponent" => { names: "button", group: "Actions", title: "Buttons", example: "buttons" },
11
+ "Daisy::Actions::DropdownComponent" => { names: "dropdown", group: "Actions", title: "Dropdowns", example: "dropdowns" },
12
+ "Daisy::Actions::ModalComponent" => { names: "modal", group: "Actions", title: "Modals", example: "modals" },
13
+ "Daisy::Actions::SwapComponent" => { names: "swap", group: "Actions", title: "Swaps", example: "swaps" },
14
+ "Daisy::Actions::ThemeControllerComponent" => { names: "theme_controller", group: "Actions", title: "Theme Controllers", example: "theme_controllers" },
15
+
16
+ # Data
17
+ "Daisy::DataDisplay::AccordionComponent" => { names: "accordion", group: "Data", title: "Accordions", example: "accordions" },
18
+ "Daisy::DataDisplay::AvatarComponent" => { names: "avatar", group: "Data", title: "Avatars", example: "avatars" },
19
+ "Daisy::DataDisplay::BadgeComponent" => { names: "badge", group: "Data", title: "Badges", example: "badges" },
20
+ "Daisy::DataDisplay::CardComponent" => { names: "card", group: "Data", title: "Cards", example: "cards" },
21
+ "Daisy::DataDisplay::CarouselComponent" => { names: "carousel", group: "Data", title: "Carousels", example: "carousels" },
22
+ "Daisy::DataDisplay::ChatComponent" => { names: "chat", group: "Data", title: "Chat Bubbles", example: "chat_bubbles" },
23
+ "Daisy::DataDisplay::CollapseComponent" => { names: "collapse", group: "Data", title: "Collapses", example: "collapses" },
24
+ "Daisy::DataDisplay::CountdownComponent" => { names: "countdown", group: "Data", title: "Countdowns", example: "countdowns" },
25
+ "Daisy::DataDisplay::DiffComponent" => { names: "diff", group: "Data", title: "Diffs", example: "diffs" },
26
+ "Daisy::DataDisplay::KbdComponent" => { names: "kbd", group: "Data", title: "Keyboard (KBD)", example: "kbds" },
27
+ "Daisy::DataDisplay::StatComponent" => { names: "stat", group: "Data", title: "Stats", example: "stats" },
28
+ "Daisy::DataDisplay::TableComponent" => { names: "table", group: "Data", title: "Tables", example: "tables" },
29
+ "Daisy::DataDisplay::TimelineComponent" => { names: "timeline", group: "Data", title: "Timelines", example: "timelines" },
30
+
31
+ # Navigation
32
+ "Daisy::Navigation::BreadcrumbsComponent" => { names: "breadcrumbs", group: "Navigation", title: "Breadcrumbs", example: "breadcrumbs" },
33
+ "Daisy::Navigation::BottomNavComponent" => { names: "bottom_nav", group: "Navigation", title: "Bottom Navs", example: "bottom_navs" },
34
+ "Daisy::Navigation::LinkComponent" => { names: "link", group: "Navigation", title: "Links", example: "links" },
35
+ "Daisy::Navigation::MenuComponent" => { names: "menu", group: "Navigation", title: "Menus", example: "menus" },
36
+ "Daisy::Navigation::NavbarComponent" => { names: "navbar", group: "Navigation", title: "Navbars", example: "navbars" },
37
+ "Daisy::Navigation::PaginationComponent" => { names: nil, group: "Navigation", title: "Pagination", example: "pagination" },
38
+ "Daisy::Navigation::StepsComponent" => { names: "steps", group: "Navigation", title: "Steps", example: "steps" },
39
+ "Daisy::Navigation::TabsComponent" => { names: "tabs", group: "Navigation", title: "Tabs", example: "tabs" },
40
+
41
+ # Feedback
42
+ "Daisy::Feedback::AlertComponent" => { names: "alert", group: "Feedback", title: "Alerts", example: "alerts" },
43
+ "Daisy::Feedback::LoadingComponent" => { names: ["loading", "loader"], group: "Feedback", title: "Loaders", example: "loaders" },
44
+ "Daisy::Feedback::ProgressComponent" => { names: ["progress"], group: "Feedback", title: "Progress Bars", example: "progress_bars" },
45
+ "Daisy::Feedback::RadialProgressComponent" => { names: "radial", group: "Feedback", title: "Radial Progress", example: "radials" },
46
+ "Daisy::Feedback::SkeletonComponent" => { names: "skeleton", group: "Feedback", title: "Skeletons", example: "skeletons" },
47
+ "Daisy::Feedback::ToastComponent" => { names: "toast", group: "Feedback", title: "Toasts", example: "toasts" },
48
+ "Daisy::Feedback::TooltipComponent" => { names: ["tooltip", "tip"], group: "Feedback", title: "Tooltips", example: "tooltips" },
49
+
50
+ # Layout
51
+ "Daisy::Layout::ArtboardComponent" => { names: "artboard", group: "Layout", title: "Artboards", example: "artboards" },
52
+ "Daisy::Layout::DividerComponent" => { names: "divider", group: "Layout", title: "Dividers", example: "dividers" },
53
+ "Daisy::Layout::DrawerComponent" => { names: "drawer", group: "Layout", title: "Drawers", example: "drawers" },
54
+ "Daisy::Layout::FooterComponent" => { names: "footer", group: "Layout", title: "Footers", example: "footers" },
55
+ "Daisy::Layout::HeroComponent" => { names: "hero", group: "Layout", title: "Heroes", example: "heroes" },
56
+ "Daisy::Layout::IndicatorComponent" => { names: "indicator", group: "Layout", title: "Indicators", example: "indicators" },
57
+ "Daisy::Layout::JoinComponent" => { names: "join", group: "Layout", title: "Joins", example: "joins" },
58
+ "Daisy::Layout::MaskComponent" => { names: nil, group: "Layout", title: "Masks", example: "masks" },
59
+ "Daisy::Layout::StackComponent" => { names: "stack", group: "Layout", title: "Stacks", example: "stacks" },
60
+ }
61
+
62
+ module Helpers
63
+ COMPONENTS.each do |component, helper|
64
+ framework = component.split("::").first.underscore
65
+
66
+ method_names = [helper[:names]].flatten
67
+
68
+ method_names.each do |method_name|
69
+ ActionView::Helpers.define_method("#{framework}_#{method_name}") do |*args, **kws, &block|
70
+ render(component.constantize.new(*args, **kws), &block)
71
+ end
72
+ end
73
+ end
74
+
75
+ def component_example_path(component_name)
76
+ comp = COMPONENTS[component_name]
77
+
78
+ comp_split = component_name.split("::")
79
+ framework = comp_split.first.underscore
80
+ section = comp_split.length == 3 ? comp_split[1] : nil
81
+ example = comp[:example]
82
+ section_path = section ? "#{section.underscore}/" : ""
83
+
84
+ "/examples/#{framework}/#{section_path}#{example}"
85
+ end
86
+
87
+ module_function :component_example_path
88
+ end
89
+ end
data/lib/loco_motion.rb CHANGED
@@ -5,44 +5,14 @@ require "heroicons-rails"
5
5
  require Gem::Specification.find_by_name("heroicons-rails").gem_dir + "/app/helpers/heroicons/icons_helper.rb"
6
6
 
7
7
  require "view_component"
8
- require "loco_motion/engine"
8
+
9
9
  require "loco_motion/errors"
10
+ require "loco_motion/configuration"
10
11
  require "loco_motion/component_config"
11
12
  require "loco_motion/base_component"
13
+ require "loco_motion/basic_component"
14
+ require "loco_motion/engine"
15
+ require "loco_motion/helpers"
12
16
 
17
+ require "hero"
13
18
  require "daisy"
14
-
15
- #
16
- # Module containing all features related to the LocoMotion gem.
17
- #
18
- module LocoMotion
19
-
20
- class << self
21
- def configure
22
- yield(configuration)
23
- end
24
-
25
- def configuration
26
- @configuration ||= Configuration.new
27
- end
28
-
29
- # Mostly used for internal testing; not needed in Rails
30
- def require_components
31
- Dir.glob(File.dirname(__FILE__) + '/../app/components/**/*.rb').each do |file|
32
- require file
33
- end
34
- end
35
-
36
- def define_render_helper(name, component)
37
- end
38
- end
39
-
40
- class Configuration
41
- attr_accessor :base_component_class
42
-
43
- def initialize
44
- @base_component_class = LocoMotion::BaseComponent
45
- end
46
- end
47
-
48
- end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loco_motion-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Topher Fangio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-24 00:00:00.000000000 Z
11
+ date: 2024-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: haml-rails
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 3.1.8
97
+ - !ruby/object:Gem::Dependency
98
+ name: drb
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 2.2.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 2.2.1
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: fiddle
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -332,7 +346,6 @@ files:
332
346
  - app/components/daisy/data_display/accordion_component.rb
333
347
  - app/components/daisy/data_display/avatar_component.html.haml
334
348
  - app/components/daisy/data_display/avatar_component.rb
335
- - app/components/daisy/data_display/badge_component.html.haml
336
349
  - app/components/daisy/data_display/badge_component.rb
337
350
  - app/components/daisy/data_display/card_component.html.haml
338
351
  - app/components/daisy/data_display/card_component.rb
@@ -347,7 +360,6 @@ files:
347
360
  - app/components/daisy/data_display/countdown_controller.js
348
361
  - app/components/daisy/data_display/diff_component.html.haml
349
362
  - app/components/daisy/data_display/diff_component.rb
350
- - app/components/daisy/data_display/kbd_component.html.haml
351
363
  - app/components/daisy/data_display/kbd_component.rb
352
364
  - app/components/daisy/data_display/stat_component.html.haml
353
365
  - app/components/daisy/data_display/stat_component.rb
@@ -359,11 +371,25 @@ files:
359
371
  - app/components/daisy/data_display/timeline_event_component.rb
360
372
  - app/components/daisy/feedback/alert_component.html.haml
361
373
  - app/components/daisy/feedback/alert_component.rb
374
+ - app/components/daisy/feedback/loading_component.rb
375
+ - app/components/daisy/feedback/progress_component.rb
376
+ - app/components/daisy/feedback/radial_progress_component.rb
377
+ - app/components/daisy/feedback/skeleton_component.rb
378
+ - app/components/daisy/feedback/toast_component.rb
379
+ - app/components/daisy/feedback/tooltip_component.rb
380
+ - app/components/daisy/layout/artboard_component.rb
381
+ - app/components/daisy/layout/divider_component.rb
382
+ - app/components/daisy/layout/drawer_component.html.haml
383
+ - app/components/daisy/layout/drawer_component.rb
384
+ - app/components/daisy/layout/footer_component.rb
385
+ - app/components/daisy/layout/hero_component.html.haml
386
+ - app/components/daisy/layout/hero_component.rb
387
+ - app/components/daisy/layout/indicator_component.rb
362
388
  - app/components/daisy/layout/join_component.rb
389
+ - app/components/daisy/layout/stack_component.rb
363
390
  - app/components/daisy/navigation/bottom_nav_component.rb
364
391
  - app/components/daisy/navigation/breadcrumbs_component.html.haml
365
392
  - app/components/daisy/navigation/breadcrumbs_component.rb
366
- - app/components/daisy/navigation/link_component.html.haml
367
393
  - app/components/daisy/navigation/link_component.rb
368
394
  - app/components/daisy/navigation/menu_component.html.haml
369
395
  - app/components/daisy/navigation/menu_component.rb
@@ -374,13 +400,16 @@ files:
374
400
  - app/components/daisy/navigation/tabs_component.rb
375
401
  - app/components/hero/icon_component.rb
376
402
  - lib/daisy.rb
377
- - lib/daisy/helpers.rb
403
+ - lib/hero.rb
378
404
  - lib/loco_motion.rb
379
405
  - lib/loco_motion/base_component.rb
380
406
  - lib/loco_motion/basic_component.rb
381
407
  - lib/loco_motion/component_config.rb
408
+ - lib/loco_motion/concerns/tippable_component.rb
409
+ - lib/loco_motion/configuration.rb
382
410
  - lib/loco_motion/engine.rb
383
411
  - lib/loco_motion/errors.rb
412
+ - lib/loco_motion/helpers.rb
384
413
  homepage: https://rubygems.org/gems/loco_motion-rails
385
414
  licenses:
386
415
  - MIT
@@ -1,2 +0,0 @@
1
- = part(:component) do
2
- = content
@@ -1,2 +0,0 @@
1
- = part(:component) do
2
- = content
@@ -1,4 +0,0 @@
1
- = part(:component) do
2
- = @text if @text
3
-
4
- = content
data/lib/daisy/helpers.rb DELETED
@@ -1,61 +0,0 @@
1
- module Daisy
2
- COMPONENT_HELPERS = {
3
- # TODO: The hero icons should be in a different helper? Or maybe this whole
4
- # thing should be in a Loco module instead of Daisy?
5
-
6
- ### Hero Icons
7
- icon: "Hero::IconComponent",
8
-
9
- ### Daisy Components
10
-
11
- # Actions
12
- button: "Daisy::Actions::ButtonComponent",
13
- dropdown: "Daisy::Actions::DropdownComponent",
14
- modal: "Daisy::Actions::ModalComponent",
15
- swap: "Daisy::Actions::SwapComponent",
16
- theme_controller: "Daisy::Actions::ThemeControllerComponent",
17
-
18
- # Data
19
- accordion: "Daisy::DataDisplay::AccordionComponent",
20
- avatar: "Daisy::DataDisplay::AvatarComponent",
21
- badge: "Daisy::DataDisplay::BadgeComponent",
22
- card: "Daisy::DataDisplay::CardComponent",
23
- carousel: "Daisy::DataDisplay::CarouselComponent",
24
- chat: "Daisy::DataDisplay::ChatComponent",
25
- collapse: "Daisy::DataDisplay::CollapseComponent",
26
- countdown: "Daisy::DataDisplay::CountdownComponent",
27
- diff: "Daisy::DataDisplay::DiffComponent",
28
- kbd: "Daisy::DataDisplay::KbdComponent",
29
- stat: "Daisy::DataDisplay::StatComponent",
30
- table: "Daisy::DataDisplay::TableComponent",
31
- timeline: "Daisy::DataDisplay::TimelineComponent",
32
-
33
- # Navigation
34
- breadcrumbs: "Daisy::Navigation::BreadcrumbsComponent",
35
- bottom_nav: "Daisy::Navigation::BottomNavComponent",
36
- link: "Daisy::Navigation::LinkComponent",
37
- menu: "Daisy::Navigation::MenuComponent",
38
- navbar: "Daisy::Navigation::NavbarComponent",
39
- # TODO: This doesn't exist as a component, so it feels weird to have it
40
- # here; but it makes the navigation work properly.
41
- pagination: "Daisy::Navigation::PaginationComponent",
42
- steps: "Daisy::Navigation::StepsComponent",
43
- tabs: "Daisy::Navigation::TabsComponent",
44
-
45
- # Feedback
46
- alert: "Daisy::Feedback::AlertComponent",
47
-
48
- # Layout
49
- join: "Daisy::Layout::JoinComponent",
50
- }
51
-
52
- module Helpers
53
- COMPONENT_HELPERS.each do |method_name, component_klass|
54
- framework = component_klass.split("::").first.downcase
55
-
56
- ActionView::Helpers.define_method("#{framework}_#{method_name}") do |*args, **kws, &block|
57
- render(component_klass.constantize.new(*args, **kws), &block)
58
- end
59
- end
60
- end
61
- end