diff --git a/ghost/admin/app/components/dashboard/dashboard-v5.hbs b/ghost/admin/app/components/dashboard/dashboard-v5.hbs index f809e76f96..b5a5faed0d 100644 --- a/ghost/admin/app/components/dashboard/dashboard-v5.hbs +++ b/ghost/admin/app/components/dashboard/dashboard-v5.hbs @@ -1,90 +1,95 @@ -
+
{{#if this.isLoading }} {{else}} {{#if this.areMembersEnabled}} -
- +
+
+ +
+
+ + {{#if option.name}}{{option.name}}{{else}}Unknown option{{/if}} + +
-
-
-

Members

-
- - {{#if option.name}}{{option.name}}{{else}}Unknown option{{/if}} - -
-
+ {{#if this.hasPaidTiers}} +
+
+
+
+ +
-
+
+ +
+ +
+ +
+ +
+ +
+
+
+
+ {{/if}} + + {{#if this.areNewslettersEnabled}} +
+
+
+ +
+
+ +
+ +
+
+ {{else}} +
+ +
+ {{/if}} + + {{else}} + {{#if this.areNewslettersEnabled}} +
- +
- - {{#if this.hasPaidTiers}} -
- -
- -
- -
- -
- -
- -
- -
- {{/if}} - -
-
- -
- {{/if}} - - {{#if this.areNewslettersEnabled}} -
- -
+
+ {{/if}} {{/if}}
-
-
-

Recent posts

-
+
-
-
-

Recent activity

-
- +
+
-
-

Resources

-
diff --git a/ghost/admin/app/components/dashboard/v5/chart-email.hbs b/ghost/admin/app/components/dashboard/v5/chart-email.hbs index 941e13eb6a..c789b44dc7 100644 --- a/ghost/admin/app/components/dashboard/v5/chart-email.hbs +++ b/ghost/admin/app/components/dashboard/v5/chart-email.hbs @@ -1,21 +1,23 @@ -
-

Email

-
-
+

Email

+
-

Newsletter subscribers

-
{{format-number this.dataSubscribers.total}}
-
{{format-number this.dataSubscribers.paid}} paid
-
{{format-number this.dataSubscribers.free}} free
+ {{!--

Newsletter subscribers

--}} + {{!--
{{format-number this.dataSubscribers.total}}
--}} + {{!--
{{format-number this.dataSubscribers.paid}} paid
--}} + {{!--
{{format-number this.dataSubscribers.free}} free
--}} + +

Email

+
{{format-number this.dataSubscribers.total}}
+ Newsletter subscribers
-

Emails sent in the past 30 days

-
{{format-number this.dataEmailsSent}}
+

 

+
{{format-number this.dataEmailsSent}}
+ Sent in the past 30 days
-

Email open rate

{{#if this.loading}}
{{else}} @@ -25,5 +27,9 @@ @options={{this.chartOptions}} @height={{this.chartHeight}} /> {{/if}} +
+
58%
+ Open rate +
\ No newline at end of file diff --git a/ghost/admin/app/components/dashboard/v5/chart-email.js b/ghost/admin/app/components/dashboard/v5/chart-email.js index 05c5d956b1..d7f5d93c61 100644 --- a/ghost/admin/app/components/dashboard/v5/chart-email.js +++ b/ghost/admin/app/components/dashboard/v5/chart-email.js @@ -49,20 +49,61 @@ export default class ChartEmailOpenRate extends Component { data, fill: false, backgroundColor: '#14b8ff', - tension: 0.1 + tension: 0.1, + cubicInterpolationMode: 'monotone', + fill: false, + pointRadius: 0, + pointHitRadius: 10, + borderColor: '#14b8ff', + borderJoinStyle: 'miter', + maxBarThickness: 20, + minBarLength: 2 }] }; } get chartOptions() { return { + title: { + display: false + }, legend: { display: false + }, + scales: { + yAxes: [{ + gridLines: { + drawTicks: false, + display: false, + drawBorder: false + }, + ticks: { + display: false, + maxTicksLimit: 5, + fontColor: '#7C8B9A', + padding: 8, + precision: 0 + } + }], + xAxes: [{ + gridLines: { + drawTicks: false, + display: false, + drawBorder: false + }, + ticks: { + display: false, + maxTicksLimit: 5, + autoSkip: true, + maxRotation: 0, + minRotation: 0 + } + }] } }; } get chartHeight() { - return 100; + return 175; } } diff --git a/ghost/admin/app/components/dashboard/v5/chart-engagement.hbs b/ghost/admin/app/components/dashboard/v5/chart-engagement.hbs index 8808e3724c..edca886f62 100644 --- a/ghost/admin/app/components/dashboard/v5/chart-engagement.hbs +++ b/ghost/admin/app/components/dashboard/v5/chart-engagement.hbs @@ -1,30 +1,33 @@ -
-

Engagement

-
- - {{#if option.name}}{{option.name}}{{else}}Unknown option{{/if}} - +

Engagement

+ +
+
+
+

Engagement

+
{{this.data30Days}}
+ Last 30 days +
+ +
+

 

+
{{this.data7Days}}
+ Last 7 days +
+
+ +
+ + {{#if option.name}}{{option.name}}{{else}}Unknown option{{/if}} +
- -
-
-

Engaged in past 30 days

-
{{this.data30Days}}
-
- -
-

Engaged in past 7 days

-
{{this.data7Days}}
-
-
\ No newline at end of file diff --git a/ghost/admin/app/components/dashboard/v5/chart-members-counts-insert.hbs b/ghost/admin/app/components/dashboard/v5/chart-members-counts-insert.hbs new file mode 100644 index 0000000000..3aa7d017da --- /dev/null +++ b/ghost/admin/app/components/dashboard/v5/chart-members-counts-insert.hbs @@ -0,0 +1,23 @@ +
+
+

{{gh-pluralize this.totalMembers "Total member" without-count=true}}

+
{{format-number this.totalMembers}}
+ {{#if this.hasTrends}} + + {{/if}} +
+
+

{{gh-pluralize this.paidMembers "Paid member" without-count=true}}

+
{{format-number this.paidMembers}}
+ {{#if this.hasTrends}} + + {{/if}} +
+
+

{{gh-pluralize this.freeMembers "Free member" without-count=true}}

+
{{format-number this.freeMembers}}
+ {{#if this.hasTrends}} + + {{/if}} +
+
\ No newline at end of file diff --git a/ghost/admin/app/components/dashboard/v5/chart-members-counts-insert.js b/ghost/admin/app/components/dashboard/v5/chart-members-counts-insert.js new file mode 100644 index 0000000000..8ca1e15d2e --- /dev/null +++ b/ghost/admin/app/components/dashboard/v5/chart-members-counts-insert.js @@ -0,0 +1,51 @@ +import Component from '@glimmer/component'; +import {action} from '@ember/object'; +import {inject as service} from '@ember/service'; + +export default class ChartMembersCountInsert extends Component { + @service dashboardStats; + + @action + loadCharts() { + this.dashboardStats.loadMembersCounts(); + } + + get totalMembers() { + return this.dashboardStats.memberCounts?.total ?? 0; + } + + get paidMembers() { + return this.dashboardStats.memberCounts?.paid ?? 0; + } + + get freeMembers() { + return this.dashboardStats.memberCounts?.free ?? 0; + } + + get hasTrends() { + return this.dashboardStats.memberCounts !== null && this.dashboardStats.memberCountsTrend !== null; + } + + get totalMembersTrend() { + return this.calculatePercentage(this.dashboardStats.memberCountsTrend.total, this.dashboardStats.memberCounts.total); + } + + get paidMembersTrend() { + return this.calculatePercentage(this.dashboardStats.memberCountsTrend.paid, this.dashboardStats.memberCounts.paid); + } + + get freeMembersTrend() { + return this.calculatePercentage(this.dashboardStats.memberCountsTrend.free, this.dashboardStats.memberCounts.free); + } + + calculatePercentage(from, to) { + if (from === 0) { + if (to > 0) { + return 100; + } + return 0; + } + + return Math.round((to - from) / from * 100); + } +} diff --git a/ghost/admin/app/components/dashboard/v5/chart-monthly-revenue.hbs b/ghost/admin/app/components/dashboard/v5/chart-monthly-revenue.hbs index edefe26368..424320fe41 100644 --- a/ghost/admin/app/components/dashboard/v5/chart-monthly-revenue.hbs +++ b/ghost/admin/app/components/dashboard/v5/chart-monthly-revenue.hbs @@ -1,10 +1,9 @@ -

- Monthly revenue (MMR) -

+>$32
+Monthly revenue (MMR) + {{#if this.loading}}
{{else}} diff --git a/ghost/admin/app/components/dashboard/v5/chart-monthly-revenue.js b/ghost/admin/app/components/dashboard/v5/chart-monthly-revenue.js index c6b32f39f4..5cce4e5c57 100644 --- a/ghost/admin/app/components/dashboard/v5/chart-monthly-revenue.js +++ b/ghost/admin/app/components/dashboard/v5/chart-monthly-revenue.js @@ -32,22 +32,77 @@ export default class ChartMonthlyRevenue extends Component { labels: labels, datasets: [{ data: data, - fill: false, + tension: 0.1, + cubicInterpolationMode: 'monotone', + fill: true, + fillColor: '#F5FBFF', + backgroundColor: '#F5FBFF', + pointRadius: 0, + pointHitRadius: 10, borderColor: '#14b8ff', - tension: 0.1 + borderJoinStyle: 'miter', + maxBarThickness: 20, + minBarLength: 2 }] }; } get chartOptions() { return { + title: { + display: false + }, legend: { display: false + }, + scales: { + yAxes: [{ + gridLines: { + drawTicks: false, + display: false, + drawBorder: false + }, + ticks: { + display: false, + maxTicksLimit: 5, + fontColor: '#7C8B9A', + padding: 8, + precision: 0 + } + }], + xAxes: [{ + gridLines: { + drawTicks: false, + display: false, + drawBorder: false + }, + ticks: { + display: false, + maxTicksLimit: 5, + autoSkip: true, + maxRotation: 0, + minRotation: 0 + }, + type: 'time', + time: { + displayFormats: { + 'millisecond': 'MMM DD', + 'second': 'MMM DD', + 'minute': 'MMM DD', + 'hour': 'MMM DD', + 'day': 'MMM DD', + 'week': 'MMM DD', + 'month': 'MMM DD', + 'quarter': 'MMM DD', + 'year': 'MMM DD', + } + } + }] } }; } get chartHeight() { - return 100; + return 200; } } diff --git a/ghost/admin/app/components/dashboard/v5/chart-paid-members.hbs b/ghost/admin/app/components/dashboard/v5/chart-paid-members.hbs index 6c74e09d7a..1ec27334a9 100644 --- a/ghost/admin/app/components/dashboard/v5/chart-paid-members.hbs +++ b/ghost/admin/app/components/dashboard/v5/chart-paid-members.hbs @@ -5,6 +5,7 @@ > Paid members + {{#if this.loading}}
{{else}} diff --git a/ghost/admin/app/components/dashboard/v5/chart-paid-members.js b/ghost/admin/app/components/dashboard/v5/chart-paid-members.js index 75e02fa8a0..5ce0edc02f 100644 --- a/ghost/admin/app/components/dashboard/v5/chart-paid-members.js +++ b/ghost/admin/app/components/dashboard/v5/chart-paid-members.js @@ -34,22 +34,75 @@ export default class ChartPaidMembers extends Component { datasets: [ { data: newData, - fill: false, + fill: true, backgroundColor: '#14b8ff', - tension: 0.1 + tension: 0.1, + borderWidth: 0, + barThickness: 10, + minBarLength: 3 },{ data: canceledData, - fill: false, + fill: true, backgroundColor: '#E16262', - tension: 0.1 + tension: 0.1, + borderWidth: 0, + barThickness: 10, + minBarLength: 3 }] }; } get chartOptions() { return { + title: { + display: false + }, legend: { display: false + }, + scales: { + yAxes: [{ + gridLines: { + drawTicks: false, + display: true, + drawBorder: false + }, + ticks: { + display: false, + maxTicksLimit: 5, + fontColor: '#7C8B9A', + padding: 8, + precision: 0 + } + }], + xAxes: [{ + gridLines: { + drawTicks: false, + display: false, + drawBorder: false + }, + ticks: { + display: false, + maxTicksLimit: 5, + autoSkip: true, + maxRotation: 0, + minRotation: 0 + }, + type: 'time', + time: { + displayFormats: { + 'millisecond': 'MMM DD', + 'second': 'MMM DD', + 'minute': 'MMM DD', + 'hour': 'MMM DD', + 'day': 'MMM DD', + 'week': 'MMM DD', + 'month': 'MMM DD', + 'quarter': 'MMM DD', + 'year': 'MMM DD', + } + } + }] } }; } diff --git a/ghost/admin/app/components/dashboard/v5/chart-total-members.hbs b/ghost/admin/app/components/dashboard/v5/chart-total-members.hbs index 95d1576b1d..5b2a29cd6c 100644 --- a/ghost/admin/app/components/dashboard/v5/chart-total-members.hbs +++ b/ghost/admin/app/components/dashboard/v5/chart-total-members.hbs @@ -1,13 +1,14 @@ -

Total members -

+ --}} {{#if this.loading}}
{{else}} + - Total paid - +>$999
+Total paid {{#if this.loading}}
diff --git a/ghost/admin/app/components/dashboard/v5/chart-total-paid.js b/ghost/admin/app/components/dashboard/v5/chart-total-paid.js index 52daa0762c..fb7dbff63b 100644 --- a/ghost/admin/app/components/dashboard/v5/chart-total-paid.js +++ b/ghost/admin/app/components/dashboard/v5/chart-total-paid.js @@ -32,22 +32,77 @@ export default class ChartTotalPaid extends Component { labels, datasets: [{ data, - fill: false, + tension: 0.1, + cubicInterpolationMode: 'monotone', + fill: true, + fillColor: '#F5FBFF', + backgroundColor: '#F5FBFF', + pointRadius: 0, + pointHitRadius: 10, borderColor: '#14b8ff', - tension: 0.1 + borderJoinStyle: 'miter', + maxBarThickness: 20, + minBarLength: 2 }] }; } get chartOptions() { return { + title: { + display: false + }, legend: { display: false + }, + scales: { + yAxes: [{ + gridLines: { + drawTicks: false, + display: false, + drawBorder: false + }, + ticks: { + display: false, + maxTicksLimit: 5, + fontColor: '#7C8B9A', + padding: 8, + precision: 0 + } + }], + xAxes: [{ + gridLines: { + drawTicks: false, + display: false, + drawBorder: false + }, + ticks: { + display: false, + maxTicksLimit: 5, + autoSkip: true, + maxRotation: 0, + minRotation: 0 + }, + type: 'time', + time: { + displayFormats: { + 'millisecond': 'MMM DD', + 'second': 'MMM DD', + 'minute': 'MMM DD', + 'hour': 'MMM DD', + 'day': 'MMM DD', + 'week': 'MMM DD', + 'month': 'MMM DD', + 'quarter': 'MMM DD', + 'year': 'MMM DD', + } + } + }] } }; } get chartHeight() { - return 100; + return 50; } } diff --git a/ghost/admin/app/components/dashboard/v5/recent-activity.hbs b/ghost/admin/app/components/dashboard/v5/recent-activity.hbs new file mode 100644 index 0000000000..3a4ef3de6b --- /dev/null +++ b/ghost/admin/app/components/dashboard/v5/recent-activity.hbs @@ -0,0 +1,66 @@ +{{#if this.shouldDisplay}} +
+ {{!--
  • +
    Recent Activity
    +
  • --}} +

    Recent activity

    +
    + {{#let (members-event-fetcher filter=(if (feature "membersActivityFeed") (members-event-filter excludeEmailEvents=true)) pageSize=5) as |eventsFetcher|}} + {{#if eventsFetcher.isLoading}} + Loading... + {{/if}} + + {{#if eventsFetcher.isError}} +

    + There was an error loading events + {{#if eventsFetcher.errorMessage}} + {{eventsFetcher.errorMessage}} + {{/if}} +

    + {{/if}} + + {{#unless (or eventsFetcher.isLoading eventsFetcher.isError)}} +
    + {{#if eventsFetcher.data}} +
      + {{#each eventsFetcher.data as |event|}} + {{#let (parse-member-event event) as |parsedEvent|}} +
    • + +
      + {{svg-jar parsedEvent.icon}} +
      +
      + {{parsedEvent.subject}} +
      +
      + {{parsedEvent.action}} + {{parsedEvent.object}} + {{parsedEvent.info}} +
      +
      +
      +
      + {{moment-from-now parsedEvent.timestamp}} +
    • + {{/let}} + {{/each}} +
    + {{else}} +
    + {{svg-jar "no-data-list"}} + No member activity available. +
    + {{/if}} +
    + + {{#if (feature "membersActivityFeed")}} + + {{/if}} + {{/unless}} + {{/let}} +
    +
    +{{/if}} diff --git a/ghost/admin/app/components/dashboard/v5/recent-activity.js b/ghost/admin/app/components/dashboard/v5/recent-activity.js new file mode 100644 index 0000000000..7288e0d8c8 --- /dev/null +++ b/ghost/admin/app/components/dashboard/v5/recent-activity.js @@ -0,0 +1,23 @@ +import Component from '@glimmer/component'; +import {inject as service} from '@ember/service'; + +export default class RecentActivity extends Component { + @service feature; + @service session; + @service settings; + + get shouldDisplay() { + if (this.feature.improvedOnboarding) { + return true; + } + + const isOwner = this.session.user?.isOwnerOnly; + const hasCompletedLaunchWizard = this.settings.get('editorIsLaunchComplete'); + + if (isOwner && !hasCompletedLaunchWizard) { + return false; + } + + return true; + } +} diff --git a/ghost/admin/app/components/dashboard/v5/recent-posts.hbs b/ghost/admin/app/components/dashboard/v5/recent-posts.hbs index d72e6b2b71..fcdc1dd023 100644 --- a/ghost/admin/app/components/dashboard/v5/recent-posts.hbs +++ b/ghost/admin/app/components/dashboard/v5/recent-posts.hbs @@ -1,8 +1,12 @@ +
    1. +

      Recent posts

      + {{!--
      Title
      Sends
      Opens
      + --}}
    2. {{#each this.posts as |post|}} h3 { + display: none; +} + +.gh-dashboard5-email .gh-dashboard5-container { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 0; } - +/* .gh-dashboard5-email .gh-dashboard5-box { border-width: 1px 0 1px 1px; border-radius: 0; @@ -1284,46 +1327,49 @@ a.gh-dashboard-container { .gh-dashboard5-email .gh-dashboard5-box:nth-child(3) { grid-column: 2; grid-row: 1 / span 2; -} +} */ .gh-dashboard5-growth { display: grid; - grid-template-columns: 1fr 1fr; - grid-template-rows: auto auto auto; + grid-template-columns: 1fr 1fr 1fr 1fr; + grid-template-rows: auto auto; gap: 0; + margin-top: -25px; } -.gh-dashboard5-growth .gh-dashboard5-box:nth-child(1) { +/* .gh-dashboard5-growth .gh-dashboard5-box:nth-child(1) { grid-column: 1 / span 2; grid-row: 1; border-radius: 3px 3px 0 0; border-width: 1px; +} */ + +.gh-dashboard5-growth .gh-dashboard5-box:nth-child(1) { + grid-column: 1 / span 2; + grid-row: 1 / span 2; + border-radius: 3px 0 0 0; + border-width: 1px; + padding-top: 32px; } .gh-dashboard5-growth .gh-dashboard5-box:nth-child(2) { - grid-column: 1; - grid-row: 2; - border-radius: 0; - border-width: 0 1px 1px 1px; + grid-column: 3 / span 2; + grid-row: 1; + border-radius: 0 3px 0 0; + border-width: 1px 1px 1px 0; + padding-top: 32px; } .gh-dashboard5-growth .gh-dashboard5-box:nth-child(3) { - grid-column: 2; + grid-column: 3; grid-row: 2; - border-radius: 0; + border-radius: 0 0 0 3px; border-width: 0 1px 1px 0; } .gh-dashboard5-growth .gh-dashboard5-box:nth-child(4) { - grid-column: 1; - grid-row: 3; - border-radius: 0 0 0 3px; - border-width: 0 1px 1px 1px; -} - -.gh-dashboard5-growth .gh-dashboard5-box:nth-child(5) { - grid-column: 2; - grid-row: 3; + grid-column: 4; + grid-row: 2; border-radius: 0 0 3px 0; border-width: 0 1px 1px 0; } @@ -1338,4 +1384,191 @@ a.gh-dashboard-container { .gh-dashboard5 .gh-offers-help { margin: 0; +} + +.gh-dashboard5-overview { + position: relative; +} + +.gh-dashboard5-overview > .gh-dashboard5-box { + padding: 0; + /* min-height: 346px; */ +} + +.gh-dashboard5-overview .gh-dashboard5-insert { + width: 75%; + display: flex; + flex-direction: row; + margin: 20px 28px 0px; +} + +.gh-dashboard5-overview .gh-dashboard5-insert .gh-dashboard5-box { + border-radius: 0; + border-width: 0 1px 0 0; + padding-top: 8px; + padding-bottom: 8px; +} + +.gh-dashboard5-overview .gh-dashboard5-insert .gh-dashboard5-box:first-child { + border-radius: 0; + border-width: 0 1px 0 0; + padding-left: 0; +} + +.gh-dashboard5-overview .gh-dashboard5-insert .gh-dashboard5-box:last-child { + border-radius: 0; + border-width: 0; +} + +.gh-dashboard5-overview .prototype-selection { + position: absolute; + top: 20px; + right: 20px; +} + +.gh-dashboard5-engagement { + position: relative; +} + +.gh-dashboard5-engagement > h3 { + display: none; +} + +.gh-dashboard5-engagement > .gh-dashboard5-box { + padding: 0; + align-items: stretch; +} + +.gh-dashboard5-engagement .gh-dashboard5-insert { + display: flex; + flex-direction: row; + margin: 20px 28px; + flex: 1; +} + +.gh-dashboard5-engagement .gh-dashboard5-insert .gh-dashboard5-box { + border-radius: 0; + border-width: 0 1px 0 0; + padding: 8px 24px 0 0; +} + +.gh-dashboard5-engagement .gh-dashboard5-insert .gh-dashboard5-box:last-child { + border-left-width: 0; + flex-direction: column; + justify-content: flex-end; + padding-left: 24px; +} + +.gh-dashboard5-split .gh-dashboard5-engagement .gh-dashboard5-insert { + display: flex; + flex-direction: column; + margin: 20px 28px; + flex: 1; +} + +.gh-dashboard5-split .gh-dashboard5-engagement .gh-dashboard5-insert .gh-dashboard5-box { + border-radius: 0; + border-width: 0 0 1px; + padding: 8px 24px 24px 0; +} + +.gh-dashboard5-split .gh-dashboard5-engagement .gh-dashboard5-insert .gh-dashboard5-box:last-child { + border-bottom-width: 0; + flex: 1; + display: flex; + flex-direction: column; + justify-content: flex-end; + padding-bottom: 0; +} + +.gh-dashboard5-section .prototype-selection { + position: absolute; + top: 18px; + right: 16px; +} + +.gh-dashboard5-section .ember-power-select-selected-item { + font-size: 1.1rem; + text-transform: uppercase; + font-weight: 500; + letter-spacing: .2px; + margin: 0 0 8px; + padding: 0; + color: #15171a; +} + +.gh-dashboard5 .gh-list-header { + border-bottom: 0; +} + +.gh-dashboard5-posts .gh-content-entry-title { + font-weight: 600; + font-size: 14px !important; + color: rgb(21, 23, 26); + /* white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; */ +} + +.gh-dashboard5-posts .gh-dashboard5-box { + display: flex; + flex-direction: column; + justify-content: space-between; + padding-bottom: 16px; +} + +.gh-dashboard5-posts .footer { + padding-top: 12px; +} + +.gh-dashboard5-email h3 { + display: none; +} + +.gh-dashboard5-email canvas { + border-bottom: 1px solid #ebeef0; +} + +.gh-dashboard5-email > .gh-dashboard5-box { + padding: 0; + align-items: stretch; +} + +.gh-dashboard5-email .gh-dashboard5-insert { + margin: 20px 28px; + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr 1fr; + gap: 0; +} + +.gh-dashboard5-email .gh-dashboard5-insert .gh-dashboard5-box:nth-child(1) { + grid-column: 1; + grid-row: 1; + border-radius: 0; + border-width: 0 1px 1px 0; + padding: 8px 24px 24px 0; +} + +.gh-dashboard5-email .gh-dashboard5-insert .gh-dashboard5-box:nth-child(2) { + grid-column: 1; + grid-row: 2; + border-radius: 0; + border-width: 0 1px 0 0; + padding: 20px 24px 0 0; + display: flex; + flex-direction: column; + justify-content: flex-end; +} + +.gh-dashboard5-email .gh-dashboard5-insert .gh-dashboard5-box:nth-child(3) { + grid-column: 2; + grid-row: 1 / span 2; + border-radius: 0; + border-width: 0; + padding: 8px 0 0 28px; + display: flex; + flex-direction: column; + justify-content: space-between; } \ No newline at end of file diff --git a/ghost/admin/app/templates/dashboard.hbs b/ghost/admin/app/templates/dashboard.hbs index 1a0bebdc43..d0e1af20bc 100644 --- a/ghost/admin/app/templates/dashboard.hbs +++ b/ghost/admin/app/templates/dashboard.hbs @@ -1,13 +1,19 @@
      - -

      - Dashboard -

      -
      - {{#if (feature "dashboardV5")}} - +
      + +

      + Dashboard +

      +
      + +
      {{else}} + +

      + Dashboard +

      +
      {{#if (and this.session.user.isOwnerOnly (not this.settings.editorIsLaunchComplete) (not (feature "improvedOnboarding")))}}