iconly 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +76 -0
  4. data/Rakefile +33 -0
  5. data/app/assets/config/iconly_manifest.js +2 -0
  6. data/app/assets/images/iconly/Noto-Sans-700.eot +0 -0
  7. data/app/assets/images/iconly/Noto-Sans-700.svg +336 -0
  8. data/app/assets/images/iconly/Noto-Sans-700.ttf +0 -0
  9. data/app/assets/images/iconly/Noto-Sans-700.woff +0 -0
  10. data/app/assets/images/iconly/Noto-Sans-700.woff2 +0 -0
  11. data/app/assets/images/iconly/Noto-Sans-regular.eot +0 -0
  12. data/app/assets/images/iconly/Noto-Sans-regular.svg +335 -0
  13. data/app/assets/images/iconly/Noto-Sans-regular.ttf +0 -0
  14. data/app/assets/images/iconly/Noto-Sans-regular.woff +0 -0
  15. data/app/assets/images/iconly/Noto-Sans-regular.woff2 +0 -0
  16. data/app/assets/images/iconly/Source-Sans-Pro-600.eot +0 -0
  17. data/app/assets/images/iconly/Source-Sans-Pro-600.svg +339 -0
  18. data/app/assets/images/iconly/Source-Sans-Pro-600.ttf +0 -0
  19. data/app/assets/images/iconly/Source-Sans-Pro-600.woff +0 -0
  20. data/app/assets/images/iconly/Source-Sans-Pro-600.woff2 +0 -0
  21. data/app/assets/images/iconly/Source-Sans-Pro-regular.eot +0 -0
  22. data/app/assets/images/iconly/Source-Sans-Pro-regular.svg +345 -0
  23. data/app/assets/images/iconly/Source-Sans-Pro-regular.ttf +0 -0
  24. data/app/assets/images/iconly/Source-Sans-Pro-regular.woff +0 -0
  25. data/app/assets/images/iconly/Source-Sans-Pro-regular.woff2 +0 -0
  26. data/app/assets/images/iconly/favicon.png +0 -0
  27. data/app/assets/images/iconly/iconly.eot +0 -0
  28. data/app/assets/images/iconly/iconly.svg +157 -0
  29. data/app/assets/images/iconly/iconly.ttf +0 -0
  30. data/app/assets/images/iconly/iconly.woff +0 -0
  31. data/app/assets/javascripts/iconly/application.js +24 -0
  32. data/app/assets/javascripts/iconly/iconly.coffee +5 -0
  33. data/app/assets/javascripts/iconly/jquery.sticky.js +268 -0
  34. data/app/assets/javascripts/iconly/package.coffee +25 -0
  35. data/app/assets/javascripts/iconly/project.coffee +68 -0
  36. data/app/assets/javascripts/iconly/scroller.coffee +17 -0
  37. data/app/assets/stylesheets/iconly/application.scss +21 -0
  38. data/app/assets/stylesheets/iconly/buttons.scss +314 -0
  39. data/app/assets/stylesheets/iconly/file_input.scss +25 -0
  40. data/app/assets/stylesheets/iconly/header.scss +179 -0
  41. data/app/assets/stylesheets/iconly/iconly.scss.erb +61 -0
  42. data/app/assets/stylesheets/iconly/layout.scss +269 -0
  43. data/app/assets/stylesheets/iconly/overrides.scss +58 -0
  44. data/app/assets/stylesheets/iconly/typography.scss.erb +48 -0
  45. data/app/controllers/iconly/application_controller.rb +8 -0
  46. data/app/controllers/iconly/packages_controller.rb +54 -0
  47. data/app/controllers/iconly/project_icons_controller.rb +24 -0
  48. data/app/controllers/iconly/projects_controller.rb +67 -0
  49. data/app/helpers/iconly/application_helper.rb +35 -0
  50. data/app/helpers/iconly/packages_helper.rb +29 -0
  51. data/app/helpers/iconly/project_icons_helper.rb +4 -0
  52. data/app/helpers/iconly/projects_helper.rb +4 -0
  53. data/app/helpers/iconly/sessions_helper.rb +43 -0
  54. data/app/jobs/iconly/application_job.rb +4 -0
  55. data/app/mailers/iconly/application_mailer.rb +6 -0
  56. data/app/models/iconly/application_record.rb +5 -0
  57. data/app/models/iconly/icon.rb +44 -0
  58. data/app/models/iconly/package.rb +5 -0
  59. data/app/models/iconly/project.rb +5 -0
  60. data/app/models/iconly/project/downloader.rb +50 -0
  61. data/app/models/iconly/project/font_generator.rb +65 -0
  62. data/app/models/iconly/project_icon.rb +23 -0
  63. data/app/models/iconly/user.rb +5 -0
  64. data/app/uploaders/iconly/svg_uploader.rb +51 -0
  65. data/app/views/iconly/packages/_form.html.erb +48 -0
  66. data/app/views/iconly/packages/new.html.erb +5 -0
  67. data/app/views/iconly/projects/_form.html.erb +25 -0
  68. data/app/views/iconly/projects/_packages.html.erb +91 -0
  69. data/app/views/iconly/projects/edit.html.erb +5 -0
  70. data/app/views/iconly/projects/index.html.erb +37 -0
  71. data/app/views/iconly/projects/new.html.erb +5 -0
  72. data/app/views/iconly/projects/show.html.erb +53 -0
  73. data/app/views/layouts/iconly/_footer.html.erb +18 -0
  74. data/app/views/layouts/iconly/_header.html.erb +89 -0
  75. data/app/views/layouts/iconly/application.html.erb +29 -0
  76. data/config/fontcustom/fontcustom_manifest.yml +53 -0
  77. data/config/fontcustom/templates/iconly.css +28 -0
  78. data/config/routes.rb +13 -0
  79. data/db/migrate/20170130210746_enable_uuid_extension.rb +5 -0
  80. data/db/migrate/20170130211049_create_iconly_users.rb +9 -0
  81. data/db/migrate/20170130220400_create_iconly_packages.rb +12 -0
  82. data/db/migrate/20170131002414_create_iconly_icons.rb +13 -0
  83. data/db/migrate/20170131081131_create_iconly_projects.rb +11 -0
  84. data/db/migrate/20170131084626_create_iconly_project_icons.rb +10 -0
  85. data/db/migrate/20170203144731_add_icon_count_to_packages.rb +5 -0
  86. data/lib/iconly.rb +22 -0
  87. data/lib/iconly/concerns/models/package.rb +41 -0
  88. data/lib/iconly/concerns/models/project.rb +27 -0
  89. data/lib/iconly/concerns/models/user.rb +23 -0
  90. data/lib/iconly/engine.rb +5 -0
  91. data/lib/iconly/version.rb +3 -0
  92. data/lib/iconly/zip_file_generator.rb +58 -0
  93. data/lib/tasks/iconly_tasks.rake +4 -0
  94. metadata +374 -0
