mirror of
https://github.com/indentlabs/notebook.git
synced 2025-10-26 11:19:22 +00:00
Merge branch 'master' of github.com:indentlabs/notebook
This commit is contained in:
commit
b3a6998ea6
28
Gemfile.lock
28
Gemfile.lock
@ -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
|
||||
|
||||
BIN
app/assets/images/landing/planet-header.jpg
Normal file
BIN
app/assets/images/landing/planet-header.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 232 KiB |
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,9 +1,7 @@
|
||||
.plan-features {
|
||||
div {
|
||||
i {
|
||||
position: relative;
|
||||
top: 6px;
|
||||
}
|
||||
i {
|
||||
position: relative;
|
||||
top: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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 />
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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 %>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user