uistiti 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 (46) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +28 -0
  4. data/Rakefile +8 -0
  5. data/app/assets/config/uistiti_manifest.js +1 -0
  6. data/app/assets/javascript/controllers/uistiti/alpha/flex/flex_controller.js +8 -0
  7. data/app/assets/javascript/controllers/uistiti/alpha/image/image_controller.js +8 -0
  8. data/app/assets/javascript/controllers/uistiti/alpha/link/link_controller.js +8 -0
  9. data/app/assets/javascript/controllers/uistiti/alpha/main_layout/main_layout_controller.js +8 -0
  10. data/app/assets/javascript/controllers/uistiti/alpha/navbar/navbar_controller.js +8 -0
  11. data/app/assets/stylesheets/uistiti/components/alpha/flex.scss +101 -0
  12. data/app/assets/stylesheets/uistiti/components/alpha/image.scss +19 -0
  13. data/app/assets/stylesheets/uistiti/components/alpha/link.scss +18 -0
  14. data/app/assets/stylesheets/uistiti/components/alpha/main_layout.scss +7 -0
  15. data/app/assets/stylesheets/uistiti/components/alpha/navbar.scss +15 -0
  16. data/app/assets/stylesheets/uistiti/config/_variables.scss +390 -0
  17. data/app/assets/stylesheets/uistiti/uistiti.scss +20 -0
  18. data/app/components/uistiti/alpha/flex.html.erb +3 -0
  19. data/app/components/uistiti/alpha/flex.rb +32 -0
  20. data/app/components/uistiti/alpha/image.html.erb +1 -0
  21. data/app/components/uistiti/alpha/image.rb +23 -0
  22. data/app/components/uistiti/alpha/link.html.erb +3 -0
  23. data/app/components/uistiti/alpha/link.rb +25 -0
  24. data/app/components/uistiti/alpha/main_layout.html.erb +3 -0
  25. data/app/components/uistiti/alpha/main_layout.rb +12 -0
  26. data/app/components/uistiti/alpha/navbar.html.erb +10 -0
  27. data/app/components/uistiti/alpha/navbar.rb +25 -0
  28. data/app/controllers/uistiti/application_controller.rb +4 -0
  29. data/app/helpers/uistiti/application_helper.rb +4 -0
  30. data/app/jobs/uistiti/application_job.rb +4 -0
  31. data/app/mailers/uistiti/application_mailer.rb +6 -0
  32. data/app/models/uistiti/application_record.rb +5 -0
  33. data/app/views/layouts/uistiti/application.html.erb +15 -0
  34. data/config/routes.rb +3 -0
  35. data/lib/generators/uistiti/component_generator.rb +63 -0
  36. data/lib/generators/uistiti/templates/component.html.tt +3 -0
  37. data/lib/generators/uistiti/templates/component.js.tt +8 -0
  38. data/lib/generators/uistiti/templates/component.scss.tt +5 -0
  39. data/lib/generators/uistiti/templates/component.tt +14 -0
  40. data/lib/generators/uistiti/templates/preview.tt +18 -0
  41. data/lib/generators/uistiti/templates/spec.tt +3 -0
  42. data/lib/tasks/uistiti_tasks.rake +4 -0
  43. data/lib/uistiti/engine.rb +12 -0
  44. data/lib/uistiti/version.rb +3 -0
  45. data/lib/uistiti.rb +6 -0
  46. metadata +139 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: be75c25b3458c1725fc90ee1ae2a269d0a893b99cec73a2f959f8254a3c010e9
