biovision 0.0.200518.1

Sign up to get free protection for your applications and to get access to all the features.
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,13 @@
1
+ <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <defs>
3
+ <title>Warning</title>
4
+ <style>
5
+ line, polyline { stroke: #873; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3 }
6
+ </style>
7
+ </defs>
8
+ <g>
9
+ <polyline points="16 2, 30 30, 2 30, 16 2" fill="#fd4"/>
10
+ <line x1="16" y1="12" x2="16" y2="20"/>
11
+ <circle cx="16" cy="25" r="1.5" fill="#873" />
12
+ </g>
13
+ </svg>
@@ -0,0 +1,41 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="160px" height="160px">
2
+ <title>Settings</title>
3
+ <defs>
4
+ <style>
5
+ line { stroke-linecap: round }
6
+ circle { stroke-width: 3 }
7
+ .a { stroke-width: 15; stroke: #aaa }
8
+ .b { stroke-width: 5; stroke: #777 }
9
+ .c { fill: #bbb; stroke: #999 }
10
+ .d { stroke-width: 3; stroke: #444; fill: #777 }
11
+ </style>
12
+ </defs>
13
+ <g>
14
+ <g class="a">
15
+ <line x1="20" y1="10" x2="20" y2="150"/>
16
+ <line x1="60" y1="10" x2="60" y2="150"/>
17
+ <line x1="100" y1="10" x2="100" y2="150"/>
18
+ </g>
19
+ <g class="b">
20
+ <line x1="20" y1="10" x2="20" y2="150"/>
21
+ <line x1="60" y1="10" x2="60" y2="150"/>
22
+ <line x1="100" y1="10" x2="100" y2="150"/>
23
+ </g>
24
+ <g class="c">
25
+ <circle cx="20" cy="55" r="15"/>
26
+ <circle cx="60" cy="115" r="15"/>
27
+ <circle cx="100" cy="30" r="15"/>
28
+ </g>
29
+ </g>
30
+ <g>
31
+ <g>
32
+ <circle cx="140" cy="20" r="12" stroke="#070" fill="#4a4"/>
33
+ <circle cx="140" cy="60" r="12" stroke="#440" fill="#773"/>
34
+ <circle cx="140" cy="100" r="12" stroke="#400" fill="#733"/>
35
+ </g>
36
+ <g class="d">
37
+ <circle cx="140" cy="140" r="12"/>
38
+ <polyline points="130,140 126,126 140,130"/>
39
+ </g>
40
+ </g>
41
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg version="1.1" viewBox="0 0 320 180" width="320px" height="180px" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Image placeholder 16×9</title>
3
+ <style>
4
+ * { stroke: #ccc; fill: none; stroke-width: 3; }
5
+ </style>
6
+ <g>
7
+ <rect x="1" y="1" width="318" height="178"/>
8
+ <line x1="1.5" y1="2.25" x2="318.5" y2="177.75"/>
9
+ <line x1="1.5" y1="177.75" x2="318.5" y2="2.25"/>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg version="1.1" viewBox="0 0 300 300" width="300px" height="300px" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Image placeholder 1×1</title>
3
+ <style>
4
+ * { stroke: #ccc; fill: none; stroke-width: 3; }
5
+ </style>
6
+ <g>
7
+ <rect x="1" y="1" width="298" height="298"/>
8
+ <line x1="2.5" y1="2.5" x2="297.5" y2="297.5"/>
9
+ <line x1="2.5" y1="297.5" x2="297.5" y2="2.5"/>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg version="1.1" viewBox="0 0 300 200" width="300px" height="200px" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Image placeholder 3×2</title>
3
+ <style>
4
+ * { stroke: #ccc; fill: none; stroke-width: 3; }
5
+ </style>
6
+ <g>
7
+ <rect x="1" y="1" width="298" height="198"/>
8
+ <line x1="2.5" y1="2.5" x2="297.5" y2="197.5"/>
9
+ <line x1="2.5" y1="197.5" x2="297.5" y2="2.5"/>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,15 @@
1
+ <svg version="1.1" viewBox="0 0 300 300" width="300px" height="300px" xmlns="http://www.w3.org/2000/svg">
2
+ <title>User placeholder</title>
3
+ <style>
4
+ * { stroke: #555; stroke-width: 5; }
5
+ .f { fill: #ffe }
6
+ .e { fill: #eff }
7
+ .m { fill: none }
8
+ </style>
9
+ <g>
10
+ <circle cx="150" cy="150" r="140" class="f"/>
11
+ <circle cx="100" cy="110" r="15" class="e"/>
12
+ <circle cx="200" cy="110" r="15" class="e"/>
13
+ <path d="M 75,200 A 150,200 0 0,0 225,200" class="m"/>
14
+ </g>
15
+ </svg>
@@ -0,0 +1,6 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Exo+2:wght@400;500&display=swap');
2
+ @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap');
3
+
4
+ @import "biovision/admin/vars";
5
+ @import "biovision/biovision";
6
+ @import "biovision/admin/layout";
@@ -0,0 +1,59 @@
1
+ .biovision-component {
2
+ border-bottom: var(--border-secondary);
3
+ margin-bottom: var(--spacer-s);
4
+ padding: var(--spacer-xs);
5
+
6
+ > header {
7
+ background: no-repeat center left / 2.4rem 2.4rem;
8
+ padding-left: 3.2rem;
9
+ }
10
+ }
11
+
12
+ .biovision-component-nav {
13
+ margin: var(--spacer-s) 0;
14
+
15
+ > a {
16
+ background: no-repeat center left / 2rem 2rem;
17
+ display: block;
18
+ line-height: 2.4rem;
19
+ margin: 0 0 0 .8rem;
20
+ padding-left: 2.4rem;
21
+ }
22
+
23
+ .settings {
24
+ background-image: image_url('biovision/icons/settings.svg');
25
+ }
26
+
27
+ .privileges {
28
+ background-image: image_url('biovision/icons/key.svg');
29
+ }
30
+
31
+ ul {
32
+ box-shadow: var(--block-shadow);
33
+ margin: var(--spacer-xxs);
34
+ max-width: 64rem;
35
+ padding: 0;
36
+ }
37
+
38
+ li {
39
+ background: var(--row-background-odd);
40
+ list-style: none;
41
+ margin: 0;
42
+ padding: var(--spacer-xs);
43
+ position: relative;
44
+
45
+ &:nth-last-of-type(even) {
46
+ background: var(--row-background-even);
47
+ }
48
+ }
49
+ }
50
+
51
+ .biovision-component-settings {
52
+ .fields {
53
+ margin-bottom: var(--spacer-s);
54
+
55
+ > div {
56
+ margin-bottom: 0;
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,57 @@
1
+ $font-family-main: "Roboto", sans-serif !default;
2
+ $font-family-heading: "Exo 2", sans-serif !default;
3
+
4
+ $font-size-xxxl: 4.5rem !default;
5
+ $font-size-xxl: 3.6rem !default;
6
+ $font-size-xl: 3.2rem !default;
7
+ $font-size-large: 2.4rem !default;
8
+ $font-size-increased: 1.8rem !default;
9
+ $font-size-normal: 1.6rem !default;
10
+ $font-size-decreased: 1.4rem !default;
11
+ $font-size-small: 1.2rem !default;
12
+ $font-size-xs: 1rem !default;
13
+
14
+ $spacer-s: 1.6rem !default;
15
+ $spacer-xxxs: .2rem !default;
16
+ $spacer-xxs: #{$spacer-s / 4} !default;
17
+ $spacer-xs: #{$spacer-s / 2} !default;
18
+ $spacer-m: #{$spacer-s * 2} !default;
19
+ $spacer-l: #{$spacer-s * 3} !default;
20
+ $spacer-xl: #{$spacer-s * 4} !default;
21
+ $spacer-xxl: #{$spacer-s * 6} !default;
22
+
23
+ $content-width: 120rem !default;
24
+ $content-width-min: 32rem !default;
25
+
26
+ $row-background-even: hsl(0, 0%, 95%) !default;
27
+ $row-background-odd: hsl(0, 0%, 98%) !default;
28
+
29
+ $text-color-heading: #000 !default;
30
+ $text-color-primary: rgb(28, 28, 28) !default;
31
+ $text-color-secondary: #777 !default;
32
+
33
+ $text-color-inverted-primary: #fff !default;
34
+ $text-color-inverted-secondary: #ccc !default;
35
+ $text-color-inverted-heading: #eee !default;
36
+
37
+ $block-shadow: .2rem .2rem .4rem .2rem rgba(0, 0, 0, .125) !default;
38
+
39
+ $border-color-primary: rgb(192, 192, 192) !default;
40
+ $border-color-secondary: rgb(230, 230, 230) !default;
41
+ $border-primary: .1rem solid $border-color-primary !default;
42
+ $border-secondary: .1rem solid $border-color-secondary !default;
43
+
44
+ $background-body: #f4f4f4 linear-gradient(to top, #f4f4f4, #dfdedc) no-repeat center / cover !default;
45
+ $background-header: #fff !default;
46
+ $background-main: #fff !default;
47
+ $background-footer: #fff !default;
48
+
49
+ $link-color: rgb(20, 127, 255) !default;
50
+ $link-color-visited: rgb(20, 77, 250) !default;
51
+ $link-color-active: rgb(255, 77, 20) !default;
52
+ $link-color-hover: rgb(255, 77, 20) !default;
53
+
54
+ $input-border: hsl(0, 0%, 75%) !default;
55
+ $input-border-focus: hsl(0, 0%, 50%) !default;
56
+ $input-border-invalid: hsl(0, 75%, 50%) !default;
57
+ $input-border-invalid-focus: hsl(0, 50%, 50%) !default;
@@ -0,0 +1,95 @@
1
+ //* { outline: solid pink 1px }
2
+
3
+ html {
4
+ background: linear-gradient(to bottom, #dedfe3 2%, #aeb3b9 95%) fixed, radial-gradient(farthest-corner at 33% 100%, rgba(255, 255, 255, .5) 0%, rgba(0, 0, 0, .5) 100%) fixed;
5
+ background-blend-mode: screen;
6
+ height: 100%;
7
+ }
8
+
9
+ body {
10
+ background: #fff;
11
+ display: flex;
12
+ flex-direction: column;
13
+ font-weight: 300;
14
+ height: 100%;
15
+ margin: 0 auto;
16
+ max-width: var(--content-width);
17
+ }
18
+
19
+ a {
20
+ font-weight: 400;
21
+ }
22
+
23
+ h1 {
24
+ font-size: var(--font-size-xxl);
25
+ font-weight: 500;
26
+ margin-bottom: var(--spacer-xs);
27
+ }
28
+
29
+ h2 {
30
+ font-size: var(--font-size-xl);
31
+ font-weight: 500;
32
+ margin-bottom: var(--spacer-xxs);
33
+ }
34
+
35
+ #main {
36
+ padding: var(--spacer-xs);
37
+ width: 100%;
38
+ }
39
+
40
+ .main-header {
41
+ align-items: center;
42
+ border-bottom: var(--border-primary);
43
+ display: flex;
44
+ flex-wrap: wrap;
45
+ padding: var(--spacer-xs);
46
+
47
+ nav {
48
+ margin: 0 0 0 auto;
49
+ }
50
+
51
+ ul {
52
+ align-items: center;
53
+ display: flex;
54
+ flex-wrap: wrap;
55
+ list-style: none;
56
+ margin: 0;
57
+ padding: 0;
58
+ }
59
+
60
+ li {
61
+ padding: 0 var(--spacer-xxs);
62
+ }
63
+ }
64
+
65
+ .main-footer {
66
+ align-items: center;
67
+ border-top: var(--border-primary);
68
+ color: var(--text-color-secondary);
69
+ display: flex;
70
+ flex-wrap: wrap;
71
+ font-size: var(--font-size-decreased);
72
+ justify-content: space-between;
73
+ margin: auto 0 0 0;
74
+ padding: var(--spacer-xs);
75
+ }
76
+
77
+ .breadcrumbs {
78
+ margin-bottom: var(--spacer-xs);
79
+
80
+ a {
81
+ background: image_url('biovision/icons/breadcrumb.svg') no-repeat bottom .1rem right / .6rem 1.2rem;
82
+ padding-right: 1rem;
83
+ transition: background .25s;
84
+
85
+ &:active,
86
+ &:focus,
87
+ &:hover {
88
+ background-image: image_url('biovision/icons/breadcrumb-hover.svg');
89
+ }
90
+ }
91
+ }
92
+
93
+ @import "biovision/components/forms";
94
+ @import "biovision/components/lists";
95
+ @import "biovision/admin/components";
@@ -0,0 +1,56 @@
1
+ @import "biovision/admin/default";
2
+
3
+ :root {
4
+ --font-size-xxxl: #{$font-size-xxxl};
5
+ --font-size-xxl: #{$font-size-xxl};
6
+ --font-size-xl: #{$font-size-xl};
7
+ --font-size-large: #{$font-size-large};
8
+ --font-size-increased: #{$font-size-increased};
9
+ --font-size-normal: #{$font-size-normal};
10
+ --font-size-decreased: #{$font-size-decreased};
11
+ --font-size-small: #{$font-size-small};
12
+ --font-size-xs: #{$font-size-xs};
13
+
14
+ --font-family-main: #{$font-family-main};
15
+ --font-family-heading: #{$font-family-heading};
16
+
17
+ --spacer-s: #{$spacer-s};
18
+ --spacer-xxxs: .2rem;
19
+ --spacer-xxs: calc(var(--spacer-s) / 4);
20
+ --spacer-xs: calc(var(--spacer-s) / 2);
21
+ --spacer-m: calc(var(--spacer-s) * 2);
22
+ --spacer-l: calc(var(--spacer-s) * 3);
23
+ --spacer-xl: calc(var(--spacer-s) * 4);
24
+ --spacer-xxl: calc(var(--spacer-s) * 6);
25
+
26
+ --text-color-primary: #{$text-color-primary};
27
+ --text-color-secondary: #{$text-color-secondary};
28
+ --text-color-heading: #{$text-color-heading};
29
+
30
+ --text-color-inverted-primary: #{$text-color-inverted-primary};
31
+ --text-color-inverted-secondary: #{$text-color-inverted-secondary};
32
+ --text-color-inverted-heading: #{$text-color-inverted-heading};
33
+
34
+ --border-color-primary: #{$border-color-primary};
35
+ --border-color-secondary: #{$border-color-secondary};
36
+ --border-primary: #{$border-primary};
37
+ --border-secondary: #{$border-secondary};
38
+
39
+ --block-shadow: #{$block-shadow};
40
+
41
+ --link-color: #{$link-color};
42
+ --link-color-visited: #{$link-color-visited};
43
+ --link-color-active: #{$link-color-active};
44
+ --link-color-hover: #{$link-color-hover};
45
+
46
+ --content-width: #{$content-width};
47
+ --content-width-min: #{$content-width-min};
48
+
49
+ --input-border: #{$input-border};
50
+ --input-border-focus: #{$input-border-focus};
51
+ --input-border-invalid: #{$input-border-invalid};
52
+ --input-border-invalid-focus: #{$input-border-invalid-focus};
53
+
54
+ --row-background-even: #{$row-background-even};
55
+ --row-background-odd: #{$row-background-odd};
56
+ }
@@ -0,0 +1,134 @@
1
+ *,
2
+ ::after,
3
+ ::before {
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ html {
8
+ color: var(--text-color-primary);
9
+ font: 400 10px var(--font-family-main);
10
+ margin: 0;
11
+ padding: 0;
12
+ -webkit-text-size-adjust: none;
13
+ -moz-text-size-adjust: none;
14
+ -ms-text-size-adjust: none;
15
+ }
16
+
17
+ body {
18
+ font-size: var(--font-size-normal);
19
+ margin: 0;
20
+ min-width: var(--content-width-min);
21
+ padding: 0;
22
+ }
23
+
24
+ h1,
25
+ h2,
26
+ h3,
27
+ h4,
28
+ h5,
29
+ h6 {
30
+ font-family: var(--font-family-heading);
31
+ margin: 0;
32
+ }
33
+
34
+ a {
35
+ color: var(--link-color);
36
+ text-decoration: none;
37
+ transition: color .125s;
38
+
39
+ &:hover {
40
+ color: var(--link-color-hover);
41
+ text-decoration: underline;
42
+ }
43
+
44
+ &:active {
45
+ color: var(--link-color-active);
46
+ }
47
+ }
48
+
49
+ figure {
50
+ margin: 0;
51
+ }
52
+
53
+ article {
54
+ position: relative;
55
+ }
56
+
57
+ button,
58
+ input,
59
+ textarea {
60
+ font-size: inherit;
61
+ }
62
+
63
+ .content-wrapper {
64
+ margin-left: auto;
65
+ margin-right: auto;
66
+ max-width: var(--content-width);
67
+ }
68
+
69
+ .hidden,
70
+ [hidden] {
71
+ display: none !important;
72
+ }
73
+
74
+ .visually-hidden {
75
+ border: none;
76
+ clip: rect(0 0 0 0);
77
+ height: auto;
78
+ left: -10000rem;
79
+ margin: 0;
80
+ opacity: .05;
81
+ overflow: hidden;
82
+ padding: 0;
83
+ pointer-events: none;
84
+ position: absolute;
85
+ white-space: nowrap;
86
+ width: 1px;
87
+ }
88
+
89
+ .proportional-container {
90
+ padding: 0;
91
+ position: relative;
92
+
93
+ > * {
94
+ bottom: 0;
95
+ display: block;
96
+ height: 100%;
97
+ left: 0;
98
+ position: absolute;
99
+ right: 0;
100
+ top: 0;
101
+ width: 100%;
102
+ }
103
+
104
+ &::before {
105
+ content: '\A';
106
+ display: block;
107
+ }
108
+
109
+ &.r-1x1::before {
110
+ padding-top: 100%;
111
+ }
112
+
113
+ &.r-5x4::before {
114
+ padding-top: 80%;
115
+ }
116
+
117
+ &.r-4x3::before {
118
+ padding-top: 75%;
119
+ }
120
+
121
+ &.r-3x2::before {
122
+ padding-top: 66.67%;
123
+ }
124
+
125
+ &.r-16x9::before {
126
+ padding-top: 56.25%;
127
+ }
128
+
129
+ &.r-2x1::before {
130
+ padding-top: 50%;
131
+ }
132
+ }
133
+
134
+ @import "biovision/biovision/messages";