easyfaa 0.20.0 → 1.0.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 (207) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +131 -468
  3. data/README.md +49 -222
  4. data/app/assets/fonts/easy/outfit-latin-ext.woff2 +0 -0
  5. data/app/assets/fonts/easy/outfit-latin.woff2 +0 -0
  6. data/app/assets/images/easy/favicon.ico +0 -0
  7. data/app/assets/images/easy/favicon.svg +11 -0
  8. data/app/assets/images/easy/sprite.svg +52 -0
  9. data/app/assets/javascripts/easy/add_rows.js +38 -0
  10. data/app/assets/javascripts/easy/flyer.js +100 -0
  11. data/app/assets/javascripts/easy/highlight.js +54 -0
  12. data/app/assets/javascripts/easy/konami.js +73 -0
  13. data/app/assets/javascripts/easy/modal.js +49 -0
  14. data/app/assets/javascripts/easy/pin_code.js +43 -0
  15. data/app/assets/javascripts/easy/report_sort.js +57 -0
  16. data/app/assets/javascripts/easy/rotating_placeholder.js +35 -0
  17. data/app/assets/javascripts/easy/step_foot.js +17 -0
  18. data/app/assets/javascripts/easy/switches.js +96 -0
  19. data/app/assets/javascripts/easy/switches_address.js +39 -0
  20. data/app/assets/javascripts/easy/tabs.js +35 -0
  21. data/app/assets/javascripts/easy/theme.js +41 -0
  22. data/app/assets/stylesheets/easy/base.css +42 -0
  23. data/app/assets/stylesheets/easy/components.css +533 -0
  24. data/app/assets/stylesheets/easy/layout.css +47 -0
  25. data/app/assets/stylesheets/easy/tokens.css +11 -0
  26. data/app/controllers/easyfaa/errors_controller.rb +41 -0
  27. data/app/helpers/easyfaa/easy_helper.rb +58 -0
  28. data/app/models/aircraft_avatar.rb +61 -0
  29. data/app/views/easy/_ad_card.html.erb +16 -0
  30. data/app/views/easy/_ad_list.html.erb +11 -0
  31. data/app/views/easy/_flyer.html.erb +10 -0
  32. data/app/views/easy/_logo.html.erb +15 -0
  33. data/app/views/easy/_modal.html.erb +17 -0
  34. data/app/views/easy/_part_tabs.html.erb +24 -0
  35. data/app/views/easy/_pin_code.html.erb +10 -0
  36. data/app/views/easy/_report_head.html.erb +28 -0
  37. data/app/views/easy/mailer/_button.html.erb +10 -0
  38. data/app/views/easy/mailer/_card.html.erb +23 -0
  39. data/app/views/easy/mailer/_code.html.erb +28 -0
  40. data/app/views/easy/mailer/_code.text.erb +19 -0
  41. data/app/views/easy/mailer/_frame.html.erb +35 -0
  42. data/app/views/easy/mailer/_text.html.erb +7 -0
  43. data/app/views/easyfaa/errors/show.html.erb +17 -0
  44. data/app/views/layouts/easy/site.html.erb +55 -0
  45. data/app/views/layouts/easyfaa/errors.html.erb +30 -0
  46. data/config/aircraft_avatars.yml +26 -0
  47. data/lib/easyfaa/engine.rb +16 -43
  48. data/lib/easyfaa/version.rb +2 -2
  49. data/lib/easyfaa.rb +14 -35
  50. metadata +52 -181
  51. data/app/views/layouts/easyfaa.html.erb +0 -24
  52. data/app/views/recourses/_head.html.erb +0 -3
  53. data/art/autopilot.svg +0 -9
  54. data/art/cube.svg +0 -9
  55. data/art/design.svg +0 -8
  56. data/art/down.html.erb +0 -95
  57. data/art/easyfaa.svg +0 -7
  58. data/art/fountain.svg +0 -9
  59. data/art/goldrush.svg +0 -7
  60. data/art/houston.svg +0 -8
  61. data/art/icons.txt +0 -185
  62. data/art/index.html.erb +0 -157
  63. data/config/locales/easyfaa.en.yml +0 -7
  64. data/lib/easyfaa/copy.rb +0 -5
  65. data/lib/easyfaa/down.rb +0 -19
  66. data/lib/easyfaa/helpers/flows.rb +0 -53
  67. data/lib/easyfaa/helpers/heads.rb +0 -60
  68. data/lib/easyfaa/helpers/logos.rb +0 -43
  69. data/lib/easyfaa/helpers.rb +0 -11
  70. data/lib/easyfaa/marks.rb +0 -16
  71. data/public/404.html +0 -118
  72. data/public/_headers +0 -28
  73. data/public/bh/css/bh.css +0 -1
  74. data/public/bh/js/bh.js +0 -152
  75. data/public/bh/theme/bootstrap.css +0 -10
  76. data/public/bh/theme/dawn.css +0 -189
  77. data/public/bh/theme/dracula.css +0 -189
  78. data/public/bh/theme/gruvbox.css +0 -189
  79. data/public/bh/theme/monokai.css +0 -190
  80. data/public/bh/theme/nord.css +0 -189
  81. data/public/bh/theme/one_dark.css +0 -189
  82. data/public/bh/theme/solarized.css +0 -188
  83. data/public/bh/theme/tokyo_night.css +0 -189
  84. data/public/css/easyfaa.css +0 -1
  85. data/public/down/autopilot.html +0 -87
  86. data/public/down/cube.html +0 -87
  87. data/public/down/design.html +0 -87
  88. data/public/down/easyfaa.html +0 -84
  89. data/public/down/fountain.html +0 -87
  90. data/public/down/goldrush.html +0 -87
  91. data/public/down/houston.html +0 -87
  92. data/public/favicon/autopilot-180.png +0 -0
  93. data/public/favicon/autopilot-192.png +0 -0
  94. data/public/favicon/autopilot-512.png +0 -0
  95. data/public/favicon/autopilot-96.png +0 -0
  96. data/public/favicon/autopilot-dev.svg +0 -9
  97. data/public/favicon/autopilot.ico +0 -0
  98. data/public/favicon/autopilot.svg +0 -9
  99. data/public/favicon/autopilot.webmanifest +0 -12
  100. data/public/favicon/cube-180.png +0 -0
  101. data/public/favicon/cube-192.png +0 -0
  102. data/public/favicon/cube-512.png +0 -0
  103. data/public/favicon/cube-96.png +0 -0
  104. data/public/favicon/cube-dev.svg +0 -9
  105. data/public/favicon/cube.ico +0 -0
  106. data/public/favicon/cube.svg +0 -9
  107. data/public/favicon/cube.webmanifest +0 -12
  108. data/public/favicon/design-180.png +0 -0
  109. data/public/favicon/design-192.png +0 -0
  110. data/public/favicon/design-512.png +0 -0
  111. data/public/favicon/design-96.png +0 -0
  112. data/public/favicon/design-dev.svg +0 -8
  113. data/public/favicon/design.ico +0 -0
  114. data/public/favicon/design.svg +0 -8
  115. data/public/favicon/design.webmanifest +0 -12
  116. data/public/favicon/easyfaa-180.png +0 -0
  117. data/public/favicon/easyfaa-192.png +0 -0
  118. data/public/favicon/easyfaa-512.png +0 -0
  119. data/public/favicon/easyfaa-96.png +0 -0
  120. data/public/favicon/easyfaa-dev.svg +0 -7
  121. data/public/favicon/easyfaa.ico +0 -0
  122. data/public/favicon/easyfaa.svg +0 -7
  123. data/public/favicon/easyfaa.webmanifest +0 -12
  124. data/public/favicon/fountain-180.png +0 -0
  125. data/public/favicon/fountain-192.png +0 -0
  126. data/public/favicon/fountain-512.png +0 -0
  127. data/public/favicon/fountain-96.png +0 -0
  128. data/public/favicon/fountain-dev.svg +0 -9
  129. data/public/favicon/fountain.ico +0 -0
  130. data/public/favicon/fountain.svg +0 -9
  131. data/public/favicon/fountain.webmanifest +0 -12
  132. data/public/favicon/goldrush-180.png +0 -0
  133. data/public/favicon/goldrush-192.png +0 -0
  134. data/public/favicon/goldrush-512.png +0 -0
  135. data/public/favicon/goldrush-96.png +0 -0
  136. data/public/favicon/goldrush-dev.svg +0 -7
  137. data/public/favicon/goldrush.ico +0 -0
  138. data/public/favicon/goldrush.svg +0 -7
  139. data/public/favicon/goldrush.webmanifest +0 -12
  140. data/public/favicon/houston-180.png +0 -0
  141. data/public/favicon/houston-192.png +0 -0
  142. data/public/favicon/houston-512.png +0 -0
  143. data/public/favicon/houston-96.png +0 -0
  144. data/public/favicon/houston-dev.svg +0 -8
  145. data/public/favicon/houston.ico +0 -0
  146. data/public/favicon/houston.svg +0 -8
  147. data/public/favicon/houston.webmanifest +0 -12
  148. data/public/favicon.ico +0 -0
  149. data/public/font/bootstrap-icons-6LILWPE2.woff2 +0 -0
  150. data/public/font/bootstrap-icons-FRBPO3H7.woff2 +0 -0
  151. data/public/font/ibm-plex-sans-500-latin-LA7QXWWL.woff2 +0 -0
  152. data/public/font/ibm-plex-sans-500-latin-ext-X4QHZICY.woff2 +0 -0
  153. data/public/font/ibm-plex-sans-500-latin-ext.woff2 +0 -0
  154. data/public/font/ibm-plex-sans-500-latin.woff2 +0 -0
  155. data/public/font/ibm-plex-sans-500-vietnamese-24B6BSND.woff2 +0 -0
  156. data/public/font/ibm-plex-sans-500-vietnamese.woff2 +0 -0
  157. data/public/index.html +0 -165
  158. data/public/js/easyfaa.js +0 -1
  159. data/public/logo/autopilot.png +0 -0
  160. data/public/logo/autopilot.svg +0 -9
  161. data/public/logo/cube.png +0 -0
  162. data/public/logo/cube.svg +0 -9
  163. data/public/logo/design.png +0 -0
  164. data/public/logo/design.svg +0 -8
  165. data/public/logo/easyfaa.png +0 -0
  166. data/public/logo/easyfaa.svg +0 -7
  167. data/public/logo/fountain.png +0 -0
  168. data/public/logo/fountain.svg +0 -9
  169. data/public/logo/goldrush.png +0 -0
  170. data/public/logo/goldrush.svg +0 -7
  171. data/public/logo/houston.png +0 -0
  172. data/public/logo/houston.svg +0 -8
  173. data/public/page/400.html +0 -118
  174. data/public/page/404.html +0 -118
  175. data/public/page/406-unsupported-browser.html +0 -118
  176. data/public/page/422.html +0 -118
  177. data/public/page/500.html +0 -118
  178. data/public/site.webmanifest +0 -12
  179. data/public/theme/bootstrap.css +0 -10
  180. data/public/theme/dawn.css +0 -189
  181. data/public/theme/dracula.css +0 -189
  182. data/public/theme/gruvbox.css +0 -189
  183. data/public/theme/monokai.css +0 -190
  184. data/public/theme/nord.css +0 -189
  185. data/public/theme/one_dark.css +0 -189
  186. data/public/theme/solarized.css +0 -188
  187. data/public/theme/tokyo_night.css +0 -189
  188. data/public/v0.20.0/bh/css/bh.css +0 -1
  189. data/public/v0.20.0/bh/js/bh.js +0 -152
  190. data/public/v0.20.0/bh/theme/bootstrap.css +0 -10
  191. data/public/v0.20.0/bh/theme/dawn.css +0 -189
  192. data/public/v0.20.0/bh/theme/dracula.css +0 -189
  193. data/public/v0.20.0/bh/theme/gruvbox.css +0 -189
  194. data/public/v0.20.0/bh/theme/monokai.css +0 -190
  195. data/public/v0.20.0/bh/theme/nord.css +0 -189
  196. data/public/v0.20.0/bh/theme/one_dark.css +0 -189
  197. data/public/v0.20.0/bh/theme/solarized.css +0 -188
  198. data/public/v0.20.0/bh/theme/tokyo_night.css +0 -189
  199. data/public/v0.20.0/css/easyfaa.css +0 -1
  200. data/public/v0.20.0/font/bootstrap-icons-FRBPO3H7.woff2 +0 -0
  201. data/public/v0.20.0/font/ibm-plex-sans-500-latin-LA7QXWWL.woff2 +0 -0
  202. data/public/v0.20.0/font/ibm-plex-sans-500-latin-ext-X4QHZICY.woff2 +0 -0
  203. data/public/v0.20.0/font/ibm-plex-sans-500-latin-ext.woff2 +0 -0
  204. data/public/v0.20.0/font/ibm-plex-sans-500-latin.woff2 +0 -0
  205. data/public/v0.20.0/font/ibm-plex-sans-500-vietnamese-24B6BSND.woff2 +0 -0
  206. data/public/v0.20.0/font/ibm-plex-sans-500-vietnamese.woff2 +0 -0
  207. data/public/v0.20.0/js/easyfaa.js +0 -1
