epages-essence 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/README.md +73 -0
  4. data/Rakefile +10 -0
  5. data/app/assets/config/essence_manifest.js +5 -0
  6. data/app/assets/images/essence/icon_component/arrow_up_right_from_square.svg +1 -0
  7. data/app/assets/images/essence/icon_component/circle_check.svg +1 -0
  8. data/app/assets/images/essence/icon_component/circle_exclamation.svg +1 -0
  9. data/app/assets/images/essence/icon_component/circle_info.svg +1 -0
  10. data/app/assets/images/essence/icon_component/circle_quote.svg +1 -0
  11. data/app/assets/images/essence/icon_component/circle_xmark.svg +1 -0
  12. data/app/assets/images/essence/icon_component/copy.svg +1 -0
  13. data/app/assets/images/essence/icon_component/download.svg +1 -0
  14. data/app/assets/images/essence/icon_component/eye.svg +1 -0
  15. data/app/assets/images/essence/icon_component/filter.svg +1 -0
  16. data/app/assets/images/essence/icon_component/greater_than.svg +1 -0
  17. data/app/assets/images/essence/icon_component/grid_2.svg +1 -0
  18. data/app/assets/images/essence/icon_component/home.svg +1 -0
  19. data/app/assets/images/essence/icon_component/link_slash.svg +1 -0
  20. data/app/assets/images/essence/icon_component/pencil.svg +1 -0
  21. data/app/assets/images/essence/icon_component/plus.svg +1 -0
  22. data/app/assets/images/essence/icon_component/sort.svg +1 -0
  23. data/app/assets/images/essence/icon_component/sort_down.svg +1 -0
  24. data/app/assets/images/essence/icon_component/sort_up.svg +1 -0
  25. data/app/assets/images/essence/icon_component/trash.svg +1 -0
  26. data/app/assets/images/essence/icon_component/upload.svg +1 -0
  27. data/app/assets/images/essence/icon_component/wand_magic_sparkles.svg +1 -0
  28. data/app/assets/stylesheets/essence/beyond/_base.scss +52 -0
  29. data/app/assets/stylesheets/essence/beyond/components/_index.scss +17 -0
  30. data/app/assets/stylesheets/essence/beyond/layout/_content.scss +9 -0
  31. data/app/assets/stylesheets/essence/beyond/layout/_index.scss +1 -0
  32. data/app/assets/stylesheets/essence/beyond/simple_form/_control.scss +172 -0
  33. data/app/assets/stylesheets/essence/beyond/simple_form/_error.scss +27 -0
  34. data/app/assets/stylesheets/essence/beyond/simple_form/_fieldset.scss +34 -0
  35. data/app/assets/stylesheets/essence/beyond/simple_form/_group.scss +6 -0
  36. data/app/assets/stylesheets/essence/beyond/simple_form/_hint.scss +8 -0
  37. data/app/assets/stylesheets/essence/beyond/simple_form/_index.scss +43 -0
  38. data/app/assets/stylesheets/essence/beyond/simple_form/_label.scss +26 -0
  39. data/app/assets/stylesheets/essence/beyond/simple_form/_wrapper.scss +5 -0
  40. data/app/assets/stylesheets/essence/beyond.scss +4 -0
  41. data/app/components/essence/action_bar_component/action_bar_component.html.erb +16 -0
  42. data/app/components/essence/action_bar_component/action_bar_component.scss +29 -0
  43. data/app/components/essence/action_bar_component.rb +27 -0
  44. data/app/components/essence/app_info_component/app_info_component.html.erb +19 -0
  45. data/app/components/essence/app_info_component/app_info_component.scss +45 -0
  46. data/app/components/essence/app_info_component.rb +33 -0
  47. data/app/components/essence/application_component.rb +36 -0
  48. data/app/components/essence/breadcrumb_component/breadcrumb_component.html.erb +17 -0
  49. data/app/components/essence/breadcrumb_component/breadcrumb_component.scss +39 -0
  50. data/app/components/essence/breadcrumb_component.rb +17 -0
  51. data/app/components/essence/button_component/button_component.html.erb +13 -0
  52. data/app/components/essence/button_component/button_component.scss +105 -0
  53. data/app/components/essence/button_component.rb +51 -0
  54. data/app/components/essence/card_component/card_component.html.erb +8 -0
  55. data/app/components/essence/card_component/card_component.scss +21 -0
  56. data/app/components/essence/card_component.rb +29 -0
  57. data/app/components/essence/clipboard_copy_component/clipboard_copy_component.html.erb +18 -0
  58. data/app/components/essence/clipboard_copy_component/clipboard_copy_component.scss +13 -0
  59. data/app/components/essence/clipboard_copy_component/clipboard_copy_component.yml +4 -0
  60. data/app/components/essence/clipboard_copy_component/clipboard_copy_component_controller.js +25 -0
  61. data/app/components/essence/clipboard_copy_component.rb +36 -0
  62. data/app/components/essence/empty_state_component/empty_state_component.html.erb +10 -0
  63. data/app/components/essence/empty_state_component/empty_state_component.scss +50 -0
  64. data/app/components/essence/empty_state_component.rb +33 -0
  65. data/app/components/essence/icon_component/icon_component.html.erb +1 -0
  66. data/app/components/essence/icon_component.rb +25 -0
  67. data/app/components/essence/link_component/link_component.html.erb +5 -0
  68. data/app/components/essence/link_component/link_component.scss +58 -0
  69. data/app/components/essence/link_component.rb +50 -0
  70. data/app/components/essence/notification_component/notification_component.html.erb +8 -0
  71. data/app/components/essence/notification_component/notification_component.scss +63 -0
  72. data/app/components/essence/notification_component.rb +45 -0
  73. data/app/components/essence/paragraph_component/paragraph_component.html.erb +3 -0
  74. data/app/components/essence/paragraph_component/paragraph_component.scss +59 -0
  75. data/app/components/essence/paragraph_component/paragraph_component_controller.js +19 -0
  76. data/app/components/essence/paragraph_component.rb +27 -0
  77. data/app/components/essence/scroll_shadow_component/scroll_shadow_component.html.erb +5 -0
  78. data/app/components/essence/scroll_shadow_component/scroll_shadow_component.scss +5 -0
  79. data/app/components/essence/scroll_shadow_component.rb +17 -0
  80. data/app/components/essence/spinner_component/spinner_component.html.erb +1 -0
  81. data/app/components/essence/spinner_component/spinner_component.scss +34 -0
  82. data/app/components/essence/spinner_component.rb +17 -0
  83. data/app/components/essence/status_component/status_component.html.erb +6 -0
  84. data/app/components/essence/status_component/status_component.scss +80 -0
  85. data/app/components/essence/status_component.rb +58 -0
  86. data/app/components/essence/step_list_component/item_component.html.erb +9 -0
  87. data/app/components/essence/step_list_component/step_list_component.html.erb +8 -0
  88. data/app/components/essence/step_list_component/step_list_component.scss +79 -0
  89. data/app/components/essence/step_list_component.rb +34 -0
  90. data/app/components/essence/table_component/table_component.html.erb +20 -0
  91. data/app/components/essence/table_component/table_component.scss +41 -0
  92. data/app/components/essence/table_component.rb +33 -0
  93. data/app/components/essence/title_component/title_component.html.erb +3 -0
  94. data/app/components/essence/title_component/title_component.scss +11 -0
  95. data/app/components/essence/title_component.rb +22 -0
  96. data/app/components/essence/tooltip_component/tooltip_component.html.erb +7 -0
  97. data/app/components/essence/tooltip_component/tooltip_component.scss +63 -0
  98. data/app/components/essence/tooltip_component/tooltip_component_controller.js +60 -0
  99. data/app/components/essence/tooltip_component.rb +23 -0
  100. data/app/helpers/essence/fetch_or_fallback_helper.rb +38 -0
  101. data/app/inputs/essence/toggle_input.rb +12 -0
  102. data/app/javascript/essence/application.js +4 -0
  103. data/app/javascript/essence/controllers/application.js +9 -0
  104. data/app/javascript/essence/controllers/index.js +12 -0
  105. data/app/views/essence/beyond/body.html.erb +8 -0
  106. data/config/importmap.rb +11 -0
  107. data/config/initializers/essence/simple_form.rb +117 -0
  108. data/config/locales/essence.en.yml +8 -0
  109. data/lib/epages/essence.rb +3 -0
  110. data/lib/essence/engine.rb +41 -0
  111. data/lib/essence/utils.rb +13 -0
  112. data/lib/essence/version.rb +5 -0
  113. data/lib/essence.rb +8 -0
  114. data/lib/tasks/essence_tasks.rake +6 -0
  115. data/vendor/javascript/@floating-ui--core.js +2 -0
  116. data/vendor/javascript/@floating-ui--dom.js +10 -0
  117. data/vendor/javascript/@floating-ui--utils--dom.js +2 -0
  118. data/vendor/javascript/@floating-ui--utils.js +2 -0
  119. data/vendor/javascript/scroll-shadow-element.js +2 -0
  120. metadata +300 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6ed6897e7890245d4b2608a117871b5f3e9001bebc2e67c7931f0899dcba589e
