biovision 0.0.200518.1

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 (170) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +214 -0
  4. data/Rakefile +22 -0
  5. data/app/assets/config/biovision_manifest.js +1 -0
  6. data/app/assets/images/biovision/components/carousel/arrow-left.svg +4 -0
  7. data/app/assets/images/biovision/components/carousel/arrow-right.svg +4 -0
  8. data/app/assets/images/biovision/icons/breadcrumb-hover.svg +1 -0
  9. data/app/assets/images/biovision/icons/breadcrumb.svg +1 -0
  10. data/app/assets/images/biovision/icons/components/contact.svg +26 -0
  11. data/app/assets/images/biovision/icons/components/content.svg +20 -0
  12. data/app/assets/images/biovision/icons/components/users.svg +21 -0
  13. data/app/assets/images/biovision/icons/key.svg +16 -0
  14. data/app/assets/images/biovision/icons/log_in.svg +15 -0
  15. data/app/assets/images/biovision/icons/log_out.svg +15 -0
  16. data/app/assets/images/biovision/icons/messages/error.svg +14 -0
  17. data/app/assets/images/biovision/icons/messages/info.svg +8 -0
  18. data/app/assets/images/biovision/icons/messages/success.svg +12 -0
  19. data/app/assets/images/biovision/icons/messages/warning.svg +13 -0
  20. data/app/assets/images/biovision/icons/settings.svg +41 -0
  21. data/app/assets/images/biovision/placeholders/16x9.svg +11 -0
  22. data/app/assets/images/biovision/placeholders/1x1.svg +11 -0
  23. data/app/assets/images/biovision/placeholders/3x2.svg +11 -0
  24. data/app/assets/images/biovision/placeholders/user.svg +15 -0
  25. data/app/assets/stylesheets/biovision/admin.scss +6 -0
  26. data/app/assets/stylesheets/biovision/admin/components.scss +59 -0
  27. data/app/assets/stylesheets/biovision/admin/default.scss +57 -0
  28. data/app/assets/stylesheets/biovision/admin/layout.scss +95 -0
  29. data/app/assets/stylesheets/biovision/admin/vars.scss +56 -0
  30. data/app/assets/stylesheets/biovision/biovision.scss +134 -0
  31. data/app/assets/stylesheets/biovision/biovision/messages.scss +41 -0
  32. data/app/assets/stylesheets/biovision/components/carousel.scss +53 -0
  33. data/app/assets/stylesheets/biovision/components/forms.scss +85 -0
  34. data/app/assets/stylesheets/biovision/components/hamburger.scss +56 -0
  35. data/app/assets/stylesheets/biovision/components/lists.scss +91 -0
  36. data/app/assets/stylesheets/biovision/default.scss +57 -0
  37. data/app/assets/stylesheets/biovision/themes/default_theme.scss +2 -0
  38. data/app/assets/stylesheets/biovision/themes/default_theme/components.scss +3 -0
  39. data/app/assets/stylesheets/biovision/themes/default_theme/layout.scss +44 -0
  40. data/app/assets/stylesheets/biovision/themes/default_theme/layout/footer.scss +0 -0
  41. data/app/assets/stylesheets/biovision/themes/default_theme/layout/header.scss +39 -0
  42. data/app/assets/stylesheets/biovision/vars.scss +53 -0
  43. data/app/controllers/admin/agents_controller.rb +15 -0
  44. data/app/controllers/admin/components_controller.rb +174 -0
  45. data/app/controllers/admin/index_controller.rb +11 -0
  46. data/app/controllers/admin/ip_addresses_controller.rb +15 -0
  47. data/app/controllers/admin_controller.rb +14 -0
  48. data/app/controllers/authentication_controller.rb +79 -0
  49. data/app/controllers/concerns/authentication.rb +45 -0
  50. data/app/controllers/index_controller.rb +8 -0
  51. data/app/controllers/my/confirmations_controller.rb +2 -0
  52. data/app/controllers/my/index_controller.rb +8 -0
  53. data/app/controllers/my/profiles_controller.rb +128 -0
  54. data/app/controllers/my/recoveries_controller.rb +2 -0
  55. data/app/helpers/biovision_components_helper.rb +14 -0
  56. data/app/helpers/users_helper.rb +11 -0
  57. data/app/lib/biovision/components/base_component.rb +177 -0
  58. data/app/lib/biovision/components/component_settings.rb +30 -0
  59. data/app/lib/biovision/components/privilege_handler.rb +77 -0
  60. data/app/lib/biovision/components/track_component.rb +9 -0
  61. data/app/lib/biovision/components/users/authentication.rb +47 -0
  62. data/app/lib/biovision/components/users/code_handler.rb +23 -0
  63. data/app/lib/biovision/components/users/profile_handler.rb +12 -0
  64. data/app/lib/biovision/components/users/registration_handler.rb +99 -0
  65. data/app/lib/biovision/components/users_component.rb +47 -0
  66. data/app/lib/biovision/notifiers/base_notifier.rb +69 -0
  67. data/app/lib/biovision/notifiers/socialization_notifier.rb +31 -0
  68. data/app/lib/biovision/notifiers/users_notifier.rb +15 -0
  69. data/app/models/agent.rb +35 -0
  70. data/app/models/biovision_component.rb +45 -0
  71. data/app/models/biovision_component_user.rb +21 -0
  72. data/app/models/browser.rb +34 -0
  73. data/app/models/code.rb +71 -0
  74. data/app/models/concerns/checkable.rb +22 -0
  75. data/app/models/concerns/flat_priority.rb +50 -0
  76. data/app/models/concerns/has_language.rb +10 -0
  77. data/app/models/concerns/has_owner.rb +22 -0
  78. data/app/models/concerns/has_simple_image.rb +18 -0
  79. data/app/models/concerns/has_track.rb +10 -0
  80. data/app/models/concerns/has_uuid.rb +12 -0
  81. data/app/models/concerns/meta_texts.rb +16 -0
  82. data/app/models/concerns/nested_priority.rb +58 -0
  83. data/app/models/concerns/required_unique_name.rb +16 -0
  84. data/app/models/concerns/required_unique_slug.rb +15 -0
  85. data/app/models/concerns/toggleable.rb +33 -0
  86. data/app/models/foreign_site.rb +34 -0
  87. data/app/models/foreign_user.rb +21 -0
  88. data/app/models/ip_address.rb +31 -0
  89. data/app/models/language.rb +31 -0
  90. data/app/models/login_attempt.rb +35 -0
  91. data/app/models/metric.rb +48 -0
  92. data/app/models/metric_value.rb +11 -0
  93. data/app/models/notification.rb +37 -0
  94. data/app/models/simple_image.rb +47 -0
  95. data/app/models/simple_image_tag.rb +30 -0
  96. data/app/models/simple_image_tag_image.rb +13 -0
  97. data/app/models/token.rb +96 -0
  98. data/app/models/user.rb +136 -0
  99. data/app/models/user_language.rb +15 -0
  100. data/app/uploaders/simple_image_uploader.rb +96 -0
  101. data/app/uploaders/user_image_uploader.rb +58 -0
  102. data/app/views/admin/agents/_nav_item.html.erb +6 -0
  103. data/app/views/admin/agents/entity/_in_list.html.erb +6 -0
  104. data/app/views/admin/agents/index.html.erb +13 -0
  105. data/app/views/admin/components/_list.html.erb +12 -0
  106. data/app/views/admin/components/entity/_links.html.erb +35 -0
  107. data/app/views/admin/components/entity/_section.html.erb +12 -0
  108. data/app/views/admin/components/index.html.erb +12 -0
  109. data/app/views/admin/components/links/_track.html.erb +2 -0
  110. data/app/views/admin/components/links/_users.html.erb +11 -0
  111. data/app/views/admin/components/privileges.html.erb +20 -0
  112. data/app/views/admin/components/privileges/_component_user.html.erb +17 -0
  113. data/app/views/admin/components/privileges/_links.html.erb +35 -0
  114. data/app/views/admin/components/privileges/_privilege_flag.html.erb +28 -0
  115. data/app/views/admin/components/privileges/_users.html.erb +23 -0
  116. data/app/views/admin/components/settings.html.erb +39 -0
  117. data/app/views/admin/components/settings/_new_parameter.html.erb +46 -0
  118. data/app/views/admin/components/settings/_parameters.html.erb +20 -0
  119. data/app/views/admin/components/settings/_setting.html.erb +18 -0
  120. data/app/views/admin/components/settings/_settings.html.erb +31 -0
  121. data/app/views/admin/components/show.html.erb +14 -0
  122. data/app/views/admin/index/index.html.erb +14 -0
  123. data/app/views/admin/ip_addresses/_nav_item.html.erb +6 -0
  124. data/app/views/admin/ip_addresses/entity/_in_list.html.erb +6 -0
  125. data/app/views/admin/ip_addresses/index.html.erb +13 -0
  126. data/app/views/admin/unauthorized.html.erb +19 -0
  127. data/app/views/authentication/_form.html.erb +40 -0
  128. data/app/views/authentication/failed.js.erb +3 -0
  129. data/app/views/authentication/new.html.erb +21 -0
  130. data/app/views/index/index.html.erb +0 -0
  131. data/app/views/layouts/admin.html.erb +23 -0
  132. data/app/views/layouts/admin/_breadcrumbs.html.erb +8 -0
  133. data/app/views/layouts/admin/_footer.html.erb +10 -0
  134. data/app/views/layouts/admin/_header.html.erb +18 -0
  135. data/app/views/layouts/admin/header/_logo.html.erb +3 -0
  136. data/app/views/layouts/application/_footer.html.erb +8 -0
  137. data/app/views/layouts/application/_header.html.erb +9 -0
  138. data/app/views/layouts/application/header/_authentication.html.erb +13 -0
  139. data/app/views/my/index/index.html.erb +0 -0
  140. data/app/views/my/profiles/closed.html.erb +12 -0
  141. data/app/views/my/profiles/new.html.erb +17 -0
  142. data/app/views/my/profiles/new/_form.html.erb +147 -0
  143. data/app/views/shared/_breadcrumbs.html.erb +8 -0
  144. data/app/views/shared/_cookie_notification.html.erb +4 -0
  145. data/app/views/shared/_flash_messages.html.erb +7 -0
  146. data/app/views/shared/_meta_texts.html.erb +31 -0
  147. data/app/views/shared/_nothing_found.html.erb +1 -0
  148. data/app/views/shared/_pagination.jbuilder +15 -0
  149. data/app/views/shared/admin/_list.html.erb +19 -0
  150. data/app/views/shared/admin/_list_with_priority.html.erb +19 -0
  151. data/app/views/shared/admin/_toggleable.html.erb +8 -0
  152. data/app/views/shared/entity/_list_of_errors.html.erb +7 -0
  153. data/app/views/shared/forms/errors.js.erb +5 -0
  154. data/config/initializers/carrierwave.rb +27 -0
  155. data/config/initializers/pluralization.rb +2 -0
  156. data/config/locales/biovision-ru.yml +90 -0
  157. data/config/locales/components-ru.yml +81 -0
  158. data/config/locales/track-ru.yml +40 -0
  159. data/config/locales/users-ru.yml +130 -0
  160. data/config/routes.rb +75 -0
  161. data/db/migrate/20191228000000_create_biovision_components.rb +72 -0
  162. data/db/migrate/20200224000000_create_track_component.rb +59 -0
  163. data/db/migrate/20200224000010_create_users_component.rb +189 -0
  164. data/db/migrate/20200404000000_create_simple_images.rb +54 -0
  165. data/lib/biovision.rb +9 -0
  166. data/lib/biovision/base_methods.rb +167 -0
  167. data/lib/biovision/engine.rb +40 -0
  168. data/lib/biovision/version.rb +5 -0
  169. data/lib/tasks/biovision_tasks.rake +4 -0
  170. metadata +392 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 817fb32980253517bb13eeff8c2d01ba994c82db093c58f8a770c212ecee25c6