4
+ data.tar.gz: 8ad751062c1aa899d4dc99297a74539d930c552a3127cf5203322313a7c3c05e
5
+ SHA512:
6
+ metadata.gz: da74b0ddbdb339df8763626723d26be39d76f6b3be157cd04f65ee34bd3e20b403b4dad8c4620e6a7163688d191d3b694982f07fb8c18a26ed05a220a824203c
7
+ data.tar.gz: 9494628a2c341348d1d22720c1e19b268e781500c0dfe417c604348150ee00797e1d3ddffa8c5a01fb55cd311978cf6d624d6de8a41e781c8b541afe031dd5c6
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2023 Tom Ecrepont
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,28 @@
1
+ # Uistiti
2
+ Short description and motivation.
3
+
4
+ ## Usage
5
+ How to use my plugin.
6
+
7
+ ## Installation
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem "uistiti"
12
+ ```
13
+
14
+ And then execute:
15
+ ```bash
16
+ $ bundle
17
+ ```
18
+
19
+ Or install it yourself as:
20
+ ```bash
21
+ $ gem install uistiti
22
+ ```
23
+
24
+ ## Contributing
25
+ Contribution directions go here.
26
+
27
+ ## License
28
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require "bundler/setup"
2
+
3
+ APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
4
+ load "rails/tasks/engine.rake"
5
+
6
+ load "rails/tasks/statistics.rake"
7
+
8
+ require "bundler/gem_tasks"
@@ -0,0 +1 @@
1
+ //= link_directory ../stylesheets/uistiti .css
@@ -0,0 +1,8 @@
1
+ import { Controller } from "@hotwired/stimulus";
2
+
3
+ // this stimulus controller can be registered with identifier : uistiti--alpha--flex
4
+ export default class extends Controller {
5
+ connect() {
6
+ console.log("Hello, from flex stimulus controller !", this.element);
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ import { Controller } from "@hotwired/stimulus";
2
+
3
+ // this stimulus controller can be registered with identifier : uistiti--alpha--image
4
+ export default class extends Controller {
5
+ connect() {
6
+ console.log("Hello, from image stimulus controller !", this.element);
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ import { Controller } from "@hotwired/stimulus";
2
+
3
+ // this stimulus controller can be registered with identifier : uistiti--alpha--link
4
+ export default class extends Controller {
5
+ connect() {
6
+ console.log("Hello, from link stimulus controller !", this.element);
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ import { Controller } from "@hotwired/stimulus";
2
+
3
+ // this stimulus controller can be registered with identifier : uistiti--alpha--main-layout
4
+ export default class extends Controller {
5
+ connect() {
6
+ console.log("Hello, from main_layout stimulus controller !", this.element);
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ import { Controller } from "@hotwired/stimulus";
2
+
3
+ // this stimulus controller can be registered with identifier : uistiti--alpha--navbar
4
+ export default class extends Controller {
5
+ connect() {
6
+ console.log("Hello, from navbar stimulus controller !", this.element);
7
+ }
8
+ }
@@ -0,0 +1,101 @@
1
+ /* CSS for Flex */
2
+
3
+ .Flex {
4
+ display: flex;
5
+ gap: $size-space-small;
6
+ &--direction {
7
+ &--row {
8
+ flex-direction: row;
9
+ };
10
+ &--column {
11
+ flex-direction: column;
12
+ };
13
+ };
14
+ &--gap{
15
+ &--tiny {
16
+ gap: $size-space-tiny
17
+ }
18
+ &--small {
19
+ gap: $size-space-small
20
+ }
21
+ &--medium {
22
+ gap: $size-space-medium
23
+ }
24
+ &--large {
25
+ gap: $size-space-large
26
+ }
27
+ &--xl {
28
+ gap: $size-space-xl
29
+ }
30
+ &--xxl {
31
+ gap: $size-space-xxl
32
+ }
33
+ };
34
+ &--justify-content{
35
+ &--center {
36
+ justify-content: center
37
+ };
38
+ &--start {
39
+ justify-content: start
40
+ };
41
+ &--end {
42
+ justify-content: end
43
+ };
44
+ &--flex-start {
45
+ justify-content: flex-start
46
+ };
47
+ &--flex-end {
48
+ justify-content: flex-end
49
+ };
50
+ &--left {
51
+ justify-content: left
52
+ };
53
+ &--right {
54
+ justify-content: right
55
+ };
56
+ &--normal {
57
+ justify-content: normal;
58
+ };
59
+ &--space-between {
60
+ justify-content: space-between;
61
+ };
62
+ &--space-around {
63
+ justify-content: space-around;
64
+ };
65
+ &--space-evenly {
66
+ justify-content: space-evenly;
67
+ };
68
+ &--stretch {
69
+ justify-content: stretch;
70
+ };
71
+ };
72
+ &--align-items{
73
+ &--normal {
74
+ align-items: normal;
75
+ };
76
+ &--stretch {
77
+ align-items: stretch;
78
+ };
79
+ &--center {
80
+ align-items: center;
81
+ };
82
+ &--start {
83
+ align-items: start;
84
+ };
85
+ &--end {
86
+ align-items: end;
87
+ };
88
+ &--flex-start {
89
+ align-items: flex-start;
90
+ };
91
+ &--flex-end {
92
+ align-items: flex-end;
93
+ };
94
+ &--self-start {
95
+ align-items: self-start;
96
+ };
97
+ &--self-end {
98
+ align-items: self-end;
99
+ };
100
+ };
101
+ };
@@ -0,0 +1,19 @@
1
+ /* CSS for Image */
2
+
3
+ .Image {
4
+ &--small {
5
+ width: $size-image-small;
6
+ };
7
+ &--medium {
8
+ width: $size-image-medium;
9
+ };
10
+ &--large {
11
+ width: $size-image-large;
12
+ };
13
+ &--xl {
14
+ width: $size-image-xl;
15
+ };
16
+ &--xxl {
17
+ width: $size-image-xxl;
18
+ };
19
+ }
@@ -0,0 +1,18 @@
1
+ /* CSS for Link */
2
+
3
+ .Link {
4
+ text-decoration: none;
5
+ margin-block: auto;
6
+ &--inverse-base{
7
+ color: $color-font-link-inverse-base;
8
+ }
9
+ &--base{
10
+ color: $color-font-link-base;
11
+ }
12
+ &--primary{
13
+ color: $color-font-link-primary;
14
+ }
15
+ &--secondary{
16
+ color: $color-font-link-secondary;
17
+ }
18
+ }
@@ -0,0 +1,7 @@
1
+ /* CSS for MainLayout */
2
+
3
+ .MainLayout {
4
+ background-color: $color-background-base;
5
+ padding-block: $size-space-small;
6
+ padding-inline: $size-space-medium;
7
+ }
@@ -0,0 +1,15 @@
1
+ /* CSS for Navbar */
2
+
3
+ .Navbar {
4
+ padding: $size-space-medium;
5
+
6
+ &--primary {
7
+ background-color: $color-brand-primary-base;
8
+ color: $color-font-inverse-base
9
+ };
10
+
11
+ &--secondary {
12
+ background-color: $color-brand-secondary-base;
13
+ color: $color-font-inverse-base
14
+ };
15
+ }
@@ -0,0 +1,390 @@
1
+ //##################################################
2
+ //##################### COLORS #####################
3
+ //##################################################
4
+ //###################### RED #######################
5
+ $color-base-red-50: #ffe5ee;
6
+ $color-base-red-100: #ffcdd2;
7
+ $color-base-red-200: #ef9a9a;
8
+ $color-base-red-300: #e57373;
9
+ $color-base-red-400: #ef5350;
10
+ $color-base-red-500: #f44336;
11
+ $color-base-red-600: #e53935;
12
+ $color-base-red-700: #d32f2f;
13
+ $color-base-red-800: #c62828;
14
+ $color-base-red-900: #b71c1c;
15
+ $color-base-red-a100: #ff8a80;
16
+ $color-base-red-a200: #ff5252;
17
+ $color-base-red-a400: #ff1744;
18
+ $color-base-red-a700: #d50000;
19
+ //###################### PINK ######################
20
+ $color-base-pink-50: #fce4ec;
21
+ $color-base-pink-100: #f8bbd0;
22
+ $color-base-pink-200: #f48fb1;
23
+ $color-base-pink-300: #f06292;
24
+ $color-base-pink-400: #ec407a;
25
+ $color-base-pink-500: #e91e63;
26
+ $color-base-pink-600: #d81b60;
27
+ $color-base-pink-700: #c2185b;
28
+ $color-base-pink-800: #ad1457;
29
+ $color-base-pink-900: #880e4f;
30
+ $color-base-pink-a100: #ff80ab;
31
+ $color-base-pink-a200: #ff4081;
32
+ $color-base-pink-a400: #f50057;
33
+ $color-base-pink-a700: #c51162;
34
+ //##################### PURPLE #####################
35
+ $color-base-purple-50: #f3e5f5;
36
+ $color-base-purple-100: #e1bee7;
37
+ $color-base-purple-200: #ce93d8;
38
+ $color-base-purple-300: #ba68c8;
39
+ $color-base-purple-400: #ab47bc;
40
+ $color-base-purple-500: #9c27b0;
41
+ $color-base-purple-600: #8e24aa;
42
+ $color-base-purple-700: #7b1fa2;
43
+ $color-base-purple-800: #6a1b9a;
44
+ $color-base-purple-900: #4a148c;
45
+ $color-base-purple-a100: #ea80fc;
46
+ $color-base-purple-a200: #e040fb;
47
+ $color-base-purple-a400: #d500f9;
48
+ $color-base-purple-a700: #aa00ff;
49
+ //################## DEEP-PURPLE ###################
50
+ $color-base-deep-purple-50: #ede7f6;
51
+ $color-base-deep-purple-100: #d1c4e9;
52
+ $color-base-deep-purple-200: #b39ddb;
53
+ $color-base-deep-purple-300: #9575cd;
54
+ $color-base-deep-purple-400: #7e57c2;
55
+ $color-base-deep-purple-500: #673ab7;
56
+ $color-base-deep-purple-600: #5e35b1;
57
+ $color-base-deep-purple-700: #512da8;
58
+ $color-base-deep-purple-800: #4527a0;
59
+ $color-base-deep-purple-900: #311b92;
60
+ $color-base-deep-purple-a100: #b388ff;
61
+ $color-base-deep-purple-a200: #7c4dff;
62
+ $color-base-deep-purple-a400: #651fff;
63
+ $color-base-deep-purple-a700: #6200ea;
64
+ //##################### INDIGO #####################
65
+ $color-base-indigo-50: #e8eaf6;
66
+ $color-base-indigo-100: #c5cae9;
67
+ $color-base-indigo-200: #9fa8da;
68
+ $color-base-indigo-300: #7986cb;
69
+ $color-base-indigo-400: #5c6bc0;
70
+ $color-base-indigo-500: #3f51b5;
71
+ $color-base-indigo-600: #3949ab;
72
+ $color-base-indigo-700: #303f9f;
73
+ $color-base-indigo-800: #283593;
74
+ $color-base-indigo-900: #1a237e;
75
+ $color-base-indigo-a100: #8c9eff;
76
+ $color-base-indigo-a200: #536dfe;
77
+ $color-base-indigo-a400: #3d5afe;
78
+ $color-base-indigo-a700: #304ffe;
79
+ //###################### BLUE ######################
80
+ $color-base-blue-50: #e3f2fd;
81
+ $color-base-blue-100: #bbdefb;
82
+ $color-base-blue-200: #90caf9;
83
+ $color-base-blue-300: #64b5f6;
84
+ $color-base-blue-400: #42a5f5;
85
+ $color-base-blue-500: #2196f3;
86
+ $color-base-blue-600: #1e88e5;
87
+ $color-base-blue-700: #1976d2;
88
+ $color-base-blue-800: #1565c0;
89
+ $color-base-blue-900: #0d47a1;
90
+ $color-base-blue-a100: #82b1ff;
91
+ $color-base-blue-a200: #448aff;
92
+ $color-base-blue-a400: #2979ff;
93
+ $color-base-blue-a700: #2962ff;
94
+ //################### LIGHT-BLUE ###################
95
+ $color-base-light-blue-50: #e1f5fe;
96
+ $color-base-light-blue-100: #b3e5fc;
97
+ $color-base-light-blue-200: #81d4fa;
98
+ $color-base-light-blue-300: #4fc3f7;
99
+ $color-base-light-blue-400: #29b6f6;
100
+ $color-base-light-blue-500: #03a9f4;
101
+ $color-base-light-blue-600: #039be5;
102
+ $color-base-light-blue-700: #0288d1;
103
+ $color-base-light-blue-800: #0277bd;
104
+ $color-base-light-blue-900: #01579b;
105
+ $color-base-light-blue-a100: #80d8ff;
106
+ $color-base-light-blue-a200: #40c4ff;
107
+ $color-base-light-blue-a400: #00b0ff;
108
+ $color-base-light-blue-a700: #0091ea;
109
+ //###################### CYAN ######################
110
+ $color-base-cyan-50: #e0f7fa;
111
+ $color-base-cyan-100: #b2ebf2;
112
+ $color-base-cyan-200: #80deea;
113
+ $color-base-cyan-300: #4dd0e1;
114
+ $color-base-cyan-400: #26c6da;
115
+ $color-base-cyan-500: #00bcd4;
116
+ $color-base-cyan-600: #00acc1;
117
+ $color-base-cyan-700: #0097a7;
118
+ $color-base-cyan-800: #00838f;
119
+ $color-base-cyan-900: #006064;
120
+ $color-base-cyan-a100: #84ffff;
121
+ $color-base-cyan-a200: #18ffff;
122
+ $color-base-cyan-a400: #00e5ff;
123
+ $color-base-cyan-a700: #00b8d4;
124
+ //###################### TEAL ######################
125
+ $color-base-teal-50: #e0f2f1;
126
+ $color-base-teal-100: #b2dfdb;
127
+ $color-base-teal-200: #80cbc4;
128
+ $color-base-teal-300: #4db6ac;
129
+ $color-base-teal-400: #26a69a;
130
+ $color-base-teal-500: #009688;
131
+ $color-base-teal-600: #00897b;
132
+ $color-base-teal-700: #00796b;
133
+ $color-base-teal-800: #00695c;
134
+ $color-base-teal-900: #004d40;
135
+ $color-base-teal-a100: #a7ffeb;
136
+ $color-base-teal-a200: #64ffda;
137
+ $color-base-teal-a400: #1de9b6;
138
+ $color-base-teal-a700: #00bfa5;
139
+ //##################### GREEN ######################
140
+ $color-base-green-50: #e8f5e9;
141
+ $color-base-green-100: #c8e6c9;
142
+ $color-base-green-200: #a5d6a7;
143
+ $color-base-green-300: #81c784;
144
+ $color-base-green-400: #66bb6a;
145
+ $color-base-green-500: #4caf50;
146
+ $color-base-green-600: #43a047;
147
+ $color-base-green-700: #388e3c;
148
+ $color-base-green-800: #2e7d32;
149
+ $color-base-green-900: #1b5e20;
150
+ $color-base-green-a100: #b9f6ca;
151
+ $color-base-green-a200: #69f0ae;
152
+ $color-base-green-a400: #00e676;
153
+ $color-base-green-a700: #00c853;
154
+ //################## LIGHT-GREEN ###################
155
+ $color-base-light-green-50: #f1f8e9;
156
+ $color-base-light-green-100: #dcedc8;
157
+ $color-base-light-green-200: #c5e1a5;
158
+ $color-base-light-green-300: #aed581;
159
+ $color-base-light-green-400: #9ccc65;
160
+ $color-base-light-green-500: #8bc34a;
161
+ $color-base-light-green-600: #7cb342;
162
+ $color-base-light-green-700: #689f38;
163
+ $color-base-light-green-800: #558b2f;
164
+ $color-base-light-green-900: #33691e;
165
+ $color-base-light-green-a100: #ccff90;
166
+ $color-base-light-green-a200: #b2ff59;
167
+ $color-base-light-green-a400: #76ff03;
168
+ $color-base-light-green-a700: #64dd17;
169
+ //###################### LIME ######################
170
+ $color-base-lime-50: #f9fbe7;
171
+ $color-base-lime-100: #f0f4c3;
172
+ $color-base-lime-200: #e6ee9c;
173
+ $color-base-lime-300: #dce775;
174
+ $color-base-lime-400: #d4e157;
175
+ $color-base-lime-500: #cddc39;
176
+ $color-base-lime-600: #c0ca33;
177
+ $color-base-lime-700: #afb42b;
178
+ $color-base-lime-800: #9e9d24;
179
+ $color-base-lime-900: #827717;
180
+ $color-base-lime-a100: #f4ff81;
181
+ $color-base-lime-a200: #eeff41;
182
+ $color-base-lime-a400: #c6ff00;
183
+ $color-base-lime-a700: #aeea00;
184
+ //##################### YELLOW #####################
185
+ $color-base-yellow-50: #fffde7;
186
+ $color-base-yellow-100: #fff9c4;
187
+ $color-base-yellow-200: #fff59d;
188
+ $color-base-yellow-300: #fff176;
189
+ $color-base-yellow-400: #ffee58;
190
+ $color-base-yellow-500: #ffeb3b;
191
+ $color-base-yellow-600: #fdd835;
192
+ $color-base-yellow-700: #fbc02d;
193
+ $color-base-yellow-800: #f9a825;
194
+ $color-base-yellow-900: #f57f17;
195
+ $color-base-yellow-a100: #ffff8d;
196
+ $color-base-yellow-a200: #ffff00;
197
+ $color-base-yellow-a400: #ffea00;
198
+ $color-base-yellow-a700: #ffd600;
199
+ //##################### AMBER ######################
200
+ $color-base-amber-50: #fff8e1;
201
+ $color-base-amber-100: #ffecb3;
202
+ $color-base-amber-200: #ffe082;
203
+ $color-base-amber-300: #ffd54f;
204
+ $color-base-amber-400: #ffca28;
205
+ $color-base-amber-500: #ffc107;
206
+ $color-base-amber-600: #ffb300;
207
+ $color-base-amber-700: #ffa000;
208
+ $color-base-amber-800: #ff8f00;
209
+ $color-base-amber-900: #ff6f00;
210
+ $color-base-amber-a100: #ffe57f;
211
+ $color-base-amber-a200: #ffd740;
212
+ $color-base-amber-a400: #ffc400;
213
+ $color-base-amber-a700: #ffab00;
214
+ //##################### ORANGE #####################
215
+ $color-base-orange-50: #fff3e0;
216
+ $color-base-orange-100: #ffe0b2;
217
+ $color-base-orange-200: #ffcc80;
218
+ $color-base-orange-300: #ffb74d;
219
+ $color-base-orange-400: #ffa726;
220
+ $color-base-orange-500: #ff9800;
221
+ $color-base-orange-600: #fb8c00;
222
+ $color-base-orange-700: #f57c00;
223
+ $color-base-orange-800: #ef6c00;
224
+ $color-base-orange-900: #e65100;
225
+ $color-base-orange-a100: #ffd180;
226
+ $color-base-orange-a200: #ffab40;
227
+ $color-base-orange-a400: #ff9100;
228
+ $color-base-orange-a700: #ff6d00;
229
+ //################## DEEP-ORANGE ###################
230
+ $color-base-deep-orange-50: #fbe9e7;
231
+ $color-base-deep-orange-100: #ffccbc;
232
+ $color-base-deep-orange-200: #ffab91;
233
+ $color-base-deep-orange-300: #ff8a65;
234
+ $color-base-deep-orange-400: #ff7043;
235
+ $color-base-deep-orange-500: #ff5722;
236
+ $color-base-deep-orange-600: #f4511e;
237
+ $color-base-deep-orange-700: #e64a19;
238
+ $color-base-deep-orange-800: #d84315;
239
+ $color-base-deep-orange-900: #bf360c;
240
+ $color-base-deep-orange-a100: #ff9e80;
241
+ $color-base-deep-orange-a200: #ff6e40;
242
+ $color-base-deep-orange-a400: #ff3d00;
243
+ $color-base-deep-orange-a700: #dd2c00;
244
+ //##################### BROWN ######################
245
+ $color-base-brown-50: #efebe9;
246
+ $color-base-brown-100: #d7ccc8;
247
+ $color-base-brown-200: #bcaaa4;
248
+ $color-base-brown-300: #a1887f;
249
+ $color-base-brown-400: #8d6e63;
250
+ $color-base-brown-500: #795548;
251
+ $color-base-brown-600: #6d4c41;
252
+ $color-base-brown-700: #5d4037;
253
+ $color-base-brown-800: #4e342e;
254
+ $color-base-brown-900: #3e2723;
255
+ //###################### GREY ######################
256
+ $color-base-grey-50: #fafafa;
257
+ $color-base-grey-100: #f5f5f5;
258
+ $color-base-grey-200: #eeeeee;
259
+ $color-base-grey-300: #e0e0e0;
260
+ $color-base-grey-400: #bdbdbd;
261
+ $color-base-grey-500: #9e9e9e;
262
+ $color-base-grey-600: #757575;
263
+ $color-base-grey-700: #616161;
264
+ $color-base-grey-800: #424242;
265
+ $color-base-grey-900: #212121;
266
+ //################### BLUE-GREY ####################
267
+ $color-base-blue-grey-50: #eceff1;
268
+ $color-base-blue-grey-100: #cfd8dc;
269
+ $color-base-blue-grey-200: #b0bec5;
270
+ $color-base-blue-grey-300: #90a4ae;
271
+ $color-base-blue-grey-400: #78909c;
272
+ $color-base-blue-grey-500: #607d8b;
273
+ $color-base-blue-grey-600: #546e7a;
274
+ $color-base-blue-grey-700: #455a64;
275
+ $color-base-blue-grey-800: #37474f;
276
+ $color-base-blue-grey-900: #263238;
277
+ //##################### WHITE ######################
278
+ $color-base-white: #ffffff;
279
+ //##################### BLACK ######################
280
+ $color-base-black: #000000;
281
+ //################### BACKGROUND ###################
282
+ $color-background-base: #ffffff;
283
+ $color-background-alt: #cfd8dc;
284
+ $color-background-disabled: #cfd8dc;
285
+ $color-background-inverse: #263238;
286
+ $color-background-success: #43a047;
287
+ $color-background-error: #e53935;
288
+ $color-background-warning: #ef6c00;
289
+ $color-background-info: #039be5;
290
+ $color-background-link: #039be5;
291
+ $color-background-low-priority: #757575;
292
+ //############### BACKGROUND BUTTON ################
293
+ $color-background-button-primary-base: #009688;
294
+ $color-background-button-primary-disabled: #4db6ac;
295
+ $color-background-button-primary-active: #00796b;
296
+ $color-background-button-secondary-base: #3f51b5;
297
+ $color-background-button-secondary-disabled: #7986cb;
298
+ $color-background-button-secondary-active: #303f9f;
299
+ //############### BACKGROUND OVERLAY ###############
300
+ $color-background-overlay-light: rgba(255, 255, 255, 0.8);
301
+ $color-background-overlay-dark: rgba(0, 0, 0, 0.27);
302
+ //##################### BORDER #####################
303
+ $color-border-light: #eeeeee;
304
+ $color-border-base: #e0e0e0;
305
+ $color-border-dark: #bdbdbd;
306
+ $color-border-focus: #009688;
307
+ $color-border-error: #e53935;
308
+ $color-border-warning: #fb8c00;
309
+ $color-border-success: #43a047;
310
+ //################# BORDER BUTTON ##################
311
+ $color-border-button-secondary-base: #e0e0e0;
312
+ $color-border-button-secondary-active: #303f9f;
313
+ $color-border-button-secondary-disabled: #eeeeee;
314
+ //##################### BRAND ######################
315
+ $color-brand-primary-lighter: #b2dfdb;
316
+ $color-brand-primary-light: #4db6ac;
317
+ $color-brand-primary-base: #009688;
318
+ $color-brand-primary-dark: #00796b;
319
+ $color-brand-primary-darker: #004d40;
320
+ $color-brand-secondary-lighter: #c5cae9;
321
+ $color-brand-secondary-light: #7986cb;
322
+ $color-brand-secondary-base: #3f51b5;
323
+ $color-brand-secondary-dark: #303f9f;
324
+ $color-brand-secondary-darker: #1a237e;
325
+ //###################### FONT ######################
326
+ $color-font-base: #212121;
327
+ $color-font-secondary: #424242;
328
+ $color-font-tertiary: #757575;
329
+ $color-font-quaternary: #bdbdbd;
330
+ $color-font-link: #009688;
331
+ $color-font-active: #3f51b5;
332
+ $color-font-error: #e53935;
333
+ $color-font-warning: #ef6c00;
334
+ $color-font-success: #43a047;
335
+ $color-font-disabled: #424242;
336
+ $color-font-inverse-base: #ffffff;
337
+ $color-font-inverse-secondary: #f5f5f5;
338
+ $color-font-inverse-tertiary: #eeeeee;
339
+ $color-font-inverse-quaternary: #bdbdbd;
340
+ $color-font-inverse-link: #4db6ac;
341
+ $color-font-inverse-active: #7986cb;
342
+ $color-font-inverse-error: #ef5350;
343
+ $color-font-inverse-warning: #ffa726;
344
+ $color-font-inverse-success: #66bb6a;
345
+ $color-font-inverse-disabled: #f5f5f5;
346
+ //################### FONT LINK ####################
347
+ $color-font-button-primary: #ffffff;
348
+ $color-font-button-secondary: #009688;
349
+ //################## FONT BUTTON ###################
350
+ $color-font-link-primary: $color-brand-primary-base;
351
+ $color-font-link-secondary: $color-brand-secondary-base;
352
+ $color-font-link-base: $color-font-base;
353
+ $color-font-link-inverse-base: $color-font-inverse-base;
354
+ //##################################################
355
+ //##################### RADII ######################
356
+ //##################################################
357
+ $radii-base-none: 0;
358
+ $radii-base-sm: 8px;
359
+ //##################################################
360
+ //##################### SIZES ######################
361
+ //##################################################
362
+ //###################### FONT ######################
363
+ $size-font-tiny: 0.75rem;
364
+ $size-font-small: 0.875rem;
365
+ $size-font-medium: 1rem;
366
+ $size-font-large: 1.25rem;
367
+ $size-font-xl: 1.5rem;
368
+ $size-font-xxl: 2rem;
369
+ $size-font-xxxl: 3rem;
370
+ $size-font-base: 1rem;
371
+ //###################### ICON ######################
372
+ $size-icon-small: 1.5rem;
373
+ $size-icon-base: 2rem;
374
+ $size-icon-large: 2.5rem;
375
+ $size-icon-xl: 3rem;
376
+ $size-icon-xxl: 5rem;
377
+ //###################### IMAGE #####################
378
+ $size-image-small: 1.5rem;
379
+ $size-image-medium: 2rem;
380
+ $size-image-large: 2.5rem;
381
+ $size-image-xl: 3rem;
382
+ $size-image-xxl: 5rem;
383
+ //##################### SPACE ######################
384
+ $size-space-tiny: 0.25rem;
385
+ $size-space-small: 0.5rem;
386
+ $size-space-medium: 1rem;
387
+ $size-space-large: 1.5rem;
388
+ $size-space-xl: 2rem;
389
+ $size-space-xxl: 3rem;
390
+ $size-space-base: 1rem;
@@ -0,0 +1,20 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
16
+ @import "components/alpha/link";
17
+ @import "components/alpha/main_layout";
18
+ @import "components/alpha/flex";
19
+ @import "components/alpha/navbar";
20
+ @import "components/alpha/image";
@@ -0,0 +1,3 @@
1
+ <%= content_tag :div, class: classes do -%>
2
+ <%= content %>
3
+ <% end -%>
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Uistiti
4
+ module Alpha
5
+ class Flex < ViewComponent::Base
6
+ renders_many :items
7
+ attr_reader :direction, :gap, :justify_content, :align_items, :html_options
8
+ def initialize(direction: , gap: nil, justify_content: nil, align_items: nil, html_options: {})
9
+ super()
10
+
11
+ @direction = direction
12
+ @justify_content = justify_content
13
+ @align_items = align_items
14
+ @gap = gap
15
+ @html_options = html_options
16
+ end
17
+
18
+ private
19
+
20
+ def classes
21
+ [
22
+ "Flex",
23
+ "Flex--direction--#{direction}",
24
+ ("Flex--gap--#{gap}" if gap),
25
+ ("Flex--justify-content--#{justify_content}" if justify_content),
26
+ ("Flex--align-items--#{align_items}" if align_items),
27
+ html_options[:class]
28
+ ]
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1 @@
1
+ <%= image_tag(@source, class: classes) %>
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Uistiti
4
+ module Alpha
5
+ class Image < ViewComponent::Base
6
+ def initialize(source:, size:)
7
+ super()
8
+
9
+ @source = source
10
+ @size = size
11
+ end
12
+
13
+ private
14
+
15
+ def classes
16
+ [
17
+ 'Image',
18
+ "Image--#{@size}"
19
+ ]
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,3 @@
1
+ <%= link_to @path, method: @method, class: classes do %>
2
+ <%= content || @text %>
3
+ <% end %>
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Uistiti
4
+ module Alpha
5
+ class Link < ViewComponent::Base
6
+ def initialize(path:, method: :get, color: nil, text: nil)
7
+ super()
8
+
9
+ @path = path
10
+ @method = method
11
+ @color = color
12
+ @text = text
13
+ end
14
+
15
+ private
16
+
17
+ def classes
18
+ [
19
+ 'Link',
20
+ "Link--#{@color}"
21
+ ].join(' ')
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,3 @@
1
+ <%= content_tag :div, class: "MainLayout" do -%>
2
+ <%= content %>
3
+ <% end -%>
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Uistiti
4
+ module Alpha
5
+ class MainLayout < ViewComponent::Base
6
+ def initialize()
7
+ super()
8
+
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ <%= render Uistiti::Alpha::Flex.new(direction: :row, justify_content: 'space-between', html_options: {class: classes}) do %>
2
+ <%= render Uistiti::Alpha::Link.new(path: '/', color: 'inverse-base') do %>
3
+ <%= logo %>
4
+ <% end %>
5
+ <%= render Uistiti::Alpha::Flex.new(direction: :row) do %>
6
+ <% links.each do |link| %>
7
+ <%= link %>
8
+ <% end %>
9
+ <% end %>
10
+ <% end %>
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Uistiti
4
+ module Alpha
5
+ class Navbar < ViewComponent::Base
6
+ renders_one :logo
7
+ renders_many :links, Uistiti::Alpha::Link
8
+
9
+ def initialize(color:)
10
+ super()
11
+
12
+ @color = color
13
+ end
14
+
15
+ private
16
+
17
+ def classes
18
+ [
19
+ 'Navbar',
20
+ "Navbar--#{@color}"
21
+ ]
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,4 @@
1
+ module Uistiti
2
+ class ApplicationController < ActionController::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Uistiti
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Uistiti
2
+ class ApplicationJob < ActiveJob::Base
3
+ end
4
+ end
@@ -0,0 +1,6 @@
1
+ module Uistiti
2
+ class ApplicationMailer < ActionMailer::Base
3
+ default from: "from@example.com"
4
+ layout "mailer"
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ module Uistiti
2
+ class ApplicationRecord < ActiveRecord::Base
3
+ self.abstract_class = true
4
+ end
5
+ end
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Uistiti</title>
5
+ <%= csrf_meta_tags %>
6
+ <%= csp_meta_tag %>
7
+
8
+ <%= stylesheet_link_tag "uistiti/application", media: "all" %>
9
+ </head>
10
+ <body>
11
+
12
+ <%= yield %>
13
+
14
+ </body>
15
+ </html>
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ Uistiti::Engine.routes.draw do
2
+ mount Lookbook::Engine, at: "/lookbook"
3
+ end
@@ -0,0 +1,63 @@
1
+ module Uistiti
2
+ class ComponentGenerator < Rails::Generators::NamedBase
3
+ source_root File.expand_path("templates", __dir__)
4
+
5
+ argument :arguments, type: :array, default: []
6
+ class_option :status, default: "alpha", desc: "Status of the component. One of alpha, beta or stable"
7
+ def create_controller
8
+ template("component.tt", "app/components/uistiti/#{status_path}#{underscore_name}.rb")
9
+ end
10
+
11
+ def create_template
12
+ template("component.html.tt", "app/components/uistiti/#{status_path}#{underscore_name}.html.erb")
13
+ end
14
+
15
+ def create_and_import_css
16
+ file_path = "app/assets/stylesheets/uistiti/components/#{status_path}#{underscore_name}.scss"
17
+ template("component.scss.tt", file_path)
18
+ insert_into_file("app/assets/stylesheets/uistiti/uistiti.scss", "@import \"components/#{status_path}#{underscore_name}\";\n")
19
+ end
20
+
21
+ def create_stimulus
22
+ template("component.js.tt", "app/assets/javascript/controllers/uistiti/#{status_path}#{underscore_name}/#{underscore_name}_controller.js")
23
+ end
24
+
25
+ def create_preview
26
+ template("preview.tt", "test/components/previews/uistiti/#{status_path}#{underscore_name}_preview.rb")
27
+ end
28
+
29
+ private
30
+
31
+ def status
32
+ options[:status]
33
+ end
34
+
35
+ def status_path
36
+ return if status == "stable"
37
+
38
+ "#{status}/"
39
+ end
40
+
41
+ def underscore_name
42
+ name.underscore
43
+ end
44
+
45
+ def module_name
46
+ return if status == "stable"
47
+
48
+ status.camelize
49
+ end
50
+
51
+ def status_module
52
+ return if status == "stable"
53
+
54
+ "#{status.camelize}::"
55
+ end
56
+
57
+ def stimulus_controller_identifier
58
+ status_identifier = "--#{status}" unless status == "stable"
59
+ name_identifier = underscore_name.gsub("_", "-")
60
+ "uistiti#{status_identifier}--#{name_identifier}"
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,3 @@
1
+ <div>
2
+ Put the html template of <%= class_name %> here
3
+ </div>
@@ -0,0 +1,8 @@
1
+ import { Controller } from "@hotwired/stimulus";
2
+
3
+ // this stimulus controller can be registered with identifier : <%= stimulus_controller_identifier %>
4
+ export default class extends Controller {
5
+ connect() {
6
+ console.log("Hello, from <%= underscore_name %> stimulus controller !", this.element);
7
+ }
8
+ }
@@ -0,0 +1,5 @@
1
+ /* CSS for <%= class_name %> */
2
+
3
+ .<%= class_name %> {
4
+
5
+ }
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Uistiti
4
+ <%= "module #{module_name}" if status_module %>
5
+ class <%= class_name %> < ViewComponent::Base
6
+ def initialize(<%= arguments.map{|argument| argument + ':'}.join(', ') %>)
7
+ super()
8
+ <% arguments.each do |argument| %>
9
+ <%= "@#{argument} = #{argument}" -%>
10
+ <% end %>
11
+ end
12
+ end
13
+ <%= "end" if status_module %>
14
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Setup Playground to use all available component props
4
+ # Setup Features to use individual component props and combinations
5
+
6
+ module Uistiti
7
+ module <%= module_name %>
8
+ class <%= class_name %>Preview < ViewComponent::Preview
9
+ # Declare each possible params bellow, please see how to declare params and annotate previews https://lookbook.build/guide/previews/annotations
10
+ <% arguments.each do |argument| %>
11
+ <%= "# @param #{argument}" -%>
12
+ <% end %>
13
+ def playground(<%= arguments.map{|argument| argument + ': ' + '\'some value\''}.join(', ') %>)
14
+ render(Uistiti::<%= status_module %><%= class_name %>.new(<%= arguments.map{|argument| argument + ':'}.join(', ') %>))
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ # we need to add specs here for <%= status_module %><%= class_name %>
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :uistiti do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,12 @@
1
+ require 'lookbook'
2
+ require 'view_component'
3
+
4
+ module Uistiti
5
+ class Engine < ::Rails::Engine
6
+ isolate_namespace Uistiti
7
+
8
+ #Show to lookbook where it can find the previews
9
+ Lookbook.config.preview_paths = [File.join(root, 'test/components/previews')]
10
+ Lookbook.config.preview_layout = "component_preview"
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module Uistiti
2
+ VERSION = "0.1.0"
3
+ end
data/lib/uistiti.rb ADDED
@@ -0,0 +1,6 @@
1
+ require "uistiti/version"
2
+ require "uistiti/engine"
3
+
4
+ module Uistiti
5
+ # Your code goes here...
6
+ end
metadata ADDED
@@ -0,0 +1,139 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: uistiti
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Tom Ecrepont
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-07-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 7.0.6
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 7.0.6
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.1'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '4.0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '3.1'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '4.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: lookbook
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 2.0.5
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 2.0.5
61
+ description: Ui responsive primitives with javascript and css included for increased
62
+ productivity
63
+ email:
64
+ - tomecrepont@gmail.com
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - MIT-LICENSE
70
+ - README.md
71
+ - Rakefile
72
+ - app/assets/config/uistiti_manifest.js
73
+ - app/assets/javascript/controllers/uistiti/alpha/flex/flex_controller.js
74
+ - app/assets/javascript/controllers/uistiti/alpha/image/image_controller.js
75
+ - app/assets/javascript/controllers/uistiti/alpha/link/link_controller.js
76
+ - app/assets/javascript/controllers/uistiti/alpha/main_layout/main_layout_controller.js
77
+ - app/assets/javascript/controllers/uistiti/alpha/navbar/navbar_controller.js
78
+ - app/assets/stylesheets/uistiti/components/alpha/flex.scss
79
+ - app/assets/stylesheets/uistiti/components/alpha/image.scss
80
+ - app/assets/stylesheets/uistiti/components/alpha/link.scss
81
+ - app/assets/stylesheets/uistiti/components/alpha/main_layout.scss
82
+ - app/assets/stylesheets/uistiti/components/alpha/navbar.scss
83
+ - app/assets/stylesheets/uistiti/config/_variables.scss
84
+ - app/assets/stylesheets/uistiti/uistiti.scss
85
+ - app/components/uistiti/alpha/flex.html.erb
86
+ - app/components/uistiti/alpha/flex.rb
87
+ - app/components/uistiti/alpha/image.html.erb
88
+ - app/components/uistiti/alpha/image.rb
89
+ - app/components/uistiti/alpha/link.html.erb
90
+ - app/components/uistiti/alpha/link.rb
91
+ - app/components/uistiti/alpha/main_layout.html.erb
92
+ - app/components/uistiti/alpha/main_layout.rb
93
+ - app/components/uistiti/alpha/navbar.html.erb
94
+ - app/components/uistiti/alpha/navbar.rb
95
+ - app/controllers/uistiti/application_controller.rb
96
+ - app/helpers/uistiti/application_helper.rb
97
+ - app/jobs/uistiti/application_job.rb
98
+ - app/mailers/uistiti/application_mailer.rb
99
+ - app/models/uistiti/application_record.rb
100
+ - app/views/layouts/uistiti/application.html.erb
101
+ - config/routes.rb
102
+ - lib/generators/uistiti/component_generator.rb
103
+ - lib/generators/uistiti/templates/component.html.tt
104
+ - lib/generators/uistiti/templates/component.js.tt
105
+ - lib/generators/uistiti/templates/component.scss.tt
106
+ - lib/generators/uistiti/templates/component.tt
107
+ - lib/generators/uistiti/templates/preview.tt
108
+ - lib/generators/uistiti/templates/spec.tt
109
+ - lib/tasks/uistiti_tasks.rake
110
+ - lib/uistiti.rb
111
+ - lib/uistiti/engine.rb
112
+ - lib/uistiti/version.rb
113
+ homepage: https://github.com/rails-hackathon/team-173
114
+ licenses:
115
+ - MIT
116
+ metadata:
117
+ homepage_uri: https://github.com/rails-hackathon/team-173
118
+ source_code_uri: https://github.com/rails-hackathon/team-173
119
+ changelog_uri: https://github.com/rails-hackathon/team-173
120
+ post_install_message:
121
+ rdoc_options: []
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ required_rubygems_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ requirements: []
135
+ rubygems_version: 3.4.15
136
+ signing_key:
137
+ specification_version: 4
138
+ summary: Ready to use ViewComponent libray
139
+ test_files: []