Merge branch 'master' of github.com:indentlabs/notebook

This commit is contained in:
Andrew Brown 2020-11-28 14:22:56 -08:00
commit b3a6998ea6
20 changed files with 2800 additions and 247 deletions

View File

@ -116,7 +116,7 @@ GEM
autoprefixer-rails (9.8.4)
execjs
aws-eventstream (1.1.0)
aws-partitions (1.380.0)
aws-partitions (1.384.0)
aws-sdk (3.0.1)
aws-sdk-resources (~> 3)
aws-sdk-accessanalyzer (1.1.0)
@ -275,7 +275,7 @@ GEM
aws-sdk-connectparticipant (1.0.0)
aws-sdk-core (~> 3, >= 3.71.0)
aws-sigv4 (~> 1.1)
aws-sdk-core (3.109.0)
aws-sdk-core (3.109.1)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.239.0)
aws-sigv4 (~> 1.1)
@ -875,7 +875,7 @@ GEM
aws-sdk-route53resolver (1.11.0)
aws-sdk-core (~> 3, >= 3.71.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.83.0)
aws-sdk-s3 (1.83.1)
aws-sdk-core (~> 3, >= 3.109.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.1)
@ -1035,7 +1035,7 @@ GEM
rack-test (>= 0.6.3)
regexp_parser (~> 1.5)
xpath (~> 3.2)
chartkick (3.4.1)
chartkick (3.4.2)
childprocess (3.0.0)
climate_control (0.2.0)
cocoon (1.2.15)
@ -1128,9 +1128,9 @@ GEM
ffi (1.13.1)
filesize (0.2.0)
flamegraph (0.9.5)
flipper (0.18.0)
flipper-redis (0.18.0)
flipper (~> 0.18.0)
flipper (0.19.0)
flipper-redis (0.19.0)
flipper (~> 0.19.0)
redis (>= 2.2, < 5)
font-awesome-rails (4.7.0.5)
railties (>= 3.2, < 6.1)
@ -1255,7 +1255,7 @@ GEM
mustache (1.1.1)
nenv (0.3.0)
nested_form (0.3.2)
newrelic_rpm (6.12.0.367)
newrelic_rpm (6.13.1)
nio4r (2.5.4)
nokogiri (1.10.10)
mini_portile2 (~> 2.4.0)
@ -1300,14 +1300,14 @@ GEM
coderay (~> 1.1)
method_source (~> 1.0)
public_suffix (4.0.6)
puma (5.0.2)
puma (5.0.4)
nio4r (~> 2.0)
puma-heroku (2.0.0)
puma (>= 5.0, < 6.0)
pundit (2.1.0)
activesupport (>= 3.0.0)
rack (2.2.3)
rack-mini-profiler (2.1.0)
rack-mini-profiler (2.2.0)
rack (>= 1.2.0)
rack-pjax (1.1.0)
nokogiri (~> 1.5)
@ -1473,7 +1473,7 @@ GEM
activesupport (>= 4.0)
sprockets (>= 3.0.0)
sqlite3 (1.4.2)
stackprof (0.2.15)
stackprof (0.2.16)
statsd-ruby (1.4.0)
stripe (5.28.0)
stripe_event (2.3.1)
@ -1494,7 +1494,7 @@ GEM
tribute (3.6.0.0)
tzinfo (1.2.7)
thread_safe (~> 0.1)
tzinfo-data (1.2020.2)
tzinfo-data (1.2020.4)
tzinfo (>= 1.0.0)
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
@ -1510,7 +1510,7 @@ GEM
activemodel (>= 6.0.0)
bindex (>= 0.4.0)
railties (>= 6.0.0)
webmock (3.9.1)
webmock (3.9.4)
addressable (>= 2.3.6)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
@ -1623,4 +1623,4 @@ RUBY VERSION
ruby 2.6.3p62
BUNDLED WITH
1.17.3
2.1.4

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