@@ -0,0 +1,25 @@
1
+ .btn-file {
2
+ position: relative;
3
+ overflow: hidden;
4
+ display: inline-block;
5
+ }
6
+ .btn-file input {
7
+ position: absolute;
8
+ top: 0;
9
+ right: 0;
10
+ margin: 0;
11
+ opacity: 0;
12
+ -ms-filter: 'alpha(opacity=0)';
13
+ font-size: 200px !important;
14
+ direction: ltr;
15
+ cursor: pointer;
16
+ }
17
+
18
+ /* Fixes for IE < 8 */
19
+ @media screen\9 {
20
+ .btn-file input {
21
+ filter: alpha(opacity=0);
22
+ font-size: 100%;
23
+ height: 100%;
24
+ }
25
+ }
@@ -0,0 +1,179 @@
1
+ $nav-link-color: #6e7b88;
2
+
3
+ .app-header {
4
+ background: #36404a;
5
+
6
+ .navbar-nav {
7
+ .nav-link {
8
+ color: $nav-link-color;
9
+ font-weight: bold;
10
+ transition: color .2s;
11
+
12
+ &:hover {
13
+ color: #fff;
14
+ }
15
+ }
16
+
17
+ .show .nav-link {
18
+ color: #fff;
19
+ }
20
+ }
21
+
22
+ .navbar-nav > li > .dropdown-menu {
23
+ margin-top: .45rem !important;
24
+ font-size: inherit;
25
+ border-top-left-radius: 0;
26
+ border-top-right-radius: 0;
27
+ }
28
+
29
+ .first {
30
+ margin-left: 3em;
31
+ }
32
+
33
+ .nav-link-in {
34
+ height: 36px;
35
+ line-height: 36px;
36
+ display: inline-block;
37
+
38
+ img {
39
+ height: 100%;
40
+ width: 100%;
41
+ position: absolute;
42
+ top: 0;
43
+ left: 0;
44
+ }
45
+ }
46
+
47
+ .nav-btn {
48
+ height: 30px;
49
+ margin-top: .5rem;
50
+ padding-top: .3rem;
51
+ }
52
+
53
+ .user {
54
+ .dropdown-menu {
55
+ margin-top: .4rem !important;
56
+ }
57
+
58
+ .dropdown-toggle {
59
+ &:after {
60
+ border-bottom-color: $nav-link-color;
61
+ position: relative;
62
+ top: -.5rem;
63
+ }
64
+ }
65
+
66
+ .nav-link-in {
67
+ width: 36px;
68
+ position: relative;
69
+ border: 2px solid $nav-link-color;
70
+ border-radius: 50%;
71
+ overflow: hidden;
72
+ position: relative;
73
+ top: .3rem;
74
+ }
75
+
76
+ .placeholder {
77
+ color: $nav-link-color;
78
+ position: absolute;
79
+ top: 50%;
80
+ left: 50%;
81
+ margin-top: -18px;
82
+ margin-left: -7px;
83
+ display: none;
84
+ }
85
+
86
+ .img-false .placeholder {
87
+ display: block;
88
+ }
89
+ }
90
+
91
+ .app-search {
92
+ margin-top: .7rem;
93
+ padding-left: 24px;
94
+ padding-right: 10px;
95
+ background: rgba(255, 255, 255, 0.1);
96
+ box-shadow: none;
97
+ border-radius: 30px;
98
+ height: 30px;
99
+ width: 11rem;
100
+ position: relative;
101
+
102
+ .form-control {
103
+ font-size: 13px;
104
+ border: none;
105
+ background: transparent;
106
+ width: 100%;
107
+ color: #fff;
108
+ }
109
+
110
+ .magnifier {
111
+ position: absolute;
112
+ top: .2rem;
113
+ left: 1rem;
114
+ color: #99a4ab;
115
+
116
+ &:before {
117
+ font-size: .7rem;
118
+ }
119
+ }
120
+ }
121
+
122
+ .navbar-toggler {
123
+ position: absolute;
124
+ left: 7.5rem;
125
+ top: 1rem;
126
+ }
127
+
128
+ .navbar-user {
129
+ position: absolute;
130
+ right: 1rem;
131
+ text-align: right;
132
+
133
+ &.signed-in-true {
134
+ top: -.3rem;
135
+ }
136
+ }
137
+ }
138
+
139
+ input:-webkit-autofill {
140
+ background: transparent;
141
+ }
142
+
143
+ .navbar-brand {
144
+ color: #fff !important;
145
+ letter-spacing: .05em;
146
+ text-transform: uppercase;
147
+ font-weight: bold;
148
+ }
149
+
150
+ @media(max-width: 768px) {
151
+ .app-header {
152
+ .app-search {
153
+ margin-top: .5rem;
154
+ margin-left: 0;
155
+ margin-bottom: .5rem;
156
+ width: 100%;
157
+
158
+ .magnifier {
159
+ right: 2rem;
160
+ }
161
+ }
162
+
163
+ .navbar-user {
164
+ .nav-link {
165
+ padding-top: .2rem;
166
+ }
167
+
168
+ .dropdown-menu {
169
+ margin-top: -.5rem !important;
170
+ border-top-right-radius: 4px;
171
+ border-top-left-radius: 4px;
172
+ }
173
+ }
174
+
175
+ .navbar-brand {
176
+ padding-top: .4rem;
177
+ }
178
+ }
179
+ }
@@ -0,0 +1,61 @@
1
+ @font-face {
2
+ font-family: "iconly";
3
+ src: url(<%= asset_path "iconly/iconly.eot" %>);
4
+ src: url(<%= asset_path "iconly/iconly.eot?#iefix" %>) format("embedded-opentype"),
5
+ url(<%= asset_path "iconly/iconly.woff" %>) format("woff"),
6
+ url(<%= asset_path "iconly/iconly.ttf" %>) format("truetype"),
7
+ url(<%= asset_path "iconly/iconly.svg#iconly" %>) format("svg");
8
+ font-weight: normal;
9
+ font-style: normal;
10
+ font-size: 14px;
11
+ }
12
+
13
+ [data-icon]:before { content: attr(data-icon); }
14
+
15
+ [data-icon]:before,
16
+ .iconly-baby:before,
17
+ .iconly-baby2:before,
18
+ .iconly-cross:before,
19
+ .iconly-earth:before,
20
+ .iconly-file-add:before,
21
+ .iconly-file-check:before,
22
+ .iconly-file-empty:before,
23
+ .iconly-files:before,
24
+ .iconly-folder-download:before,
25
+ .iconly-folder-plus:before,
26
+ .iconly-github:before,
27
+ .iconly-magnifier:before,
28
+ .iconly-menu:before,
29
+ .iconly-pencil:before,
30
+ .iconly-power-switch:before,
31
+ .iconly-trash:before,
32
+ .iconly-user:before {
33
+ display: inline-block;
34
+ font-family: "iconly";
35
+ font-style: normal;
36
+ font-weight: normal;
37
+ font-variant: normal;
38
+ line-height: 1;
39
+ text-decoration: inherit;
40
+ text-transform: none;
41
+ -moz-osx-font-smoothing: grayscale;
42
+ -webkit-font-smoothing: antialiased;
43
+ }
44
+
45
+ .iconly-baby:before { content: "\f139"; }
46
+ .iconly-baby2:before { content: "\f13a"; }
47
+ .iconly-cross:before { content: "\f13b"; }
48
+ .iconly-earth:before { content: "\f13c"; }
49
+ .iconly-file-add:before { content: "\f13d"; }
50
+ .iconly-file-check:before { content: "\f13e"; }
51
+ .iconly-file-empty:before { content: "\f13f"; }
52
+ .iconly-files:before { content: "\f140"; }
53
+ .iconly-folder-download:before { content: "\f141"; }
54
+ .iconly-folder-plus:before { content: "\f142"; }
55
+ .iconly-github:before { content: "\f149"; }
56
+ .iconly-magnifier:before { content: "\f143"; }
57
+ .iconly-menu:before { content: "\f144"; }
58
+ .iconly-pencil:before { content: "\f146"; }
59
+ .iconly-power-switch:before { content: "\f147"; }
60
+ .iconly-trash:before { content: "\f148"; }
61
+ .iconly-user:before { content: "\f14a"; }
@@ -0,0 +1,269 @@
1
+ html, body {
2
+ height: 100%;
3
+ }
4
+
5
+ body {
6
+ font-family: $body-font;
7
+ font-size: 14px;
8
+ padding-top: 6rem;
9
+ position: relative;
10
+ background: #ebeff2;
11
+ margin: 0;
12
+ overflow-x: hidden;
13
+ background: #ebeff2;
14
+ color: #797979;
15
+ }
16
+
17
+ html {
18
+ position: relative;
19
+ min-height: 100%;
20
+ }
21
+ h1,
22
+ h2,
23
+ h3,
24
+ h4,
25
+ h5,
26
+ h6 {
27
+ color: $color-dark;
28
+ font-family: $heading-font;
29
+ margin: 10px 0;
30
+ }
31
+
32
+ h1 {
33
+ font-size: 1.3rem;
34
+ font-weight: bold;
35
+ }
36
+
37
+ h2 {
38
+ font-size: .9rem;
39
+ }
40
+
41
+ h3 {
42
+ font-size: 1.05rem;
43
+ }
44
+
45
+ h3 small {
46
+ color: #444444;
47
+ }
48
+
49
+ h4 {
50
+ font-size: 1rem;
51
+ font-weight: bold;
52
+ }
53
+
54
+ h4 small {
55
+ color: #444;
56
+ }
57
+
58
+ h5 {
59
+ font-size: 1rem;
60
+ }
61
+
62
+ a, a:visited, a:hover, a:focus {
63
+ text-decoration: none;
64
+ }
65
+
66
+ .font-600 {
67
+ font-weight: 600;
68
+ }
69
+
70
+ .font-bold {
71
+ font-weight: 700;
72
+ }
73
+
74
+ .font-normal {
75
+ font-weight: normal;
76
+ }
77
+
78
+ .font-light {
79
+ font-weight: 300;
80
+ }
81
+
82
+ .font-lg {
83
+ font-size: 4rem;
84
+ }
85
+
86
+ .text-sm {
87
+ font-size: .8rem;
88
+ }
89
+
90
+ .text-pale {
91
+ color: $color-pale;
92
+ }
93
+
94
+ .text-dark,
95
+ .text-dark a {
96
+ color: $color-dark;
97
+ }
98
+
99
+ .app-body {
100
+ position: relative;
101
+ padding-bottom: 7rem;
102
+ min-height: 100%;
103
+ }
104
+
105
+ .app-footer {
106
+ position: absolute;
107
+ bottom: 0;
108
+ left: 0;
109
+ width: 100%;
110
+ padding-top: 1rem;
111
+ padding-bottom: 1rem;
112
+ border-top: 1px solid #ddd;
113
+ }
114
+
115
+ .page-header {
116
+ margin-bottom: 2rem;
117
+ }
118
+
119
+ .sidebar {
120
+ font-family: $heading-font;
121
+
122
+ a, a:visited {
123
+ line-height: 1;
124
+ }
125
+
126
+ table {
127
+ width: 100%;
128
+ }
129
+ }
130
+
131
+ // buttons
132
+
133
+ .btn-svg {
134
+ width: 3rem;
135
+ height: 3rem;
136
+ transition: background .2s;
137
+ margin-bottom: .5rem;
138
+ margin-right: .3rem;
139
+ text-align: center;
140
+
141
+ &.selected {
142
+ background: #ccc;
143
+ }
144
+
145
+ svg, img {
146
+ margin-left: calc(50% - 0.7rem);
147
+ width: 24px;
148
+ height: 24px;
149
+ position: relative;
150
+ top: 50%;
151
+ -webkit-transform: translateY(-50%);
152
+ transform: translateY(-50%);
153
+ }
154
+
155
+ &.btn-sm {
156
+ width: 2.2rem;
157
+ height: 2.2rem;
158
+
159
+ svg, img {
160
+ max-width: 1.2rem;
161
+ max-height: 1.2rem;
162
+ }
163
+ }
164
+
165
+ &.remove {
166
+ position: relative;
167
+ transition: none;
168
+
169
+ .rm {
170
+ position: absolute;
171
+ top: -.4rem;
172
+ right: -.4rem;
173
+ font-size: .6rem;
174
+ background: #fff;
175
+ border-radius: 50%;
176
+ width: 1.2rem;
177
+ height: 1.2rem;
178
+ line-height: 1.3rem;
179
+ text-align: center;
180
+ display: none;
181
+
182
+ &:before {
183
+ font-size: 12px;
184
+ }
185
+ }
186
+
187
+ &:hover .rm {
188
+ display: block;
189
+ }
190
+ }
191
+ }
192
+
193
+ .project-pkg-true {
194
+ .btn-svg:hover {
195
+ background: #ddd;
196
+ cursor: pointer;
197
+ }
198
+
199
+ .card .btn-svg:hover {
200
+ background: #eee;
201
+ }
202
+ }
203
+
204
+ .package-files {
205
+ text-align: left;
206
+ margin-bottom: 1.5rem;
207
+ background: #f4f8fb;
208
+ padding: 1rem;
209
+ border-radius: .3rem;
210
+ box-shadow: 0 1px 5px rgba(178, 203, 222, 0.69) inset;
211
+
212
+ .in {
213
+ height: 10rem;
214
+ overflow: hidden;
215
+ overflow-y: auto;
216
+ }
217
+
218
+ .badge {
219
+ font-weight: normal;
220
+ margin-right: .2rem;
221
+ padding: .2rem .3rem;
222
+ }
223
+ }
224
+
225
+ .inline-links {
226
+ a, a:visited {
227
+ color: $color-pale;
228
+ padding: .2rem .5rem;
229
+ display: inline-block;
230
+ border-radius: .15rem;
231
+ }
232
+
233
+ a:hover {
234
+ background: #ddd;
235
+ }
236
+
237
+ a:active {
238
+ background: #ccc;
239
+ }
240
+
241
+ a.shared {
242
+ color: $brand-default;
243
+ }
244
+ }
245
+
246
+ // utils
247
+
248
+ .m-a-0:after {
249
+ margin: 0;
250
+ }
251
+
252
+ .mr-05 {
253
+ margin-right: .5rem;
254
+ }
255
+
256
+ .mt-05 {
257
+ margin-top: .5rem;
258
+ }
259
+
260
+ .brd-btm {
261
+ border-bottom: 1px solid #ddd;
262
+ padding-bottom: .8rem;
263
+ }
264
+
265
+ @media(max-width: 768px) {
266
+ body {
267
+ padding-top: 8rem;
268
+ }
269
+ }