bullet_train-themes-light 1.0.30 → 1.0.34
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/light/application.css +1 -0
- data/app/assets/stylesheets/light/bulk_actions.css +44 -0
- data/app/assets/stylesheets/light/tailwind/utilities/billing.css +71 -0
- data/app/assets/stylesheets/light/tailwind/utilities.css +2 -0
- data/app/views/themes/light/_well.html.erb +23 -0
- data/app/views/themes/light/actions/_action.html.erb +91 -0
- data/app/views/themes/light/billing/_pricing_table.html.erb +69 -0
- data/app/views/themes/light/layouts/_pricing.html.erb +26 -0
- data/app/views/themes/light/memberships/_photo.html.erb +3 -0
- data/lib/bullet_train/themes/light/version.rb +1 -1
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75be7e4e6b8010397346a40aa03f61a431625dbc864516891efca13a828d5a1b
|
4
|
+
data.tar.gz: e0d47fcfdb395d2c000f980371211816c1e1eee688d4b690e49218793dc1cf7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b93cc5f7a483f930c2f79554c6ab900a7dc6372d91202ecb783f4bca85d6b61245353a8307e91504218c2c1914e9c6b4510db2731b9e71318e4a9c561db9119d
|
7
|
+
data.tar.gz: 1da57f34dbc14bf084ce09053fb62c66dff4996e2048ee40820661eba454cfca225f7b65c8c959fa8b806e46a4c553cb9ae00d49a3db290aadb5ede65b836ffc
|
@@ -0,0 +1,44 @@
|
|
1
|
+
@layer components {
|
2
|
+
.bulk-action-unavailable {
|
3
|
+
@apply hidden !important;
|
4
|
+
}
|
5
|
+
|
6
|
+
.bulk-actions-selectable-item-checkbox-wrapper {
|
7
|
+
@apply hidden;
|
8
|
+
}
|
9
|
+
|
10
|
+
.bulk-actions .bulk-actions-checkbox-cell {
|
11
|
+
@apply w-4 pr-0;
|
12
|
+
}
|
13
|
+
|
14
|
+
.bulk-actions:not(.selectable-available) {
|
15
|
+
.bulk-actions-selectable-toggle {
|
16
|
+
@apply hidden;
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
.bulk-actions:not(.selectable) {
|
21
|
+
td:nth-child(2),th:nth-child(2) {
|
22
|
+
@apply pl-5;
|
23
|
+
}
|
24
|
+
|
25
|
+
.box-table td:nth-child(2),th:nth-child(2) {
|
26
|
+
@apply pl-8;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
.bulk-actions.selectable-available:not(.selectable) {
|
31
|
+
.bulk-action {
|
32
|
+
@apply hidden;
|
33
|
+
}
|
34
|
+
.bulk-actions-checkbox-cell {
|
35
|
+
@apply hidden;
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
.bulk-actions.selectable {
|
40
|
+
.bulk-action-single {
|
41
|
+
@apply hidden;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
@layer utilities {
|
2
|
+
.pricing-table-shadow {
|
3
|
+
box-shadow: 0 2px 30px 0 rgba(54,88,206,0.2);
|
4
|
+
}
|
5
|
+
|
6
|
+
.pricing-page-background {
|
7
|
+
background-image: linear-gradient(to bottom, #f8faff, #fff);
|
8
|
+
}
|
9
|
+
|
10
|
+
.pricing-page-background-fade-container {
|
11
|
+
position: fixed;
|
12
|
+
top: 0;
|
13
|
+
left: 0;
|
14
|
+
bottom: 0;
|
15
|
+
width: 100vw;
|
16
|
+
max-width: 100vw;
|
17
|
+
overflow: hidden;
|
18
|
+
z-index: -1;
|
19
|
+
}
|
20
|
+
|
21
|
+
.pricing-page-background-fade {
|
22
|
+
&:before {
|
23
|
+
content: "";
|
24
|
+
position: absolute;
|
25
|
+
right: -40px;
|
26
|
+
top: -200px;
|
27
|
+
width: 1000px;
|
28
|
+
height: 600px;
|
29
|
+
background-image: linear-gradient(90deg, rgba(227,231,248,0) 0%, #E8F2FC 100%);
|
30
|
+
z-index: -1;
|
31
|
+
}
|
32
|
+
|
33
|
+
position: absolute;
|
34
|
+
right: -800px;
|
35
|
+
top: 0px;
|
36
|
+
width: 800px;
|
37
|
+
height: 600px;
|
38
|
+
background-image: linear-gradient(90deg, rgba(227,231,248,0) 0%, #8BBAF5 100%);
|
39
|
+
transform: translate(-360px, 0px) rotate(-45deg);
|
40
|
+
z-index: -1;
|
41
|
+
}
|
42
|
+
|
43
|
+
.brand-title {
|
44
|
+
color: #047bf8;
|
45
|
+
font-size: 2.99rem;
|
46
|
+
margin: 30px 0px;
|
47
|
+
margin-top: 10px;
|
48
|
+
position: relative;
|
49
|
+
letter-spacing: -0.025em;
|
50
|
+
line-height: 120%;
|
51
|
+
@apply font-bold;
|
52
|
+
}
|
53
|
+
|
54
|
+
.brand-description {
|
55
|
+
color: #868686;
|
56
|
+
font-size: 1.2rem;
|
57
|
+
line-height: 1.5;
|
58
|
+
@apply font-extralight;
|
59
|
+
}
|
60
|
+
|
61
|
+
.text-light-gradient {
|
62
|
+
-webkit-background-clip: text;
|
63
|
+
-webkit-box-decoration-break: clone;
|
64
|
+
-webkit-font-smoothing: subpixel-antialiased;
|
65
|
+
-webkit-text-fill-color: rgba(0,0,0,0);
|
66
|
+
background-attachment: scroll;
|
67
|
+
background-clip: text;
|
68
|
+
background-color: rgba(0,0,0,0);
|
69
|
+
background-image: -webkit-linear-gradient(-75deg, #c094de 10%, #65A8F1 50%, #006EF4 95%);
|
70
|
+
}
|
71
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<% yield p = np %>
|
2
|
+
|
3
|
+
<div class="border border-gray-300 rounded-md py-5 px-6 bg-gray-50 space-y">
|
4
|
+
<div class="space-y-2">
|
5
|
+
<% if p.content_for? :title %>
|
6
|
+
<h2 class="text-base font-semibold">
|
7
|
+
<%= p.content_for :title %>
|
8
|
+
</h2>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<% if p.content_for? :description %>
|
12
|
+
<p class="text-gray-400 font-light leading-normal">
|
13
|
+
<%= p.content_for :description %>
|
14
|
+
</p>
|
15
|
+
<% end %>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<% if p.content_for? :body %>
|
19
|
+
<div class="space-y">
|
20
|
+
<%= p.content_for :body %>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
@@ -0,0 +1,91 @@
|
|
1
|
+
<div class="py-4 px-8 w-full space-y-3">
|
2
|
+
<div class="flex space-x-4">
|
3
|
+
<% if action.is_a?(Actions::TracksCreator) %>
|
4
|
+
<div class="flex-0">
|
5
|
+
<%= render "shared/memberships/photo", membership: action.created_by, size: 7 %>
|
6
|
+
</div>
|
7
|
+
<% end %>
|
8
|
+
<div class="flex-1">
|
9
|
+
<div class="flex">
|
10
|
+
<div class="flex-1 space-y-4 py-1">
|
11
|
+
<div>
|
12
|
+
<%= action.label_string %> on
|
13
|
+
<%= target_description = capture do %>
|
14
|
+
<% if action.is_a?(Actions::TargetsMany) %>
|
15
|
+
<% if action.target_all? %>
|
16
|
+
all Tangible Things
|
17
|
+
<% else %>
|
18
|
+
<% if action.target_ids.one? %>
|
19
|
+
<%= action.targeted.first.label_string %>
|
20
|
+
<% else %>
|
21
|
+
<%= action.target_ids.count %> <%= "Tangible Thing".pluralize(action.target_ids.count) %>
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
24
|
+
<% else %>
|
25
|
+
<%= action.targeted.label_string %>
|
26
|
+
<% end %>
|
27
|
+
<% end %>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
<div class="flex-0">
|
31
|
+
<% if action.is_a?(Actions::RequiresApproval) %>
|
32
|
+
<% if can? :approve, action %>
|
33
|
+
<%= button_to t("#{action.class.name.pluralize.underscore}.buttons.shorthand.approve"), [:approve, :account, action], method: :post, class: 'button-secondary button-smaller' %>
|
34
|
+
<% end %>
|
35
|
+
<% end %>
|
36
|
+
<% if can? :read, action %>
|
37
|
+
<%= link_to t("#{action.class.name.pluralize.underscore}.buttons.shorthand.show"), [:account, action], class: 'button-secondary button-smaller' %>
|
38
|
+
<% end %>
|
39
|
+
<% if can? :edit, action %>
|
40
|
+
<%= link_to t("#{action.class.name.pluralize.underscore}.buttons.shorthand.edit"), [:edit, :account, action], class: 'button-secondary button-smaller' %>
|
41
|
+
<% end %>
|
42
|
+
<% if can? :destroy, action %>
|
43
|
+
<%= button_to t("#{action.class.name.pluralize.underscore}.buttons.shorthand.destroy"), [:account, action], method: :delete, data: { confirm: t("#{action.class.name.pluralize.underscore}.buttons.confirmations.destroy", model_locales(action)) }, class: 'button-secondary button-smaller' %>
|
44
|
+
<% end %>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
|
48
|
+
<% if action.completed? %>
|
49
|
+
<% if action.is_a?(Actions::HasProgress) %>
|
50
|
+
<div class="uppercase text-xs text-gray-400">
|
51
|
+
Processed <%= action.performed_count %> of <%= action.target_count %> <%= display_date_and_time(action.completed_at) %>
|
52
|
+
</div>
|
53
|
+
<% else %>
|
54
|
+
<div class="uppercase text-xs text-gray-400">
|
55
|
+
Processed <%= display_date_and_time(action.completed_at) %>
|
56
|
+
</div>
|
57
|
+
<% end %>
|
58
|
+
|
59
|
+
<% elsif action.is_a?(Actions::RequiresApproval) && !action.approved? %>
|
60
|
+
<div class="uppercase text-xs text-gray-400">
|
61
|
+
Awaiting approval
|
62
|
+
</div>
|
63
|
+
|
64
|
+
<% elsif action.is_a?(Actions::SupportsScheduling) && action.scheduled_for && !action.started? %>
|
65
|
+
<div class="uppercase text-xs text-gray-400">
|
66
|
+
Scheduled for <%= display_date_and_time(action.scheduled_for) %>
|
67
|
+
</div>
|
68
|
+
|
69
|
+
<% elsif action.is_a?(Actions::HasProgress) && action.started? %>
|
70
|
+
<div class="mt-3 h-4 bg-gray-100 shadow-inner rounded w-full">
|
71
|
+
<div class="h-4 animate-pulse bg-primary-500 rounded" style="width: <%= action.completion_percent %>%"></div>
|
72
|
+
</div>
|
73
|
+
|
74
|
+
<div class="mt-2 uppercase text-xs text-gray-400">
|
75
|
+
Processing <%= action.performed_count %> of <%= action.target_count %>
|
76
|
+
</div>
|
77
|
+
|
78
|
+
<% elsif action.is_a?(Actions::HasProgress) %>
|
79
|
+
<div class="uppercase text-xs text-gray-400">
|
80
|
+
Preparing to process <%= action.performed_count %> of <%= action.target_count %>
|
81
|
+
</div>
|
82
|
+
|
83
|
+
<% else %>
|
84
|
+
<div class="uppercase text-xs text-gray-400">
|
85
|
+
Preparing to process
|
86
|
+
</div>
|
87
|
+
|
88
|
+
<% end %>
|
89
|
+
</div>
|
90
|
+
</div>
|
91
|
+
</div>
|
@@ -0,0 +1,69 @@
|
|
1
|
+
<% prices_by_duration = group_prices_by_duration(prices) %>
|
2
|
+
<% params_duration = params[:duration]&.to_sym %>
|
3
|
+
<% current_duration = (prices_by_duration.keys.include?(params_duration) ? params_duration : false) || prices_by_duration.keys.first %>
|
4
|
+
|
5
|
+
<div class="w-full mb-10">
|
6
|
+
<div class="flex justify-center mb-14">
|
7
|
+
<div class="bg-primary-500 inline-block p-1 rounded-full text-base space-x-1">
|
8
|
+
<% prices_by_duration.keys.each_with_index do |duration, i| %>
|
9
|
+
<%= link_to request.path + (i > 0 ? "?duration=#{duration}" : ""), class: "#{duration == current_duration ? "button-alternative" : "button"} rounded-full text-base" do %>
|
10
|
+
<%= t("billing/prices.intervals.#{duration}.description") %>
|
11
|
+
<% if i > 0 %>
|
12
|
+
<small class="ml-2 uppercase <%= duration == current_duration ? "text-gray-400" : "text-gray-300" %>">
|
13
|
+
<%= number_to_percentage(calculate_discount(prices_by_duration[duration].first, prices_by_duration[prices_by_duration.keys.first].first), precision: 0) %> Discount
|
14
|
+
</small>
|
15
|
+
<% end %>
|
16
|
+
<% end %>
|
17
|
+
<% end %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="lg:flex flex-row justify-center">
|
22
|
+
<% prices_by_duration[current_duration].each_with_index do |price, i| %>
|
23
|
+
<div class="bg-gray-50 flex-1 lg:max-w-md border ml-0 mr-0 mt-0 mb-5 <%= "lg:-ml-px lg:-mr-px lg:-mt-5 lg:mb-0 pricing-table-shadow" if price.highlight? %> <%= price.highlight? ? "z-10" : "z-0" %>">
|
24
|
+
<div class="bg-white <%= "border-t-4 border-primary-500" if price.highlight? %>">
|
25
|
+
<div class="text-center py-10 px-5 border-b">
|
26
|
+
<%= image_tag image_path("products/#{price.product.image}"), width: 100, height: 100, class: "inline mb-7" %>
|
27
|
+
<div class="uppercase text-primary-500 tracking-wider font-semibold text-2xl">
|
28
|
+
<%= price.product.label_string %>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
<div class="bg-white text-center py-10 px-5 border-b">
|
33
|
+
<div class="text-6xl font-semibold text-black <%= "text-primary-500" if price.highlight? %>"><%= smaller_currency_symbol(number_to_currency(price.currency_amount, precision: 0, locale: :en)) %></div>
|
34
|
+
<div class="mt-3 pt-2 inline-block border-t border-gray-300 uppercase text-lg opacity-40 tracking-wider">
|
35
|
+
<% if price.quantity %>
|
36
|
+
<%= t("billing/prices.intervals.#{price.interval}.description") %>
|
37
|
+
<%= t("billing/prices.models.#{price.quantity}.per") %>
|
38
|
+
<% else %>
|
39
|
+
<%= t("billing/prices.intervals.#{price.interval}.per") %>
|
40
|
+
<% end %>
|
41
|
+
</div>
|
42
|
+
<div>
|
43
|
+
<%= render "account/billing/subscriptions/new_button", price: price, classes: "button rounded-full text-base mt-7" %>
|
44
|
+
</div>
|
45
|
+
</div>
|
46
|
+
<div class="my-12 mx-12">
|
47
|
+
<h3 class="text-xs uppercase font-semibold tracking-widest">Description</h3>
|
48
|
+
<p class="text-base mt-3 text-gray-500"><%= price.product.description %></p>
|
49
|
+
|
50
|
+
<h3 class="mt-8 text-xs uppercase font-semibold tracking-widest">Details</h3>
|
51
|
+
<% if price.product.features %>
|
52
|
+
<ul class="text-base mt-5 text-gray-500 space-y-3">
|
53
|
+
<% price.product.features.each do |feature| %>
|
54
|
+
<li class="flex items-start">
|
55
|
+
<div class="flex-shrink-0 text-green-500">
|
56
|
+
<i class="ti ti-check fas fa-check"></i>
|
57
|
+
</div>
|
58
|
+
<p class="ml-3">
|
59
|
+
<%= feature.html_safe %>
|
60
|
+
</p>
|
61
|
+
</li>
|
62
|
+
<% end %>
|
63
|
+
</ul>
|
64
|
+
<% end %>
|
65
|
+
</div>
|
66
|
+
</div>
|
67
|
+
<% end %>
|
68
|
+
</div>
|
69
|
+
</div>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<%= render 'shared/layouts/head' %>
|
5
|
+
</head>
|
6
|
+
<body class="pricing-page-background">
|
7
|
+
<div data-turbo="false">
|
8
|
+
<div class="pricing-page-background-fade-container">
|
9
|
+
<div class="pricing-page-background-fade"></div>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<% if @back %>
|
13
|
+
<div class="m-5 -mb-5">
|
14
|
+
<%= link_to @back, class: 'button-secondary hover:no-underline group' do %>
|
15
|
+
<i class="ti ti-angle-left text-lg group-hover:no-underline"></i>
|
16
|
+
<span class="text-base ml-3 group-hover:underline">Back</span>
|
17
|
+
<% end %>
|
18
|
+
</div>
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
<div class="m-5 sm:m-10 lg:m-20">
|
22
|
+
<%= yield %>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bullet_train-themes-light
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.34
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Culver
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: standard
|
@@ -67,6 +67,7 @@ files:
|
|
67
67
|
- app/assets/stylesheets/light.tailwind.css
|
68
68
|
- app/assets/stylesheets/light/actiontext.css
|
69
69
|
- app/assets/stylesheets/light/application.css
|
70
|
+
- app/assets/stylesheets/light/bulk_actions.css
|
70
71
|
- app/assets/stylesheets/light/electron.css
|
71
72
|
- app/assets/stylesheets/light/fields/cloudinary_image.css
|
72
73
|
- app/assets/stylesheets/light/fields/date_field.css
|
@@ -79,6 +80,7 @@ files:
|
|
79
80
|
- app/assets/stylesheets/light/tailwind/components.css
|
80
81
|
- app/assets/stylesheets/light/tailwind/dark-mode.css
|
81
82
|
- app/assets/stylesheets/light/tailwind/utilities.css
|
83
|
+
- app/assets/stylesheets/light/tailwind/utilities/billing.css
|
82
84
|
- app/assets/stylesheets/light/turn.css
|
83
85
|
- app/assets/stylesheets/tailwindcss/base.css
|
84
86
|
- app/assets/stylesheets/tailwindcss/components.css
|
@@ -93,8 +95,11 @@ files:
|
|
93
95
|
- app/views/themes/light/_notices.html.erb
|
94
96
|
- app/views/themes/light/_page.html.erb
|
95
97
|
- app/views/themes/light/_title.html.erb
|
98
|
+
- app/views/themes/light/_well.html.erb
|
99
|
+
- app/views/themes/light/actions/_action.html.erb
|
96
100
|
- app/views/themes/light/attributes/_base.html.erb
|
97
101
|
- app/views/themes/light/attributes/_block.html.erb
|
102
|
+
- app/views/themes/light/billing/_pricing_table.html.erb
|
98
103
|
- app/views/themes/light/breadcrumbs/_actions.html.erb
|
99
104
|
- app/views/themes/light/commentary/_box.html.erb
|
100
105
|
- app/views/themes/light/conversations/_card.html.erb
|
@@ -107,6 +112,8 @@ files:
|
|
107
112
|
- app/views/themes/light/layouts/_devise.html.erb
|
108
113
|
- app/views/themes/light/layouts/_head.html.erb
|
109
114
|
- app/views/themes/light/layouts/_mailer.html.erb
|
115
|
+
- app/views/themes/light/layouts/_pricing.html.erb
|
116
|
+
- app/views/themes/light/memberships/_photo.html.erb
|
110
117
|
- app/views/themes/light/memberships/_photos.html.erb
|
111
118
|
- app/views/themes/light/menu/_heading.html.erb
|
112
119
|
- app/views/themes/light/menu/_item.html.erb
|