View File

@ -21,11 +21,15 @@
.hero {
position: relative;
overflow: hidden;
height: 35rem;
height: 40rem;
color: white;
.container {
margin-top: 7em;
}
.hero-content {
padding: 2rem;
position: absolute;
&.lower-left {
bottom: 0;
@ -43,15 +47,17 @@
.hero-image {
display: block;
opacity: 0.25;
opacity: 1;
position: absolute;
z-index: -1;
left: 50%;
bottom: 0;
bottom: -50%;
min-width: 100%;
min-height: 100%;
-webkit-transform: translate3d(-50%, 0px, 0px);
transform: translate3d(-50%, 0px, 0px);
filter: brightness(40%);
}
}
@ -74,4 +80,4 @@
h2 {
font-size: 24px;
}
}
}

View File

@ -10,14 +10,21 @@
@media only screen and (min-width: 1024px) {
.fixed-card-content
{
height: 8em;
height: 12em;
}
}
@media only screen and (max-width: 1024px) {
.fixed-card-content
{
height: 10em;
height: 12em;
}
}
@media only screen and (min-width: 1448px) {
.fixed-card-content
{
height: 9em;
}
}

View File

@ -1,9 +1,7 @@
.plan-features {
div {
i {
position: relative;
top: 6px;
}
i {
position: relative;
top: 6px;
}
}

View File

@ -35,4 +35,10 @@ h3.card-title {
font-size: 1.64rem;
line-height: 110%;
margin: 1rem 0 0.5rem 0;
}
.h6-size {
font-size: 1.3rem;
line-height: 110%;
margin: 1rem 0 0.5rem 0;
}

View File

@ -1,4 +1,6 @@
class UsersController < ApplicationController
before_action :set_user, only: [:show, :followers, :following]
def index
redirect_to new_session_path(User)
end
@ -6,10 +8,6 @@ class UsersController < ApplicationController
def show
@sidenav_expansion = 'community'
@user = User.find_by(user_params)
return redirect_to(root_path, notice: 'That user does not exist.') if @user.nil?
return redirect_to(root_path, notice: 'That user does not exist.') if @user.private_profile?
@feed = ContentPageShare.where(user_id: @user.id)
.order('created_at DESC')
.includes([:content_page, :secondary_content_page, :user, :share_comments])
@ -18,8 +16,6 @@ class UsersController < ApplicationController
@content = @user.public_content.select { |type, list| list.any? }
@tabs = @content.keys
@accent_color = @user.favorite_page_type_color
@accent_icon = @user.favorite_page_type_icon
@favorite_content = @user.favorite_page_type? ? @user.send(@user.favorite_page_type.downcase.pluralize).is_public : []
@stream = @user.recent_content_list(limit: 20)
@ -31,9 +27,9 @@ class UsersController < ApplicationController
Rails.application.config.content_types[:all].each do |content_type|
content_type_name = content_type.name.downcase.pluralize.to_sym # :characters, :items, etc
define_method content_type_name do
set_user
@content_type = content_type
@user = User.find_by(id: params[:id])
return redirect_to(root_path, notice: "This user does not exist") unless @user.present?
@content_list = @user.send(content_type_name).is_public.order(:name)
render :content_list
@ -81,21 +77,23 @@ class UsersController < ApplicationController
end
def followers
@user = User.find_by(user_params)
@accent_color = @user.favorite_page_type_color
@accent_icon = @user.favorite_page_type_icon
end
def following
@user = User.find_by(user_params)
@accent_color = @user.favorite_page_type_color
@accent_icon = @user.favorite_page_type_icon
end
private
def set_user
@user = User.find_by(user_params)
return redirect_to(root_path, notice: 'That user does not exist.') if @user.nil?
return redirect_to(root_path, notice: 'That user has chosen to hide their profile.') if @user.private_profile?
@accent_color = @user.favorite_page_type_color
@accent_icon = @user.favorite_page_type_icon
end
def user_params
# todo is this used anywhere?
params.permit(:id, :username)
end
end

View File

@ -4,12 +4,12 @@ class PageCollection < ApplicationRecord
belongs_to :user
has_many :page_collection_submissions
has_many :page_collection_submissions, dependent: :destroy
has_many :page_collection_followings
has_many :page_collection_followings, dependent: :destroy
has_many :followers, through: :page_collection_followings, source: :user
has_many :page_collection_reports
has_many :page_collection_reports, dependent: :destroy
has_one_attached :header_image, dependent: :destroy
validates :header_image, attached: false,

View File

@ -8,7 +8,7 @@
<%= link_to collection do %>
<div class="hoverable card">
<div class="card-image">
<%= image_tag collection.cover_image, style: 'max-height: 300px;' %>
<%= image_tag collection.random_public_image, style: 'max-height: 300px;' %>
<span class="card-title">
<%= collection.title %>
<br />

View File

@ -120,7 +120,7 @@
<div class="card">
<div class="card-content">
<h2 class="card-title">
Fill out a rich
Get a head start with a rich
<span class="<%= @content_type.color %>-text"><%= singular_class_name.downcase %></span>
template
</h2>

View File

@ -38,7 +38,7 @@
<i class="material-icons left"><%= Universe.icon %></i>
<span class="black-text">Set in</span>
<span class="js-content-universe-name">
<%= @document.universe_id.nil? ? 'No Universe Set' : @document.universe.name %>
<%= @document.universe.nil? ? 'No Universe Set' : @document.universe.name %>
</span>
<% end %>
</li>

View File

@ -93,6 +93,9 @@
<li>
<%= link_to 'Notebook.ai', main_app.root_path %>
</li>
<li>
<a class="dropdown-trigger" href="#!" data-target="worldbuilding-dropdown">About<i class="material-icons right">arrow_drop_down</i></a>
</li>
<% end %>
</ul>
</div>
@ -116,4 +119,34 @@
</div>
<% end %>
</nav>
<ul id="worldbuilding-dropdown" class="dropdown-content">
<li>
<%= link_to main_app.writers_landing_path, class: 'blue-text' do %>
<i class="material-icons left">book</i>
Notebook.ai for writers
<% end %>
</li>
<li>
<%= link_to main_app.roleplayers_landing_path, class: 'blue-text' do %>
<i class="material-icons left">book</i>
Notebook.ai for roleplayers
<% end %>
</li>
<li>
<%= link_to main_app.designers_landing_path, class: 'blue-text' do %>
<i class="material-icons left">book</i>
Notebook.ai for designers
<% end %>
</li>
<li class="divider"></li>
<% Rails.application.config.content_types[:all].each do |content_type| %>
<li>
<%= link_to main_app.send("#{content_type.name.downcase}_worldbuilding_info_path"), class: content_type.color + '-text' do %>
<i class="material-icons left"><%= content_type.icon %></i>
<%= content_type.name.pluralize %>
<% end %>
</li>
<% end %>
</ul>
</div>

View File

@ -7,9 +7,7 @@ body {
<div id="index-banner" class="hero">
<div class="section no-pad-bot">
<div class="container">
<br />
<br />
<h1 class="header center blue-text">
<h1 class="header center blue-text light">
Notebook.ai for game designers
</h1>
<div class="row center">
@ -30,7 +28,7 @@ body {
</div>
</div>
<div class="hero-container">
<%= image_tag 'landing/digital-notebook.jpg', class: 'hero-image' %>
<%= image_tag 'landing/planet-header.jpg', class: 'hero-image' %>
</div>
</div>

View File

@ -7,9 +7,7 @@ body {
<div id="index-banner" class="hero">
<div class="section no-pad-bot">
<div class="container">
<br />
<br />
<h1 class="header center blue-text">
<h1 class="header center blue-text light">
Notebook.ai for roleplayers
</h1>
<div class="row center">
@ -30,7 +28,7 @@ body {
</div>
</div>
<div class="hero-container">
<%= image_tag 'landing/digital-notebook.jpg', class: 'hero-image' %>
<%= image_tag 'landing/planet-header.jpg', class: 'hero-image' %>
</div>
</div>

View File

@ -7,9 +7,7 @@ body {
<div id="index-banner" class="hero">
<div class="section no-pad-bot">
<div class="container">
<br />
<br />
<h1 class="header center blue-text">
<h1 class="header center blue-text light">
Notebook.ai for writers
</h1>
<div class="row center">
@ -20,17 +18,17 @@ body {
<div class="row center">
<%= link_to 'Get started for free',
new_user_registration_path,
class: 'btn-large waves-effect waves-light blue lighten-1' %>
class: 'btn-large waves-effect waves-light blue lighten-1 hoverable' %>
<br />
<br />
Novel planning that's fun and effective.
Novel planning software that's fun and effective.
</div>
<br />
<br />
</div>
</div>
<div class="hero-container">
<%= image_tag 'landing/digital-notebook.jpg', class: 'hero-image' %>
<%= image_tag 'landing/planet-header.jpg', class: 'hero-image' %>
</div>
</div>
@ -99,7 +97,7 @@ body {
<div class="section">
<div class="row">
<% Rails.application.config.content_types[:all_non_universe].each do |content_type| %>
<div class="col l4 m4 s12">
<div class="col l3 m4 s12">
<%= render partial: 'cards/intros/content_type_intro', locals: { content_type: content_type } %>
</div>
<% end %>

View File

@ -1,12 +1,10 @@
<div id="index-banner" class="hero">
<div class="section no-pad-bot">
<div class="container">
<br />
<br />
<h1 class="header center blue-text">
<h1 class="header center blue-text text-lighten-2 light bordered-text">
<%= t('marketing.landing_page.promo_header') %>
</h1>
<div class="row center">
<div class="row center bordered-text">
<h2 class="header col s12 light">
<%= t('marketing.landing_page.promo_subheader') %>
</h2>
@ -14,16 +12,18 @@
<div class="row center">
<%= link_to t('marketing.landing_page.cta.get_yours'),
new_user_registration_path,
class: 'btn-large waves-effect waves-light blue lighten-1' %>
class: 'btn-large waves-effect waves-light blue lighten-1 hoverable' %>
<br />
<br />
<%= t('marketing.landing_page.promo_subtext') %>
<div class="bordered-text">
<%= t('marketing.landing_page.promo_subtext') %>
</div>
</div>
<br />
<br />
</div>
</div>
<%= image_tag 'landing/digital-notebook.jpg', class: 'hero-image' %>
<%= image_tag 'landing/planet-header.jpg', class: 'hero-image' %>
</div>
<div class="container">
@ -72,59 +72,34 @@
</div>
<div class="container">
<div class="section">
<div class="section perks-section">
<h2 class="h5-size">Create rich worlds with your free worldbuilding notebook</h2>
<div class="row">
<div class="col l4 m4 s12">
<div class="col s12 m12 l12">
With a free account, you'll have access to the core building blocks of fictional universes (characters, locations, and items), personalized writing prompts set
in your world, unlimited document storage, access to a thriving <%= link_to 'community', thredded_path %> of other worldbuilders, and more.
</div>
</div>
<div class="row">
<div class="col l3 m6 s12">
<%= render partial: 'cards/intros/content_type_intro', locals: { content_type: Universe } %>
</div>
<div class="col l3 m6 s12">
<%= render partial: 'cards/intros/content_type_intro', locals: { content_type: Character } %>
</div>
<div class="col l4 m4 s12">
<div class="col l3 m6 s12">
<%= render partial: 'cards/intros/content_type_intro', locals: { content_type: Location } %>
</div>
<div class="col l4 m4 s12">
<div class="col l3 m6 s12">
<%= render partial: 'cards/intros/content_type_intro', locals: { content_type: Item } %>
</div>
</div>
</div>
</div>
<div class="container">
<div class="section perks-section">
<div class="row">
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size brown-text"><i class="material-icons">bubble_chart</i></div>
<h3 class="h5-size"><%= t('marketing.landing_page.benefits.creativity.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.creativity.text') %>
</p>
</div>
</div>
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size brown-text"><i class="material-icons">cloud</i></div>
<h3 class="h5-size"><%= t('marketing.landing_page.benefits.backups.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.backups.text') %>
</p>
</div>
</div>
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size brown-text"><i class="material-icons">security</i></div>
<h3 class="h5-size"><%= t('marketing.landing_page.benefits.ads.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.ads.text') %>
</p>
</div>
</div>
</div>
<div class="row">
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size brown-text"><i class="material-icons">face</i></div>
<h3 class="h5-size"><%= t('marketing.landing_page.benefits.characters.title') %></h3>
<div class="h2-size orange-text"><i class="material-icons">face</i></div>
<h3 class="h6-size"><%= t('marketing.landing_page.benefits.characters.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.characters.text') %>
</p>
@ -133,8 +108,8 @@
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size brown-text"><i class="material-icons">public</i></div>
<h3 class="h5-size"><%= t('marketing.landing_page.benefits.locations.title') %></h3>
<div class="h2-size orange-text"><i class="material-icons">public</i></div>
<h3 class="h6-size"><%= t('marketing.landing_page.benefits.locations.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.locations.text') %>
</p>
@ -143,50 +118,19 @@
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size brown-text"><i class="material-icons">assignment_turned_in</i></div>
<h3 class="h5-size"><%= t('marketing.landing_page.benefits.continuity.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.continuity.text') %>
</p>
</div>
</div>
</div>
<div class="row">
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size brown-text"><i class="material-icons">search</i></div>
<h3 class="h5-size"><%= t('marketing.landing_page.benefits.search.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.search.text') %>
</p>
</div>
</div>
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size brown-text"><i class="material-icons">list</i></div>
<h3 class="h5-size"><%= t('marketing.landing_page.benefits.organization.title') %></h3>
<div class="h2-size orange-text"><i class="material-icons">list</i></div>
<h3 class="h6-size"><%= t('marketing.landing_page.benefits.organization.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.organization.text') %>
</p>
</div>
</div>
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size brown-text"><i class="material-icons">settings_ethernet</i></div>
<h3 class="h5-size"><%= t('marketing.landing_page.benefits.growth.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.growth.text') %>
</p>
</div>
</div>
</div>
<div class="row">
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size brown-text"><i class="material-icons">group</i></div>
<h3 class="h5-size"><%= t('marketing.landing_page.benefits.sharing.title') %></h3>
<div class="h2-size orange-text"><i class="material-icons">group</i></div>
<h3 class="h6-size"><%= t('marketing.landing_page.benefits.sharing.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.sharing.text') %>
</p>
@ -195,8 +139,74 @@
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size brown-text"><i class="material-icons">schedule</i></div>
<h3 class="h5-size"><%= t('marketing.landing_page.benefits.speed.title') %></h3>
<div class="h2-size orange-text"><i class="material-icons">cloud</i></div>
<h3 class="h6-size"><%= t('marketing.landing_page.benefits.backups.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.backups.text') %>
</p>
</div>
</div>
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size orange-text"><i class="material-icons">security</i></div>
<h3 class="h6-size"><%= t('marketing.landing_page.benefits.ads.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.ads.text') %>
</p>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="section perks-section">
<h2 class="h5-size">Write smarter with integrated novel-writing software</h2>
<div class="row">
<div class="col s12 m12 l12">
Cross-reference notebook pages and documents you write to build a rich network of connections that makes your world feel
like a wiki that manages itself.
</div>
</div>
<div class="row">
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size teal-text"><i class="material-icons">bubble_chart</i></div>
<h3 class="h6-size"><%= t('marketing.landing_page.benefits.creativity.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.creativity.text') %>
</p>
</div>
</div>
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size teal-text"><i class="material-icons">assignment_turned_in</i></div>
<h3 class="h6-size"><%= t('marketing.landing_page.benefits.continuity.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.continuity.text') %>
</p>
</div>
</div>
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size teal-text"><i class="material-icons">search</i></div>
<h3 class="h6-size"><%= t('marketing.landing_page.benefits.search.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.search.text') %>
</p>
</div>
</div>
</div>
<div class="row">
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size teal-text"><i class="material-icons">schedule</i></div>
<h3 class="h6-size"><%= t('marketing.landing_page.benefits.speed.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.speed.text') %>
</p>
@ -205,26 +215,75 @@
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size brown-text"><i class="material-icons">bar_chart</i></div>
<h3 class="h5-size"><%= t('marketing.landing_page.benefits.quality.title') %></h3>
<div class="h2-size teal-text"><i class="material-icons">bar_chart</i></div>
<h3 class="h6-size"><%= t('marketing.landing_page.benefits.quality.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.quality.text') %>
</p>
</div>
</div>
</div>
<div class="col s12 m4">
<div class="icon-block center">
<div class="h2-size teal-text"><i class="material-icons">settings_ethernet</i></div>
<h3 class="h6-size"><%= t('marketing.landing_page.benefits.growth.title') %></h3>
<p class="light">
<%= t('marketing.landing_page.benefits.growth.text') %>
</p>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="section">
<div class="row">
<% ([Universe] + Rails.application.config.content_types[:premium]).each do |content_type| %>
<div class="col l4 m6 s12">
<div class="col s12">
<h2 class="h5-size">Go the extra mile with premium notebook pages</h2>
<p>
Notebook.ai's free tier was intentionally designed to be enough for most worlds, but if you want to support the site and
take your worldbuilding to a new level, a premium subscription is available that unlocks
<%= Rails.application.config.content_types[:premium].count %> additional page templates to use. Each template is customizable and
comes with its own set of writing prompts.
</p>
</div>
</div>
<div class="row">
<% (Rails.application.config.content_types[:premium]).each do |content_type| %>
<div class="col l3 m6 s12">
<%= render partial: 'cards/intros/content_type_intro', locals: { content_type: content_type } %>
</div>
<% end %>
<div class="col l3 m6 s12">
<div class="card hoverable" style="min-height: 330px;">
<div class="card-image">
<%= image_tag "card-headers/timelines.jpg", height: 300, width: 300, style: 'object-fit: cover' %>
<h3 class="card-title bordered-text">Create timelines</h3>
</div>
<div class="card-content fixed-card-content">
<p>
<%= t("content_descriptions.timeline") %>
</p>
</div>
</div>
</div>
<div class="col l3 m6 s12">
<div class="card hoverable" style="min-height: 330px;">
<div class="card-image">
<%= image_tag "card-headers/pagecollections.jpg", height: 300, width: 300, style: 'object-fit: cover' %>
<h3 class="card-title bordered-text">Create collections</h3>
</div>
<div class="card-content fixed-card-content">
<p>
<%= t("content_descriptions.pagecollection") %>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
@ -293,39 +352,50 @@
<i class="material-icons" style="font-size: 250%">book</i>
</div>
<div class="card-content center">
<span class="card-title activator">
<%= t('marketing.landing_page.pricing.premium_plan.title') %>
<br />
<small><em class="red-text text-darken-1">
<%= t('marketing.landing_page.pricing.premium_plan.price') %>
</em></small>
</span>
<div class="row plan-features">
<div>Create <strong>unlimited</strong>...</div>
<% Rails.application.config.content_types[:all].each_with_index do |content_type, i| %>
<span class="content-type-container">
<i class="material-icons <%= content_type.color %>-text medium">
<%= content_type.icon %>
</i><br />
<span class="card-title">
<%= t('marketing.landing_page.pricing.premium_plan.title') %>
<br />
<small><em class="red-text text-darken-1">
<%= t('marketing.landing_page.pricing.premium_plan.price') %> or cheaper
</em></small>
</span>
<div class="row plan-features">
<div>Create <strong>unlimited</strong>...</div>
<% Rails.application.config.content_types[:all].each_with_index do |content_type, i| %>
<%= link_to send("#{content_type.name.downcase}_worldbuilding_info_path"), class: 'content-type-container' do %>
<i class="material-icons <%= content_type.color %>-text medium">
<%= content_type.icon %>
</i>
<div class="black-text">
<%= content_type.name.pluralize %>
</span>
<% if (i + 1) % 5 == 0 && i != 0 %>
<br />
<% end %>
</div>
<% end %>
<div>
and...
</div>
<div>
<i class="material-icons black-text">cloud_upload</i>
<%= t('marketing.landing_page.pricing.premium_plan.upload_html') %>
</div>
<% end %>
<span class="content-type-container">
<i class="material-icons <%= Timeline.color %>-text medium">
<%= Timeline.icon %>
</i><br />
<%= Timeline.name.pluralize %>
</span>
<span class="content-type-container">
<i class="material-icons <%= PageCollection.color %>-text medium">
<%= PageCollection.icon %>
</i><br />
Collections
</span>
<div>
and...
</div>
<div class="row center">
<%= link_to t('marketing.landing_page.pricing.cta.button'),
new_user_registration_path,
class: 'btn-large waves-effect waves-light blue lighten-1' %>
<div>
<i class="material-icons black-text">cloud_upload</i>
<%= t('marketing.landing_page.pricing.premium_plan.upload_html') %>
</div>
</div>
<div class="row center">
<%= link_to t('marketing.landing_page.pricing.cta.button'),
new_user_registration_path,
class: 'btn-large waves-effect waves-light blue lighten-1' %>
</div>
</div>
</div>

View File

@ -56,7 +56,7 @@ en:
benefits:
creativity:
title: Promotes creativity
text: Your notebook asks you questions about your characters and ideas, then saves your answers on their respective pages.
text: Notebook.ai helps flesh out your ideas by asking you questions about the pages you create.
speed:
title: Write faster
@ -1180,6 +1180,8 @@ en:
Track every kind of story within your world, from modern anecdotes to ancient legends.
timeline: >
Plot your plot over time. Track what happens every step of the way.
pagecollection: >
Collect and organize notebook pages into customizable collections you can share or collaborate in.
attributefield: >
Attributes can be anything you need to define just the detail you need. Select the type of content

View File

@ -2367,7 +2367,7 @@ ActiveRecord::Schema.define(version: 2020_10_19_080418) do
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.string "description"
t.boolean "allow_submissions"
t.boolean "allow_submissions", default: false
t.string "slug"
t.datetime "deleted_at"
t.index ["user_id"], name: "index_page_collections_on_user_id"
@ -2832,7 +2832,7 @@ ActiveRecord::Schema.define(version: 2020_10_19_080418) do
end
create_table "share_comments", force: :cascade do |t|
t.integer "user_id", null: false
t.integer "user_id"
t.integer "content_page_share_id", null: false
t.string "message"
t.datetime "deleted_at"

View File

@ -12,7 +12,8 @@
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-simple-format": "^0.3.0",
"react_ujs": "^2.6.1"
"react_ujs": "^2.6.1",
"webpacker": "^4.6.0"
},
"devDependencies": {
"@babel/core": "^7.8.4",

2558
yarn.lock

File diff suppressed because it is too large Load Diff