@@ -1,53 +1,26 @@
1
1
  # rails/engine alone raises NoMethodError: railtie.rb calls delegate_missing_to too early.
2
2
  require 'rails'
3
3
 
4
- module Easyfaa
5
- # Hooks the gem into a host app: serves its files, its error pages and its helpers.
4
+ module EasyFAA
5
+ # Hooks the gem into a host app: its error pages and its helpers. The easy design system's
6
+ # stylesheets, scripts, fonts and icons are under `app/assets`, which the host's asset
7
+ # pipeline reads as its own: `stylesheet_link_tag "easy/tokens"`.
6
8
  class Engine < ::Rails::Engine
7
- # The folders the design site publishes, served from this gem at the same paths so a
8
- # page on an app and a page on the site link one file — this version's copy under its
9
- # own prefix among them. Each keeps its slash: `Rack::Static` matches on `start_with?`,
10
- # and `/page` would swallow `/pages` itself.
11
- PREFIXES = %W[/css/ /js/ /theme/ /font/ /logo/ /favicon/ /page/ /v#{VERSION}/].freeze
12
-
13
- # An unversioned file is asked for again on every full load and answered `304 Not
14
- # Modified` while it stands, since its URL never changes between versions. A font, whose
15
- # name carries a hash of its bytes, and anything under this version's prefix never change
16
- # at all, so a browser may keep them for good.
17
- HEADERS = [
18
- [:all, { 'cache-control' => 'no-cache' }],
19
- ['/font/', { 'cache-control' => 'public, max-age=31536000, immutable' }],
20
- ['/v', { 'cache-control' => 'public, max-age=31536000, immutable' }],
21
- ].freeze
22
-
23
- # What a file is kept for while the gem is being worked on: not at all, since the
24
- # version's copy is rewritten under the same name until it is released, and a browser
25
- # told to keep it for a year would show yesterday's stylesheet on today's page.
26
- DEVELOPMENT_HEADERS = HEADERS.first 1
27
-
28
- # Before `Rails::Rack::Logger`, so fetching a stylesheet writes no `Started GET` line, and
29
- # cascading, so a host route under one of these prefixes still answers.
30
- initializer 'easyfaa.assets' do |app|
31
- headers = Rails.env.development? ? DEVELOPMENT_HEADERS : HEADERS
32
- app.middleware.insert_before Rails::Rack::Logger, Rack::Static,
33
- urls: PREFIXES, root: Engine.root.join('public').to_s,
34
- header_rules: headers, cascade: true
35
- end
36
-
37
- # The branded error pages, read by status from `public/page` the way Rails reads a host's
38
- # own `public/`, unless the host has already named an app of its own.
39
- initializer 'easyfaa.exceptions' do |app|
40
- app.config.exceptions_app ||=
41
- ActionDispatch::PublicExceptions.new Engine.root.join('public/page').to_s
42
- end
43
-
44
- # The page a host shows while it is down, at the path Heroku and a reader expect.
45
- initializer 'easyfaa.down' do |app|
46
- app.middleware.insert_before Rails::Rack::Logger, Down
9
+ # The same page for 400, 404, 422 and 500 on every app (EasyFAA::ErrorsController), unless
10
+ # the host has already named an exceptions app of its own, and the page it shows while it
11
+ # is down at the path Heroku and a reader expect.
12
+ initializer 'easyfaa.errors' do |app|
13
+ app.config.exceptions_app ||= app.routes
14
+ app.routes.prepend do
15
+ %w[400 404 422 500].each do |status|
16
+ get status, to: 'easyfaa/errors#show', defaults: { status: status.to_i }
17
+ end
18
+ get 'down.html', to: 'easyfaa/errors#down', format: false
19
+ end
47
20
  end
48
21
 
49
22
  initializer 'easyfaa.helpers' do
50
- ActiveSupport.on_load(:action_view) { include Easyfaa::Helpers }
23
+ ActiveSupport.on_load(:action_view) { include EasyFAA::EasyHelper }
51
24
  end
52
25
  end
53
26
  end
@@ -1,4 +1,4 @@
1
- module Easyfaa
1
+ module EasyFAA
2
2
  # Version of the gem, read by the gemspec and by hosts checking compatibility.
3
- VERSION = '0.20.0'
3
+ VERSION = '1.0.0'
4
4
  end
data/lib/easyfaa.rb CHANGED
@@ -1,39 +1,18 @@
1
- require 'bh'
2
- require_relative 'easyfaa/version'
3
- require_relative 'easyfaa/marks'
4
- require_relative 'easyfaa/copy'
5
- require_relative 'easyfaa/down'
6
- require_relative 'easyfaa/helpers'
7
- require_relative 'easyfaa/engine'
8
-
9
- # easyfaa's front end: the stylesheet and script every page loads — bh's Bootstrap 6
10
- # with the house's own layer over it — the marks every app is known by, and the helpers that
11
- # draw a head, a logo or a signup page the same way everywhere.
12
- module Easyfaa
13
- # The form every easyfaa page is written with, which is bh's: the house dresses no
14
- # field differently, so this name and `Bh::FormBuilder` are one builder.
15
- FormBuilder = Bh::FormBuilder
1
+ require 'active_support/core_ext/module/attribute_accessors'
2
+ require 'active_support/inflector'
16
3
 
17
- # One message of a chat, which is bh's too. Named here for a host that reached for it by
18
- # the house's name before the components moved.
19
- Message = Bh::Message
4
+ # FAA in capitals: Rails camelizes the gem's folders (easyfaa/) by this, to load and route them.
5
+ ActiveSupport::Inflector.inflections(:en) { it.acronym 'EasyFAA' }
20
6
 
21
- # Which of the family this host is, read off the Rails application's own name — the
22
- # `Goldrush` of `Goldrush::Application` — and the house itself for any app not in `MARKS`.
23
- # What a tab wears, what a logo says and whose page answers `/down.html`.
24
- def self.app
25
- name = Rails.application.class.module_parent_name.downcase.to_sym
26
- MARKS.key?(name) ? name : :easyfaa
27
- end
7
+ require_relative 'easyfaa/version'
8
+ require_relative 'easyfaa/engine'
28
9
 
29
- # The words that carry a 6-digit code to a phone, in both voices. `written` is the sentence
30
- # a person reads and, under it, the line Safari matches against the page about to be filled,
31
- # `@host #code`, which offers the code above the keyboard so nobody leaves for Messages to
32
- # copy it. `spoken` is the sentence alone, its digits one at a time so a listener can write
33
- # them down, and without a line meant for a phone rather than a person. Every app of the
34
- # house that sends a code sends these, from `config/locales`.
35
- def self.one_time_code(pin, host: Rails.application.default_url_options[:host])
36
- Copy.new written: I18n.t('easyfaa.one_time_code', pin:, host:),
37
- spoken: I18n.t('easyfaa.spoken_one_time_code', pin: pin.chars.join(', '))
38
- end
10
+ # easyFAA's front end: the easy design system every app's pages are drawn with (its layout,
11
+ # stylesheets, scripts, fonts, icons and partials), the error pages every app shows, and the
12
+ # marks the apps are known by inside the house.
13
+ module EasyFAA
14
+ # The site an error page names, in its title, its one link and the maintenance message, as
15
+ # `[name, url]` for the request: an app that is not easyFAA's own names itself,
16
+ # `EasyFAA.site = ->(request) { ['easyAnnual', 'https://easyannual.com/'] }`.
17
+ mattr_accessor :site, default: ->(_request) { ['easyFAA', 'https://easyfaa.com/'] }
39
18
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easyfaa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - claudiob
@@ -37,20 +37,6 @@ dependencies:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: '8.1'
40
- - !ruby/object:Gem::Dependency
41
- name: bh
42
- requirement: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 6.7.0
47
- type: :runtime
48
- prerelease: false
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: 6.7.0
54
40
  - !ruby/object:Gem::Dependency
55
41
  name: railties
56
42
  requirement: !ruby/object:Gem::Requirement
@@ -65,9 +51,8 @@ dependencies:
65
51
  - - ">="
66
52
  - !ruby/object:Gem::Version
67
53
  version: '8.1'
68
- description: One stylesheet and one script, served by the engine or from design.easyfaa.com,
69
- the marks every app is known by, the pages shown when an app is not, and helpers
70
- that draw a head, a lockup or a chat the same way everywhere.
54
+ description: 'The easy design system every easyFAA page is drawn with: its layout,
55
+ stylesheets, scripts, fonts, icons and partials, and the error pages every app shows.'
71
56
  email:
72
57
  - info@easyfaa.com
73
58
  executables: []
@@ -77,172 +62,58 @@ files:
77
62
  - CHANGELOG.md
78
63
  - MIT-LICENSE
79
64
  - README.md
80
- - app/views/layouts/easyfaa.html.erb
81
- - app/views/recourses/_head.html.erb
82
- - art/autopilot.svg
83
- - art/cube.svg
84
- - art/design.svg
85
- - art/down.html.erb
86
- - art/easyfaa.svg
87
- - art/fountain.svg
88
- - art/goldrush.svg
89
- - art/houston.svg
90
- - art/icons.txt
91
- - art/index.html.erb
92
- - config/locales/easyfaa.en.yml
65
+ - app/assets/fonts/easy/outfit-latin-ext.woff2
66
+ - app/assets/fonts/easy/outfit-latin.woff2
67
+ - app/assets/images/easy/favicon.ico
68
+ - app/assets/images/easy/favicon.svg
69
+ - app/assets/images/easy/sprite.svg
70
+ - app/assets/javascripts/easy/add_rows.js
71
+ - app/assets/javascripts/easy/flyer.js
72
+ - app/assets/javascripts/easy/highlight.js
73
+ - app/assets/javascripts/easy/konami.js
74
+ - app/assets/javascripts/easy/modal.js
75
+ - app/assets/javascripts/easy/pin_code.js
76
+ - app/assets/javascripts/easy/report_sort.js
77
+ - app/assets/javascripts/easy/rotating_placeholder.js
78
+ - app/assets/javascripts/easy/step_foot.js
79
+ - app/assets/javascripts/easy/switches.js
80
+ - app/assets/javascripts/easy/switches_address.js
81
+ - app/assets/javascripts/easy/tabs.js
82
+ - app/assets/javascripts/easy/theme.js
83
+ - app/assets/stylesheets/easy/base.css
84
+ - app/assets/stylesheets/easy/components.css
85
+ - app/assets/stylesheets/easy/layout.css
86
+ - app/assets/stylesheets/easy/tokens.css
87
+ - app/controllers/easyfaa/errors_controller.rb
88
+ - app/helpers/easyfaa/easy_helper.rb
89
+ - app/models/aircraft_avatar.rb
90
+ - app/views/easy/_ad_card.html.erb
91
+ - app/views/easy/_ad_list.html.erb
92
+ - app/views/easy/_flyer.html.erb
93
+ - app/views/easy/_logo.html.erb
94
+ - app/views/easy/_modal.html.erb
95
+ - app/views/easy/_part_tabs.html.erb
96
+ - app/views/easy/_pin_code.html.erb
97
+ - app/views/easy/_report_head.html.erb
98
+ - app/views/easy/mailer/_button.html.erb
99
+ - app/views/easy/mailer/_card.html.erb
100
+ - app/views/easy/mailer/_code.html.erb
101
+ - app/views/easy/mailer/_code.text.erb
102
+ - app/views/easy/mailer/_frame.html.erb
103
+ - app/views/easy/mailer/_text.html.erb
104
+ - app/views/easyfaa/errors/show.html.erb
105
+ - app/views/layouts/easy/site.html.erb
106
+ - app/views/layouts/easyfaa/errors.html.erb
107
+ - config/aircraft_avatars.yml
93
108
  - lib/easyfaa.rb
94
- - lib/easyfaa/copy.rb
95
- - lib/easyfaa/down.rb
96
109
  - lib/easyfaa/engine.rb
97
- - lib/easyfaa/helpers.rb
98
- - lib/easyfaa/helpers/flows.rb
99
- - lib/easyfaa/helpers/heads.rb
100
- - lib/easyfaa/helpers/logos.rb
101
- - lib/easyfaa/marks.rb
102
110
  - lib/easyfaa/version.rb
103
- - public/404.html
104
- - public/_headers
105
- - public/bh/css/bh.css
106
- - public/bh/js/bh.js
107
- - public/bh/theme/bootstrap.css
108
- - public/bh/theme/dawn.css
109
- - public/bh/theme/dracula.css
110
- - public/bh/theme/gruvbox.css
111
- - public/bh/theme/monokai.css
112
- - public/bh/theme/nord.css
113
- - public/bh/theme/one_dark.css
114
- - public/bh/theme/solarized.css
115
- - public/bh/theme/tokyo_night.css
116
- - public/css/easyfaa.css
117
- - public/down/autopilot.html
118
- - public/down/cube.html
119
- - public/down/design.html
120
- - public/down/easyfaa.html
121
- - public/down/fountain.html
122
- - public/down/goldrush.html
123
- - public/down/houston.html
124
- - public/favicon.ico
125
- - public/favicon/autopilot-180.png
126
- - public/favicon/autopilot-192.png
127
- - public/favicon/autopilot-512.png
128
- - public/favicon/autopilot-96.png
129
- - public/favicon/autopilot-dev.svg
130
- - public/favicon/autopilot.ico
131
- - public/favicon/autopilot.svg
132
- - public/favicon/autopilot.webmanifest
133
- - public/favicon/cube-180.png
134
- - public/favicon/cube-192.png
135
- - public/favicon/cube-512.png
136
- - public/favicon/cube-96.png
137
- - public/favicon/cube-dev.svg
138
- - public/favicon/cube.ico
139
- - public/favicon/cube.svg
140
- - public/favicon/cube.webmanifest
141
- - public/favicon/design-180.png
142
- - public/favicon/design-192.png
143
- - public/favicon/design-512.png
144
- - public/favicon/design-96.png
145
- - public/favicon/design-dev.svg
146
- - public/favicon/design.ico
147
- - public/favicon/design.svg
148
- - public/favicon/design.webmanifest
149
- - public/favicon/easyfaa-180.png
150
- - public/favicon/easyfaa-192.png
151
- - public/favicon/easyfaa-512.png
152
- - public/favicon/easyfaa-96.png
153
- - public/favicon/easyfaa-dev.svg
154
- - public/favicon/easyfaa.ico
155
- - public/favicon/easyfaa.svg
156
- - public/favicon/easyfaa.webmanifest
157
- - public/favicon/fountain-180.png
158
- - public/favicon/fountain-192.png
159
- - public/favicon/fountain-512.png
160
- - public/favicon/fountain-96.png
161
- - public/favicon/fountain-dev.svg
162
- - public/favicon/fountain.ico
163
- - public/favicon/fountain.svg
164
- - public/favicon/fountain.webmanifest
165
- - public/favicon/goldrush-180.png
166
- - public/favicon/goldrush-192.png
167
- - public/favicon/goldrush-512.png
168
- - public/favicon/goldrush-96.png
169
- - public/favicon/goldrush-dev.svg
170
- - public/favicon/goldrush.ico
171
- - public/favicon/goldrush.svg
172
- - public/favicon/goldrush.webmanifest
173
- - public/favicon/houston-180.png
174
- - public/favicon/houston-192.png
175
- - public/favicon/houston-512.png
176
- - public/favicon/houston-96.png
177
- - public/favicon/houston-dev.svg
178
- - public/favicon/houston.ico
179
- - public/favicon/houston.svg
180
- - public/favicon/houston.webmanifest
181
- - public/font/bootstrap-icons-6LILWPE2.woff2
182
- - public/font/bootstrap-icons-FRBPO3H7.woff2
183
- - public/font/ibm-plex-sans-500-latin-LA7QXWWL.woff2
184
- - public/font/ibm-plex-sans-500-latin-ext-X4QHZICY.woff2
185
- - public/font/ibm-plex-sans-500-latin-ext.woff2
186
- - public/font/ibm-plex-sans-500-latin.woff2
187
- - public/font/ibm-plex-sans-500-vietnamese-24B6BSND.woff2
188
- - public/font/ibm-plex-sans-500-vietnamese.woff2
189
- - public/index.html
190
- - public/js/easyfaa.js
191
- - public/logo/autopilot.png
192
- - public/logo/autopilot.svg
193
- - public/logo/cube.png
194
- - public/logo/cube.svg
195
- - public/logo/design.png
196
- - public/logo/design.svg
197
- - public/logo/easyfaa.png
198
- - public/logo/easyfaa.svg
199
- - public/logo/fountain.png
200
- - public/logo/fountain.svg
201
- - public/logo/goldrush.png
202
- - public/logo/goldrush.svg
203
- - public/logo/houston.png
204
- - public/logo/houston.svg
205
- - public/page/400.html
206
- - public/page/404.html
207
- - public/page/406-unsupported-browser.html
208
- - public/page/422.html
209
- - public/page/500.html
210
- - public/site.webmanifest
211
- - public/theme/bootstrap.css
212
- - public/theme/dawn.css
213
- - public/theme/dracula.css
214
- - public/theme/gruvbox.css
215
- - public/theme/monokai.css
216
- - public/theme/nord.css
217
- - public/theme/one_dark.css
218
- - public/theme/solarized.css
219
- - public/theme/tokyo_night.css
220
- - public/v0.20.0/bh/css/bh.css
221
- - public/v0.20.0/bh/js/bh.js
222
- - public/v0.20.0/bh/theme/bootstrap.css
223
- - public/v0.20.0/bh/theme/dawn.css
224
- - public/v0.20.0/bh/theme/dracula.css
225
- - public/v0.20.0/bh/theme/gruvbox.css
226
- - public/v0.20.0/bh/theme/monokai.css
227
- - public/v0.20.0/bh/theme/nord.css
228
- - public/v0.20.0/bh/theme/one_dark.css
229
- - public/v0.20.0/bh/theme/solarized.css
230
- - public/v0.20.0/bh/theme/tokyo_night.css
231
- - public/v0.20.0/css/easyfaa.css
232
- - public/v0.20.0/font/bootstrap-icons-FRBPO3H7.woff2
233
- - public/v0.20.0/font/ibm-plex-sans-500-latin-LA7QXWWL.woff2
234
- - public/v0.20.0/font/ibm-plex-sans-500-latin-ext-X4QHZICY.woff2
235
- - public/v0.20.0/font/ibm-plex-sans-500-latin-ext.woff2
236
- - public/v0.20.0/font/ibm-plex-sans-500-latin.woff2
237
- - public/v0.20.0/font/ibm-plex-sans-500-vietnamese-24B6BSND.woff2
238
- - public/v0.20.0/font/ibm-plex-sans-500-vietnamese.woff2
239
- - public/v0.20.0/js/easyfaa.js
240
- homepage: https://design.easyfaa.com
111
+ homepage: https://easyfaa.com/design
241
112
  licenses:
242
113
  - MIT
243
114
  metadata:
244
- source_code_uri: https://github.com/easyfaa/design
245
- changelog_uri: https://github.com/easyfaa/design/blob/main/CHANGELOG.md
115
+ source_code_uri: https://github.com/easyfaa/easyfaa/tree/main/design
116
+ changelog_uri: https://github.com/easyfaa/easyfaa/blob/main/design/CHANGELOG.md
246
117
  documentation_uri: https://rubydoc.info/gems/easyfaa
247
118
  rdoc_options: []
248
119
  require_paths:
@@ -251,14 +122,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
251
122
  requirements:
252
123
  - - ">="
253
124
  - !ruby/object:Gem::Version
254
- version: 3.2.0
125
+ version: '3.4'
255
126
  required_rubygems_version: !ruby/object:Gem::Requirement
256
127
  requirements:
257
128
  - - ">="
258
129
  - !ruby/object:Gem::Version
259
130
  version: '0'
260
131
  requirements: []
261
- rubygems_version: 4.0.3
132
+ rubygems_version: 4.0.20
262
133
  specification_version: 4
263
- summary: The front end every easyfaa app shares.
134
+ summary: The front end every easyFAA app shares.
264
135
  test_files: []
@@ -1,24 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang='en'>
3
- <head>
4
- <meta charset='utf-8'>
5
- <title><%= content_for(:title) || Easyfaa.app %></title>
6
- <%- if protect_against_forgery? -%>
7
- <meta name='csrf-param' content='<%= request_forgery_protection_token %>'>
8
- <meta name='csrf-token' content='<%= form_authenticity_token %>'>
9
- <%- end -%>
10
- <%- if (csp = csp_meta_tag) -%>
11
- <%= csp %>
12
- <%- end -%>
13
- <%= easyfaa_head_tags content_for(:logo).presence || Easyfaa.app %>
14
- <%- if content_for?(:head) -%>
15
- <%= yield :head %>
16
- <%- end -%>
17
- </head>
18
- <body class='house-page d-flex flex-column'>
19
- <main class='container-fluid py-4 flex-grow-1 d-flex flex-column'>
20
- <%= content_for?(:content) ? yield(:content) : yield %>
21
- </main>
22
- <%= toasts %>
23
- </body>
24
- </html>
@@ -1,3 +0,0 @@
1
- <%= easyfaa_tags %>
2
-
3
- <%= easyfaa_icons %>
data/art/autopilot.svg DELETED
@@ -1,9 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
2
- <g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round" stroke-linejoin="round">
3
- <circle cx="256" cy="256" r="190"/>
4
- <path d="M66 256 L206 256"/>
5
- <path d="M306 256 L446 256"/>
6
- <path d="M256 306 L256 446"/>
7
- <circle cx="256" cy="256" r="50"/>
8
- </g>
9
- </svg>
data/art/cube.svg DELETED
@@ -1,9 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
2
- <g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round" stroke-linejoin="round">
3
- <path d="M256 302Q256 256 295.8 233L406.2 169.3Q446 146.3 446 192.3V319.7Q446 365.7 406.2 388.7L295.8 452.4Q256 475.4 256 429.4Z" fill="#0b1e3a"/>
4
- <path d="M216.2 59.6Q256 36.6 295.8 59.6L406.2 123.3Q446 146.3 446 192.3V319.7Q446 365.7 406.2 388.7L295.8 452.4Q256 475.4 216.2 452.4L105.8 388.7Q66 365.7 66 319.7V192.3Q66 146.3 105.8 123.3Z"/>
5
- <path d="M256 256 95.4 163.3"/>
6
- <path d="M256 256 416.6 163.3"/>
7
- <path d="M256 256V441.4"/>
8
- </g>
9
- </svg>
data/art/design.svg DELETED
@@ -1,8 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
2
- <g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round" stroke-linejoin="round" transform="rotate(45 256 256)">
3
- <path d="M196 60 L316 60 L316 372 L196 372 Z"/>
4
- <path d="M196 120 L316 120"/>
5
- <path d="M196 372 L256 470 L316 372"/>
6
- <path d="M232 431 L256 470 L280 431 Z" fill="#0b1e3a"/>
7
- </g>
8
- </svg>
data/art/down.html.erb DELETED
@@ -1,95 +0,0 @@
1
- <%# The page an app shows while it is down: its own mark and name in the middle, the house's
2
- at the foot — or the house's alone, for an app not in the family — and nothing that
3
- needs the app to be up — IBM Plex Sans and the icons from the design site, the two
4
- blues written in. Rendered per app by `rake pages` into
5
- public/down/<app>.html, and answered at /down.html by the engine once the host has named
6
- itself in `Easyfaa.app`. -%>
7
- <!doctype html>
8
- <html lang='en'>
9
- <head>
10
- <meta charset='utf-8'>
11
- <meta name='viewport' content='width=device-width, initial-scale=1'>
12
- <title><%= app %></title>
13
- <meta name='color-scheme' content='light dark'>
14
- <link rel='icon' href='https://design.easyfaa.com/favicon/<%= app %>.svg' type='image/svg+xml'>
15
- <link rel='icon' href='https://design.easyfaa.com/favicon/<%= app %>-96.png' type='image/png' sizes='96x96'>
16
- <link rel='apple-touch-icon' href='https://design.easyfaa.com/favicon/<%= app %>-180.png'>
17
- <style>
18
- @font-face {
19
- font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
20
- src: url('https://design.easyfaa.com/font/ibm-plex-sans-500-vietnamese.woff2') format('woff2');
21
- unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
22
- }
23
- @font-face {
24
- font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
25
- src: url('https://design.easyfaa.com/font/ibm-plex-sans-500-latin-ext.woff2') format('woff2');
26
- unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
27
- }
28
- @font-face {
29
- font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap;
30
- src: url('https://design.easyfaa.com/font/ibm-plex-sans-500-latin.woff2') format('woff2');
31
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
32
- }
33
- :root {
34
- --bg: #fbfcfe;
35
- --ink: #0b1e3a;
36
- --mark: #5aa9e6;
37
- }
38
- @media (prefers-color-scheme: dark) {
39
- :root {
40
- --bg: #0f1622;
41
- --ink: #cfe3f6;
42
- }
43
- }
44
- * { box-sizing: border-box; }
45
- body {
46
- margin: 0;
47
- min-height: 100svh;
48
- display: flex;
49
- flex-direction: column;
50
- background: var(--bg);
51
- font-family: 'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;
52
- font-weight: 500;
53
- letter-spacing: 0.01em;
54
- }
55
- main {
56
- flex: 1;
57
- display: grid;
58
- place-items: center;
59
- }
60
- .lockup {
61
- white-space: nowrap;
62
- color: var(--ink);
63
- line-height: 1;
64
- }
65
- /* The mark on the text baseline, sized and nudged by its own numbers, in ems so the
66
- same pair reads right at both sizes on this page. */
67
- .lockup svg {
68
- position: relative;
69
- vertical-align: baseline;
70
- margin-right: 0.29em;
71
- }
72
- main .lockup { font-size: 48px; }
73
- footer {
74
- position: sticky;
75
- bottom: 0;
76
- background: var(--bg);
77
- display: flex;
78
- justify-content: center;
79
- padding: 20px 0 26px;
80
- }
81
- footer .lockup { font-size: 20px; }
82
- footer .easy { color: var(--mark); }
83
- </style>
84
- </head>
85
- <body>
86
- <main>
87
- <p class='lockup'><%= mark[app] %><%= app == :easyfaa ? "<span class='easy'>easy</span>faa" : app %></p>
88
- </main>
89
- <%- unless app == :easyfaa -%>
90
- <footer>
91
- <p class='lockup'><%= mark[:easyfaa] %><span class='easy'>easy</span>faa</p>
92
- </footer>
93
- <%- end -%>
94
- </body>
95
- </html>
data/art/easyfaa.svg DELETED
@@ -1,7 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
2
- <g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round" stroke-linejoin="round">
3
- <path d="M74.5 340H437.5A200 200 0 0 1 74.5 340Z" fill="#0b1e3a" stroke="none"/>
4
- <circle cx="256" cy="256" r="200"/>
5
- <path d="M150 256H216L256 296L296 256H362"/>
6
- </g>
7
- </svg>
data/art/fountain.svg DELETED
@@ -1,9 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
2
- <g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round">
3
- <path d="M256 472V40"/>
4
- <path d="M256 472C234 310 180 202 121 143"/>
5
- <path d="M256 472C278 310 332 202 391 143"/>
6
- <path d="M256 472C216 348 124 283 51 251"/>
7
- <path d="M256 472C296 348 388 283 461 251"/>
8
- </g>
9
- </svg>
data/art/goldrush.svg DELETED
@@ -1,7 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
2
- <g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round" stroke-linejoin="round">
3
- <path d="M152 248 L190 128 L322 128 L360 248 Z"/>
4
- <path d="M40 384 L78 264 L210 264 L248 384 Z"/>
5
- <path d="M264 384 L302 264 L434 264 L472 384 Z"/>
6
- </g>
7
- </svg>
data/art/houston.svg DELETED
@@ -1,8 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
2
- <g fill="none" stroke="#5aa9e6" stroke-width="28" stroke-linecap="round">
3
- <circle cx="256" cy="256" r="224"/>
4
- <path d="M32 256h448"/>
5
- <path d="M256 32c142 63 142 385 0 448"/>
6
- <path d="M256 32c-142 63-142 385 0 448"/>
7
- </g>
8
- </svg>