2021-01-21 12:11:51 +03:00
<section class="gh-canvas">
<GhCanvasHeader class="gh-canvas-header">
<h2 class="gh-canvas-title" data-test-screen-title>
Dashboard
</h2>
</GhCanvasHeader>
2021-01-21 12:20:06 +03:00
2021-02-17 14:11:01 +03:00
<div class="view-container gh-dashboard">
2021-02-24 21:09:19 +03:00
{{ # if ( and this .session .user .isOwner ( not this .feature .launchComplete ) ) }}
<section class="gh-dashboard-area lw-banner">
<div class="gh-lw-banner" style="background-image:url(assets/img/launch-wizard-bg.png);">
<h1>Launch your site!</h1>
<p>Customize your brand and connect to Stripe to get your membership site ready to be shown to the world.</p>
2021-02-24 21:18:13 +03:00
<LinkTo class="gh-btn gh-btn-green" @route="launch"><span>Start setup guide</span></LinkTo>
2021-02-25 12:57:46 +03:00
<div class="gh-dashboard-dismiss">
<GhDropdownButton @dropdownName="launch-wizard-dismiss"
@classNames="gh-btn gh-btn-icon only-has-icon gh-dashboard-dismissbutton dark">
<span>
{{ svg-jar "dotdotdot" }}
</span>
</GhDropdownButton>
<GhDropdown @name="launch-wizard-dismiss" @classNames="gh-dashboard-dismiss-dropdown dropdown-menu dropdown-triangle-top-right">
<button class="gh-btn" {{ action "dismissLaunchBanner" }} ><span>Dismiss</span></button>
</GhDropdown>
</div>
2021-02-18 14:27:29 +03:00
</div>
2021-02-24 21:09:19 +03:00
</section>
{{ else }}
<section class="gh-dashboard-area charts">
<div class="gh-dashboard-box mrr">
<div class="flex items-center justify-between">
<h4 class="gh-dashboard-header">MRR</h4>
<h4 class="gh-dashboard-header secondary">30 days</h4>
</div>
<div class="gh-dashboard-chart-container">
2021-02-25 11:34:44 +03:00
{{ # if this .mrrStatsLoading }}
Loading...
{{ else }}
{{ # if this .mrrStatsError }}
<p class="error">
There was an error loading MRR
<code> {{ this .mrrStatsError .message }} </code>
</p>
2021-02-24 21:09:19 +03:00
{{ else }}
2021-02-25 11:34:44 +03:00
<div class="gh-dashboard-summary">
2021-03-08 20:10:51 +03:00
<div class="data"><span class="currency"> {{ this .mrrStatsData .currency }} </span> {{ format-number this .mrrStatsData .currentAmount }} </div>
2021-02-25 11:34:44 +03:00
<div class="growth {{ this .mrrStatsData .percentClass }} "> {{ this .mrrStatsData .percentGrowth }} %</div>
</div>
{{ # if this .mrrStatsData }}
<div class="gh-dashboard-chart">
<GhMembersChart @type="LineWithLine" @nightShift= {{ feature "nightShift" }} @showSummary= {{ false }} @showRange= {{ false }} @chartType="mrr" @chartStats= {{ this .mrrStatsData }} />
</div>
{{ / if }}
2021-02-24 21:09:19 +03:00
{{ / if }}
2021-02-19 08:48:01 +03:00
{{ / if }}
2021-02-16 20:12:24 +03:00
</div>
</div>
2021-02-24 21:09:19 +03:00
<div class="gh-dashboard-box total-members">
<div class="gh-dashboard-chart-container">
2021-02-25 11:34:44 +03:00
{{ # if this .memberCountStatsLoading }}
Loading...
{{ else }}
{{ # if this .memberCountStatsError }}
<p class="error">
There was an error loading total members
<code> {{ this .memberCountStatsData .message }} </code>
</p>
{{ else }}
<div class="gh-dashboard-summary small">
<h4 class="gh-dashboard-header">Total members</h4>
<div class="data-container">
2021-03-08 20:10:51 +03:00
<div class="data"> {{ format-number this .memberCountStatsData .all .total }} </div>
2021-02-25 11:34:44 +03:00
<div class="growth {{ this .memberCountStatsData .all .percentClass }} "> {{ this .memberCountStatsData .all .percentGrowth }} %</div>
</div>
</div>
<div class="gh-dashboard-chart small">
<GhMembersChart @type="LineWithLine" @nightShift= {{ feature "nightShift" }} @chartSize="small" @showSummary= {{ false }} @chartType="all-members" @showRange= {{ false }} @chartStats= {{ this .memberCountStatsData .all }} />
</div>
{{ / if }}
{{ / if }}
2021-02-16 20:12:24 +03:00
</div>
</div>
2021-02-24 21:09:19 +03:00
<div class="gh-dashboard-box paid-members">
<div class="gh-dashboard-chart-container">
2021-02-25 11:34:44 +03:00
{{ # if this .memberCountStatsLoading }}
Loading...
{{ else }}
{{ # if this .memberCountStatsError }}
<p class="error">
There was an error loading paid members
<code> {{ this .memberCountStatsData .message }} </code>
</p>
{{ else }}
<div class="gh-dashboard-summary small">
<h4 class="gh-dashboard-header">Paid members</h4>
<div class="data-container">
2021-03-08 20:10:51 +03:00
<div class="data"> {{ format-number this .memberCountStatsData .paid .total }} </div>
2021-02-25 11:34:44 +03:00
<div class="growth {{ this .memberCountStatsData .paid .percentClass }} "> {{ this .memberCountStatsData .paid .percentGrowth }} %</div>
</div>
</div>
<div class="gh-dashboard-chart small">
<GhMembersChart @type="LineWithLine" @nightShift= {{ feature "nightShift" }} @chartSize="small" @showSummary= {{ false }} @chartType="paid-members" @showRange= {{ false }} @chartStats= {{ this .memberCountStatsData .paid }} />
</div>
{{ / if }}
{{ / if }}
2021-02-17 14:11:01 +03:00
</div>
2021-02-17 13:25:14 +03:00
</div>
2021-02-24 21:09:19 +03:00
<div class="gh-dashboard-box newsletter-open-rate">
<div class="gh-dashboard-chart-container">
2021-02-25 11:34:44 +03:00
{{ # if this .newsletterOpenRatesLoading }}
Loading...
{{ else }}
{{ # if this .newsletterOpenRatesError }}
<p class="error">
There was an error loading newsletter open rates
<code> {{ this .memberCountStatsData .message }} </code>
</p>
{{ else }}
<div class="gh-dashboard-summary small">
<h4 class="gh-dashboard-header">Email open rate</h4>
2021-02-25 11:04:34 +03:00
2021-02-25 11:34:44 +03:00
<div class="data-container">
<div class="data"> {{ this .newsletterOpenRatesData .current }} %</div>
2021-03-05 14:46:32 +03:00
<div class="growth {{ this .newsletterOpenRatesData .percentClass }} "> {{ this .newsletterOpenRatesData .percentGrowth }} %</div>
2021-02-25 11:34:44 +03:00
</div>
</div>
<div class="gh-dashboard-chart small">
<GhMembersChart @type="bar" @nightShift= {{ feature "nightShift" }} @chartSize="small" @showSummary= {{ false }} @chartType="open-rate" @showRange= {{ false }} @chartStats= {{ this .newsletterOpenRatesData }} />
</div>
{{ / if }}
{{ / if }}
2021-02-22 11:29:48 +03:00
</div>
2021-02-17 13:25:14 +03:00
</div>
2021-02-24 21:09:19 +03:00
</section>
{{ / if }}
2021-02-16 20:12:24 +03:00
2021-02-17 14:11:01 +03:00
<section class="gh-dashboard-area mixed">
2021-02-17 13:25:14 +03:00
<div class="gh-dashboard-container col-2">
<div class="gh-dashboard-box">
<div class="content">
2021-02-24 18:59:01 +03:00
<h2>Introduction to Members</h2>
2021-02-17 13:25:14 +03:00
<p>The native Members feature makes it possible to launch a membership business, develop a direct relationship with your audience and generate revenue from your creative work.</p>
</div>
<div class="footer">
<a class="gh-btn gh-btn-outline" href="https://ghost.org/help/members-introduction/" target="_blank" rel="noopener"><span>Learn more about Members</span></a>
</div>
</div>
<div class="gh-dashboard-box">
<div class="content">
2021-02-24 18:59:01 +03:00
<h2>Customise Members experience</h2>
2021-02-17 13:25:14 +03:00
<p>Set membership signup details in Portal settings, remove or add your site's name and logo in newsletter emails.</p>
</div>
<div class="footer">
<LinkTo class="gh-btn gh-btn-outline" @route="settings"><span>Portal settings</span></LinkTo>
<LinkTo class="gh-btn gh-btn-outline ml2" @route="settings.members-email"><span>Email design</span></LinkTo>
</div>
</div>
</div>
2021-02-18 14:44:39 +03:00
<div class="gh-dashboard-container">
2021-02-24 21:09:19 +03:00
<div class="gh-dashboard-box blogpost">
<img src="assets/img/dashboard-feature-image.jpeg">
2021-02-18 14:44:39 +03:00
<div class="content">
2021-02-24 21:09:19 +03:00
<h2>Should you launch a newsletter referral program?</h2>
<p>Plus some actionable ideas to create a sustainable growth machine for your newsletter business!</p>
<a href="https://ghost.org/blog/newsletter-referral-programs/" target="_blank" rel="noopener noreferrer">Read article</a>
2021-02-18 14:44:39 +03:00
</div>
</div>
</div>
2021-02-17 14:11:01 +03:00
</section>
<section class="gh-dashboard-area members-activity">
2021-03-02 15:08:07 +03:00
{{ # if this .topMembersData }}
2021-02-23 16:27:25 +03:00
<div class="gh-dashboard-box grey top-members">
<div class="gh-dashboard-header-container">
2021-02-19 15:12:53 +03:00
<h4 class="gh-dashboard-header">Top members</h4>
2021-03-02 15:08:07 +03:00
{{ # if this .topMembersDataHasOpenRates }}
2021-02-19 15:12:53 +03:00
<h4 class="gh-dashboard-header secondary">Open rate</h4>
2021-03-02 15:08:07 +03:00
{{ else }}
<h4 class="gh-dashboard-header secondary">Member since</h4>
{{ / if }}
2021-02-19 15:12:53 +03:00
</div>
2021-02-24 18:59:01 +03:00
<div class="gh-dashboard-list">
2021-02-19 20:17:28 +03:00
{{ # if this .topMembersLoading }}
2021-02-19 15:12:53 +03:00
Loading...
{{ else }}
2021-02-19 20:17:28 +03:00
{{ # if this .topMembersError }}
2021-03-02 15:08:07 +03:00
<p class="tc">
There was an error loading member events.
<code class="hidden"> {{ this .events .error .message }} </code>
2021-02-19 15:12:53 +03:00
</p>
{{ else }}
<ul class="gh-dashboard-top-members">
2021-02-19 20:17:28 +03:00
{{ # each this .topMembersData as | member | }}
2021-02-19 15:12:53 +03:00
<li class="gh-dashboard-top-member">
2021-02-19 20:30:29 +03:00
<LinkTo class="member-details" @route="member" @model=" {{ member .id }} ">
2021-02-19 15:12:53 +03:00
<GhMemberAvatar @member= {{ member }} @containerClass="w9 h9 mr3 flex-shrink-0" />
2021-03-02 15:08:07 +03:00
{{ # if member .name }}
<span class="name"> {{ member .name }} </span>
{{ else }}
<span class="email"> {{ member .email }} </span>
{{ / if }}
2021-02-19 19:28:18 +03:00
</LinkTo>
2021-03-02 15:08:07 +03:00
{{ # if member .emailOpenRate }}
<span class="open-rate"> {{ member .emailOpenRate }} %</span>
{{ else }}
<span class="open-rate">
2021-03-08 18:10:29 +03:00
{{ moment-format member .createdAtUTC "D MMM YYYY" }} <br>
<span> {{ moment-from-now member .createdAtUTC }} </span>
2021-03-02 15:08:07 +03:00
</span>
{{ / if }}
2021-02-19 15:12:53 +03:00
</li>
{{ / each }}
</ul>
{{ / if }}
{{ / if }}
<div class="gh-dashboard-top-members-footer">
<LinkTo @route="members">See all members {{ svg-jar "arrow-right" }} </LinkTo>
</div>
2021-02-17 14:11:01 +03:00
</div>
</div>
2021-02-19 15:12:53 +03:00
{{ / if }}
2021-02-24 21:09:19 +03:00
{{ # unless ( and this .session .user .isOwner ( not this .feature .launchComplete ) ) }}
<div class="gh-dashboard-box grey activity-feed">
<h4 class="gh-dashboard-header">Activity feed</h4>
<div class="content">
{{ # if this .eventsLoading }}
Loading...
2021-02-18 17:17:10 +03:00
{{ else }}
2021-02-24 21:09:19 +03:00
{{ # if this .eventsError }}
<p class="error">
There was an error loading events
<code> {{ this .eventsError .message }} </code>
</p>
{{ else }}
<GhEventTimeline @events= {{ this .eventsData }} />
{{ / if }}
2021-02-18 17:17:10 +03:00
{{ / if }}
2021-02-24 21:09:19 +03:00
</div>
2021-02-17 14:11:01 +03:00
</div>
2021-02-24 21:09:19 +03:00
{{ / unless }}
2021-02-25 11:34:44 +03:00
2021-02-25 11:57:10 +03:00
{{ # unless ( or whatsNewEntriesLoading whatsNewEntriesError ) }}
2021-02-24 18:59:01 +03:00
<div class="gh-dashboard-box whats-new">
<div class="gh-dashboard-header-container">
<h4 class="gh-dashboard-header">What's new?</h4>
{{ svg-jar "gift" }}
</div>
2021-02-18 14:44:39 +03:00
<div class="content">
2021-02-24 18:59:01 +03:00
{{ # each this .whatsNewEntries as | entry | }}
<a href= {{ entry .url }} target="_blank" rel="noopener noreferrer">
<h2> {{ entry .title }} </h2>
<span class="wn-date"> {{ moment-format entry .published_at "D MMM YYYY" }} </span>
{{ # if entry .custom_excerpt }}
<p> {{ entry .custom_excerpt }} </p>
{{ / if }}
</a>
{{ / each }}
</div>
<div class="footer">
<a href="https://ghost.org/changelog" target="_blank" rel="noopener noreferrer">See all updates</a>
2021-02-18 14:44:39 +03:00
</div>
</div>
2021-02-25 11:57:10 +03:00
{{ / unless }}
2021-02-17 14:11:01 +03:00
</section>
</div>
2021-02-25 16:38:58 +03:00
</section>