bullet_train 1.0.26 → 1.0.27

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 736f0b129992c87c1813769d963aa769e8677b8aa34114e1271358ea6cb315f2
4
- data.tar.gz: ba9c8955e07d738664793dbfc25adcf66c31d57008e9e3a8e93f1a850c307019
3
+ metadata.gz: 032a4b18fddf1103837149d569ed33e9f5d5c99d9c93bcf989ce7df55be0db16
4
+ data.tar.gz: 65caa9cbbf2f98b4f254a8aa270ee30d8f695dc90ba6d1ba769c885d70363f60
5
5
  SHA512:
6
- metadata.gz: 19c0375970f7a2f3399f18cf5549c57a6d289bd7cf32f4f858b8aba06656ca37c6561ae9dcd2972691de1db0f41bcbfea0b3c419f2568682d4f4199a7703da8d
7
- data.tar.gz: 50a5943e0e7c03197d5eb7b4e7c7cfd74011706c1ee8363bd5e6e82c4947fa929ebe7a773eae856385fa78ce9b3c5ffa963cfd08e0ee7ae94ceb98e7288688d1
6
+ metadata.gz: f65b2c50abcdedd2c952c265ebd3dbf606696ef8ae10ab6c1cd55048a32d966182840342e7367c411ec1c3eecedef4d8a61947f094c1865040d492d1ccc09b96
7
+ data.tar.gz: f2bbf19d62e8e57ef6de9a46ddec60f9e8467c52fc0bb2d6a48dff9f046e848b91e3580cc0809c483e7c7b76b85b0e10b40f6666c19d813c0c849e4a2ea7486d
@@ -0,0 +1,305 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <%
6
+ # we're going to use the
7
+ body = Nokogiri::HTML(@body)
8
+ title = body.css('h1').first.text.presence || t('application.tagline')
9
+ first_paragraph = body.css('p').first
10
+ preceding_heading = first_paragraph&.xpath("preceding-sibling::h2")
11
+ description = [preceding_heading&.text, first_paragraph&.text].select(&:present?).join(" — ") || t('application.description')
12
+ image_url = "https://avatars.githubusercontent.com/u/5976880?s=280&amp;v=4"
13
+ site_name = "Bullet Train Developer Documentation"
14
+ %>
15
+
16
+ <% content_for :title do %>
17
+ <title><%= [site_name, title, t('application.tagline')].select(&:present?).uniq.first(2).reverse.join(' — ') %></title>
18
+ <% end %>
19
+
20
+ <%= render 'themes/light/layouts/head' %>
21
+ <meta content="<%= t('application.keywords') %>" name="keywords" />
22
+ <meta content="<%= description.truncate(200) %>" name="description" />
23
+ <meta name="twitter:image:src" content="<%= image_url %>" />
24
+ <meta name="twitter:site" content="@bullettrainco" />
25
+ <meta name="twitter:card" content="summary" />
26
+ <meta name="twitter:title" content="<%= title.truncate(70) %>" />
27
+ <meta name="twitter:description" content="<%= description.truncate(160) %>" />
28
+ <meta property="og:image" content="<%= image_url %>" />
29
+ <meta property="og:site_name" content="<%= site_name %>" />
30
+ <meta property="og:type" content="object" />
31
+ <meta property="og:title" content="<%= title.truncate(95) %>" />
32
+ <meta property="og:url" content="<%= request.base_url + request.path %>" />
33
+ <meta property="og:description" content="<%= description.truncate(200) %>" />
34
+ </head>
35
+ <body class="bg-light-blue-gradient text-gray-700 text-sm font-normal dark:bg-dark-blue-gradient dark:text-sealBlue-900">
36
+ <div class="md:p-5">
37
+ <div class="h-screen md:h-auto overflow-hidden md:rounded-lg flex shadow"
38
+ data-controller="mobile-menu"
39
+ data-mobile-menu-hidden-class="hidden"
40
+ data-mobile-menu-show-event-name-value="mobile-menu:show"
41
+ data-mobile-menu-hide-event-name-value="mobile-menu:hide"
42
+ >
43
+
44
+ <% menu = capture do %>
45
+ <div class="flex items-center flex-shrink-0 p-4 bg-blue-darker md:rounded-tl-lg">
46
+ <%= image_tag image_path("light/logo/logo.png"), class: 'h-5 w-auto mx-auto' %>
47
+
48
+ <div class="lg:hidden absolute right-0">
49
+ <button class="ml-1 flex items-center justify-center h-10 w-10 rounded-full focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white"
50
+ data-action="reveal#hide"
51
+ >
52
+ <span class="sr-only">Close Application Menu</span>
53
+ <svg class="h-6 w-6 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
54
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
55
+ </svg>
56
+ </button>
57
+ </div>
58
+ </div>
59
+
60
+ <nav class="flex-1 space-y-1 overflow-y-auto">
61
+ <div class="px-5 py-4" id="menu">
62
+
63
+ <%= render 'account/shared/menu/section', title: 'Introduction' do %>
64
+ <%= render 'account/shared/menu/item', url: '/docs', label: 'Table of Contents' do |p| %>
65
+ <% p.content_for :icon do %>
66
+ <i class="fal fa-home-lg-alt ti ti-list"></i>
67
+ <% end %>
68
+ <% end %>
69
+
70
+ <%= render 'account/shared/menu/item', url: '/docs/getting-started', label: 'Getting Started' do |p| %>
71
+ <% p.content_for :icon do %>
72
+ <i class="fal fa-terminal ti ti-flag"></i>
73
+ <% end %>
74
+ <% end %>
75
+
76
+ <%= render 'account/shared/menu/item', url: '/docs/philosophy', label: 'Philosophy' do |p| %>
77
+ <% p.content_for :icon do %>
78
+ <i class="fal fa-lightbulb-on ti ti-light-bulb"></i>
79
+ <% end %>
80
+ <% end %>
81
+
82
+ <%= render 'account/shared/menu/item', url: '/docs/upgrades', label: 'Upgrades' do |p| %>
83
+ <% p.content_for :icon do %>
84
+ <i class="fal fa-sparkles ti ti-arrow-up"></i>
85
+ <% end %>
86
+ <% end %>
87
+
88
+ <%= render 'account/shared/menu/item', url: '/docs/tunneling', label: 'Tunneling' do |p| %>
89
+ <% p.content_for :icon do %>
90
+ <i class="fal fa-bolt ti ti-bolt"></i>
91
+ <% end %>
92
+ <% end %>
93
+ <% end %>
94
+
95
+ <%= render 'account/shared/menu/section', title: 'Developer Tools' do %>
96
+ <%= render 'account/shared/menu/item', url: '/docs/super-scaffolding', label: 'Super Scaffolding' do |p| %>
97
+ <% p.content_for :icon do %>
98
+ <i class="fal fa-magic ti ti-wand"></i>
99
+ <% end %>
100
+ <% end %>
101
+
102
+ <%= render 'account/shared/menu/item', url: '/docs/field-partials', label: 'Field Partials' do |p| %>
103
+ <% p.content_for :icon do %>
104
+ <i class="fal fa-i-cursor ti ti-text"></i>
105
+ <% end %>
106
+ <% end %>
107
+
108
+ <%= render 'account/shared/menu/item', url: '/docs/themes', label: 'Themes' do |p| %>
109
+ <% p.content_for :icon do %>
110
+ <i class="fal fa-swatchbook ti ti-palette"></i>
111
+ <% end %>
112
+ <% end %>
113
+
114
+ <%= render 'account/shared/menu/item', url: '/docs/seeds', label: 'Database Seeds' do |p| %>
115
+ <% p.content_for :icon do %>
116
+ <i class="fal fa-seedling ti ti-server"></i>
117
+ <% end %>
118
+ <% end %>
119
+
120
+ <%= render 'account/shared/menu/item', url: '/docs/testing', label: 'Test Suite' do |p| %>
121
+ <% p.content_for :icon do %>
122
+ <i class="fal fa-check ti ti-check"></i>
123
+ <% end %>
124
+ <% end %>
125
+ <% end %>
126
+
127
+ <%= render 'account/shared/menu/section', title: 'Accounts & Teams' do %>
128
+ <%= render 'account/shared/menu/item', url: '/docs/authentication', label: 'Authentication' do |p| %>
129
+ <% p.content_for :icon do %>
130
+ <i class="fal fa-fingerprint ti ti-id-badge"></i>
131
+ <% end %>
132
+ <% end %>
133
+
134
+ <%= render 'account/shared/menu/item', url: '/docs/teams', label: 'Teams' do |p| %>
135
+ <% p.content_for :icon do %>
136
+ <i class="fal fa-users ti ti-user"></i>
137
+ <% end %>
138
+ <% end %>
139
+
140
+ <%= render 'account/shared/menu/item', url: '/docs/permissions', label: 'Roles & Permissions' do |p| %>
141
+ <% p.content_for :icon do %>
142
+ <i class="fal fa-lock-alt ti ti-lock"></i>
143
+ <% end %>
144
+ <% end %>
145
+
146
+ <%= render 'account/shared/menu/item', url: '/docs/onboarding', label: 'Onboarding' do |p| %>
147
+ <% p.content_for :icon do %>
148
+ <i class="fal fa-snowboarding ti ti-direction"></i>
149
+ <% end %>
150
+ <% end %>
151
+
152
+ <%= render 'account/shared/menu/item', url: '/docs/namespacing', label: 'Namespacing' do |p| %>
153
+ <% p.content_for :icon do %>
154
+ <i class="fal fa-object-group ti ti-widgetized"></i>
155
+ <% end %>
156
+ <% end %>
157
+ <% end %>
158
+
159
+ <%= render 'account/shared/menu/section', title: 'Billing' do %>
160
+ <%= render 'account/shared/menu/item', url: '/docs/billing/stripe', label: 'Stripe' do |p| %>
161
+ <% p.content_for :icon do %>
162
+ <i class="fab fa-stripe-s ti ti-money"></i>
163
+ <% end %>
164
+ <% end %>
165
+ <% end %>
166
+
167
+ <%= render 'account/shared/menu/section', title: 'Integration' do %>
168
+ <%= render 'account/shared/menu/item', url: '/docs/oauth', label: 'OAuth Providers' do |p| %>
169
+ <% p.content_for :icon do %>
170
+ <i class="fal fa-at ti ti-reload"></i>
171
+ <% end %>
172
+ <% end %>
173
+
174
+ <%= render 'account/shared/menu/item', url: '/docs/api', label: 'REST API' do |p| %>
175
+ <% p.content_for :icon do %>
176
+ <i class="fal fa-brackets-curly ti ti-settings"></i>
177
+ <% end %>
178
+ <% end if false %>
179
+
180
+ <%= render 'account/shared/menu/item', url: '/docs/webhooks/outgoing', label: 'Outgoing Webhooks' do |p| %>
181
+ <% p.content_for :icon do %>
182
+ <i class="fal fa-outlet ti ti-pulse"></i>
183
+ <% end %>
184
+ <% end if false %>
185
+
186
+ <%= render 'account/shared/menu/item', url: '/docs/webhooks/incoming', label: 'Incoming Webhooks' do |p| %>
187
+ <% p.content_for :icon do %>
188
+ <i class="fal fa-plug ti ti-plug"></i>
189
+ <% end %>
190
+ <% end if false %>
191
+ <% end %>
192
+
193
+ <%= render 'account/shared/menu/section', title: 'Internationalization' do %>
194
+ <%= render 'account/shared/menu/item', url: '/docs/i18n', label: 'Translations' do |p| %>
195
+ <% p.content_for :icon do %>
196
+ <i class="fal fa-language ti ti-world"></i>
197
+ <% end %>
198
+ <% end %>
199
+ <% end if false %>
200
+
201
+ <%= render 'account/shared/menu/section', title: 'Add-Ons' do %>
202
+ <%= render 'account/shared/menu/item', url: '/docs/font-awesome-pro', label: 'Font Awesome Pro' do |p| %>
203
+ <% p.content_for :icon do %>
204
+ <i class="fal fa-flag ti ti-flag"></i>
205
+ <% end %>
206
+ <% end %>
207
+ <% end %>
208
+
209
+ <%= render 'account/shared/menu/section', title: 'Deployment' do %>
210
+ <%= render 'account/shared/menu/item', url: '/docs/heroku', label: 'Heroku' do |p| %>
211
+ <% p.content_for :icon do %>
212
+ <i class="fal fa-cloud ti ti-cloud-up"></i>
213
+ <% end %>
214
+ <% end %>
215
+
216
+ <%= render 'account/shared/menu/item', url: '/docs/desktop', label: 'Desktop Applications' do |p| %>
217
+ <% p.content_for :icon do %>
218
+ <i class="fal fa-window-restore ti ti-desktop"></i>
219
+ <% end %>
220
+ <% end %>
221
+ <% end %>
222
+ </div>
223
+ </nav>
224
+ <% end %>
225
+
226
+ <div class="lg:hidden hidden"
227
+ data-mobile-menu-target="wrapper"
228
+
229
+ data-controller="reveal"
230
+ data-reveal-away-value="true"
231
+ data-reveal-hide-keys-value="escape"
232
+
233
+ data-action="mobile-menu:show->reveal#show mobile-menu:hide->reveal#hide mobile-menu-toggle->reveal#toggle reveal:hidden->mobile-menu#hideWrapper"
234
+ >
235
+ <div class="fixed inset-0 flex z-40">
236
+ <button
237
+ data-action="reveal#hide"
238
+
239
+ hidden
240
+ data-reveal
241
+ data-transition
242
+ data-transition-enter="transition-opacity ease-linear duration-200"
243
+ data-transition-enter-start="opacity-0"
244
+ data-transition-enter-end="opacity-100"
245
+ data-transition-leave="transition-opacity ease-linear duration-200"
246
+ data-transition-leave-start="opacity-100"
247
+ data-transition-leave-end="opacity-0"
248
+
249
+ class="fixed inset-0" aria-hidden="true"
250
+ >
251
+ <div class="absolute inset-0 bg-light-blue-gradient opacity-75"></div>
252
+ </button>
253
+ <div
254
+ hidden
255
+ data-reveal
256
+ data-transition
257
+ data-transition-enter="transition ease-in-out duration-200 transform"
258
+ data-transition-enter-start="-translate-x-full"
259
+ data-transition-enter-end="translate-x-0"
260
+ data-transition-leave="transition ease-in-out duration-200 transform"
261
+ data-transition-leave-start="translate-x-0"
262
+ data-transition-leave-end="-translate-x-full"
263
+
264
+ class="relative flex-1 flex flex-col max-w-xs w-full shadow-xl bg-gradient-to-b from-vividBlue-700 to-vividBlue-800 dark:from-sealBlue-200 dark:to-sealBlue-200"
265
+ >
266
+ <%= menu %>
267
+ </div>
268
+ <div class="flex-shrink-0 w-14" aria-hidden="true"></div>
269
+ </div>
270
+ </div>
271
+
272
+ <div class="hidden lg:flex lg:flex-shrink-0 bg-gradient-to-b from-vividBlue-700 to-vividBlue-800 dark:from-sealBlue-200 dark:to-sealBlue-200">
273
+ <div class="w-64">
274
+ <%= menu %>
275
+ </div>
276
+ </div>
277
+
278
+ <div class="flex flex-col w-0 flex-1 overflow-hidden bg-gray-100 dark:bg-sealBlue-200 lg:border-l dark:border-gray-500">
279
+ <main class="flex-1 relative z-0 overflow-y-auto focus:outline-none" tabindex="0">
280
+
281
+ <button class="lg:hidden h-12 w-12 ml-1 flex-none inline-flex items-center justify-center rounded-md text-gray-500 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-blue"
282
+ data-action="mobile-menu#toggle"
283
+ >
284
+ <span class="sr-only">Open Application Menu</span>
285
+ <svg class="h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
286
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
287
+ </svg>
288
+ </button>
289
+
290
+ <div class="py-2 px-1">
291
+ <div class="mx-auto sm:px-6 sm:py-4 px-2">
292
+ <div class="bg-white rounded-md shadow sm:py-14 sm:px-12 py-10 px-7">
293
+ <div class="prose" style="max-width: none;">
294
+ <%= yield %>
295
+ </div>
296
+ </div>
297
+
298
+ </div>
299
+ </div>
300
+ </main>
301
+ </div>
302
+ </div>
303
+ </div>
304
+ </body>
305
+ </html>
@@ -0,0 +1,65 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
5
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
+ <title>Welcome to <%= t('application.name') %>!</title>
7
+ </head>
8
+ <body>
9
+ <% if content_for? :preheader %>
10
+ <span class="preheader"><% yield :preheader %></span>
11
+ <% end %>
12
+ <table class="email-wrapper" width="100%" cellpadding="0" cellspacing="0">
13
+ <tr>
14
+ <td align="center">
15
+ <table class="email-content" width="100%" cellpadding="0" cellspacing="0">
16
+ <tr>
17
+ <td class="email-masthead">
18
+ <a href="<%= root_url %>" class="email-masthead_name">
19
+ <%= email_image_tag("light/logo/logo.png", width: image_width_for_height('light/logo/logo.png', 50), height: 50, style: "width: #{image_width_for_height('light/logo/logo.png', 50)}px; height: 50px;") %>
20
+ </a>
21
+ </td>
22
+ </tr>
23
+ <!-- Email Body -->
24
+ <tr>
25
+ <td class="email-body" width="100%" cellpadding="0" cellspacing="0">
26
+ <table class="email-body_inner" align="center" width="570" cellpadding="0" cellspacing="0">
27
+ <!-- Body content -->
28
+ <tr>
29
+ <td class="content-cell">
30
+
31
+ <%= yield %>
32
+
33
+ <% if false %>
34
+ <!-- Sub copy -->
35
+ <table class="body-sub">
36
+ <tr>
37
+ <td>
38
+ <p class="sub"><%= t('.trouble') %></p>
39
+ <p class="sub">{{action_url}}</p>
40
+ </td>
41
+ </tr>
42
+ </table>
43
+ <% end %>
44
+ </td>
45
+ </tr>
46
+ </table>
47
+ </td>
48
+ </tr>
49
+ <tr>
50
+ <td>
51
+ <table class="email-footer" align="center" width="570" cellpadding="0" cellspacing="0">
52
+ <tr>
53
+ <td class="content-cell" align="center">
54
+ <p class="sub align-center">&copy; <%= t('.all_rights_reserved', year: Date.today.year, product_name: t('application.name')) %></p>
55
+ </td>
56
+ </tr>
57
+ </table>
58
+ </td>
59
+ </tr>
60
+ </table>
61
+ </td>
62
+ </tr>
63
+ </table>
64
+ </body>
65
+ </html>
@@ -0,0 +1 @@
1
+ <%= @body = markdown(File.read(Rails.root.to_s + "/docs/#{@file}.md").gsub('.md)', ')')) %>
@@ -0,0 +1,29 @@
1
+ <% content_for :preheader do %>
2
+ <%= t('.preview', @values) %>
3
+ <% end %>
4
+
5
+ <h1><%= t('.heading', @values) %></h1>
6
+ <%= t('.body.html', @values) %>
7
+
8
+ <!-- Action -->
9
+ <table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0">
10
+ <tr>
11
+ <td align="center">
12
+ <!-- Border based button https://litmus.com/blog/a-guide-to-bulletproof-buttons-in-email-design -->
13
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
14
+ <tr>
15
+ <td align="center">
16
+ <table border="0" cellspacing="0" cellpadding="0">
17
+ <tr>
18
+ <td>
19
+ <a href="<%= @cta_url %>" class="button button--" target="_blank"><%= t('.cta.label', @values) %></a>
20
+ </td>
21
+ </tr>
22
+ </table>
23
+ </td>
24
+ </tr>
25
+ </table>
26
+ </td>
27
+ </tr>
28
+ </table>
29
+ <%= t('.signature.html', @values.merge({support_email: t('application.support_email')})) %>
@@ -0,0 +1,31 @@
1
+ <% content_for :preheader do %>
2
+ <%= t('.preview', @values) %>
3
+ <% end %>
4
+
5
+ <h1><%= t('.heading', @values) %></h1>
6
+ <%= t('.body.html', @values) %>
7
+
8
+ <h2><%= t('.cta.heading', @values) %></h2>
9
+ <p><%= t('.cta.body', @values) %></p>
10
+ <!-- Action -->
11
+ <table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0">
12
+ <tr>
13
+ <td align="center">
14
+ <!-- Border based button https://litmus.com/blog/a-guide-to-bulletproof-buttons-in-email-design -->
15
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
16
+ <tr>
17
+ <td align="center">
18
+ <table border="0" cellspacing="0" cellpadding="0">
19
+ <tr>
20
+ <td>
21
+ <a href="<%= @cta_url %>" class="button button--" target="_blank"><%= t('.cta.label', @values) %></a>
22
+ </td>
23
+ </tr>
24
+ </table>
25
+ </td>
26
+ </tr>
27
+ </table>
28
+ </td>
29
+ </tr>
30
+ </table>
31
+ <%= t('.signature.html', @values.merge({support_email: t('application.support_email')})) %>
@@ -1,3 +1,3 @@
1
1
  module BulletTrain
2
- VERSION = "1.0.26"
2
+ VERSION = "1.0.27"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet_train
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.26
4
+ version: 1.0.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Culver
@@ -466,6 +466,11 @@ files:
466
466
  - app/views/devise/unlocks/new.html.erb
467
467
  - app/views/layouts/account.html.erb
468
468
  - app/views/layouts/devise.html.erb
469
+ - app/views/layouts/docs.html.erb
470
+ - app/views/layouts/mailer.html.erb
471
+ - app/views/public/home/docs.html.erb
472
+ - app/views/user_mailer/invited.html.erb
473
+ - app/views/user_mailer/welcome.html.erb
469
474
  - config/locales/en/devise.en.yml
470
475
  - config/locales/en/invitations.en.yml
471
476
  - config/locales/en/memberships.en.yml