m9sh 0.1.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 (104) hide show
  1. checksums.yaml +7 -0
  2. data/.do/app.yaml +25 -0
  3. data/.dockerignore +51 -0
  4. data/.idea/.gitignore +8 -0
  5. data/.idea/aws.xml +17 -0
  6. data/.idea/hotcdn.iml +189 -0
  7. data/.idea/jsLibraryMappings.xml +6 -0
  8. data/.idea/misc.xml +4 -0
  9. data/.idea/modules.xml +8 -0
  10. data/.idea/vcs.xml +6 -0
  11. data/.mise.toml +3 -0
  12. data/.node-version +1 -0
  13. data/Dockerfile +84 -0
  14. data/README.md +230 -0
  15. data/Rakefile +6 -0
  16. data/app/components/m9sh/accordion_component.rb +122 -0
  17. data/app/components/m9sh/alert_component.rb +72 -0
  18. data/app/components/m9sh/alert_dialog_component.rb +100 -0
  19. data/app/components/m9sh/avatar_component.rb +65 -0
  20. data/app/components/m9sh/badge_component.rb +37 -0
  21. data/app/components/m9sh/base_component.rb +21 -0
  22. data/app/components/m9sh/breadcrumb_component.rb +100 -0
  23. data/app/components/m9sh/button_component.rb +54 -0
  24. data/app/components/m9sh/card_component.rb +90 -0
  25. data/app/components/m9sh/checkbox_component.rb +36 -0
  26. data/app/components/m9sh/collapsible_component.rb +47 -0
  27. data/app/components/m9sh/dialog_component.rb +123 -0
  28. data/app/components/m9sh/dropdown_menu_component.rb +27 -0
  29. data/app/components/m9sh/dropdown_menu_content_component.rb +24 -0
  30. data/app/components/m9sh/dropdown_menu_item_component.rb +36 -0
  31. data/app/components/m9sh/dropdown_menu_separator_component.rb +9 -0
  32. data/app/components/m9sh/dropdown_menu_trigger_component.rb +19 -0
  33. data/app/components/m9sh/hover_card_component.rb +48 -0
  34. data/app/components/m9sh/input_component.rb +33 -0
  35. data/app/components/m9sh/label_component.rb +27 -0
  36. data/app/components/m9sh/main_component.rb +16 -0
  37. data/app/components/m9sh/navigation_menu_component.rb +95 -0
  38. data/app/components/m9sh/popover_component.rb +47 -0
  39. data/app/components/m9sh/progress_component.rb +46 -0
  40. data/app/components/m9sh/radio_group_component.rb +88 -0
  41. data/app/components/m9sh/select_component.rb +51 -0
  42. data/app/components/m9sh/separator_component.rb +40 -0
  43. data/app/components/m9sh/sheet_component.rb +123 -0
  44. data/app/components/m9sh/sidebar_component.rb +126 -0
  45. data/app/components/m9sh/sidebar_group_component.rb +51 -0
  46. data/app/components/m9sh/sidebar_inset_component.rb +16 -0
  47. data/app/components/m9sh/sidebar_menu_button_component.rb +56 -0
  48. data/app/components/m9sh/sidebar_menu_component.rb +16 -0
  49. data/app/components/m9sh/sidebar_menu_item_component.rb +16 -0
  50. data/app/components/m9sh/sidebar_provider_component.rb +29 -0
  51. data/app/components/m9sh/sidebar_trigger_component.rb +44 -0
  52. data/app/components/m9sh/skeleton_component.rb +32 -0
  53. data/app/components/m9sh/slider_component.rb +83 -0
  54. data/app/components/m9sh/spinner_component.rb +46 -0
  55. data/app/components/m9sh/switch_component.rb +47 -0
  56. data/app/components/m9sh/table_component.rb +111 -0
  57. data/app/components/m9sh/tabs_component.rb +92 -0
  58. data/app/components/m9sh/textarea_component.rb +44 -0
  59. data/app/components/m9sh/theme_toggle_component.rb +88 -0
  60. data/app/components/m9sh/toast_component.rb +86 -0
  61. data/app/components/m9sh/toaster_component.rb +20 -0
  62. data/app/components/m9sh/toggle_component.rb +64 -0
  63. data/app/components/m9sh/tooltip_component.rb +48 -0
  64. data/app/components/m9sh/typography_component.rb +56 -0
  65. data/app/components/m9sh/utilities.rb +26 -0
  66. data/app/javascript/controllers/m9sh/accordion_controller.js +110 -0
  67. data/app/javascript/controllers/m9sh/alert_dialog_controller.js +47 -0
  68. data/app/javascript/controllers/m9sh/collapsible_controller.js +57 -0
  69. data/app/javascript/controllers/m9sh/dialog_controller.js +119 -0
  70. data/app/javascript/controllers/m9sh/dropdown_menu_controller.js +103 -0
  71. data/app/javascript/controllers/m9sh/hover_card_controller.js +66 -0
  72. data/app/javascript/controllers/m9sh/navigation_menu_controller.js +219 -0
  73. data/app/javascript/controllers/m9sh/popover_controller.js +113 -0
  74. data/app/javascript/controllers/m9sh/radio_controller.js +59 -0
  75. data/app/javascript/controllers/m9sh/sheet_controller.js +46 -0
  76. data/app/javascript/controllers/m9sh/sidebar_controller.js +114 -0
  77. data/app/javascript/controllers/m9sh/sidebar_provider_controller.js +12 -0
  78. data/app/javascript/controllers/m9sh/slider_controller.js +90 -0
  79. data/app/javascript/controllers/m9sh/switch_controller.js +33 -0
  80. data/app/javascript/controllers/m9sh/tabs_controller.js +51 -0
  81. data/app/javascript/controllers/m9sh/theme_controller.js +50 -0
  82. data/app/javascript/controllers/m9sh/toast_controller.js +46 -0
  83. data/app/javascript/controllers/m9sh/toaster_controller.js +70 -0
  84. data/app/javascript/controllers/m9sh/toggle_controller.js +27 -0
  85. data/app/javascript/controllers/m9sh/tooltip_controller.js +86 -0
  86. data/components.json +21 -0
  87. data/config.ru +6 -0
  88. data/exe/m9sh +12 -0
  89. data/fix_namespaces.py +32 -0
  90. data/fly.toml +30 -0
  91. data/koyeb.yaml +26 -0
  92. data/lib/m9sh/cli.rb +234 -0
  93. data/lib/m9sh/config.rb +114 -0
  94. data/lib/m9sh/generator.rb +183 -0
  95. data/lib/m9sh/registry.rb +107 -0
  96. data/lib/m9sh/registry.yml +384 -0
  97. data/lib/m9sh/version.rb +5 -0
  98. data/lib/m9sh.rb +11 -0
  99. data/package-lock.json +99 -0
  100. data/package.json +28 -0
  101. data/pnpm-lock.yaml +75 -0
  102. data/tailwind.config.js +93 -0
  103. data/update_namespace.py +73 -0
  104. metadata +208 -0
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env python3
2
+
3
+ import os
4
+ import re
5
+ from pathlib import Path
6
+
7
+ def update_file(filepath):
8
+ """Update a single file to replace Hotcdn with M9sh"""
9
+ try:
10
+ with open(filepath, 'r') as f:
11
+ content = f.read()
12
+
13
+ # Track if changes were made
14
+ original_content = content
15
+
16
+ # Replace module/class definitions
17
+ content = re.sub(r'\bmodule Hotcdn\b', 'module M9sh', content)
18
+ content = re.sub(r'\bclass Hotcdn::', 'class M9sh::', content)
19
+
20
+ # Replace Hotcdn:: references
21
+ content = re.sub(r'\bHotcdn::', 'M9sh::', content)
22
+
23
+ # Replace hotcdn in strings and comments (case-insensitive for some)
24
+ content = re.sub(r'\bhotcdn--', 'm9sh--', content) # Stimulus controllers
25
+ content = re.sub(r'\bhotcdn/', 'm9sh/', content) # Paths
26
+ content = re.sub(r'\bHotCDN\b', 'm9sh', content) # Brand name
27
+ content = re.sub(r'"hotcdn"', '"m9sh"', content) # String references
28
+ content = re.sub(r"'hotcdn'", "'m9sh'", content) # String references
29
+
30
+ # JavaScript specific replacements
31
+ if filepath.endswith('.js'):
32
+ content = re.sub(r'controllers/hotcdn/', 'controllers/m9sh/', content)
33
+ content = re.sub(r'"hotcdn--', '"m9sh--', content)
34
+ content = re.sub(r"'hotcdn--", "'m9sh--", content)
35
+
36
+ if content != original_content:
37
+ with open(filepath, 'w') as f:
38
+ f.write(content)
39
+ return True
40
+ return False
41
+ except Exception as e:
42
+ print(f"Error updating {filepath}: {e}")
43
+ return False
44
+
45
+ def main():
46
+ base_dir = Path('/Users/marcin/Projects/veas/hotcdn')
47
+
48
+ # Define file patterns to update
49
+ patterns = [
50
+ 'app/components/m9sh/**/*.rb',
51
+ 'app/javascript/controllers/m9sh/**/*.js',
52
+ 'app/views/**/*.erb',
53
+ 'app/views/**/*.html.erb',
54
+ 'app/helpers/**/*.rb',
55
+ 'app/controllers/**/*.rb',
56
+ 'config/**/*.rb',
57
+ 'app/components/docs/**/*.rb'
58
+ ]
59
+
60
+ updated_files = []
61
+
62
+ for pattern in patterns:
63
+ for filepath in base_dir.glob(pattern):
64
+ if filepath.is_file():
65
+ if update_file(str(filepath)):
66
+ updated_files.append(str(filepath).replace(str(base_dir), ''))
67
+
68
+ print(f"Updated {len(updated_files)} files:")
69
+ for file in sorted(updated_files):
70
+ print(f" - {file}")
71
+
72
+ if __name__ == '__main__':
73
+ main()
metadata ADDED
@@ -0,0 +1,208 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: m9sh
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Marcin Urbanski
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2025-10-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: view_component
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '13.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '13.0'
69
+ description: M9sh is a component library for Rails applications using ViewComponent
70
+ and Hotwire, inspired by shadcn/ui. Generate beautiful, accessible UI components
71
+ with a powerful CLI.
72
+ email:
73
+ - marcinn.urbanski@gmail.com
74
+ executables:
75
+ - m9sh
76
+ extensions: []
77
+ extra_rdoc_files: []
78
+ files:
79
+ - ".do/app.yaml"
80
+ - ".dockerignore"
81
+ - ".idea/.gitignore"
82
+ - ".idea/aws.xml"
83
+ - ".idea/hotcdn.iml"
84
+ - ".idea/jsLibraryMappings.xml"
85
+ - ".idea/misc.xml"
86
+ - ".idea/modules.xml"
87
+ - ".idea/vcs.xml"
88
+ - ".mise.toml"
89
+ - ".node-version"
90
+ - Dockerfile
91
+ - README.md
92
+ - Rakefile
93
+ - app/components/m9sh/accordion_component.rb
94
+ - app/components/m9sh/alert_component.rb
95
+ - app/components/m9sh/alert_dialog_component.rb
96
+ - app/components/m9sh/avatar_component.rb
97
+ - app/components/m9sh/badge_component.rb
98
+ - app/components/m9sh/base_component.rb
99
+ - app/components/m9sh/breadcrumb_component.rb
100
+ - app/components/m9sh/button_component.rb
101
+ - app/components/m9sh/card_component.rb
102
+ - app/components/m9sh/checkbox_component.rb
103
+ - app/components/m9sh/collapsible_component.rb
104
+ - app/components/m9sh/dialog_component.rb
105
+ - app/components/m9sh/dropdown_menu_component.rb
106
+ - app/components/m9sh/dropdown_menu_content_component.rb
107
+ - app/components/m9sh/dropdown_menu_item_component.rb
108
+ - app/components/m9sh/dropdown_menu_separator_component.rb
109
+ - app/components/m9sh/dropdown_menu_trigger_component.rb
110
+ - app/components/m9sh/hover_card_component.rb
111
+ - app/components/m9sh/input_component.rb
112
+ - app/components/m9sh/label_component.rb
113
+ - app/components/m9sh/main_component.rb
114
+ - app/components/m9sh/navigation_menu_component.rb
115
+ - app/components/m9sh/popover_component.rb
116
+ - app/components/m9sh/progress_component.rb
117
+ - app/components/m9sh/radio_group_component.rb
118
+ - app/components/m9sh/select_component.rb
119
+ - app/components/m9sh/separator_component.rb
120
+ - app/components/m9sh/sheet_component.rb
121
+ - app/components/m9sh/sidebar_component.rb
122
+ - app/components/m9sh/sidebar_group_component.rb
123
+ - app/components/m9sh/sidebar_inset_component.rb
124
+ - app/components/m9sh/sidebar_menu_button_component.rb
125
+ - app/components/m9sh/sidebar_menu_component.rb
126
+ - app/components/m9sh/sidebar_menu_item_component.rb
127
+ - app/components/m9sh/sidebar_provider_component.rb
128
+ - app/components/m9sh/sidebar_trigger_component.rb
129
+ - app/components/m9sh/skeleton_component.rb
130
+ - app/components/m9sh/slider_component.rb
131
+ - app/components/m9sh/spinner_component.rb
132
+ - app/components/m9sh/switch_component.rb
133
+ - app/components/m9sh/table_component.rb
134
+ - app/components/m9sh/tabs_component.rb
135
+ - app/components/m9sh/textarea_component.rb
136
+ - app/components/m9sh/theme_toggle_component.rb
137
+ - app/components/m9sh/toast_component.rb
138
+ - app/components/m9sh/toaster_component.rb
139
+ - app/components/m9sh/toggle_component.rb
140
+ - app/components/m9sh/tooltip_component.rb
141
+ - app/components/m9sh/typography_component.rb
142
+ - app/components/m9sh/utilities.rb
143
+ - app/javascript/controllers/m9sh/accordion_controller.js
144
+ - app/javascript/controllers/m9sh/alert_dialog_controller.js
145
+ - app/javascript/controllers/m9sh/collapsible_controller.js
146
+ - app/javascript/controllers/m9sh/dialog_controller.js
147
+ - app/javascript/controllers/m9sh/dropdown_menu_controller.js
148
+ - app/javascript/controllers/m9sh/hover_card_controller.js
149
+ - app/javascript/controllers/m9sh/navigation_menu_controller.js
150
+ - app/javascript/controllers/m9sh/popover_controller.js
151
+ - app/javascript/controllers/m9sh/radio_controller.js
152
+ - app/javascript/controllers/m9sh/sheet_controller.js
153
+ - app/javascript/controllers/m9sh/sidebar_controller.js
154
+ - app/javascript/controllers/m9sh/sidebar_provider_controller.js
155
+ - app/javascript/controllers/m9sh/slider_controller.js
156
+ - app/javascript/controllers/m9sh/switch_controller.js
157
+ - app/javascript/controllers/m9sh/tabs_controller.js
158
+ - app/javascript/controllers/m9sh/theme_controller.js
159
+ - app/javascript/controllers/m9sh/toast_controller.js
160
+ - app/javascript/controllers/m9sh/toaster_controller.js
161
+ - app/javascript/controllers/m9sh/toggle_controller.js
162
+ - app/javascript/controllers/m9sh/tooltip_controller.js
163
+ - components.json
164
+ - config.ru
165
+ - exe/m9sh
166
+ - fix_namespaces.py
167
+ - fly.toml
168
+ - koyeb.yaml
169
+ - lib/m9sh.rb
170
+ - lib/m9sh/cli.rb
171
+ - lib/m9sh/config.rb
172
+ - lib/m9sh/generator.rb
173
+ - lib/m9sh/registry.rb
174
+ - lib/m9sh/registry.yml
175
+ - lib/m9sh/version.rb
176
+ - package-lock.json
177
+ - package.json
178
+ - pnpm-lock.yaml
179
+ - tailwind.config.js
180
+ - update_namespace.py
181
+ homepage: https://github.com/veas-org/m9sh
182
+ licenses:
183
+ - MIT
184
+ metadata:
185
+ homepage_uri: https://github.com/veas-org/m9sh
186
+ source_code_uri: https://github.com/veas-org/m9sh
187
+ changelog_uri: https://github.com/veas-org/m9sh/blob/main/CHANGELOG.md
188
+ documentation_uri: https://github.com/veas-org/m9sh/blob/main/M9SH_CLI.md
189
+ post_install_message:
190
+ rdoc_options: []
191
+ require_paths:
192
+ - lib
193
+ required_ruby_version: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: 3.0.0
198
+ required_rubygems_version: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ requirements: []
204
+ rubygems_version: 3.5.3
205
+ signing_key:
206
+ specification_version: 4
207
+ summary: Beautiful, accessible UI components for Rails with Hotwire
208
+ test_files: []