epages-essence 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 %>