4
+ data.tar.gz: 1c68b54c6545f6aa20ca25635e2f59de8946a51326427a7064751f94629efab6
5
+ SHA512:
6
+ metadata.gz: 112822c3aa89a967852dedd8de1881bbfa95333324236a9f8a73386d905ae52276b036988c5ff32dbf271f2c6361fd0d94217c317239403b5d3eca5c3bdb210b
7
+ data.tar.gz: 0be07019b5e9d2f50b5bd8b5874cc7e293bc701bfe4d1b4999e382881aec30f7d1b16fced4fed0dbc2907b312826605976967d34774172a815c26a783c458044
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2024 ePages GmbH
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,73 @@
1
+ # Essence
2
+
3
+ ![Gem Version](https://img.shields.io/gem/v/epages-essence)
4
+ ![License](https://img.shields.io/github/license/ePages-de/essence)
5
+
6
+ ## Installation
7
+
8
+ 1. Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'epages-essence'
12
+ ```
13
+
14
+ 1. Execute the following command:
15
+
16
+ ```bash
17
+ bundle install
18
+ ```
19
+
20
+ 1. Add the following lines to the `<head>` and `<body>` of the layout you are going to use (e.g. `app/views/layouts/application.html.erb`):
21
+
22
+ ```erb
23
+ <!DOCTYPE html>
24
+ <html>
25
+ <head>
26
+ <%= stylesheet_link_tag 'essence/beyond', 'data-turbo-track': 'reload' %>
27
+ <%= javascript_importmap_tags 'essence/application' %>
28
+ <%= yield :head %>
29
+ </head>
30
+
31
+ <body>
32
+ <%= render template: 'essence/beyond/body' %>
33
+ </body>
34
+ </html>
35
+ ```
36
+
37
+ > Any `javascript_import_module_tag` must come after the `javascript_importmap_tags` declaration, that's why `<%= yield :head %>` is placed after this declaration. See [`importmap-rails` gem](https://github.com/rails/importmap-rails?tab=readme-ov-file#selectively-importing-modules).
38
+
39
+ ## Component preview
40
+
41
+ Essence includes a Rails application that uses [Lookbook](https://lookbook.build/). By running this app, you can preview the components and explore the possibilities that Essence offers.
42
+
43
+ > Currently, the Lookbook app is in an early stage and is still under development. It does not have a preview of all the components but of most of them.
44
+
45
+ To run the Lookbook app, follow these steps:
46
+
47
+ 1. Change directory to `site`, which is the Lookbook project's folder:
48
+
49
+ ```bash
50
+ cd site
51
+ ```
52
+
53
+ 2. Start the web server:
54
+
55
+ ```bash
56
+ bin/rails server
57
+ ```
58
+
59
+ ## Contributing
60
+
61
+ Please see [CONTRIBUTING](https://github.com/ePages-de/essence/blob/main/CONTRIBUTING.md).
62
+
63
+ ## License
64
+
65
+ Essence is Copyright © 2024 ePages GmbH. It is free software, and may be redistributed under the terms specified in the [LICENSE](https://github.com/ePages-de/essence/blob/main/LICENSE) file.
66
+
67
+ ## About ePages
68
+
69
+ As the largest independent provider of online shop software in Europe, ePages specialises in high-performance ecommerce solutions for small and medium-sized businesses.
70
+ Today, 100,000 companies in 70 countries operate professional online shops with ePages software in the cloud.
71
+
72
+ And we love open source software!
73
+ Check out our [other projects](https://github.com/ePages-de), or [become part of our team](https://developer.epages.com/devjobs/) and develop great ecommerce software with us!
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/setup'
4
+
5
+ APP_RAKEFILE = File.expand_path('site/Rakefile', __dir__)
6
+ load 'rails/tasks/engine.rake'
7
+
8
+ load 'rails/tasks/statistics.rake'
9
+
10
+ require 'bundler/gem_tasks'
@@ -0,0 +1,5 @@
1
+ //= link_tree ../images
2
+ //= link_tree ../stylesheets .css
3
+ //= link_tree ../../javascript .js
4
+ //= link_tree ../../components .js
5
+ //= link_tree ../../../vendor/javascript .js
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M21 13v10H0V4h12v2H2v15h17v-8h2zm3-12H13.012l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07L24 12V1z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm-1.959 17l-4.5-4.319 1.395-1.435 3.08 2.937 7.021-7.183 1.422 1.409-8.418 8.591z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm-1 6h2v8h-2v-8zm1 12.25c-.69 0-1.25-.56-1.25-1.25s.56-1.25 1.25-1.25 1.25.56 1.25 1.25-.56 1.25-1.25 1.25z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13.25 7c0 .69-.56 1.25-1.25 1.25s-1.25-.56-1.25-1.25.56-1.25 1.25-1.25 1.25.56 1.25 1.25zm10.75 5c0 6.627-5.373 12-12 12s-12-5.373-12-12 5.373-12 12-12 12 5.373 12 12zm-2 0c0-5.514-4.486-10-10-10s-10 4.486-10 10 4.486 10 10 10 10-4.486 10-10zm-13-2v2h2v6h2v-8h-4z"/></svg>
@@ -0,0 +1 @@
1
+ <svg data-token-category="icons" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13 14.725C13 9.584 16.892 4.206 23 3l.984 2.126c-2.215.835-4.163 3.742-4.38 5.746A5.213 5.213 0 0124 16.021C24 19.203 21.416 21 18.801 21 15.786 21 13 18.695 13 14.725zm-13 0C0 9.584 3.892 4.206 10 3l.984 2.126c-2.215.835-4.163 3.742-4.38 5.746A5.213 5.213 0 0111 16.021C11 19.203 8.416 21 5.801 21 2.786 21 0 18.695 0 14.725z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm6 16.538l-4.592-4.548 4.546-4.587-1.416-1.403-4.545 4.589-4.588-4.543-1.405 1.405 4.593 4.552-4.547 4.592 1.405 1.405 4.555-4.596 4.591 4.55 1.403-1.416z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M18 6v-6h-18v18h6v6h18v-18h-6zm-12 10h-4v-14h14v4h-10v10zm16 6h-14v-14h14v14zm-3-8h-3v-3h-2v3h-3v2h3v3h2v-3h3v-2z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 21l-8-9h6V0h4v12h6l-8 9zm9-1v2H3v-2H1v4h22v-4h-2z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 3.8C3.4 3.8 0 12 0 12s3.4 8.1 12 8.1c8.5 0 12-8.1 12-8.1s-3.4-8.2-12-8.2zm-.1 2.5v1.5c-1.2 0-2.2 1-2.2 2.2H8.2c0-2.1 1.6-3.7 3.7-3.7zm.1 11.8c-5.6 0-8.6-4.4-9.7-6.1.7-1.2 2.3-3.7 5-5.1-.6.9-1 2-1 3.2 0 3.2 2.6 5.7 5.7 5.7s5.7-2.6 5.7-5.7c0-1.2-.4-2.3-1-3.2 2.7 1.4 4.2 3.9 4.9 5.1-1 1.7-4 6.1-9.6 6.1z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M1 0l9 15.094V21l4 3v-8.906L23 0H1zm18.479 2l-2.981 5H7.502L4.521 2h14.958z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M5 3l3.057-3L20 12 8.057 24 5 21l9-9z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M8.7 15.3H2.2v6.5h6.5v-6.5zm13.1 0h-6.5v6.5h6.5v-6.5zm-10.9-2.2V24H0V13.1h10.9zm13.1 0V24H13.1V13.1H24zM21.8 2.2h-6.5v6.5h6.5V2.2zM10.9 0v10.9H0V0h10.9zM24 0v10.9H13.1V0H24z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 9.185l7 6.514V22h-3v-5H8v5H5v-6.301l7-6.514zm0-2.732l-9 8.375V24h7v-5h4v5h7v-9.172l-9-8.375zm12 5.695L12 1 0 12.133l1.361 1.465L12 3.73l10.639 9.883L24 12.148z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24"><path d="M21.9206803,2.07973917 C24.6916599,4.85172473 24.6916599,9.3487013 21.9206803,12.1216869 L18.0807087,15.9606669 L15.9597243,13.8386779 L19.798696,9.99869792 C21.3976842,8.40070624 21.3976842,5.79971979 19.797696,4.20172811 C18.1997078,2.60273644 15.598727,2.60273644 14.0007387,4.20072812 L10.1607671,8.03970812 L8.03978272,5.91871917 L11.8797544,2.07973917 C14.650734,-0.693246389 19.1467008,-0.693246389 21.9206803,2.07973917 Z M13.8387399,15.9586669 L9.99876827,19.7976469 C8.40078005,21.3976385 5.79979924,21.3966385 4.19981104,19.7976469 C2.60182283,18.1996552 2.60182283,15.5976688 4.19981104,14.0006771 L8.03978272,10.1606971 L5.91879836,8.03970812 L2.07882668,11.8796881 C-0.692152876,14.6516737 -0.693152869,19.1476503 2.07882668,21.9206358 C4.85180623,24.6926214 9.34877306,24.6936214 12.1197526,21.9206358 L15.9597243,18.0806558 L13.8387399,15.9586669 Z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M14.078 7.061l2.861 2.862-10.799 10.798-3.584.723.724-3.585 10.798-10.798zm0-2.829l-12.64 12.64-1.438 7.128 7.127-1.438 12.642-12.64-5.691-5.69zm7.105 4.277l2.817-2.82-5.691-5.689-2.816 2.817 5.69 5.692z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M24 10h-10v-10h-4v10h-10v4h10v10h4v-10h10z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 3.202L15.839 8H8.161L12 3.202zM12 0L4 10h16L12 0zm3.839 16L12 20.798 8.161 16h7.678zM20 14H4l8 10 8-10z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 3.202L15.839 8H8.161L12 3.202zM12 0L4 10h16L12 0zm8 14H4l8 10 8-10z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 0L4 10h16L12 0zm3.839 16L12 20.798 8.161 16h7.678zM20 14H4l8 10 8-10z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M9 19a1 1 0 01-2 0V9a1 1 0 012 0v10zm4 0a1 1 0 01-2 0V9a1 1 0 012 0v10zm4 0a1 1 0 01-2 0V9a1 1 0 012 0v10zm5-17v2H2V2h5.711c.9 0 1.631-1.099 1.631-2h5.315c0 .901.73 2 1.631 2H22zm-3 4v16H5V6H3v18h18V6h-2z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10 9H4l8-9 8 9h-6v11h-4V9zm11 11v2H3v-2H1v4h22v-4h-2z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M8 4.5L4.5 8l16 16 3.5-3.5-16-16zm2.4 7.7L6.3 8 8 6.3l4.2 4.2-1.8 1.7zM15 7c.2-.2.5-1.3.8-2.7 1.3-.3 2.5-.6 2.7-.8-.2-.2-1.3-.5-2.7-.8-.3-1.4-.6-2.5-.8-2.7-.2.2-.5 1.3-.8 2.7-1.3.3-2.5.6-2.7.8.2.2 1.3.5 2.7.8.3 1.4.6 2.5.8 2.7zM4 13c-.2.2-.5 1.3-.8 2.7-1.3.3-2.5.6-2.7.8.2.2 1.3.5 2.7.8.3 1.4.6 2.5.8 2.7.2-.2.5-1.3.8-2.7 1.3-.3 2.5-.6 2.7-.8-.2-.2-1.3-.5-2.7-.8-.3-1.3-.6-2.5-.8-2.7zm-.5-7c.2-.2.5-1.2.7-2.3 1.1-.2 2.1-.5 2.3-.7-.2-.2-1.2-.5-2.3-.7C4 1.2 3.7.2 3.5 0c-.2.2-.5 1.2-.7 2.3-1.1.2-2.1.5-2.3.7.2.2 1.2.5 2.3.7.2 1.1.5 2.1.7 2.3zM2 11c.1-.1.2-.6.4-1.1.6-.1 1.1-.3 1.1-.4-.1-.1-.6-.2-1.1-.4-.2-.5-.3-1-.4-1.1-.1.1-.2.6-.4 1.1-.5.2-1 .3-1.1.4.1.1.6.2 1.1.4.2.5.3 1 .4 1.1z"></path></svg>
@@ -0,0 +1,52 @@
1
+ :root {
2
+ --workspace-text: #3e3e3e;
3
+ --workspace-background: #e6e6e6;
4
+ }
5
+
6
+ body {
7
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
8
+ -webkit-font-smoothing: antialiased;
9
+ -moz-osx-font-smoothing: grayscale;
10
+ font-size: 14px;
11
+ color: var(--workspace-text);
12
+ line-height: 1.5;
13
+ }
14
+
15
+ html,
16
+ body {
17
+ background-color: var(--workspace-background);
18
+ padding: 0;
19
+ margin: 0;
20
+ }
21
+
22
+ body * {
23
+ font-family: inherit;
24
+ -webkit-font-smoothing: inherit;
25
+ -moz-osx-font-smoothing: inherit;
26
+ font-size: inherit;
27
+ color: inherit;
28
+ }
29
+
30
+ *,
31
+ *::before,
32
+ *::after {
33
+ box-sizing: border-box;
34
+ }
35
+
36
+ h1,
37
+ h2,
38
+ h3 {
39
+ margin: 0;
40
+ }
41
+
42
+ h1 {
43
+ font-size: 160%;
44
+ }
45
+
46
+ h2 {
47
+ font-size: 140%;
48
+ }
49
+
50
+ h3 {
51
+ font-size: 120%;
52
+ }
@@ -0,0 +1,17 @@
1
+ @import '../../../../../components/essence/action_bar_component/action_bar_component';
2
+ @import '../../../../../components/essence/app_info_component/app_info_component';
3
+ @import '../../../../../components/essence/breadcrumb_component/breadcrumb_component';
4
+ @import '../../../../../components/essence/button_component/button_component';
5
+ @import '../../../../../components/essence/card_component/card_component';
6
+ @import '../../../../../components/essence/clipboard_copy_component/clipboard_copy_component';
7
+ @import '../../../../../components/essence/empty_state_component/empty_state_component';
8
+ @import '../../../../../components/essence/link_component/link_component';
9
+ @import '../../../../../components/essence/notification_component/notification_component';
10
+ @import '../../../../../components/essence/paragraph_component/paragraph_component';
11
+ @import '../../../../../components/essence/scroll_shadow_component/scroll_shadow_component';
12
+ @import '../../../../../components/essence/spinner_component/spinner_component';
13
+ @import '../../../../../components/essence/status_component/status_component';
14
+ @import '../../../../../components/essence/step_list_component/step_list_component';
15
+ @import '../../../../../components/essence/table_component/table_component';
16
+ @import '../../../../../components/essence/title_component/title_component';
17
+ @import '../../../../../components/essence/tooltip_component/tooltip_component';
@@ -0,0 +1,9 @@
1
+ .content {
2
+ padding: 25px 25px 100px;
3
+ }
4
+
5
+ .action-bar {
6
+ & + .content {
7
+ padding-top: 12px;
8
+ }
9
+ }
@@ -0,0 +1 @@
1
+ @import 'content';
@@ -0,0 +1,172 @@
1
+ .form {
2
+ &-control {
3
+ &.country,
4
+ &.numeric,
5
+ &.password,
6
+ &.select,
7
+ &.string {
8
+ background-color: var(--inputField-background);
9
+ border: 1px solid var(--inputField-border);
10
+ border-radius: var(--inputField-borderRadius);
11
+ color: var(--inputField-text);
12
+ display: block;
13
+ font-size: 14px;
14
+ outline: none;
15
+ padding: 6px 8px;
16
+ transition: border-color 0.125s ease-in, box-shadow 0.125s ease-in;
17
+ width: 100%;
18
+
19
+ &::placeholder {
20
+ color: var(--inputField-placeholder-text);
21
+ }
22
+
23
+ &:focus {
24
+ border-color: var(--inputField-border-focus);
25
+ }
26
+
27
+ &:disabled {
28
+ background-color: var(--inputField-background-disabled);
29
+ color: var(--inputField-text-disabled);
30
+ }
31
+
32
+ &.invalid {
33
+ box-shadow: inset 2px 0 0 0 var(--formGroup-validation-error);
34
+ }
35
+ }
36
+
37
+ &.numeric,
38
+ &.password,
39
+ &.string {
40
+ &:read-only {
41
+ background-color: var(--inputField-background-disabled);
42
+ color: var(--inputField-text-disabled);
43
+ border-color: var(--inputField-border);
44
+ }
45
+ }
46
+
47
+ &.select {
48
+ -webkit-appearance: none;
49
+ appearance: none;
50
+ background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg data-token-category=%27icons%27 xmlns=%27http://www.w3.org/2000/svg%27 width=%2724%27 height=%2724%27 viewBox=%270 0 24 24%27 fill=%27%237a764c%27%3E %3Cpath d=%27M24,7L12,19L0,7H24z%27/%3E %3C/svg%3E');
51
+ background-position: right 10px top 50%;
52
+ background-repeat: no-repeat;
53
+ background-size: 10px auto;
54
+ padding-right: 30px;
55
+ }
56
+
57
+ &.boolean,
58
+ &.check_boxes {
59
+ appearance: none;
60
+ border: 2px solid var(--uncheck-color);
61
+ border-radius: 0;
62
+ cursor: pointer;
63
+ flex-shrink: 0;
64
+ height: 16px;
65
+ margin: 0;
66
+ width: 16px;
67
+
68
+ &:checked {
69
+ background-color: var(--check-color);
70
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpolygon fill='%23ffffff' points='9.6,18.4 3.8,12.8 5.8,10.7 9.5,14.3 18,5.6 20.1,7.7'/%3E%3C/svg%3E%0A");
71
+ background-size: contain;
72
+ border: none;
73
+ }
74
+
75
+ ~ .form-label {
76
+ cursor: pointer;
77
+ }
78
+
79
+ &:disabled {
80
+ border-color: var(--check-disabled-icon);
81
+
82
+ &:checked {
83
+ background-color: var(--check-disabled-text);
84
+ }
85
+
86
+ ~ .form-label {
87
+ color: var(--check-disabled-text);
88
+ }
89
+ }
90
+ }
91
+
92
+ &.toggle {
93
+ border: 1px solid var(--flipSwitch-border);
94
+ border-radius: 11px;
95
+ cursor: pointer;
96
+ display: block;
97
+ height: 22px;
98
+ position: relative;
99
+ width: 42px;
100
+
101
+ &::before {
102
+ background-color: var(--flipSwitch-unchecked-background);
103
+ border-radius: 100%;
104
+ content: '';
105
+ height: 18px;
106
+ left: 1px;
107
+ position: absolute;
108
+ top: 1px;
109
+ transition: .3s;
110
+ width: 18px;
111
+ background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20.5" height="20.5" viewBox="0 0 20.5 20.5"><path fill="%23ffffff" d="M15.2,13.7l-3.5-3.4,3.4-3.5-1.5-1.5-3.4,3.5-3.5-3.4-1.5,1.5,3.5,3.4-3.4,3.5,1.5,1.5,3.4-3.5,3.5,3.4,1.5-1.5Z"/></svg>');
112
+ background-size: contain;
113
+ }
114
+
115
+ &:has(~ input[type="checkbox"]:checked) {
116
+ &::before {
117
+ background-color: var(--flipSwitch-checked-background);
118
+ left: calc(100% - 19px);
119
+ background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20.5" height="20.5" viewBox="0 0 20.5 20.5"><path fill="%23ffffff" d="M8.6,15.3l-5-4.8,1.6-1.6,3.4,3.3,6.8-7,1.6,1.6-8.4,8.5Z"/></svg>');
120
+ }
121
+ }
122
+
123
+ ~ input[type="checkbox"] {
124
+ opacity: 0;
125
+ width: 0;
126
+ height: 0;
127
+ margin: 0;
128
+ }
129
+
130
+ ~ .form-label {
131
+ cursor: pointer;
132
+ }
133
+ }
134
+
135
+ &.radio_buttons {
136
+ appearance: none;
137
+ border: 2px solid var(--uncheck-color);
138
+ border-radius: 100%;
139
+ cursor: pointer;
140
+ flex-shrink: 0;
141
+ height: 16px;
142
+ margin: 0;
143
+ width: 16px;
144
+
145
+ &:checked {
146
+ background-color: var(--check-color);
147
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='%23ffffff' %3E%3Cpath d='M12,2.4c-5.3,0-9.6,4.3-9.6,9.6s4.3,9.6,9.6,9.6s9.6-4.3,9.6-9.6S17.3,2.4,12,2.4z M12,18.2c-3.5,0-6.3-2.7-6.3-6.2 S8.6,5.7,12,5.7s6.2,2.9,6.2,6.3S15.5,18.2,12,18.2z' /%3E%3C/svg%3E");
148
+ background-size: contain;
149
+ border: none;
150
+ cursor: default;
151
+ }
152
+
153
+ &:not(:checked) {
154
+ ~ .form-label {
155
+ cursor: pointer;
156
+ }
157
+ }
158
+
159
+ &:disabled {
160
+ border-color: var(--check-disabled-icon);
161
+
162
+ &:checked {
163
+ background-color: var(--check-disabled-text);
164
+ }
165
+
166
+ ~ .form-label {
167
+ color: var(--check-disabled-text);
168
+ }
169
+ }
170
+ }
171
+ }
172
+ }
@@ -0,0 +1,27 @@
1
+ .form {
2
+ &-error {
3
+ background-color: var(--formGroup-validation-error);
4
+ border-radius: var(--formGroup-validation-borderRadius);
5
+ color: var(--formGroup-validation-text);
6
+ font-size: 13px;
7
+ font-weight: normal;
8
+ margin: 0;
9
+ padding: 5px 7px;
10
+ position: absolute;
11
+ top: calc(100% + 8px);
12
+ z-index: 1;
13
+
14
+ &::before {
15
+ border: solid transparent;
16
+ border-bottom-color: var(--formGroup-validation-error);
17
+ border-width: 6px;
18
+ bottom: 100%;
19
+ content: '';
20
+ height: 0;
21
+ left: 8px;
22
+ pointer-events: none;
23
+ position: absolute;
24
+ width: 0;
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,34 @@
1
+ .form {
2
+ &-fieldset {
3
+ border: none;
4
+ margin: 0;
5
+ padding: 0;
6
+
7
+ &.check_boxes,
8
+ &.radio_buttons {
9
+ .form-wrapper {
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: 7px;
13
+ }
14
+ }
15
+
16
+ &.check_boxes {
17
+ .form-legend {
18
+ color: #3e3e3e;
19
+ margin-bottom: 15px;
20
+ font-size: 20px;
21
+ font-weight: normal;
22
+ }
23
+ }
24
+
25
+ &.radio_buttons {
26
+ .form-legend {
27
+ color: var(--formGroup-label);
28
+ font-size: 13px;
29
+ font-weight: bold;
30
+ margin-bottom: 8px;
31
+ }
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,6 @@
1
+ .form {
2
+ &-group {
3
+ align-items: center;
4
+ display: flex;
5
+ }
6
+ }
@@ -0,0 +1,8 @@
1
+ .form {
2
+ &-hint {
3
+ color: var(--inputField-hint-text);
4
+ font-size: 13px;
5
+ line-height: 1.2;
6
+ margin-top: .25em;
7
+ }
8
+ }
@@ -0,0 +1,43 @@
1
+ :root {
2
+ --formGroup-label: gray;
3
+ --formGroup-validation-error: #da3c3c;
4
+ --formGroup-validation-text: white;
5
+ --formGroup-validation-borderRadius: 3px;
6
+
7
+ --inputField-borderRadius: 3px;
8
+ --inputField-border: #d2d2d2;
9
+ --inputField-border-focus: orange;
10
+ --inputField-text: #3e3e3e;
11
+ --inputField-background: white;
12
+ --inputField-background-focus: white;
13
+ --inputField-background-disabled: #f5f5f5;
14
+ --inputField-text-disabled: #9a9a9a;
15
+ --inputField-placeholder-text: #a4a4a4;
16
+ --inputField-hint-text: gray;
17
+
18
+ --smartInputField-suggestion-active: #b3ecff;
19
+ --smartInputField-value-background: #d9d9d9;
20
+ --smartInputField-value-text: #666666;
21
+ --smartInputField-value-icon: currentColor;
22
+ --smartInputField-value-icon-hover: #4d4d4d;
23
+ --smartInputField-value-borderRadius: 3px;
24
+
25
+ --check-color: #97c344;
26
+ --uncheck-color: #b3b3b3;
27
+ --check-disabled-text: #c5c5c5;
28
+ --check-disabled-icon: #d9d9d9;
29
+
30
+ --flipSwitch-unchecked-background: #b3b3b3;
31
+ --flipSwitch-checked-background: #97c344;
32
+ --flipSwitch-border: #c0c0c0;
33
+ --flipSwitch-label: gray;
34
+ --flipSwitch-text: silver;
35
+ }
36
+
37
+ @import 'control';
38
+ @import 'error';
39
+ @import 'fieldset';
40
+ @import 'group';
41
+ @import 'hint';
42
+ @import 'label';
43
+ @import 'wrapper';
@@ -0,0 +1,26 @@
1
+ .form {
2
+ &-label {
3
+ &.collection_radio_buttons {
4
+ color: #808080;
5
+ font-size: 13px;
6
+ }
7
+
8
+ &:not(.collection_radio_buttons) {
9
+ color: var(--formGroup-label);
10
+ font-size: 13px;
11
+ font-weight: bold;
12
+ }
13
+
14
+ &.boolean,
15
+ &.collection_check_boxes,
16
+ &.collection_radio_buttons {
17
+ line-height: 16px;
18
+ padding-left: 7px;
19
+ }
20
+
21
+ &.toggle {
22
+ line-height: 16px;
23
+ padding-left: 10px;
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,5 @@
1
+ .form {
2
+ &-wrapper {
3
+ position: relative;
4
+ }
5
+ }
@@ -0,0 +1,4 @@
1
+ @import 'beyond/base';
2
+ @import 'beyond/components';
3
+ @import 'beyond/layout';
4
+ @import 'beyond/simple_form';
@@ -0,0 +1,16 @@
1
+ <% content_for :action_bar do %>
2
+ <div <%= tag.attributes **html_options %>>
3
+ <div class="action-bar-wrapper">
4
+ <div class="action-bar-left-content">
5
+ <% left_components.each do |component| %>
6
+ <%= component %>
7
+ <% end %>
8
+ </div>
9
+ <div class="action-bar-right-content">
10
+ <% right_components.each do |component| %>
11
+ <%= component %>
12
+ <% end %>
13
+ </div>
14
+ </div>
15
+ </div>
16
+ <% end %>