4
+ data.tar.gz: b29d966a12f8dda98db8777e7f224001ee40f9f67c58c3192a5eda0d970e9e65
5
+ SHA512:
6
+ metadata.gz: 27904974e644b24f35aef5366e9e92927971a1c20e255b919724aadc27ac8854dcdb2f9dd2f83a0b8bec8358878bbdd36f877b721d29529f7336e6bf8e628f9b
7
+ data.tar.gz: 6eece2a2e1742e4438a949ff2718be4d16d03b4b767c0804c39243454d60967fe256722d81e2531c81c7f03e60245082d36d236d9593b029bec685bc58b62959
@@ -0,0 +1,20 @@
1
+ Copyright 2019 Maxim Khan-Magomedov
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.
@@ -0,0 +1,214 @@
1
+ # Biovision
2
+
3
+ Новая версия Biovision CMS. Используйте на свой страх и риск.
4
+
5
+ ## Добавления в `.gitignore`
6
+
7
+ ```
8
+ /public/uploads
9
+
10
+ /spec/examples.txt
11
+ /spec/support/uploads/*
12
+
13
+ .env
14
+ ```
15
+
16
+ ## После изменений в `.gitignore`
17
+
18
+ Далее, первым делом надо из папки sample в корне проекта `biovision` скопировать
19
+ файлы в корень своего проекта (прямо поверх того, что там уже есть).
20
+
21
+ Не забудь отредактировать `.env`, девелопернейм!
22
+
23
+ Ещё нужно поменять `example.com` на актуальное название.
24
+
25
+ Также стоит удалить `app/assets/application.css`, так как используется scss,
26
+ и локаль `config/locales/en.yml`, если не планируется использование английской
27
+ локали.
28
+
29
+ ## Добавления в `Gemfile`
30
+
31
+ ```ruby
32
+ gem 'dotenv-rails'
33
+
34
+ gem 'autoprefixer-rails', group: :production
35
+
36
+ gem 'biovision', git: 'https://github.com/Biovision/biovision.git'
37
+ # gem 'biovision', path: '/Users/maxim/Projects/Biovision/gems/biovision'
38
+
39
+ group :development, :test do
40
+ gem 'database_cleaner'
41
+ gem 'factory_bot_rails'
42
+ gem 'rspec-rails'
43
+ end
44
+
45
+ group :development do
46
+ gem 'mina'
47
+ end
48
+ ```
49
+
50
+ ## Изменения в `config/environments/production.rb`
51
+
52
+ Нужно раскомментировать строку `config.require_master_key = true` (на момент
53
+ написания это `19` строка).
54
+
55
+ Нужно выставить уровень сообщения об ошибках в `:warn`
56
+ (`config.log_level = :warn` в районе `54` строки).
57
+
58
+ ## Изменения в `app/mailers/application_mailer.rb`
59
+
60
+ Нужно удалить строку с отправителем по умолчанию
61
+ (`default from: 'from@example.com'`), иначе при отправке писем в бою будет
62
+ ошибка с неправильным отправителем, независимо от того, что написано
63
+ в конфигурации в `production.rb`.
64
+
65
+ ## Актуализация `config/database.yml`
66
+
67
+ В файле `config/database.yml` нужно поменять названия баз данных на актуальные:
68
+
69
+ ```yaml
70
+ default: &default
71
+ adapter: postgresql
72
+ encoding: unicode
73
+ pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
74
+
75
+ development:
76
+ <<: *default
77
+ database: example # Поменять на актуальное название
78
+
79
+ test:
80
+ <<: *default
81
+ database: example_test # Такое же, как в development, но с приставкой _test
82
+
83
+ production:
84
+ <<: *default
85
+ database: example # Такое же, как в development, например
86
+ username: example # Поменять на актуального пользователя
87
+ password: <%= ENV['DATABASE_PASSWORD'] %>
88
+ host: localhost
89
+ ```
90
+
91
+ ## Добавления в config/application.rb
92
+
93
+ Это добавляется в блок конфигурирования. Без этой настройки часовой пояс будет
94
+ задан как UTC.
95
+
96
+ ```ruby
97
+ config.time_zone = 'Moscow'
98
+ ```
99
+
100
+ ## Добавления в `config/application_controller.rb`
101
+
102
+ Добавить это в начале класса.
103
+
104
+ ```ruby
105
+ def default_url_options
106
+ params.key?(:locale) ? { locale: I18n.locale } : {}
107
+ end
108
+ ```
109
+
110
+ ## Добавления в `config/routes.rb`
111
+
112
+ ```ruby
113
+ concern :check do
114
+ post :check, on: :collection, defaults: { format: :json }
115
+ end
116
+
117
+ concern :toggle do
118
+ post :toggle, on: :member, defaults: { format: :json }
119
+ end
120
+
121
+ concern :priority do
122
+ post :priority, on: :member, defaults: { format: :json }
123
+ end
124
+
125
+ concern :removable_image do
126
+ delete :image, action: :destroy_image, on: :member, defaults: { format: :json }
127
+ end
128
+
129
+ concern :lock do
130
+ member do
131
+ put :lock, defaults: { format: :json }
132
+ delete :lock, action: :unlock, defaults: { format: :json }
133
+ end
134
+ end
135
+
136
+ scope '(:locale)', constraints: { locale: /ru|en/ } do
137
+ root 'index#index'
138
+ end
139
+ ```
140
+
141
+ ## Дополнения в config/puma.rb
142
+
143
+ Нужно обязательно закомментировать строку с портом, так как используется сокет.
144
+ На момент написания документации это `12` строка:
145
+ `port ENV.fetch("PORT") { 3000 }`
146
+
147
+ ```ruby
148
+ if ENV['RAILS_ENV'] == 'production'
149
+ shared_path = '/var/www/example.com/shared'
150
+ logs_dir = "#{shared_path}/log"
151
+
152
+ state_path "#{shared_path}/tmp/puma/state"
153
+ pidfile "#{shared_path}/tmp/puma/pid"
154
+ bind "unix://#{shared_path}/tmp/puma.sock"
155
+ stdout_redirect "#{logs_dir}/stdout.log", "#{logs_dir}/stderr.log", true
156
+
157
+ activate_control_app
158
+ end
159
+ ```
160
+
161
+ ## Перед запуском:
162
+
163
+ После установки приложения нужно накатить миграции (в консоли):
164
+
165
+ ```bash
166
+ rails db:create
167
+ rails railties:install:migrations
168
+ rails db:migrate
169
+ ```
170
+
171
+ Для удобства запуска на сервере:
172
+
173
+ ```bash
174
+ bundle binstubs bundler --force
175
+ bundle binstub puma
176
+ ```
177
+
178
+ Также имеет смысл запустить `EDITOR=vim rails credentials:edit`, чтобы создать
179
+ зашированный файл с ключом шифрования сессии (чтобы выйти из vim с сохранением,
180
+ надо набрать :wq).
181
+
182
+ ## Настройка отгрузки через mina
183
+
184
+ Для начала надо запустить в консоли `mina init`. После этого внести изменения
185
+ в `config/deploy.rb`.
186
+
187
+ В начале и середине файла раскомментировать то, что относится к `rbenv`.
188
+ Кроме того, следует проверить настройки соединения по SSH
189
+ (`set :user, 'developer`).
190
+
191
+ Для `shared_dirs` и `shared_files` задать примерно такой вид.
192
+
193
+ ```ruby
194
+ set :shared_dirs, fetch(:shared_dirs, []).push('public/uploads', 'tmp', 'log')
195
+ set :shared_files, fetch(:shared_files, []).push('config/master.key', '.env')
196
+ ```
197
+
198
+ На серверной стороне нужно создать папку для пумы и файла с ключом шифрования:
199
+
200
+ ```bash
201
+ mkdir -p /var/www/example.com/shared/tmp/puma
202
+ mkdir -p /var/www/example.com/shared/config
203
+ ```
204
+
205
+ После этого локально запустить `mina setup`. Для нормальной работы нужно
206
+ не забыть скопировать на сервер `.env` и `config/master.key`.
207
+
208
+ ```bash
209
+ scp .env biovision:/var/www/example.com/shared
210
+ scp config/master.key biovision:/var/www/example.com/shared/config
211
+ ```
212
+
213
+ ## License
214
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,22 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'Biovision'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.md')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("spec/test_app/Rakefile", __dir__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+ load 'rails/tasks/statistics.rake'
21
+
22
+ require 'bundler/gem_tasks'
@@ -0,0 +1 @@
1
+ //= link_tree ../images
@@ -0,0 +1,4 @@
1
+ <svg version="1.1" viewBox="0 0 12 36" width="12px" height="36px" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Left arrow (wide)</title>
3
+ <polyline points="10,2 2,18 10,34" stroke="#333" stroke-width="3" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg version="1.1" viewBox="0 0 12 36" width="12px" height="36px" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Right arrow (wide)</title>
3
+ <polyline points="2,2 10,18 2,34" stroke="#333" stroke-width="3" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -0,0 +1 @@
1
+ <svg height="12px" version="1.1" viewBox="0 0 6 12" width="6px" xmlns="http://www.w3.org/2000/svg"><polyline points="4,1 1,5.5 4,10" fill="none" stroke="#f77" /></svg>
@@ -0,0 +1 @@
1
+ <svg height="12px" version="1.1" viewBox="0 0 6 12" width="6px" xmlns="http://www.w3.org/2000/svg"><polyline points="1,1 4,5.5 1,10" fill="none" stroke="#777" /></svg>
@@ -0,0 +1,26 @@
1
+ <svg version="1.1" viewBox="0 0 24 24" width="24px" height="24px" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Contact</title>
3
+ <defs>
4
+ <style type="text/css">
5
+ * { stroke-width: 1; }
6
+ .a { stroke: #777; }
7
+ .b { stroke: #555; }
8
+ .c { fill: #3aa; }
9
+ line { stroke-linecap: round; }
10
+ </style>
11
+ </defs>
12
+ <g class="a">
13
+ <rect x="1" y="1" width="15" height="10" fill="#fff"/>
14
+ <polyline points="1,1 9,5 16,1" fill="none"/>
15
+ </g>
16
+ <g class="b">
17
+ <rect x="7" y="6" width="10" height="17" rx="2" fill="#eee"/>
18
+ <line x1="10" y1="8" x2="14" y2="8" />
19
+ <circle cx="12.25" cy="21" r=".5"/>
20
+ <rect x="8" y="9.5" width="8.125" height="10" rx="1" ry="1" fill="#555" stroke="none" />
21
+ </g>
22
+ <g class="c">
23
+ <path d="M20,24 l-3.5,-8 q4,-8 7,0 z"/>
24
+ <circle cx="20.125" cy="15.25" r="1.5" fill="#f7a"/>
25
+ </g>
26
+ </svg>
@@ -0,0 +1,20 @@
1
+ <svg version="1.1" viewBox="0 0 24 24" width="24px" height="24px" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Content</title>
3
+ <defs>
4
+ <style type="text/css">
5
+ rect { stroke-width: 1; stroke: #aaa }
6
+ line { stroke-width: 1 }
7
+ </style>
8
+ </defs>
9
+ <rect x="5" y="2" width="10" height="16" fill="#ddd"/>
10
+ <rect x="7" y="4" width="10" height="16" fill="#eee"/>
11
+ <g>
12
+ <rect x="9" y="6" width="10" height="16" fill="#fff"/>
13
+ <line x1="11" y1="9" x2="14" y2="9" stroke="#111"/>
14
+ <line x1="11" y1="11" x2="17" y2="11" stroke="#555"/>
15
+ <line x1="11" y1="13" x2="17" y2="13" stroke="#555"/>
16
+ <line x1="11" y1="15" x2="16" y2="15" stroke="#555"/>
17
+ <line x1="11" y1="18" x2="17" y2="18" stroke="#555"/>
18
+ <line x1="11" y1="20" x2="17" y2="20" stroke="#555"/>
19
+ </g>
20
+ </svg>
@@ -0,0 +1,21 @@
1
+ <svg version="1.1" viewBox="0 0 24 24" width="24px" height="24px" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Users</title>
3
+ <defs>
4
+ <style type="text/css">
5
+ .a { stroke-width: 1; stroke: #aaa; fill: #eee; }
6
+ .b { stroke-width: 1.5; stroke: #333; fill: #777; }
7
+ </style>
8
+ </defs>
9
+ <g class="a">
10
+ <ellipse cx="6.5" cy="7" rx="2" ry="3.2"/>
11
+ <path d="M1,16 Q6.5,8 12,16 z" stroke-linejoin="round"/>
12
+ </g>
13
+ <g class="a">
14
+ <ellipse cx="18.5" cy="7" rx="2" ry="3.2"/>
15
+ <path d="M13,16 Q18.5,8 23,16 z" stroke-linejoin="round"/>
16
+ </g>
17
+ <g class="b">
18
+ <ellipse cx="12.5" cy="10" rx="3.5" ry="4.5"/>
19
+ <path d="M3,22 Q12,11 22,22 z" stroke-linejoin="round"/>
20
+ </g>
21
+ </svg>
@@ -0,0 +1,16 @@
1
+ <svg version="1.1" viewBox="0 0 24 24" width="24px" height="24px" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Key</title>
3
+ <defs>
4
+ <style type="text/css">
5
+ * { stroke: #ada33d; stroke-width: 1.5; }
6
+ line { stroke-linecap: round; }
7
+ </style>
8
+ </defs>
9
+ <g>
10
+ <circle cx="4" cy="20" r="3" fill="none"/>
11
+ <line x1="6" y1="18" x2="20" y2="4"/>
12
+ <line x1="19" y1="5" x2="21" y2="7"/>
13
+ <line x1="17" y1="7" x2="20" y2="10"/>
14
+ <line x1="14" y1="8" x2="16" y2="10"/>
15
+ </g>
16
+ </svg>
@@ -0,0 +1,15 @@
1
+ <svg height="24" version="1.1" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Log in</title>
3
+ <style>
4
+ * { stroke: #777; fill: none; }
5
+ .a { stroke-width: 1 }
6
+ .b { stroke-width: 2 }
7
+ </style>
8
+ <g>
9
+ <polyline points="9,7 9,2 22,2 22,22 9,22 9,17" class="b"/>
10
+ <g class="a">
11
+ <line x1="2" y1="12" x2="17" y2="12"/>
12
+ <polyline points="14,9 17,12 14,15"/>
13
+ </g>
14
+ </g>
15
+ </svg>
@@ -0,0 +1,15 @@
1
+ <svg height="24" version="1.1" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Log out</title>
3
+ <style>
4
+ * { stroke: #777; fill: none; }
5
+ .a { stroke-width: 1 }
6
+ .b { stroke-width: 2 }
7
+ </style>
8
+ <g>
9
+ <polyline points="9,7 9,2 22,2 22,22 9,22 9,17" class="b"/>
10
+ <g class="a">
11
+ <line x1="2" y1="12" x2="17" y2="12"/>
12
+ <polyline points="5,9 2,12 5,15"/>
13
+ </g>
14
+ </g>
15
+ </svg>
@@ -0,0 +1,14 @@
1
+ <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <defs>
3
+ <title>Error</title>
4
+ <style>
5
+ * { stroke: #fff }
6
+ line { stroke-linecap: round; stroke-width: 4 }
7
+ </style>
8
+ </defs>
9
+ <g>
10
+ <circle cx="16" cy="16" r="14" fill="red" stroke-width="2"/>
11
+ <line x1="11" y1="11" x2="21" y2="21"/>
12
+ <line x1="11" y1="21" x2="21" y2="11"/>
13
+ </g>
14
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Information</title>
3
+ <g>
4
+ <circle cx="16" cy="16" r="14" fill="blue" stroke="#fff" stroke-width="2"/>
5
+ <circle cx="16" cy="10" r="2" fill="#fff"/>
6
+ <line x1="16" x2="16" y1="16" y2="23" stroke="#fff" stroke-width="4" stroke-linecap="round"/>
7
+ </g>
8
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <defs>
3
+ <title>Success</title>
4
+ <style>
5
+ * { stroke: #fff }
6
+ </style>
7
+ </defs>
8
+ <g>
9
+ <circle cx="16" cy="16" r="14" fill="green" stroke-width="2"/>
10
+ <polyline points="10 17, 16 23, 22 11" fill="none" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
11
+ </g>
12
+ </svg>