Compare commits

..

683 Commits

Author SHA1 Message Date
ViViDboarder
e1cf969048 Use latest ubuntu runner 2023-07-11 13:54:09 -07:00
ViViDboarder
416a1194c6 Replace @blog with @site 2023-07-11 12:12:56 -07:00
ViViDboarder
5fcdb152eb Merge remote-tracking branch 'upstream/main' 2023-07-11 12:12:28 -07:00
Sanne de Vries
d3483498d4
Added support for hidden title and feature image on pages (#943)
* Added support for hidden title and feature image on pages

Refs https://github.com/TryGhost/Product/issues/3568

* Switched from match to if helper for show_title_and_feature_image

Refs https://github.com/TryGhost/Product/issues/3568
2023-07-10 12:19:00 +02:00
Sodbileg Gansukh
4ae190c1a6 v5.5.3 2023-07-06 09:46:25 +08:00
Sodbileg Gansukh
22c83f9128 Fixed tag and author description character limit 2023-07-06 09:46:03 +08:00
Sodbileg Gansukh
10fd2f3a1c v5.5.2 2023-07-03 18:52:41 +08:00
Sodbileg Gansukh
b1a10873ff Fixed nested list spacing 2023-07-03 18:03:47 +08:00
Sodbileg Gansukh
0e76b5abef Removed unnecessary JS hack for nested list 2023-07-03 17:37:39 +08:00
Sodbileg Gansukh
d75ffc78ac Added nested list support 2023-06-28 18:25:13 +08:00
Sodbileg Gansukh
fa76f77006 Consistent syntax 2023-06-27 13:01:12 +08:00
Rafael Corrêa Gomes
dda827ded3 Head > Adding preload 2023-06-27 12:59:56 +08:00
Sanne de Vries
bdf150658e v5.5.1 2023-06-22 21:19:57 +02:00
Sanne de Vries
2fafe722d1 Added grid to full width cards with wide content
Refs https://github.com/TryGhost/Team/issues/3459
2023-06-22 21:17:03 +02:00
Sodbileg Gansukh
0721600075 v5.5.0 2023-06-22 17:17:43 +08:00
Sodbileg Gansukh
a18367200f Updated post content grid for additional widths 2023-06-22 16:37:59 +08:00
Sodbileg Gansukh
294b1e30e5 v5.4.12 2023-06-20 12:09:25 +08:00
Sodbileg Gansukh
aa8ca0794b Fixed main nav background color in dark mode
closes https://github.com/TryGhost/Casper/issues/942
2023-06-20 12:09:08 +08:00
Sodbileg Gansukh
ba0b3d08cc v5.4.11 2023-05-09 13:30:12 +08:00
Sodbileg Gansukh
50d5727f77 Fixed mobile menu background in dark mode
no issues

- when there's no publication cover and the color scheme is in dark mode, the mobile menu had white background
- this fixes the issue by adding explicit dark mode rules to the styles
2023-05-09 13:27:37 +08:00
Sodbileg Gansukh
23f7c30365 v5.4.10 2023-04-21 09:49:57 +01:00
Sodbileg Gansukh
8ff3c6fcf1 Fixed main nav to make it work with the announcement bar 2023-04-21 09:49:37 +01:00
Sodbileg Gansukh
5c7fb39df9 v5.4.9 2023-04-10 13:42:17 +08:00
Sodbileg Gansukh
4851606d9d Rebuilt assets 2023-04-10 13:41:59 +08:00
Rob Leslie
afca9cb27e Fix problem showing dropdown after window resize
When the browser window is resized, a new click event listener is added
to the window but the old one is not removed. The old one ends up
preventing the newly-made dropdown from opening.

Fix this by remembering the click event listener function added to the
window, and remove it before making the new dropdown after a window
resize.
2023-04-10 13:40:33 +08:00
Sodbileg Gansukh
b56bec2cb8 Fixed header action background color for smaller screens
closes #934

- the accent color is used for the header background, so we don't need to add explicit dark mode color to the action on mobile screens
2023-04-10 13:24:11 +08:00
Sodbileg Gansukh
0c4164c5bd v5.4.8 2023-03-28 16:01:50 +08:00
Sodbileg Gansukh
e6326eadf9 Added a class name to the powered by text
no issues

- our other themes have this class, and this makes it consistent across over all offcial themes
2023-03-28 16:01:24 +08:00
renovate[bot]
3ed94d68fa Update dependency gscan to v4.36.1 2023-03-07 09:25:32 +01:00
Sodbileg Gansukh
505503a63b v5.4.7 2023-03-01 13:54:29 +08:00
Sodbileg Gansukh
bd3fc7c2af Fixed textarea color in dark mode 2023-03-01 13:53:58 +08:00
Sodbileg Gansukh
5e0f765852 v5.4.6 2023-02-28 13:57:36 +08:00
Sodbileg Gansukh
4293dab0a7 Fixed burger menu icon visibility on dark mode
refs #925
2023-02-28 13:57:05 +08:00
Cory
f00918589f Update comment grammar 2023-02-27 17:13:31 +08:00
Nicholas Fasching
0200889148 Fix Table of Contents Numbering in screen.css 2023-02-27 15:39:25 +08:00
Mark Stosberg
248c122f86 re-add aria-label to search button for screen readers
This was added by https://github.com/TryGhost/Casper/pull/896 

but then appears to have been accidentally reverted in the merge of https://github.com/TryGhost/Casper/pull/906
2023-02-27 15:10:09 +08:00
Daniel Lockyer
a007415d89
v5.4.5 2023-01-20 09:50:01 +01:00
Peter Zimon
31188ce3c0 Fixed author's cover image not showing up
no refs.

The author's cover image didn't show up on the theme because the author template used `feature_image` instead of `cover_image`.
2023-01-19 09:51:08 +01:00
Sodbileg Gansukh
e1967f8546 v5.4.4 2022-12-16 12:35:19 +08:00
Sodbileg Gansukh
5259d551f5 Fixed mobile navbar height 2022-12-16 12:33:11 +08:00
Sodbileg Gansukh
115d1d820c Fixed sign in link placement on mobile screen
fixes #913
2022-12-16 12:12:22 +08:00
Sodbileg Gansukh
81e4dfd52d Minor spacing adjustment 2022-12-16 12:02:08 +08:00
Sodbileg Gansukh
cc4d828575 Fixed logo visibility when the header is hidden 2022-12-16 11:57:59 +08:00
Sodbileg Gansukh
ebb2538215 v5.4.3 2022-12-15 10:12:38 +08:00
Sodbileg Gansukh
3767e3d994 Adjusted the pagination to dark mode 2022-12-15 10:00:58 +08:00
Sodbileg Gansukh
6d290485dc Fixed account button background 2022-12-15 09:55:41 +08:00
Sodbileg Gansukh
7da41d344f Added sign in link to the navbar 2022-12-14 16:42:46 +08:00
Sodbileg Gansukh
55a90a9252 v5.4.2 2022-12-12 14:55:31 +08:00
Sodbileg Gansukh
b20dceae22 Rebuilt assets 2022-12-12 14:55:02 +08:00
Sodbileg Gansukh
88ca182a58 Added regular pagination option
Casper comes with infinite scrolling by default. This update makes it possible to go with the default pagination style when the <html> element has a class no-infinite-scroll.
2022-12-08 12:50:24 +08:00
Sodbileg Gansukh
140632b885 fixes #910
When the publication cover is turned off and the header style is set to hidden, the header section shouldn't be taking much space like it does regularly.
2022-12-07 15:29:23 +08:00
Sodbileg Gansukh
8f2b806673 v5.4.1 2022-11-14 11:05:28 +08:00
Sodbileg Gansukh
4af198a19f Fixed dropdown menu width 2022-11-14 10:42:10 +08:00
Sodbileg Gansukh
f846ceb7ed Fixed minor spacing issues on the header 2022-11-14 10:37:50 +08:00
tmlmt
7390c17a26 Fix for intended location of search icon 2022-11-14 10:31:51 +08:00
Sodbileg Gansukh
55d5345800 v5.4.0 2022-11-11 11:31:39 +08:00
Sodbileg Gansukh
cf30adacce
Added navbar options (#906) 2022-11-11 11:30:32 +08:00
Lucas
38426cd9e6
Added aria-label to search button (#896) 2022-10-31 16:01:42 +08:00
Sodbileg Gansukh
c7713df88f v5.3.2 2022-10-04 14:43:34 +08:00
Sodbileg Gansukh
e6fdb4bfa3 Excluded GitHub Gist table from being styled
fixes #895
2022-10-04 14:31:38 +08:00
Jérôme Gamez
657bb8f986 Add me relation to social links 2022-09-12 12:57:24 +08:00
Sodbileg Gansukh
005211ff8f Remove ununsed file 2022-09-01 11:36:01 +08:00
Sodbileg Gansukh
e2096ee731 v5.3.1 2022-08-16 10:54:22 +08:00
Sodbileg Gansukh
20ced95885 Fix search icon placement
fixes #894
2022-08-16 10:54:04 +08:00
Sodbileg Gansukh
2aaf7441af v5.3.0 2022-08-12 21:32:28 +08:00
Sodbileg Gansukh
d687d0f099
Add comments support (#893)
* Added comments to theme

* Cleanup

* Updated spacing and typography

* Removed bottom border

* Added comment counter

* Updated theme name and post template

* Added search support

* Compiled css for search

* Removed the border and brackets for comment count

* Moved the comments helper into the content block so it gets the same paddings at narrow viewports

* Package version bump

* Updated comments helper in post template

* Final tweaks for the comments support

* Revert the package info

* Update {{comment_count}} helper usage

The helper now outputs a span wrapper by default, so we won't have to add a wrapper in the theme

Co-authored-by: Peter Zimon <peter.zimon@gmail.com>
Co-authored-by: Sanne de Vries <sannedv@protonmail.com>
Co-authored-by: James Morris <moreofmorris@users.noreply.github.com>
2022-08-12 21:30:06 +08:00
renovate[bot]
96f69f8c07
Update dependency gscan to v4.34.0 (#884)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-08 16:31:53 +08:00
renovate[bot]
4808700c0f
Update dependency @tryghost/release-utils to v0.8.1 (#886)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-08 16:30:45 +08:00
Sodbileg Gansukh
6459992d9a Update screenshot 2022-08-08 10:57:04 +08:00
Sodbileg Gansukh
b28258d0c8 v5.2.3 2022-08-02 14:23:57 +08:00
Sodbileg Gansukh
f3c0526ea5 Increase the width of header on author and tag page
The width used to be equal to one post card width and it wasn't enough for longer author name and description.
2022-07-28 12:37:32 +08:00
Sodbileg Gansukh
129a578751 Fix author profile social link hover color on dark mode 2022-07-28 12:35:23 +08:00
Sodbileg Gansukh
1b3541ef2a v5.2.2 2022-07-26 10:23:06 +08:00
Sodbileg Gansukh
664afdb158 Rebuild assets 2022-07-26 10:22:49 +08:00
Sodbileg Gansukh
d386ab090f Update Ghost version compatibility default value 2022-07-20 12:18:01 +08:00
renovate[bot]
c6411dbf41
Update dependency gscan to v4.31.2 (#851)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-07-19 16:14:22 +08:00
renovate[bot]
7eb472ab81
Update dependency gulp-postcss to v9.0.1 (#815)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-07-19 16:13:15 +08:00
renovate[bot]
ae7b6e1022
Update dependency inquirer to v8.2.4 (#806)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-07-19 16:12:28 +08:00
renovate[bot]
b74032835f
Update dependency postcss to v8.2.13 [SECURITY] (#805)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-07-19 16:10:33 +08:00
renovate[bot]
eab9e1ae0f
Update dependency autoprefixer to v10.4.7 (#796)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-07-19 16:09:58 +08:00
renovate[bot]
873566a24c
Update dependency @tryghost/release-utils to v0.8.0 (#793)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-07-19 16:02:59 +08:00
renovate[bot]
1ade4c8816
Update CSS preprocessors (#797)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-07-19 16:01:28 +08:00
Sodbileg Gansukh
245969800d Rebuild assets 2022-07-19 15:54:01 +08:00
snake
db37f3caa8
Fix author profile location is dark color in dark mode (#874) 2022-07-19 15:52:59 +08:00
Sodbileg Gansukh
a15e9bda40 v5.2.1 2022-07-14 15:17:44 +08:00
Sodbileg Gansukh
ffcbc42d13 Fix search icon spacing 2022-07-14 15:16:32 +08:00
Sodbileg Gansukh
d373d926fa v5.2.0 2022-07-12 19:15:38 +08:00
Sodbileg Gansukh
8699a22019 Add search attribute 2022-07-12 19:14:29 +08:00
Sodbileg Gansukh
eff8d360ba Add search support 2022-07-12 19:14:29 +08:00
Sodbileg Gansukh
3e7ca9cb36 v5.1.5 2022-07-04 19:02:25 +08:00
Sodbileg Gansukh
b5297f16d7 Rebuild assets 2022-07-04 19:02:07 +08:00
Jérôme Gamez
ccf82ec6c1 Let social links inherit their color 2022-07-04 15:12:36 +08:00
Sodbileg Gansukh
d9d70e7010 v5.1.4 2022-06-03 17:07:58 +08:00
Sodbileg Gansukh
52663e9be7 Fix unexpected cropping in grid layout 2022-06-03 17:07:38 +08:00
Sodbileg Gansukh
d1b1d383f5 v5.1.3 2022-06-01 19:43:57 +08:00
Sodbileg Gansukh
cf50364c6d Fix members only post indicator visibility when logged in 2022-06-01 19:43:34 +08:00
Sodbileg Gansukh
22e3f69aed v5.1.2 2022-05-31 16:18:53 +08:00
Sodbileg Gansukh
d1ac1b8c2c Distinguish members and paid-members only post indicators 2022-05-31 13:50:54 +08:00
Sodbileg Gansukh
45bc14f08d v5.1.1 2022-05-27 18:19:39 +08:00
Sodbileg Gansukh
e27ea96779 Fix blurry tag image 2022-05-27 18:19:14 +08:00
Sodbileg Gansukh
e51c1aff42 v5.1.0 2022-05-27 15:13:32 +08:00
Sodbileg Gansukh
d00647009c Fix post access indicator background 2022-05-27 15:10:47 +08:00
Sodbileg Gansukh
c75b67cf5d Fix author avatar in dark mode 2022-05-27 15:01:51 +08:00
Sodbileg Gansukh
9ebb26559a Auto dark mode 2022-05-27 14:46:30 +08:00
Sodbileg Gansukh
0e78d9ed40 Fix recent posts alignment 2022-05-26 17:41:59 +08:00
Sodbileg Gansukh
08b3054ada Hover effect 2022-05-26 16:25:05 +08:00
Sodbileg Gansukh
f5cb9a73d0 Fix featured post indicator layout shifting 2022-05-26 16:19:59 +08:00
Sodbileg Gansukh
e27f2190d6 Add conditions to check if members feature is enabled 2022-05-26 16:08:10 +08:00
Sodbileg Gansukh
c205947374 Fix table element selector 2022-05-26 15:55:16 +08:00
Sodbileg Gansukh
628a32ba96 Rename has-cover-image body class 2022-05-26 14:33:06 +08:00
Sodbileg Gansukh
0bf84b2b80 Post access indicator 2022-05-26 14:31:14 +08:00
Sodbileg Gansukh
7a86c6fd92 Show the reading time separate only if it exists 2022-05-26 13:56:10 +08:00
Sodbileg Gansukh
cfd767be88 Social links 2022-05-26 13:44:38 +08:00
Sodbileg Gansukh
4461d5e2f8 Featured post indicator 2022-05-26 13:31:16 +08:00
Sodbileg Gansukh
9efff7d6fa v5.0.0 2022-05-20 21:51:00 +08:00
Sodbileg Gansukh
358f3d6d35 Archive template spacing 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
4e30aff168 Minor dark mode fix 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
362a4995a2 Page template specific fixes 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
b0dfa11ff0 Polishing 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
508bbf1fb0 Spacing, spacing and spacing 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
a0cedfe23e Rename @custom.site_logo_in_main_navigation 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
1076078f8b Update ghost version 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
fe257987ce More spacing issue fixes 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
83669da41c Minor thing 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
be6943780d Remove auto dark mode 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
1f7cd51245 Minor detail adjustments 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
082cadf640 Rename recent posts setting 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
c74be0e346 Post image style setting 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
5fc101fb2c Layout settings cleanup 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
6439992db2 Fix wrong conditions for @custom.site_logo_in_main_navigation 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
21c6f59a61 Header settings cleanup 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
5424c465fb Settings cleanup 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
994a2287a2 List layout 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
6236067373 Minor adjustments 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
68c6224a92 Mobile screen refinement 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
838120323a More theme settings cleanup 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
98f7f53119 Post template 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
d9f92dfe89 Author and tag templates 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
b811b72333 Post layouts 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
6c922fca35 Cleanup header style 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
4c8ccde081 Header option 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
5672c0b6c8 Post card 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
f74e9241bb Header 2022-05-20 21:49:12 +08:00
Sodbileg Gansukh
ff4e4226c0 v4.7.5 2022-05-02 17:44:06 +08:00
Sodbileg Gansukh
9a09ff41c3 Add a class name to site description 2022-05-02 17:43:02 +08:00
Sodbileg Gansukh
f41761e0ad v4.7.4 2022-04-08 18:05:35 +08:00
Sodbileg Gansukh
11b52ed0cf Fix paginated posts of the list layout 2022-04-08 18:04:54 +08:00
Sodbileg Gansukh
c3fa4f6b24 Remove deprecated ghost-api property 2022-03-28 15:48:20 +08:00
Sodbileg Gansukh
19d5b6c297 Remove unused csscomb files 2022-03-23 11:15:07 +08:00
Sodbileg Gansukh
76f0037467 v4.7.3 2022-03-01 11:44:07 +08:00
Sodbileg Gansukh
37a09189c3 Make editor and markdown blockquote styles consistent 2022-03-01 11:43:00 +08:00
Sodbileg Gansukh
13458e0d2d Add a class to card meta author 2022-01-26 13:10:55 +08:00
Sodbileg Gansukh
eb007cb1c1 Show read more wrapper when only there are other recent posts 2022-01-25 14:28:22 +08:00
renovate[bot]
55f5ba65c6
Update dependency gscan to v4.22.0 (#827)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-01-14 10:39:46 +00:00
John O'Nolan
5cdcda15ee
2022 2022-01-05 12:43:26 +00:00
Maegan Wilson
18f6d85da5 Updating spelling fixes #834 2022-01-04 11:57:24 +08:00
Sodbileg Gansukh
1f3418708c Add <kbd> style
fixes #822
2022-01-03 12:08:16 +08:00
Sodbileg Gansukh
05d0b0c7db v4.7.2 2021-12-17 18:16:43 +08:00
Sodbileg Gansukh
08f480ff78 Update dark style header card background color 2021-12-17 18:16:21 +08:00
Sodbileg Gansukh
56ec2e9a90 v4.7.1 2021-12-17 16:30:15 +08:00
Sodbileg Gansukh
c4f2d74d80 Apply custom heading color only to light header style 2021-12-17 16:24:24 +08:00
Sodbileg Gansukh
c378e9a9c9 v4.7.0 2021-12-17 15:58:13 +08:00
Sodbileg Gansukh
db98015d41 Header card tweaks 2021-12-17 15:06:34 +08:00
Daniel Lockyer
7e9cf5c478
v4.6.1 2021-12-16 09:46:13 +01:00
Sodbileg Gansukh
0f9a3c79c1 Fix list layout style on medium screen size 2021-12-16 12:53:45 +08:00
Peter Zimon
8ff91f709e Updated callout emoji line-height 2021-12-15 15:00:52 +01:00
Sam Lord
feb2de765c v4.6.0 2021-12-15 13:02:03 +00:00
Peter Zimon
9b45ff3418
Card css specificity update (#832)
The default CSS styles of new Koenig cards that have been released in the past couple of weeks was updated for better usability in themes in general (read commit message for reasons and more reference).

This commit contains CSS cleanup and updates in theme styles that aligns Casper to this change.
2021-12-15 13:06:42 +01:00
Peter Zimon
827f37255c Updated styles for file upload card 2021-12-14 14:38:49 +01:00
Daniel Lockyer
ffdf853323
v4.5.0 2021-12-13 17:47:11 +01:00
Thibaut Patel
e4543555fa Fixed a rule so that it doesn't overrides the product card css
refs https://github.com/TryGhost/Team/issues/1245

- Followed the same pattern as the callout, ntf and bookmark cards.
2021-12-13 17:23:49 +01:00
Rafael Corrêa Gomes
67e7291c2b Footer > Adding Lazy loading in the profile image 2021-12-13 16:09:13 +08:00
Sodbileg Gansukh
c880856a32 Revert dark mode style of product card rating 2021-12-10 09:55:52 +08:00
Daniel Lockyer
b06bcd6534
v4.4.0 2021-12-08 15:00:14 +00:00
Sodbileg Gansukh
49f99d956f Add dark mode support to product card star rating 2021-12-08 17:17:47 +08:00
Sodbileg Gansukh
cdb03b65fb Add alternate blockquote styles 2021-12-07 19:05:00 +08:00
Sodbileg Gansukh
e80f22c2a5 v4.3.1 2021-12-06 18:52:26 +08:00
Peter Zimon
b6474446f8 Updated toggle styles 2021-12-04 08:14:00 -04:00
Peter Zimon
462770968a Updated callout styles 2021-12-04 08:06:09 -04:00
Daniel Lockyer
017a2829b6
v4.3.0 2021-12-01 12:56:41 +00:00
Daniel Lockyer
198f12b725
Updated yarn.lock
no issue

- this needed updating after we bumped gscan
2021-12-01 12:55:55 +00:00
Sodbileg Gansukh
48260130fe Update toggle card heading selector 2021-11-29 13:33:59 +08:00
Sodbileg Gansukh
8b392ec6dd Add typography option to toggle card heading 2021-11-25 18:42:19 +08:00
Sodbileg Gansukh
4ea98431b3 Card responsive style refinements 2021-11-25 10:44:09 +08:00
Sodbileg Gansukh
6bc9b021b5 Add toggle content flow spacing 2021-11-25 10:31:36 +08:00
Sodbileg Gansukh
c1006ec649 Use data attribute for Portal links 2021-11-24 10:50:46 +08:00
Sodbileg Gansukh
cad48b230c Add missing styles for toggle card content 2021-11-23 11:32:24 +08:00
Sodbileg Gansukh
b3f6b8a82c Include lists inside toggle card to content styling 2021-11-23 11:28:35 +08:00
Sodbileg Gansukh
2d940d8f59 Exclude default CTA links from link styling 2021-11-23 11:22:56 +08:00
Sodbileg Gansukh
b7ea0cbff7 Upgrade gscan 2021-11-22 21:37:28 +08:00
Sodbileg Gansukh
a8150f7c30 Include toggle text in content styling 2021-11-22 21:35:48 +08:00
Peter Zimon
b5b1ea001e Updated NFT card styles 2021-11-19 12:02:09 +01:00
Sodbileg Gansukh
370b9ec74e Include .kg-callout-text to content styling 2021-11-19 16:07:09 +08:00
Sodbileg Gansukh
3cbe9b2c97 Remove bookmark card related CSS 2021-11-17 18:22:47 +08:00
Sodbileg Gansukh
d652252699 Remove gallery card related CSS and JS 2021-11-17 17:02:16 +08:00
Sodbileg Gansukh
6107a411a1 Exclude cards from default link styling
refs https://github.com/TryGhost/Team/issues/1227
2021-11-17 15:40:32 +08:00
Sodbileg Gansukh
8feb988375 Update heading selector on dark mode 2021-11-15 13:22:03 +08:00
Sodbileg Gansukh
e898d56f0b v4.2.0 2021-11-05 20:58:43 +08:00
Sodbileg Gansukh
b8319c5bb9 Update gscan 2021-11-05 20:17:41 +08:00
Sodbileg Gansukh
ceaa887371 Add custom settings 2021-11-05 20:14:53 +08:00
Sodbileg Gansukh
c63a07e8df v4.1.1 2021-09-22 15:28:46 +08:00
Sodbileg Gansukh
0e0898d7e9 Fix W3C warning about section lacks heading 2021-09-22 15:26:39 +08:00
Sodbileg Gansukh
2234b14bbd Fix nested main element issue 2021-09-22 15:24:17 +08:00
Sodbileg Gansukh
046d53e885 v4.1.0 2021-07-07 12:16:03 +08:00
Sodbileg Gansukh
e49664eca4
Add alt and caption support to feature images (#812)
* Add alt and caption support to feature images

* Add feature image alt support to post card

* Remove three-curlies
2021-07-05 10:59:21 +08:00
Sodbileg Gansukh
21bdffbd8a Fix header element inside header 2021-06-10 13:32:41 +08:00
Leedan
ea33b00c0a
Author page: remove span stray end tag (#808) 2021-06-03 10:15:25 +08:00
Sodbileg Gansukh
17c9fe6c55 v4.0.5 2021-05-10 14:21:53 +08:00
Sodbileg Gansukh
5adeaa458b Make the footer stick to bottom
Currently, the footer doesn't stick to the bottom of the viewport when the page content is small. This fixes the issue by making the <main> element fill the remaining space
2021-05-10 14:20:40 +08:00
Sodbileg Gansukh
5013c91f1a Revert "Pin beeper to v2"
This reverts commit f43f6c567f.
2021-05-06 15:48:36 +08:00
Sodbileg Gansukh
f43f6c567f Pin beeper to v2
Beeper started requiring ESM syntax from v3, and it caused an error when running development workflow
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module
2021-05-06 12:28:54 +08:00
Sodbileg Gansukh
69feef6c46 Exclude development files from zipped theme 2021-05-05 07:53:10 +08:00
ViViDboarder
01192b7030 Update github action deploy 2021-04-07 10:00:54 -07:00
ViViDboarder
4f8ad3f804 Merge remote-tracking branch 'upstream/main' 2021-04-07 10:00:37 -07:00
ViViDboarder
7b3cda6ea0 Merge upstream master 2021-04-07 09:49:47 -07:00
Sodbileg Gansukh
4708987c39 Update signup button Portal link
fixes #791
2021-04-02 14:45:33 +08:00
Sodbileg Gansukh
a4eb58f8e7 v4.0.4 2021-04-01 16:18:12 +08:00
Sodbileg Gansukh
5ad96f7c12 Fix post featured image width 2021-04-01 13:20:50 +08:00
Sodbileg Gansukh
6ac55407b3 Break long words
Fixes #788
2021-04-01 13:01:09 +08:00
Sodbileg Gansukh
b0e21fe0f7 Improve code block styling 2021-04-01 12:58:41 +08:00
Sodbileg Gansukh
85cd131cf1 v4.0.3 2021-03-29 11:57:50 +08:00
Sodbileg Gansukh
53ff37cf10 Add background color to default profile image
Fixes #785
2021-03-29 11:43:45 +08:00
Sodbileg Gansukh
816e1f608e Make image block element by default
By doing that, any possible future image alignment issues in post content can be prevented
refs #786
2021-03-29 11:34:53 +08:00
Sodbileg Gansukh
0d49da97a2 Fix list item spacing issue
List items had both top and bottom margin, and it caused some inconsistent spacing for lists inside post content. This updates fixes the issue by only assigning top margin on list items except the first one.
refs: #787
2021-03-29 10:52:15 +08:00
Sodbileg Gansukh
e34e2e3e0a Fix mobile menu overlapping Portal popup
fixes #784
2021-03-22 11:38:03 +08:00
iron
18ceb822dd
Update screen.css (#778) 2021-03-19 07:19:03 -04:00
Sodbileg Gansukh
08c1e38ae1 v4.0.2 2021-03-19 16:47:30 +08:00
Sodbileg Gansukh
d9e9e097cd Fix headings and card caption color on dark mode
refs #780
2021-03-19 14:15:52 +08:00
Daniel Lockyer
96aac80081
v4.0.1 2021-03-18 17:35:03 +00:00
Sodbileg Gansukh
3fa7f25147 Add Facebook link to the header
Fixes #776
2021-03-18 14:31:56 +08:00
Daniel Lockyer
b16671d8a7
v4.0.0 2021-03-15 23:33:48 +00:00
Daniel Lockyer
3d6a3dc68f
v4.0.0-rc.2 2021-03-12 20:27:07 +00:00
Paul Davis
48d06196c2
Fix horizontal scrolling caused by scaling on the subscribe CTA h2 (#765) 2021-03-12 09:53:43 -05:00
Paul Davis
573e384381
Add space between gallery/image cards with caption (#766)
Co-authored-by: John O'Nolan <john@ghost.org>
2021-03-12 08:29:53 -05:00
Paul Davis
5f127c395b
Fix traditional Instagram embeds (#767)
Highly specific styles for traditional Instagram embeds

Co-authored-by: John O'Nolan <john@ghost.org>
2021-03-12 08:27:58 -05:00
Sodbileg Gansukh
3cc9cb0988
Fix headings typography scale (#771) 2021-03-12 08:25:37 -05:00
Paul Davis
ca36c4fe91
Only use post-card-large variation if feature_image exists (#764) 2021-03-11 13:44:10 -05:00
Paul Davis
260d5ec4e6
Fix horizontal alignment of smaller post images (#759)
Co-authored-by: John O'Nolan <john@ghost.org>
2021-03-11 13:37:58 -05:00
Paul Davis
410ec1a9d5
Fix logo size in header on small screens (#760)
Co-authored-by: John O'Nolan <john@ghost.org>
2021-03-11 13:37:00 -05:00
Paul Davis
e72f4236be
Fix long links causing horizontal scrolling on small screens (#761)
Co-authored-by: John O'Nolan <john@ghost.org>
2021-03-11 13:36:13 -05:00
Paul Davis
c0d5a3d999
Fix broken card layout caused by long strings (#762) 2021-03-11 13:33:25 -05:00
Paul Davis
b927cf62ed
Adjust infinite scroll selector to target article.post-card (#763)
The tag archive header shares the same classes as post cards, but have different elements.

This changes the selector to target article.post-card, which ignores header.post-card
2021-03-11 13:32:57 -05:00
Daniel Lockyer
91ced578c5
Updated tagName in release script
no issue

- as of 4.0, we're shipping tags with the preceding `v`, but this script
  ignored that and so the release was incorrect
- this commit updates the tagName to have the preceding `v`
2021-03-10 21:11:23 +00:00
Daniel Lockyer
87772282c8
v4.0.0-rc.1 2021-03-10 21:08:10 +00:00
Renovate Bot
bcfeb9be74 Update dependency gscan to v4 2021-03-10 21:04:49 +00:00
Daniel Lockyer
5b310a00f4
Merged 4.0 into main
no issue

- Casper is now ready for 4.0 so this commit merges the branch in to try
  and keep the Git history as clean as possible
2021-03-10 21:03:13 +00:00
Daniel Lockyer
a6a5d1eba1
3.1.3 2021-03-10 21:00:57 +00:00
Renovate Bot
fa8cc4cf2e
Update dependency gulp-zip to v5.1.0 2021-03-10 09:48:00 +00:00
John O'Nolan
3a5fda7009 Spacing fix on author profile 2021-03-09 22:23:47 -05:00
John O'Nolan
4f2fe7eb43 Update page template style 2021-03-09 22:02:35 -05:00
John O'Nolan
be0600a603 Update end of post CTA bg color 2021-03-09 21:33:13 -05:00
Renovate Bot
e4faa3141a
Update dependency postcss to v8.2.8 2021-03-09 22:41:13 +00:00
John O'Nolan
a78784decf Fix codeblock specificity, props @pauladamdavis 2021-03-09 09:27:47 -05:00
John O'Nolan
a516282b73 Correct logo height in navbar 2021-03-09 09:04:50 -05:00
John O'Nolan
ea6942a7fe Fix bug with :not unfixing previous fix of ::not which it turns out is not a thing 2021-03-09 09:03:54 -05:00
John O'Nolan
b5c2869ff6 Fix bug where incorrect styles were applied if codeblocks have captions 2021-03-08 16:08:47 -05:00
John O'Nolan
b7faac9eda Dark codeblocks by default 2021-03-08 15:59:11 -05:00
John O'Nolan
372dca859b Reinstate a class which as it turns out was not unused after all 2021-03-08 11:46:41 -05:00
John O'Nolan
30cd8d97e0 Remove unused old script from homepage 2021-03-08 11:30:16 -05:00
John O'Nolan
0584a58c6c Remove overlays from cover image, these only worked when CSS bg image, not img tag 2021-03-08 11:28:11 -05:00
John O'Nolan
2231274b07 Remove unused old class 2021-03-08 11:25:46 -05:00
John O'Nolan
715f95d209 Typography fixes 2021-03-06 21:54:43 -05:00
Renovate Bot
1e0e813931
Update dependency autoprefixer to v10.2.5 2021-03-05 15:52:56 +00:00
John O'Nolan
2c356f1cc4 Update dates to be locale-friendly, props @levee223 2021-03-05 10:13:14 -05:00
Daniel Lockyer
140666ee44
v4.0.0-rc.0 2021-03-05 14:07:06 +00:00
Daniel Lockyer
70f71e9839
Updated built JS assets
no issue

- these weren't rebuilt when changing the code
2021-03-05 14:05:57 +00:00
Daniel Lockyer
bd1dbd51c7
Updated default Ghost compatibility in release script
no issue

- not important, but it saves manually entering it during the release
  process
- Casper is only compatible with Ghost 4.0 moving forwards
2021-03-05 13:28:15 +00:00
John O'Nolan
f590fb029a Tag archive 2021-03-04 18:31:29 -05:00
John O'Nolan
7617c7baf2 Author profile 2021-03-04 17:22:45 -05:00
John O'Nolan
b5d0589222 And so the lord said unto Moses, let us obliterate this CSS 2021-03-04 08:05:28 -05:00
Naz
e95293cc22 Updated deprecated @site.lang to @site.locale
refs https://github.com/TryGhost/Team/issues/509
refs b0f80be408

- @site.lang property is being deprecated with Ghsot 4.0 and @site.locale is advised to be used instead
2021-03-04 19:48:58 +13:00
Sodbileg Gansukh
2d27e13f14 Remove visibility parameter 2021-03-04 12:20:10 +08:00
Renovate Bot
0d1cf89cc0
Update dependency postcss to v8.2.7 2021-03-04 00:43:23 +00:00
Daniel Lockyer
a43c6b3cbc
Fixed logic for checking GitHub token
no issue 

- the check needs to be inverted to ensure we're being passed a token
2021-03-04 00:29:56 +00:00
John O'Nolan
1365eab4ae Cleanup 2021-03-03 15:44:30 -05:00
Daniel Lockyer
cf24eccdf2
Added Renovate to package.json
no issue

- the renovate.json file was removed to clean up the repository files,
  but we still want Renovate to update dependencies
- Renovate allows us to configure the config in the package.json, so
  this commit moves the previous contents there
2021-03-03 13:24:16 +00:00
Daniel Lockyer
f12ce05454
Removed the need for config.json when releasing
no issue

- we previously needed a config.json to provide the GitHub token for
  publishing new Casper releases
- this commit removes the need for this file by pulling the token from
  the environment variable, which everyone in the Core team has set up
2021-03-03 13:20:58 +00:00
John O'Nolan
44e33120cb Cleanup 2021-03-03 08:11:16 -05:00
John O'Nolan
6c7cf02111 Style refresh 2021-03-02 21:48:32 -05:00
Sodbileg Gansukh
609507d22d Keep bookmark author and publisher classes for GScan 2021-03-02 16:53:53 +08:00
Sodbileg Gansukh
fd89c6575c Remove specific selectors from bookmark metadata 2021-03-02 13:59:05 +08:00
John O'Nolan
c680f4efcd Style refresh 2021-03-01 20:34:12 -05:00
Naz
b59893091c Removed conditions which used @labs.members helper
refs https://github.com/TryGhost/Team/issues/332
refs 870a09b109

- The {{@labs.members}} always evaluates to "true" starting with Ghost 4.0 and will be "null" coercing to "false" starting Ghost 5.0
- Enabled all conditionals be default to pass the build in main Ghost repository. These changes should be reviewed - special attentio to the left out RSS feed which was surrounded with {{unless @labs.members}} condition
2021-03-01 19:44:07 +13:00
John O'Nolan
5fd447b815 Style refresh 2021-02-28 20:10:09 -05:00
Renovate Bot
9ac38156da
Update dependency inquirer to v8 2021-02-26 00:59:59 +00:00
Sodbileg Gansukh
f9d9b1fab5 Disable dark mode by default
Dark mode is disabled by default, but can be enabled by adding a class dark-mode to html element.
2021-02-25 21:58:09 +08:00
Naz
1ea3ad649b Updated ghost-engine to v4
refs https://github.com/TryGhost/Team/issues/221
26e20d223d

- The default engine for Casper shipping with Ghost v4 has to match up.
This way it uses all the correct APIs
2021-02-25 03:17:07 +13:00
Renovate Bot
fc8cf0b2f4
Update dependency @tryghost/release-utils to v0.6.12 2021-02-22 08:14:53 +00:00
Sodbileg Gansukh
676b73172f Increase contrast of excerpts 2021-02-18 15:16:42 +08:00
Sodbileg Gansukh
2505089a41 Use old font size for primary tags 2021-02-18 15:09:33 +08:00
Sodbileg Gansukh
957d3049aa Fix link hover effect 2021-02-18 14:50:59 +08:00
Sodbileg Gansukh
8f81522907 Remove focus state from buttons 2021-02-18 14:48:24 +08:00
Sodbileg Gansukh
28d63e1cd2 Accent color for subscribe overlay button 2021-02-18 14:36:49 +08:00
Sodbileg Gansukh
b374b88126 Dark grey as subscribe form border 2021-02-18 12:17:40 +08:00
Sodbileg Gansukh
0449bf5537 Use grey for blockquotes 2021-02-18 12:16:27 +08:00
Sodbileg Gansukh
e985805958 Try a new default accent color 2021-02-18 12:05:56 +08:00
Sodbileg Gansukh
c1fcece376 Use accent color as header background when there is no cover image 2021-02-18 11:40:20 +08:00
Sodbileg Gansukh
306f7b2d9b Accent color usage and subscribe form design update 2021-02-18 11:32:40 +08:00
Renovate Bot
7e3e891338
Update dependency postcss to v8.2.6 2021-02-10 19:29:09 +00:00
Renovate Bot
69f5108a39
Update dependency @tryghost/release-utils to v0.6.11 2021-02-09 12:07:09 +00:00
Renovate Bot
44fa55be19
Update dependency postcss to v8.2.5 2021-02-08 01:10:50 +00:00
Sodbileg Gansukh
df4bfbffb2 Disable dark mode with code injection
It's now possible to disable the dark mode with code injection instead of removing the CSS and rebuilding it, by simply adding a class no-dark to html element.
2021-02-01 12:06:56 +08:00
Renovate Bot
bcfbc21b8e
Lock file maintenance 2021-02-01 00:51:05 +00:00
Renovate Bot
41330614cd
Update dependency autoprefixer to v10.2.4 2021-01-29 18:49:55 +00:00
Sodbileg Gansukh
069280eea2 Apply scroll-margin-top to all elements with id attribute instead of only headings 2021-01-27 17:06:11 +08:00
Sodbileg Gansukh
52f763859a Replace subscribe link with account link for logged in users
refs: #751
2021-01-27 16:44:24 +08:00
John O'Nolan
e3fd4d707e 2021 2021-01-25 15:58:47 +00:00
Sodbileg Gansukh
854880747d Fix text fragment scrolling which behind the floating top bar
refs: #749
2021-01-22 10:02:51 +08:00
Sodbileg Gansukh
6b9df8bb51 Rebuild assets 2021-01-22 09:52:32 +08:00
Renovate Bot
1360ed83bd
Update dependency autoprefixer to v10.2.3 2021-01-19 19:59:47 +00:00
Aileen Nowak
adfb47009e Updated links to ghost.org sites
no issue

Follow-up task of the updated Ghost Docs structure. Updated links reflecting the new structure to prevent unnecessary 404s and redirects
2021-01-19 13:30:21 +13:00
Renovate Bot
4752bf03c9
Update dependency @tryghost/release-utils to v0.6.10 2021-01-12 17:05:11 +00:00
Renovate Bot
a17155a3b6
Update dependency postcss to v8.2.4 2021-01-11 00:05:06 +00:00
Renovate Bot
a1bf3f3823
Update dependency autoprefixer to v10.2.1 2021-01-08 02:05:45 +00:00
Renovate Bot
d063fb2806
Update dependency postcss to v8.2.3 2021-01-07 14:05:36 +00:00
Daniel Lockyer
4a6dfa8e04
Added main as a deploy branch for theme uploading
no issue

- we will be switching to main soon, and want to update this workflow to show how it should be used
2021-01-07 13:50:49 +00:00
Renovate Bot
e4a5e96d06
Update dependency autoprefixer to v10.2.0 2021-01-06 03:05:42 +00:00
Sodbileg Gansukh
35e68f6d3f Show members-only posts in the post loop by default 2021-01-05 15:47:56 +08:00
Renovate Bot
f631f874f7
Update dependency beeper to v2.1.0 2021-01-04 00:07:18 +00:00
Renovate Bot
74d787831e
Lock file maintenance 2021-01-01 00:04:53 +00:00
Renovate Bot
739deb3e4d
Update dependency postcss to v8.2.2 2020-12-29 22:05:17 +00:00
Renovate Bot
bc3e072d31
Update dependency @tryghost/release-utils to v0.6.9 2020-12-14 04:56:45 +00:00
Renovate Bot
838c4ecca2
Update dependency gscan to v3.6.1 2020-12-11 10:41:29 +00:00
Renovate Bot
7a61bf55ed
Update dependency postcss to v8.2.1 2020-12-09 13:06:09 +00:00
Renovate Bot
9baffdd03f
Update CSS preprocessors 2020-12-08 07:49:27 +00:00
Renovate Bot
30ccbca28a
Update dependency postcss to v8.1.14 2020-12-04 00:26:02 +00:00
Renovate Bot
def78b102b
Update dependency postcss to v8.1.13 2020-12-03 03:20:22 +00:00
Renovate Bot
dfb6444b25
Update dependency postcss to v8.1.11 2020-12-03 01:49:56 +00:00
Renovate Bot
4c298b97cf
Lock file maintenance 2020-12-01 00:05:39 +00:00
Renovate Bot
6c8a048bad
Update dependency autoprefixer to v10.0.4 2020-11-27 21:39:19 +00:00
Renovate Bot
fd02a6c722
Update dependency autoprefixer to v10.0.3 2020-11-26 22:06:52 +00:00
Sodbileg Gansukh
493da38cff Update jQuery version to 3.5.1 2020-11-24 12:01:31 +08:00
Renovate Bot
19cf4adb74
Update dependency postcss to v8.1.10 2020-11-23 22:25:18 +00:00
Renovate Bot
daa69cbd31
Update dependency postcss to v8.1.9 2020-11-23 00:05:38 +00:00
Renovate Bot
267fd00802
Update dependency postcss to v8.1.8 2020-11-19 16:00:59 +00:00
Daniel Lockyer
8fefeca41b 3.1.2 2020-11-17 12:32:25 +00:00
Renovate Bot
45f5c83118
Update dependency postcss to v8.1.7 2020-11-10 18:06:13 +00:00
Sanne de Vries
c3cb51711a Changed bookmark card metadata styling to be consistent with the editor
Classes for author and publisher are temporarily swapped to make sure the changes are backwards compatible until Ghost 4.0
2020-11-10 18:17:11 +01:00
Renovate Bot
3d189760a8
Update dependency autoprefixer to v10.0.2 2020-11-10 15:05:07 +00:00
Renovate Bot
8087366537
Update dependency postcss to v8.1.6 2020-11-05 17:05:11 +00:00
Renovate Bot
7748f8c781
Update dependency postcss to v8.1.5 2020-11-05 15:54:45 +00:00
Renovate Bot
8783bd4ee8
Update dependency @tryghost/release-utils to v0.6.8 2020-11-05 04:41:15 +00:00
Renovate Bot
006b056adc
Lock file maintenance 2020-11-01 00:04:25 +00:00
Renovate Bot
fe690d4048
Update dependency postcss to v8.1.4 2020-10-26 00:06:23 +00:00
Renovate Bot
c3c0374ca6
Update dependency postcss to v8.1.3 2020-10-23 02:25:21 +00:00
Renovate Bot
0429f85774
Update dependency gscan to v3.6.0 2020-10-21 10:22:37 +00:00
Renovate Bot
1f8df12a7c
Update actions/checkout action to v2 2020-10-20 16:04:56 +00:00
Renovate Bot
75e68ce5b7
Update TryGhost/action-deploy-theme action to v1.4.1 2020-10-20 14:07:13 +00:00
Renovate Bot
fa15a48192
Update dependency postcss to v8.1.2 2020-10-19 01:06:17 +00:00
Daniel Lockyer
0c36dc5235 3.1.1 2020-10-16 09:19:06 +01:00
Daniel Lockyer
aa3c83ec35 Updated built assets 2020-10-16 09:18:36 +01:00
Sodbileg Gansukh
38481aac9a Fixed post content input color issue on dark mode
Fixes #718
2020-10-08 11:36:41 +08:00
Sodbileg Gansukh
0052c2ddc3 Added subscribe failure notification
Fixes #738
2020-10-08 10:22:49 +08:00
Yannick Reekmans
9d12bc32f0
Update screen.css (#735)
Fix instance of color() to color-mod()
2020-10-03 11:17:29 +07:00
Renovate Bot
cb674ab56c
Lock file maintenance 2020-10-01 00:16:07 +00:00
Renovate Bot
c86ee63b86
Pin dependency postcss to 8.1.1 2020-09-30 12:49:12 +00:00
Sam Lord
b92f18e55a Added postcss as a dev dependency (required by gulp-postcss) 2020-09-30 13:48:11 +01:00
Renovate Bot
827940c836
Update dependency autoprefixer to v10.0.1 2020-09-28 00:05:40 +00:00
Renovate Bot
db0af7f759
Update dependency gulp-postcss to v9 2020-09-23 19:04:44 +00:00
Renovate Bot
af87b9b3b0
Update dependency @tryghost/release-utils to v0.6.7 2020-09-22 03:39:15 +00:00
Renovate Bot
ec03acff02
Update dependency autoprefixer to v10 2020-09-15 19:04:52 +00:00
Daniel Lockyer
fa48995326 Updated action-deploy-theme to v1.3.1
- hopefully fixes a bug with `theme-name` not being passed through
2020-09-10 13:15:53 +01:00
Sodbileg Gansukh
6350790798 Fix close button in the subscribe success message 2020-09-10 12:28:44 +08:00
Renovate Bot
ab521da23a
Update dependency gscan to v3.5.7 2020-09-07 16:28:49 +00:00
Renovate Bot
91185016eb
Lock file maintenance 2020-09-01 00:05:19 +00:00
Renovate Bot
0af8d2d8bc
Update dependency @tryghost/release-utils to v0.6.6 2020-08-11 17:42:19 +00:00
Renovate Bot
f50f663ef7
Update dependency @tryghost/release-utils to v0.6.5 2020-08-11 11:52:54 +00:00
Renovate Bot
a467e31457
Update dependency gscan to v3.5.6 2020-08-10 15:09:56 +00:00
Allan Stromfeldt Christensen
807018ca97
Fix background color of slash of darkmode <hr> (#733) 2020-08-09 00:34:53 +07:00
Renovate Bot
ce9918de2f
Update dependency @tryghost/release-utils to v0.6.4 2020-08-07 15:08:43 +00:00
Daniel Lockyer
df2d20caab 3.1.0 2020-08-04 10:59:14 +01:00
Renovate Bot
c6cb667fea
Lock file maintenance 2020-08-01 00:29:35 +00:00
Renovate Bot
a1d9eae840
Update dependency autoprefixer to v9.8.6 2020-07-30 20:40:44 +00:00
Hannah Wolfe
59eefa3659
Updated call to actions/checkout to use v2
refs https://github.com/TryGhost/action-deploy-theme/issues/30

- actions/checkout has changed their default branch name from master to main, which shows warnings.
2020-07-28 12:53:07 +01:00
John O'Nolan
78bde5f3dc
Fix broken link 2020-07-28 00:59:13 +07:00
John O'Nolan
e637d809f6 Upgraded to color-mod, native CSS vars
Dropping final support for IE11 and moving to newer color-mod package to replace the old deprecated one
2020-07-28 00:52:31 +07:00
Renovate Bot
e4793cc743
Update dependency gscan to v3.5.5 2020-07-24 10:15:20 +00:00
Renovate Bot
cd7016493e
Update dependency inquirer to v7.3.3 2020-07-23 02:35:30 +00:00
Daniel Lockyer
7421cff4fe 3.0.13 2020-07-21 13:41:23 +01:00
Daniel Lockyer
c465d95e14 Added new build assets
no issue
2020-07-21 13:40:03 +01:00
Renovate Bot
c1c6fed941
Update dependency inquirer to v7.3.2 2020-07-13 17:15:27 +00:00
Renovate Bot
5664f81564
Update dependency autoprefixer to v9.8.5 2020-07-13 00:04:56 +00:00
Renovate Bot
8838afe43f Lock file maintenance 2020-07-10 19:01:32 +01:00
Renovate Bot
f53b6b3435
Update dependency inquirer to v7.3.1 2020-07-10 15:46:29 +00:00
Renovate Bot
be77dad00e Update dependency inquirer to v7.3.0 2020-07-02 05:04:53 +00:00
Renovate Bot
408cf0cc1e
Update dependency gulp-zip to v5.0.2 2020-06-29 00:27:17 +00:00
Renovate Bot
cfdc8a3b85
Update dependency autoprefixer to v9.8.4 2020-06-24 03:40:53 +00:00
Renovate Bot
e6a24de5c4
Update dependency autoprefixer to v9.8.3 2020-06-23 14:43:53 +00:00
Renovate Bot
6d0a3a8899
Update dependency autoprefixer to v9.8.2 2020-06-22 00:21:02 +00:00
Renovate Bot
b54c3debd4
Update dependency autoprefixer to v9.8.1 2020-06-19 21:33:26 +00:00
Jakub Maciej Chmielewski
0e0589cb04
Disabled yarn-error.log file export to zip (#725) 2020-06-17 19:07:34 +01:00
Renovate Bot
5bfc82bf0c Update dependency inquirer to v7.2.0 2020-06-15 02:35:55 +00:00
Renovate Bot
d3ffc71b34
Update dependency @tryghost/release-utils to v0.6.3 2020-05-26 16:22:16 +00:00
Renovate Bot
871fc4075f Update dependency autoprefixer to v9.8.0 2020-05-18 01:14:52 +00:00
Renovate Bot
6f37e5a148
Update dependency @tryghost/release-utils to v0.6.2 2020-05-08 16:13:01 +00:00
Renovate Bot
adc055495c
Update dependency gscan to v3.5.4 2020-05-01 09:41:56 +00:00
renovate[bot]
2ed7ea8f13
Lock file maintenance (#709)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2020-05-01 15:16:09 +07:00
Renovate Bot
4ddbaae803
Update dependency gscan to v3.5.3 2020-04-22 17:12:58 +00:00
Ícaro Harry
7e0e45c643
Change border-left on blockquote to use color variables (#705) 2020-04-22 18:44:54 +07:00
Renovate Bot
e0771bfc7e Update dependency gscan to v3.5.2 2020-04-20 19:15:57 +00:00
Renovate Bot
8f1a15296a
Update dependency @tryghost/release-utils to v0.6.1 2020-04-16 13:44:16 +00:00
Renovate Bot
2bd82a30e8 Update dependency @tryghost/release-utils to v0.6.0 2020-04-07 12:16:10 +00:00
Daniel Lockyer
feb7f3aac6 3.0.12 2020-04-07 09:15:05 +01:00
Renovate Bot
eed15fd9a5
Update dependency autoprefixer to v9.7.6 2020-04-06 21:22:19 +00:00
Renovate Bot
201b1924cf
Update dependency gscan to v3.4.1 2020-04-06 17:10:14 +00:00
Daniel Lockyer
387a2aa3f0
Switch testing to built-in Nodejs
no issue
2020-04-06 13:49:51 +01:00
Daniel Lockyer
690ca22fb7 Removed test addition 2020-04-03 16:17:14 +01:00
Daniel Lockyer
31d43860ac Updated release script
no issue
2020-04-03 16:16:26 +01:00
Daniel Lockyer
14f7cc4e31 Updated built files
no issue
2020-04-03 16:04:41 +01:00
Daniel Lockyer
7646f90556
Updated theme name in deploy GitHub Actions
no issue

- the theme name cannot be the same as the default
2020-04-03 09:53:48 +01:00
Dodi Sabaruddin
8e17cdc1fb
update sdeploy theme (#692) 2020-04-03 14:39:02 +07:00
renovate[bot]
2da322d93b
Lock file maintenance (#699)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2020-04-03 14:36:14 +07:00
Rafael Corrêa Gomes
709c7196b9
Post cards > Lazyload (#701)
Co-authored-by: Rafael Gomes <rgomes@lesite.ca>
2020-04-03 14:35:58 +07:00
Renovate Bot
c97b847002 Update dependency @tryghost/release-utils to v0.5.0 2020-04-01 12:17:28 +00:00
Renovate Bot
7d37adb3cd
Update dependency autoprefixer to v9.7.5 2020-03-31 17:33:06 +00:00
Renovate Bot
4fe7010f4e
Update dependency @tryghost/release-utils to v0.4.2 2020-03-31 15:11:06 +00:00
Daniel Lockyer
6bf34a5a70 Moved Casper release code into gulpfile
no issue
2020-03-31 16:10:30 +01:00
Daniel Lockyer
c9a54e25ab
Enabled CI for Renovate branches
no issue
2020-03-31 15:54:56 +01:00
Renovate Bot
3281f75945 Update dependency gscan to v3.4.0 2020-03-31 15:53:14 +01:00
Daniel Lockyer
c8abe3a7c4 3.0.11 2020-03-26 14:29:11 +00:00
Daniel Lockyer
150b698b1c
Updated Renovate config with new structure
no issue
2020-03-26 10:56:13 +00:00
Daniel Lockyer
9ff3aa7858 3.0.10 2020-03-23 12:23:44 +00:00
Peter Zimon
8886056719 Fixed navigation scrollbar bug
no refs.
- fixed issue that made top navigation scrollbar appear for sites with secondary navigation and members turned off
2020-03-11 13:46:20 +01:00
Daniel Lockyer
93628dc7f0 3.0.9 2020-03-09 10:49:09 +00:00
Peter Zimon
702b2cbf1f Refined width of image captions
no refs.
- updated max width of image caption text
2020-03-04 15:34:15 +01:00
Peter Zimon
e5969f93da Improved author and tag header styles
no refs.

- added default avatar for authors template
- fixed typography inconsistencies, alignment and spacing issues for author and tags headers
- applied CSSComb
2020-03-04 14:34:03 +01:00
Peter Zimon
9e29e145fc 🐛 Subscribe overlay fixes
refs. https://github.com/TryGhost/Casper/issues/630

- added a dedicated close button element for the subscribe overlay which sits on top of all elements to ensure the modal is always closable
- fixed alignment and spacing of "Subscribe" button for mobile sizes
2020-03-04 11:26:27 +01:00
Peter Zimon
74ae3d5140 🐛 Fixed image alignment for small images
refs. https://github.com/TryGhost/Casper/issues/517

- updated styles to center align small images with long caption text
2020-03-03 17:29:34 +01:00
Daniel Lockyer
1ec7a12d43 Bumped dependency versions
no issue
2020-03-02 18:36:18 +00:00
Daniel Lockyer
9ec0f08a48 3.0.8 2020-03-02 12:02:24 +00:00
Renovate Bot
b09e846fd2 Update dependency postcss-custom-properties to v9.1.1 2020-03-01 02:18:49 +00:00
Renovate Bot
92d9174b24 Update dependency @tryghost/release-utils to v0.4.1 2020-03-01 01:18:39 +00:00
Daniel Lockyer
c27fc17844 3.0.7 2020-02-05 11:42:31 +00:00
Renovate Bot
d9cf22a0f7 Update dependency gscan to v3.3.0 2020-02-01 01:18:20 +00:00
ViViDboarder
17077c96e6 Merge remote-tracking branch 'upstream/master' 2020-01-23 11:27:12 -08:00
Ian
23bb7d93a1
Update github actions to deploy 2020-01-23 11:12:55 -08:00
Fabien O'Carroll
7c87383bc6 3.0.6 2020-01-13 14:08:24 +02:00
Peter Zimon
09d701c4bc 🐛 Removed non-existent variable
Refs. https://github.com/TryGhost/Casper/issues/676

- removed corresponding CSS declaration as the variable `--white` doesn't exist
2020-01-10 15:29:50 +01:00
John O'Nolan
aec67d8b5f 2020 2020-01-07 18:35:56 +00:00
Renovate Bot
f55e2b0266 Update dependency gscan to v3.2.1 2020-01-01 01:16:54 +00:00
Nazar Gargol
fee94ba192 3.0.5 2019-12-04 20:39:08 +07:00
Peter Zimon
bf4b8d7f15 Added secondary navigation (#664)
refs https://github.com/TryGhost/Ghost/pull/11409

- Adds secondary navigation to the main menu
- Updated secondary nav mobile styles
- Updated cover for the scrollable main navigation
2019-12-04 17:41:50 +07:00
Kevin Ansfield
98543dd068 3.0.4 2019-11-27 14:11:18 +00:00
Casper Bøgeskov Hansen
5063d40a32 Remove backdrop filter from subscribe overlay 2019-11-23 19:06:13 -08:00
renovate[bot]
7c8cba7fab Pin dependency gulp-concat to 2.6.1 (#647) 2019-11-11 21:15:08 +07:00
renovate[bot]
e253954051 Lock file maintenance (#650) 2019-11-11 21:14:53 +07:00
Nazar Gargol
4c7fced3aa 3.0.3 2019-11-11 18:55:36 +07:00
ViViDboarder
5fe2afe0d1 Rename package again 2019-11-09 13:08:52 -08:00
ViViDboarder
bdd2f33aef Merge remote-tracking branch 'upstream/master' 2019-11-09 13:08:14 -08:00
Daniel Lockyer
fb9f0e6804
Remove Travis from Renovate config 2019-11-08 16:35:58 +07:00
Daniel Lockyer
88e3db9d3b Switched to gscan testing via GitHub Actions
no issue
2019-11-08 16:35:06 +07:00
Renovate Bot
7733f0db63 Update dependency gscan to v3.1.1 2019-11-01 04:27:02 +00:00
Renovate Bot
1c5db5c027 Update dependency autoprefixer to v9.7.1 2019-11-01 03:25:25 +00:00
Renovate Bot
e4afcc233f
Update dependency @tryghost/release-utils to v0.3.3 2019-11-01 00:26:39 +00:00
Peter Zimon
a66beb4e10 🐛 Fixed page style in dark mode
closes https://github.com/TryGhost/Casper/issues/643

- fixes background color for pages in dark mode
2019-10-30 13:43:47 +01:00
Kevin Ansfield
c82e1cb035 3.0.2 2019-10-30 11:07:59 +00:00
Peter Zimon
065849105b Author meta and bookmark style refinements
refs. https://github.com/TryGhost/Casper/pull/631
- refined colors of links and separator dots for various cases (light/dark mode/with and without header background image)
- fixed bookmark card hover style
- ran CSSComb
2019-10-30 11:35:29 +01:00
Amgaa
a1fc6090d2 Very small fix on author meta links color 2019-10-30 11:35:29 +01:00
Peter Zimon
68b0270ed5
Dark mode table style fix (#641)
refs. https://github.com/TryGhost/Casper/issues/637

- fixed styles for tables in dark mode
2019-10-29 16:27:40 +01:00
Kevin Ansfield
6d56e5866e 3.0.1 2019-10-29 14:20:08 +00:00
Peter Zimon
8993409296
Error page improvements (#639)
refs. https://github.com/TryGhost/Casper/issues/632

Error page fixes and improvements
- uses default template (i.e. standard header and footer) on 404 error page
- fixed not displaying authors and primary tags on recommended posts on 404 error page
- fixed background for navigation bar on generic error page
- refined error code and message styles
2019-10-28 16:28:25 +01:00
Kevin Ansfield
307c334cd5
🐛 Fixed images on infinite scroll index pages being stretched in Safari (#636)
closes #634, closes #635

- use `document.importNode` to create a clone of post card elements when pulling them in from infinite scroll pages
- cloning the element means the element's owner document matches the viewed document and ensures images in the inserted post card elements are sized according to the viewed document
2019-10-24 17:15:34 +01:00
Fabien O'Carroll
17ba4add5c 3.0.0 2019-10-21 22:41:48 +07:00
Hannah Wolfe
e37e444e9a
Update deploy-theme.yml
- bump action version
- add a custom theme name
2019-10-21 12:49:04 +01:00
Fabien O'Carroll
57cee0c680 3.0.0-beta.8 2019-10-21 18:34:45 +07:00
Kevin Ansfield
ff51925567
Fixed sticky title and author hover JS (#629)
no issue

- replaces author hover JS that was lost during merge
- replaces `floating-header.js` with `sticky-nav-title.js` containing the relevant JS that was lost during merge with a cleanup for unused variables and unnecessary event listeners
- removes reference to non-existent `{{> floating-header}}` partial
2019-10-21 10:02:05 +01:00
Kevin Ansfield
3e910e954e
Updated built CSS (#627)
no issue

- ran `gulp` to rebuild the CSS after the v3 merge
2019-10-21 09:53:28 +01:00
Kevin Ansfield
50437fd72e
Fixed duplicate browserslist config (#628)
no issue

- removes duplicate `browserslist` key from `package.json`
2019-10-21 09:52:45 +01:00
Fabien O'Carroll
1915a91c5b 3.0.0-beta.7 2019-10-21 13:05:33 +07:00
Fabien O'Carroll
b51dd8ce22
V3 (#626)
* Changed {{code}} to {{statusCode}}

refs 2ebd9feeee

- {{code}} use has been deprecated in canary rule set of gscan

* V3 Update

* Update package and readme for 3.0

* Improve install instructions

* Update to support browserlist

* Upgrade dependencies

* Fix misnamed property

* V3 darkmode (#619)

Added dark mode styles

* Casper final  refinements batch 1

* Casper final  refinements batch 2

* Fixed bookmark card hover bug

* Fixed header social links

* Updated screenshots

* Updated readme

no issue

- refreshed screenshot

* Udpate screenshot in readme

no issue

* 3.0.0-beta.2

* Fixed cut header for post cards

no issue

* 3.0.0-beta.3

* 3.0.0-beta.4

* Updated current version and previous version logic (#554)

no issue

- Use current version from `package.json` instead of `npm_package_version` env variable
- Use `release.tag_name` instead of `release.name` for previous version

* Updated jQuery to 3.4.1 to avoid known vulnerabilities (#590)

no issue

https://snyk.io/vuln/npm:jquery?lh=3.2.1&utm_source=lighthouse&utm_medium=ref&utm_campaign=audit

* Fixed code cards with long lines from being too wide

no issue

Credits - https://github.com/TryGhost/Casper/pull/602

* Bumped gscan version to v3.0.0 (#621)

* Bumped gscan to v3.0.0

- This also fixes failing CI builds because the default rules that are being checked were for v2

* Added explicit version check for gscan command

* Added member subscription support (#623)

* Added member subscription support

no issue

* Added member subscription success message

no issue

* Added member subscription overlay

* Refined members subscription overlay

* Deleted unused website icon

* Ran CSSComb

* Updated built assets

* 3.0.0-beta.5

* Updated built assets for v3

no issue

* 3.0.0-beta.6

* Remove unused partial

* V3 cleanup (#625)

* Removed unused infinity icon

* Removed unused location icon

* Removed unused 'point' icon

* Removed unused Ghost logo icon

* Removed unused author partials

* Cleaned up index log

* Fixed responsive feature image sizes for page template
2019-10-21 12:43:34 +07:00
Kevin Ansfield
7ad20d1325 Fixed deprecated autoprefixer config warning when running build tasks
no issue

Passing browser options directly into `autoprefixer()` has been deprecated in favour of general browserslist configuration in `package.json` or a `.browserslistrc` config file

- moved autoprefixer browsers list into `browserslist` config in `package.json`
- updated `autoprefixer` version
2019-10-20 16:05:37 +02:00
Kevin Ansfield
978ffe0eb6
Concatenated all JS into a single file (#624)
no issue

- moved large inline JS from templates into separate JS files
  - floating header
  - gallery card support
- use `gulp-concat` to concatenate all JS files into a single `built/casper.js` file
- reduces external JS file requests from 3 (jquery, infinite-scroll.js, jquery.fitvids.js) down to 2 (jquery, casper.js) and reduces page size by removing repeated inline code
2019-10-20 15:55:06 +02:00
renovate[bot]
53ad2d8096 Updated Build Tools (#571) 2019-10-20 13:47:06 +05:30
renovate[bot]
f7e4cabc58 Update dependency postcss-custom-properties to v9 (#592) 2019-10-20 13:41:11 +05:30
Naz Gargol
392626f3b2 Bumped Gscan and made rule check explicit to v2 set (#622)
* Bumped gscan to v3.0.0

* Added explicit v2 version check for gscan command
2019-10-20 12:21:27 +05:30
Rish
8bb4508ff2 Fixed code cards with long lines from being too wide
no issue

Credit to https://github.com/mvasilkov for the fix -  https://github.com/TryGhost/Casper/pull/602
2019-10-20 12:14:21 +05:30
Tiago Rodrigues
e5e62f1eed Updated jQuery to 3.4.1 to avoid known vulnerabilities (#590)
no issue

https://snyk.io/vuln/npm:jquery?lh=3.2.1&utm_source=lighthouse&utm_medium=ref&utm_campaign=audit
2019-10-20 12:09:36 +05:30
Rishabh Garg
2eaeba8ba8
Updated current version and previous version logic (#554)
no issue

- Use current version from `package.json` instead of `npm_package_version` env variable
- Use `release.tag_name` instead of `release.name` for previous version
2019-10-20 12:05:13 +05:30
Hannah Wolfe
728392e51e
Automatically deploy theme on master only
- switch from all branches to master only
2019-10-18 17:14:36 +01:00
Hannah Wolfe
7161dca4ca Added deploy ghost theme github action
- see https://github.com/marketplace/actions/deploy-ghost-theme
- use the new deploy theme github action to automatically deploy master to a test site
2019-10-18 14:20:28 +01:00
Kevin Ansfield
215d837848 2.11.2 2019-10-07 23:11:17 +01:00
Renovate Bot
d2ec8d1c31
Update dependency gulp-livereload to v4.0.2 2019-10-01 01:30:15 +00:00
Renovate Bot
4a4f66a710 Update dependency gscan to v2.9.0 2019-10-01 01:29:48 +00:00
Kevin Ansfield
8729af090f 2.11.1 2019-08-27 19:44:35 +01:00
Peter Zimon
c40627256a Added max length for bookmark card publisher field (#608)
no issue

- fixed style for bookmark cards with too long publisher field
2019-08-27 19:29:48 +01:00
Rish
32d3538f6b 2.11.0 2019-08-27 21:01:30 +05:30
Rishabh Garg
f5b2a2f209
Added bookmark card CSS (#607)
refs 9bfd340885 and c2aa62083c

Adds css for styling new bookmark card which generates following html -
  ```html
  <figure class="kg-card kg-bookmark-card">
    <a href="[URL]" class="kg-bookmark-container">
      <div class="kg-bookmark-content">
        <div class="kg-bookmark-title">[TITLE]</div>
        <div class="kg-bookmark-description">[DESCRIPTION]</div>
        <div class="kg-bookmark-metadata">
          <img src="[ICON]" class="kg-bookmark-icon">
          <span class="kg-bookmark-author">[AUTHOR]</span>
          <span class="kg-bookmark-publisher">[PUBLISHER]</span>
        </div>
      </div>
      <div class="kg-bookmark-thumbnail">
        <img src="[THUMBNAIL]">
      </div>
    </a>
  </figure>
  ```
2019-08-27 20:56:42 +05:30
Rish
29426e1483 2.10.7 2019-08-22 07:31:34 +05:30
ViViDboarder
7289a3cc3d Bump version number 2019-08-21 10:34:14 -07:00
ViViDboarder
98fccb0a5a Fix max width of author card content to prevent distortion of author photo 2019-08-21 10:32:58 -07:00
ViViDboarder
17dfd8d049 Build post merge from upstream 2019-08-21 10:23:52 -07:00
John O'Nolan
f5bba69235
Remove unused conditional
Closes #593
2019-08-21 13:53:47 +08:00
Pedro Almeida
788ee59fd4 Improve gulp globbing (#598) 2019-08-21 13:51:43 +08:00
ViViDboarder
0b466c85de Merge remote-tracking branch 'upstream/master' 2019-08-20 18:45:30 -07:00
Fabien O'Carroll
a6ce913546 2.10.6 2019-08-06 17:34:38 +08:00
Renovate Bot
8ad3b82f58 Update dependency gscan to v2.7.0 2019-08-01 03:27:54 +00:00
Renovate Bot
c66d64dd79
Update CSS preprocessors 2019-08-01 00:48:07 +00:00
Rish
095d7f85c6 2.10.5 2019-07-30 20:24:26 +05:30
David Darnes
812b9ba657
Merge pull request #599 from mvasilkov/pre-selection-color-patch
Better contrast for selected text inside `pre code` blocks
2019-07-30 12:26:16 +01:00
Mark Vasilkov
56d1ff2337 Better contrast for selected text inside pre code blocks 2019-07-30 14:08:45 +03:00
Aileen Nowak
dc74e24d0c 🔗 Updated docs link to be version-less 2019-07-25 14:56:04 +08:00
Kevin Ansfield
e4e97aefa9 2.10.4 2019-07-23 12:01:47 +01:00
Aileen Nowak
df7c2321c6 Updated links to docs site 2019-07-22 18:25:22 +08:00
Fabien O'Carroll
6886798b60 2.10.3 2019-07-01 13:31:22 +07:00
Renovate Bot
42c26629bf Update dependency autoprefixer to v9.6.0 2019-07-01 03:31:32 +00:00
Renovate Bot
89a12765be
Update dependency gscan to v2.6.2 2019-07-01 00:31:51 +00:00
Nazar Gargol
fa54c4713f 2.10.2 2019-06-04 13:01:40 +02:00
Renovate Bot
0494b48ad0
Update dependency gulp to v4.0.2 2019-06-01 01:29:25 +00:00
Renovate Bot
e6cb772b2d Update dependency gscan to v2.6.0 2019-06-01 01:28:55 +00:00
Fabien O'Carroll
2dad5af417 2.10.1 2019-05-14 11:16:04 +02:00
Nazar Gargol
43b8f3d11a Substituted deprecated {{each}} helper with recommended {{foreach}}
refs https://github.com/TryGhost/gscan/issues/123

- As documentation says (https://docs.ghost.org/api/handlebars-themes/helpers/foreach/)  {{foreach}} should always be used instead of native {{each}} helper
- Deprecation warning was implemented in gscan and  will prompt when uploading the theme
2019-05-07 15:37:14 +02:00
Nazar Gargol
21d097d530 2.10.0 2019-05-07 12:37:29 +02:00
Kevin Ansfield
ec296edfa0
Added support for code cards with captions (#575)
refs https://github.com/TryGhost/Ghost/pull/10719

- adds styling for `.kg-code-card` so that code blocks are styled the same no matter if they are top-level or inside of a `<figure>` element
2019-05-01 17:12:18 +02:00
renovate[bot]
ff43de1c63 Lock file maintenance (#572) 2019-05-01 10:38:23 +02:00
Kevin Ansfield
0b17a6ac06
Re-build CSS using latest dependencies (#573)
no issue

- CSS preprocessor dependencies have been updated, this re-builds the CSS to match the latest processed output
  - the primary change is the addition of the `::-moz-selection` vendor prefix
2019-05-01 10:28:34 +02:00
Renovate Bot
64fdc798d9
Update dependency gulp to v4.0.1 2019-05-01 01:26:49 +00:00
Renovate Bot
88552e5d18 Update dependency gscan to v2.5.1 2019-05-01 01:26:28 +00:00
Fabien O'Carroll
93c4ea58ed 2.9.11 2019-04-23 11:34:46 +02:00
Hannah Wolfe
87abdc2c31 Updated travis.yml file 2019-04-18 14:10:35 +01:00
Hannah Wolfe
dc05ff2f49 Update Renovate Configuration
- Use the new shared configuration
- This is a special config for themes which is scheduled monthly, not weekly.
2019-04-17 21:38:32 +01:00
Hannah Wolfe
50c53f4263 Updated .travis.yml file
- most up-to-date version of our config
2019-04-17 21:26:56 +01:00
Rish
2a5aac2719 2.9.10 2019-04-16 16:42:31 +05:30
Aileen Nowak
b4d0219d4e Added livereload for .hbs files 2019-04-15 12:55:37 +08:00
Renovate Bot
85fed4f083 Lock file maintenance 2019-04-15 02:34:36 +00:00
Renovate Bot
aac62daaca Update dependency gscan to v2.4.1 2019-04-15 01:28:38 +00:00
Nazar Gargol
fef2307d6d 2.9.9 2019-04-09 19:30:37 +08:00
Renovate Bot
de8b83738e Lock file maintenance 2019-04-08 04:37:12 +00:00
Renovate Bot
4a2e9c9b20 Update dependency @tryghost/release-utils to v0.3.2 2019-04-08 03:26:03 +00:00
Renovate Bot
070bed3f40 Update dependency gscan to v2.4.0 2019-04-08 02:29:24 +00:00
Renovate Bot
7f8990c0d8 Update css processors 2019-04-08 01:29:23 +00:00
Kevin Ansfield
23bd9cc1d5 2.9.8 2019-04-04 14:58:47 +01:00
Hannah Wolfe
8e5c1b22dd Updated .travis.yml file
- ran slimer fix travis to get latest settings
2019-04-03 19:38:58 +01:00
Hannah Wolfe
c4fb156508 Added SECURITY.md file
- Consistent with other public repos
- Points at our docs on how to report security issues
2019-04-03 19:38:16 +01:00
Hannah Wolfe
91ffa335de Update Renovate Configuration
Updates the base configuration to include:
- node support policy
- lockfile maintenance
- optimistic automerging
2019-04-02 17:54:50 +01:00
Kevin Ansfield
0d8f4471d9 2.9.7 2019-04-02 10:02:13 +01:00
Nazar Gargol
4464d5809b Fixed deprecated {{lang}} helper usage
no issue

- {{lang}} helper was deprecated in favor of {{@site.lang}} with 73e008270d
2019-04-02 12:39:00 +08:00
Rish
37c0f22b09 2.9.6 2019-03-19 16:41:50 +05:30
Renovate Bot
7706045616 Update dependency @tryghost/release-utils to v0.3.1 2019-03-19 14:38:30 +05:30
renovate[bot]
51b93e389c Update dependency autoprefixer to v9.5.0 (#553) 2019-03-18 14:29:41 +00:00
kirrg001
b1ce464ea3 Added .yarnrc
no issue

- Casper uses `%s` tag naming
- Let's keep this, otherwise release order is broken
- Ghost & Ghost-Admin use this notation too
- It will tell `yarn version` to use `%s` instead of `v%s`
2019-03-15 14:38:26 +01:00
kirrg001
8729dafcf5 Extended yarn ship: more automation
no issue

- added gulp task to extend casper release automation
- will draft the release for you
- will get the user facing commits from changelog
- runs after `yarn ship` (postship)
- full automation with env variables is possible
2019-03-15 14:38:26 +01:00
kirrg001
406ef78109 Gulpfile ES6
no issue

- ES6
2019-03-15 14:38:26 +01:00
Kevin Ansfield
2bf64cbffc v2.9.5 2019-03-12 18:38:14 +00:00
Kevin Ansfield
a212518827 🐛 Fixed incorrect/missing colours for various elements
closes https://github.com/TryGhost/Casper/issues/548
- the recent postcss upgrade resulted in real CSS variables being output with a fallback mechanism, unfortunately this broke a number of colors throughout the theme
- disabled the fallback mechanism to revert back to the previous behaviour
2019-03-12 18:14:48 +00:00
Nazar Gargol
2da714ef2e Upgrading Casper to 2.9.4 2019-03-12 20:23:45 +08:00
Hannah Wolfe
66def0d7c0 Update Renovate Configuration
- schedule renovate for early monday mornings
2019-03-10 17:50:24 +00:00
Hannah Wolfe
6640701aeb Regenerate yarn.lock
- results in clean lodash versions
- needed due to lodash security vuln
2019-03-10 17:44:44 +00:00
Renovate Bot
7fec21f7d9 Update dependency gscan to v2.3.0 2019-03-10 17:39:42 +00:00
Hannah Wolfe
018423738e 🛠 Always build before test, test before ship
- Make sure we update our build files before running tests
- This also ensures they get updated before shipping
2019-03-10 17:30:20 +00:00
Hannah Wolfe
371ad586d3 Updated all built assets
- many dependencies have changed, need to rebuild
2019-03-10 17:30:20 +00:00
Hannah Wolfe
06c8020c16 Re-written gulpfile for gulp 4
- use the new, simpler format
- sourcemap and watch support is built in, so these plugins can be removed
- remove js filter - not sure what that did :/
- simplified task structure
2019-03-10 17:30:20 +00:00
Renovate Bot
3a40332515 Update gulp 2019-03-10 17:30:20 +00:00
Renovate Bot
56c9795306 Update css processors 2019-03-10 16:09:25 +00:00
Renovate Bot
dd19a0a65b Update css processors 2019-03-10 16:07:35 +00:00
Renovate Bot
3b3a091069 Update gulp 2019-03-10 15:27:03 +00:00
Renovate Bot
ff189b7c08 Update dependency gscan to v2.2.1 2019-03-10 15:21:18 +00:00
Hannah Wolfe
5bbaa68863
Update Renovate Configuration
- make PR names make more sense
2019-03-10 15:19:51 +00:00
Kevin Ansfield
10672c642e 🐛 Fixed author cover images not displaying
closes https://github.com/TryGhost/Casper/issues/542
- user model has `cover_image` property rather than `feature_image`
2019-03-08 08:47:58 +00:00
Hannah Wolfe
3e7a85a82e Update renovate.json
- group CSS dependencies together
2019-03-04 19:53:35 +00:00
Renovate Bot
8fa0aa1b64 Pin dependencies 2019-03-04 19:48:25 +00:00
Hannah Wolfe
18018d9edf Update renovate.json 2019-03-04 19:45:12 +00:00
Renovate Bot
e0faae69ed Add renovate.json 2019-03-04 19:45:12 +00:00
Fabien O'Carroll
bf89e8e5ab v2.9.3 2019-02-21 11:56:29 +01:00
John O'Nolan
c8c63d170c Fix bug with embeds overflowing content width 2019-02-18 12:54:29 +07:00
Rish
40ae0e97f9 Upgrading Casper to 2.9.2 2019-02-12 16:17:57 +05:30
kirrg001
6541544026 Added "yarn ship" command
no issue

- @TODO: add the ability to draft a release when running `yarn ship`
2019-02-11 19:30:21 +01:00
kirrg001
d92b90db96 Updated .travis.yml to use Node v10
no issue

- see 99c3338ca9 (diff-354f30a63fb0907d4ad57269548329e3)
- see https://docs.ghost.org/faq/node-versions/
2019-02-11 16:42:11 +01:00
Kevin Ansfield
9ababa2886 Upgrading Casper to 2.9.1 2019-01-22 11:04:56 +00:00
gustawdaniel
047c7c0c9c Added missing closing brackets in partials/header.hbs styles (#521) 2019-01-22 11:04:03 +00:00
Fabien O'Carroll
273e987240 Updated gulp to handle errors for every stream (#500)
no-issue

Previously we only added an error handler to the first stream in each
pipeline, this meant that if another stream errors you would get
unhelpful error handlers.
2019-01-22 11:00:10 +00:00
Wes Cossick
0171b3e05b Use a larger logo size (#520) 2019-01-15 22:51:08 +07:00
Fabien O'Carroll
72a9416197 Upgrading Casper to 2.9.0 2019-01-15 14:01:40 +01:00
John O'Nolan
f57f9ebc99 Update no-image classes
Closes https://github.com/TryGhost/Casper/pull/513
2019-01-15 15:06:19 +07:00
Nazar Gargol
b2322157d5 Migrated from @blog -> @site
no issue

- This rename is due to new {{@site}} alias introduced in Ghost (dd1cf5ffc7) as {{@blog}} variable is deprecated now, and will be removed in v3
2019-01-08 17:37:14 +00:00
Naz Gargol
3b8f3f1eac
Bumped default Ghost API version to v2
no issue

- This change is due to Content API becoming stable https://github.com/TryGhost/Ghost/releases/tag/2.10.0
2019-01-08 14:30:22 +00:00
Nazar Gargol
7d080d564f Upgrading Casper to 2.8.1 2019-01-08 11:48:06 +00:00
John O'Nolan
3388283f02 2019 2019-01-01 14:18:28 +00:00
Kevin Ansfield
475c015fa2 Upgrading Casper to 2.8.0 2018-12-17 14:13:04 +00:00
John O'Nolan
79ebbd50a3
Responsive images (#505) 2018-12-17 12:25:57 +00:00
kirrg001
a22dda9694 Upgrading Casper to 2.7.1
no issue
2018-12-11 12:03:03 +01:00
汪磊
3c2347c7f9 🎨 Optimised infinite scroll (#503)
no issue
- removed jQuery usage
- use the `<link rel="next">` tag provided by Ghost to determine the next page to fetch
2018-12-05 12:38:11 +00:00
ViViDboarder
9fe76df799 Update package.json to give fork a new name 2018-11-28 18:00:52 -08:00
ViViDboarder
6be42f38cc Merge branch 'master' of github.com:TryGhost/Casper 2018-11-28 17:48:39 -08:00
Kevin Ansfield
f695d69aeb Upgrading Casper to 2.7.0 2018-10-16 15:45:26 +01:00
Aileen Nowak
d53b25bf5d
Remove double slash in link
no issue
2018-10-12 12:56:54 +07:00
Aileen Nowak
bef56a2294 Minified js (#485)
no issue

- Added a `js` task to run on the gulp build process and minifies our js files
- Changed the required scripts in `default.hbs` to use the minified js files in `/built/`
- Moved existing `js` tasks from `zip` task
2018-10-12 12:41:06 +07:00
John O'Nolan
5ad6e1ed1f
Add titles to icon links 2018-10-12 12:01:05 +07:00
Nazar Gargol
36971db512 Upgrading Casper to 2.6.4 2018-10-09 16:06:07 +02:00
Péter Szabolcs Nagy
bfcab7172f Minified javascript in zip(#476)
no issue

* Added js minification step to gulp zip script
2018-10-08 16:34:07 +05:30
John O'Nolan
fce92d6cf1
Link to required dependencies
Refs https://github.com/TryGhost/Casper/pull/468
2018-10-08 11:45:06 +07:00
Oshawk
d48178fde9 Remove css rule that stops syntax highlighting (#484)
* Remove suspect css rule

Removed the ".post-full-content pre code * { color: inherit }" rule which prevents highlight.js from working.

* Changed to just exclude span

Less disruptive to just remove span from color inheritance.

* Remove extra newline
2018-10-08 06:40:06 +02:00
Antonio
6f4fe840b3 [Fix] Inline <code> tag word-break inside a <p> tag (#483) 2018-10-08 06:38:28 +02:00
Fabien O'Carroll
8a9efb5ef1 Upgrading Casper to 2.6.3 2018-09-25 11:32:08 +07:00
Peter Zimon
04854967a8 Adjusting spaces for galleries and wide images in a sequence (#480) 2018-09-24 14:35:47 +02:00
Nazar Gargol
fa18115aa6 Upgrading Casper to 2.6.2 2018-09-11 13:42:34 +02:00
Aileen Nowak
ae192a9fff 🐛 Fixed word-wrap for extra long anchor links text (#478)
refs #466

Anchor links didn't break, when the text was too long. Using `word-break: break-all` specifically on a-tags in post-content fixes this without screwing up other tags and their breaks.
2018-09-07 14:45:18 +02:00
kirrg001
78993720fd Upgrading Casper to 2.6.1 2018-08-31 11:26:01 +01:00
Zimo
676e17bd13 Restructure spacings for generic figure element 2018-08-31 11:24:50 +01:00
kirrg001
67e595741c Upgrading Casper to 2.6.0 2018-08-30 17:45:43 +01:00
Kevin Ansfield
7a88c88ea2 Added Koenig gallery card support (#475)
no issue

- Update CSS and JS for new gallery card
- Updates CSS to support new gallery card
- Adds JS to support grid layout for gallery view
- Fix gallery breakout size
- Refining styles for gallery card
2018-08-30 17:44:55 +01:00
Kevin Ansfield
a0e42e0599 Rebuild CSS 2018-08-30 14:56:38 +01:00
Kevin Ansfield
dc3bb316c7 Fixed incorrect image aspect ratio when images have width/height attrs
no issue
- when large images have width/height attributes but the image is constrained to it's container or `max-width` style the aspect ratio would be broken because browsers use the `height` attribute value even though the width is smaller
2018-08-30 14:49:40 +01:00
kirrg001
7380ed0291 Upgrading Casper to 2.5.1 2018-08-22 14:31:02 +02:00
Kevin Ansfield
ecaf3d921f 🐛 Fixed image positioning on pages
closes https://github.com/TryGhost/Casper/issues/473
- added missing `<div class="post-content">` wrapper around `{{content}}`
2018-08-21 17:47:42 +01:00
kirrg001
89ea6c5872 Upgrading Casper to 2.5.0 2018-08-16 13:59:03 +02:00
Hannah Wolfe
9d803067a4
🛠 Added .travis.yml and gscan tests (#470)
- Add gscan dependency & travis.yml file, so that we can run gscan as a test for this repo
- This check tells us whether or not the theme is valid & compatible with Ghost according to gscan
- We recommend that all themes do this!
2018-08-14 22:10:01 +01:00
Hannah Wolfe
0ea375643b
Added required "ghost-theme" keyword
- We're going to start showing this as a warning in gscan
- The purpose is to give us a way to detect if a package is a valid Ghost theme
2018-08-13 14:29:56 +01:00
kirrg001
f31957bd0d Replaced {{author}} by {{primary_author}} in byline-single.hbs
refs https://github.com/TryGhost/gscan/issues/99

- single author usages will be deprecated in Ghost 2.0
- make Casper 100% compatible with Ghost 2.0
2018-08-12 15:02:03 +02:00
John O'Nolan
36841d4624
Set minimum Ghost version to 2.0 2018-08-11 20:22:43 +01:00
Kevin Ansfield
d41fcbbc8a Remove .kg-card-markdown styles
no issue
- `.kg-card-markdown` no longer exists in Ghost 2.x
2018-08-11 19:09:58 +01:00
kirrg001
5d318225f5 Upgrading Casper to 2.4.2 2018-08-08 17:08:21 +02:00
Nulla Wu
9b56779ca6 Use id attribute to query reading progress element (#467)
no issue
- using an `id` selector doesn't break if other `progress` elements are present on a page
2018-08-03 09:21:05 +01:00
Kevin Ansfield
1bf2cdb52a Upgrading Casper to 2.4.1 2018-07-31 11:31:35 +01:00
Peter Zimon
f67caaba5c 🐛 Fixed content overflow on mobile
closes https://github.com/TryGhost/Casper/issues/464
- setting max-width of `kg-markdown-card` wrapper that is still used by non-Koenig posts
2018-07-30 12:21:17 +01:00
kirrg001
25d1e368d6 Upgrading Casper to 2.4.0 2018-07-24 15:13:30 +02:00
Kevin Ansfield
5c6cce1519
Ghost 1.25 Koenig updates (#463)
refs https://github.com/TryGhost/Ghost/pull/9741
- Ghost 1.25 has updated the HTML output of Koenig beta posts
  - the `<div class="kg-post">` wrapper around post content has been removed
  - for image cards the `.kg-image-wide` and `.kg-image-full` classes have been changed to `.kg-width-wide` and `.kg-width-full` and applied to the `<figure>` element rather than the `<img>` element
- this will be the default for *all* posts after upgrading to Ghost 2.0

Example output of the `{{content}}` helper for Koenig beta...

Before 1.25.0 (Ghost 1.23.0-1.24.9):
```html
<div class="kg-post">
    <figure class="kg-image-card">
        <img class="kg-image kg-image-wide" src="...">
        <figcaption>example wide image</figcaption>
    </figure>
</div>
```

After 1.25.0:
```html
<figure class="kg-image-card kg-width-wide">
    <img class="kg-image" src="...">
    <figcaption>example wide image</figcaption>
</figure>
```

For reference, in Ghost 1.x a non Koenig post with nothing but an image in the markdown (`![](...)`) would generate output like this:

```html
<div class="kg-card-markdown">
    <img src="...">
</div>
```
2018-07-23 12:20:46 +01:00
Kevin Ansfield
019842155a Upgrading Casper to 2.3.3 2018-06-14 17:00:26 +01:00
Peter Zimon
1860a8305b Koenig embed card (#460) 2018-06-13 18:34:59 +01:00
John O'Nolan
6417b4cf2a Fix rendering bug for non-square user images 2018-06-06 19:29:22 -07:00
Kevin Ansfield
1c61bc5f16 Upgrading Casper to 2.3.2 2018-05-29 16:10:07 +01:00
Kevin Ansfield
7a7f04c716 Update built files 2018-05-29 16:09:40 +01:00
Kevin Ansfield
fd56128f9b Upgrading Casper to 2.3.1 2018-05-29 15:40:50 +01:00
malfusion
cd3b470c18 Fix for missing default avatar and firefox footer misalignment (#458) 2018-05-29 10:38:27 +02:00
Kevin Ansfield
f3b44a7411 Upgrading Casper to 2.3.0 2018-05-22 20:17:56 +01:00
Peter Zimon
b83917060f Applying styles for Koenig content (#455)
refs https://github.com/TryGhost/Ghost/issues/9311
- move `.kg-card-markdown` styles and add deprecation notice
- add support for new `.kg-post` wrapper
- add support for `.kg-image` and `.kg-image-wide/full` image variants
- add support for image captions
2018-05-22 19:09:58 +01:00
Zimo
4aaedf69d2 Running CSSComb 2018-05-21 17:36:08 +02:00
Aileen Nowak
03ac0d91b8 Upgrading Casper to 2.2.1 2018-04-24 10:53:15 +08:00
John O'Nolan
b55d5e2b32 Remove unnecessary role attributes from main element
Source: https://validator.w3.org/nu/#textarea
2018-04-17 22:19:05 +02:00
John O'Nolan
4fe2eac739 Additional comments 2018-04-12 10:05:53 +02:00
John O'Nolan
6e3399366d Small refactor of multi-authors 2018-04-12 10:05:40 +02:00
John O'Nolan
98e9c12018 Split out different byline templates into separate files 2018-04-11 11:05:25 +02:00
kirrg001
986a954f33 Upgrading Casper to 2.2.0
no issue
2018-04-10 23:27:53 +02:00
John O'Nolan
636882bce4 Fix mobile display bug on smaller screens 2018-04-10 20:34:35 +02:00
Peter Zimon
79e113226c Multiple authors in Casper (#448) 2018-04-10 20:19:29 +02:00
John O'Nolan
8e865b797b Maybe fix it properly this time instead of completely failing 2018-04-10 15:29:09 +02:00
John O'Nolan
a655b59e69 Fix link target size 2018-04-10 15:27:01 +02:00
John O'Nolan
b078dcb86e Updated hover animations 2018-04-10 15:21:25 +02:00
Aileen Nowak
d5002f2c51 🐛 Fixed infinitescroll when a paged url is loaded directly (#447)
closes #445
- added an fn to sanitize the pathname, that might include a pagination url
- fixed an issue, where the request would still be made if the current page is bigger than max pages
- added comments
2018-04-10 10:04:43 +01:00
Kevin Ansfield
41bcbb7157 💨 Infinite scroll perf improvements
no issue
- swap jQuery HTML parsing and insertion for pure DOM
- remove fade animation
- increase buffer by 100px so next page request happens sooner
2018-04-09 11:03:48 +01:00
Aileen Nowak
452776939c Added yarn.lock and updated README for new yarn scripts
no issue
2018-04-09 16:19:05 +08:00
Santhosh veer
57c31ddacb Add HTML lang head tag (#429)
Refs #286
2018-04-06 20:49:42 +02:00
Hannah Wolfe
21088b1d38 Slack -> Forum
- replacing references to slack with forum
2018-04-02 16:35:21 +01:00
Aileen Nowak
16f283e675 Upgrading Casper to 2.1.10 2018-03-16 15:53:45 +07:00
Aileen Nowak
942054ba0d Revert "Upgrading Casper to 2.2.0"
This reverts commit 782aba3991.
2018-03-16 15:52:56 +07:00
Aileen Nowak
782aba3991 Upgrading Casper to 2.2.0 2018-03-16 09:50:09 +07:00
ViViDboarder
9c5dec3bc7 Merge branch 'syntax-highlighting' 2018-03-13 17:48:57 -07:00
ViViDboarder
d13984d974 Add Prism for syntax highlighting 2018-03-13 17:48:40 -07:00
ViViDboarder
0a7f8e7e7f Merge branch 'blog-title-to-posts' 2018-03-13 13:03:52 -07:00
ViViDboarder
f1bf99c4ba Append blog title to post titles to improve SEO 2018-03-13 13:03:11 -07:00
Aileen Nowak
9df85fbbe5 CSS built and comb
no issue
2018-02-27 11:48:17 +07:00
Paul Corbett
1e10549ee2 🐛Fixed render issue with code blocks in lists (#436)
Closes #415

* Add max-width to ul & ol tags
2018-02-27 11:43:39 +07:00
Paul Corbett
a6eb6848de Removed obsolete gulp-nodemon (#435)
Closes #420

* Remove gulp-nodemon from dev dependencies
* Remove required dependency from gulpfile
2018-02-27 11:18:32 +07:00
Harry Kalantzis
6788302f62 🐛Removed unnecessary slash from Feedly URL (#437)
closes #434.
2018-02-27 11:11:29 +07:00
Kevin Ansfield
67e55abfed Upgrading Casper to 2.1.9 2018-01-23 16:19:58 +00:00
Jochen Kirstätter
bfaae0f7ba 🐛 Fixed Feedly URL and protocol (#418)
no issue

* Changed Feedly URL to HTTPS protocol
* Updated Feedly URL pattern
2018-01-23 10:30:03 +07:00
Kevin Ansfield
edfafffd32 Upgrading Casper to 2.1.8 2018-01-03 13:47:12 +00:00
John O'Nolan
7798bf115f 2018 2018-01-02 21:48:53 +00:00
Aileen Nowak
9395846fdf Upgrading Casper to 2.1.7 2017-11-21 21:26:49 +08:00
Joseph Frazer
99fad4cbc4 Fix colors in code blocks
Closes #407
The font color should be inherited to avoid "invisible" text.

* fix conflicts with upstream branch
2017-11-21 17:50:54 +08:00
Aileen Nowak
990f712209 💅 CSS comb and built
no issue
2017-11-20 13:42:32 +08:00
Joona Viertola
4ff4b4c7f8 Removed double semicolons (#400)
no issue
2017-11-20 13:38:20 +08:00
Aileen Nowak
de05d90fe9 Upgrading Casper to 2.1.6 2017-10-26 19:03:21 +07:00
Kevin Ansfield
978e54403c 🐛 Do not exclude assets/css from built zips
no issue

https://github.com/TryGhost/Casper/pull/403 added optimisations for reducing size of zip files but unfortunately it also stripped out `assets/css` which means that it's no longer possible to download the theme from the admin panel and use it for development.

- remove `assets/css` from the ignored files in the `zip` task
2017-10-24 12:08:26 +01:00
Aileen Nowak
73bd9c630e Upgrading Casper to 2.1.5 2017-10-24 16:10:48 +07:00
Mattia Natali
9597a28320 🎨 Optimized gulp zip file generation (#403)
no issue

- Optimised the `gulp zip` task, so the zip file doesn't include the `assets/css` (`built` folder is used for CSS) and the `dist` folder (is used to output the zip file)
2017-10-23 16:52:52 +07:00
Aileen Nowak
461639886e Upgrading Casper to 2.1.4 2017-10-03 18:20:14 +07:00
Kevin Ansfield
7592ad182b 🔒 Added rel="noopener" to all target="_blank" links (#398)
closes #394
- closes potential phishing avenues by preventing external sites from changing the blogs url in the background after opening
- see https://mathiasbynens.github.io/rel-noopener/ for more info
2017-10-03 16:42:08 +07:00
Kevin Ansfield
97a522a037 Fix permissions on certain files 2017-10-02 13:29:23 +01:00
Chaotic Law
25f12d760b Fix typo in default.hbs (#393) 2017-09-29 08:23:39 -04:00
Kevin Ansfield
4f78d99112 Upgrading Casper to 2.1.3 2017-09-26 14:38:05 +01:00
Aileen Nowak
f5b7b45f2e Remove /dist/casper.zip
no issue

With https://github.com/TryGhost/Casper/pull/384 the directory `/dist` was created and includes a `casper.zip` file. The PR, that got merged after that (https://github.com/TryGhost/Casper/pull/374) actually implemented the creation of this, but also added the directory to `.gitignore` so it wouldn't be pushed to the repo.
2017-09-19 12:01:17 +07:00
Yoran Brondsema
d34ff1d32b Add a Gulp task to create the zip (#374) 2017-09-18 09:37:00 -07:00
Yoran Brondsema
73a1ab52da Add the same .editorconfig as from the Ghost repository (#384) 2017-09-18 09:35:53 -07:00
Aileen Nowak
5ec77dfb31 Upgrading Casper to 2.1.2 2017-09-12 18:34:23 +07:00
John O'Nolan
269d2b5787 Fix border radius bug on featured posts 2017-09-07 09:34:44 -07:00
kirrg001
d1d0bca2d8 Upgrading Casper to 2.1.1 2017-09-07 14:33:38 +02:00
Hannah Wolfe
d92dda3523 Wrapped primary-tag get helper with if (#383)
closes #382

- If there is no primary tag, the filter will be invalid syntax
- This wraps the if helper and gets rid of errors in the logs
2017-09-07 14:31:42 +02:00
Kevin Ansfield
ca325285bf Upgrading Casper to 2.1.0 2017-08-29 13:35:37 +01:00
John O'Nolan
aee9f69bb0 Refactor headings, quotes and margins, mobile improvements
A few people commented how pull-quote styling is odd for blockquotes. I agree. This reverts casper to use more traditional blockquote styling, but maintains the special pullquote styling now over on the H5 element. So if you want nice/wide/centered blue text, use an H5.

- Closes https://github.com/TryGhost/Casper/issues/364
- Closes https://github.com/TryGhost/Casper/issues/368
2017-08-25 16:31:10 -04:00
Kevin Ansfield
a7d5c885bd Upgrading Casper to 2.0.6 2017-08-22 12:38:02 +01:00
Kevin Ansfield
9bc5c92628 Fix z-index bug with header author profile image
no issue
- add z-index to `.site-header-content .author-profile-image` so it isn't covered by the header overlay
2017-08-22 12:05:09 +01:00
Niels
0f3651c23f 🎨 Do not stretch author profile image (#365)
- add `object-fit: cover` to `.author-profile-image` to prevent non-square images being stretched/squashed
2017-08-22 11:56:38 +01:00
Phoenix Eve Aspacio
d739bb52a4 Fixed z-index bug with header social links on author page (#370)
no issue
- add z-index to `.author-bio` and `.author-meta` so they aren't covered by the header image overlay
2017-08-22 11:49:49 +01:00
54 changed files with 9077 additions and 2705 deletions

View File

@ -1,19 +0,0 @@
Do you need help or have a question? Please come chat in Slack: https://ghost.org/slack 👫.
If you're filing a bug 🐛, please include the following information:
### Screenshot
![]()
### Steps to Reproduce
1. This is the first step
2. This may be the post content used to cause an issue...
### Technical details
* Casper Version:
* Ghost Version:
* Browser Version:
* OS Version:

17
.github/workflows/deploy-theme.yml vendored Normal file
View File

@ -0,0 +1,17 @@
---
name: Deploy Theme
on:
push:
branches:
- master
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: TryGhost/action-deploy-theme@v1.4.0
with:
api-url: ${{ secrets.GHOST_ADMIN_API_URL }}
api-key: ${{ secrets.GHOST_ADMIN_API_KEY }}
theme-name: "vivid-casper-master"

9
.gitignore vendored
View File

@ -13,9 +13,16 @@ results
npm-debug.log
node_modules
package-lock.json
.idea/*
*.iml
projectFilesBackup
.DS_Store
.DS_Store
dist/
config.json
changelog.md
changelog.md.bk

View File

@ -1,4 +1,4 @@
Copyright (c) 2013-2017 Ghost Foundation
Copyright (c) 2013-2022 Ghost Foundation
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation

View File

@ -1,10 +1,10 @@
# Casper
The default theme for [Ghost](http://github.com/tryghost/ghost/). This is the latest development version of Casper. If you're just looking to download the latest release, head over to the [releases](https://github.com/TryGhost/Casper/releases) page.
The default theme for [Ghost](http://github.com/tryghost/ghost/). This is the latest development version of Casper! If you're just looking to download the latest release, head over to the [releases](https://github.com/TryGhost/Casper/releases) page.
&nbsp;
![screenshot-desktop](https://user-images.githubusercontent.com/120485/27221326-1e31d326-5280-11e7-866d-82d550a7683b.jpg)
![screenshot-desktop](https://user-images.githubusercontent.com/1418797/183329195-8e8f2ee5-a473-4694-a813-a2575491209e.png)
&nbsp;
@ -12,40 +12,49 @@ The default theme for [Ghost](http://github.com/tryghost/ghost/). This is the la
Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes.
We've documented our default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, we also have full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template.
This theme has lots of code comments to help explain what's going on just by reading the code. Once you feel comfortable with how everything works, we also have full [theme API documentation](https://ghost.org/docs/themes/) which explains every possible Handlebars helper and template.
**The main files are:**
- `default.hbs` - The main template file
- `index.hbs` - Used for the home page
- `post.hbs` - Used for individual posts
- `default.hbs` - The parent template file, which includes your global header/footer
- `index.hbs` - The main template to generate a list of posts, usually the home page
- `post.hbs` - The template used to render individual posts
- `page.hbs` - Used for individual pages
- `tag.hbs` - Used for tag archives
- `author.hbs` - Used for author archives
- `tag.hbs` - Used for tag archives, eg. "all posts tagged with `news`"
- `author.hbs` - Used for author archives, eg. "all posts written by Jamie"
One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example:
One neat trick is that you can also create custom one-off templates by adding the slug of a page to a template file. For example:
- `page-about.hbs` - Custom template for the `/about/` page
- `page-about.hbs` - Custom template for an `/about/` page
- `tag-news.hbs` - Custom template for `/tag/news/` archive
- `author-ali.hbs` - Custom template for `/author/ali/` archive
# Development
Casper styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need Node and Gulp installed globally. After that, from the theme's root directory:
Casper styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node](https://nodejs.org/), [Yarn](https://yarnpkg.com/) and [Gulp](https://gulpjs.com) installed globally. After that, from the theme's root directory:
`$ npm install`
```bash
# install dependencies
yarn install
`$ gulp`
# run development server
yarn dev
```
Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically.
The `zip` Gulp task packages the theme files into `dist/<theme-name>.zip`, which you can then upload to your site.
```bash
# create .zip file
yarn zip
```
# PostCSS Features Used
- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser.
- Variables - Simple pure CSS variables
- [Color Function](https://github.com/postcss/postcss-color-function)
- [Color Mod](https://github.com/jonathantneal/postcss-color-mod-function)
# SVG Icons
@ -57,4 +66,4 @@ You can add your own SVG icons in the same manner.
# Copyright & License
Copyright (c) 2013-2017 Ghost Foundation - Released under the [MIT license](LICENSE).
Copyright (c) 2013-2022 Ghost Foundation - Released under the [MIT license](LICENSE).

2
assets/built/casper.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{max-width:100%}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{margin:.67em 0;font-size:2em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#fdffb6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;color:inherit;font:inherit}button{overflow:visible;border:none}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{padding:0;border:0}textarea{overflow:auto}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}html{overflow-y:scroll;font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body,html{overflow-x:hidden}body{color:#3c484e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.5rem;line-height:1.6em;font-weight:400;font-style:normal;letter-spacing:0;text-rendering:optimizeLegibility;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}::-moz-selection{text-shadow:none;background:#cbeafb}::selection{text-shadow:none;background:#cbeafb}hr{position:relative;display:block;width:100%;margin:2.5em 0 3.5em;padding:0;height:1px;border:0;border-top:1px solid #e3e9ed}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{margin:0;padding:0;border:0}textarea{resize:vertical}blockquote,dl,ol,p,ul{margin:0 0 1.5em}ol,ul{padding-left:1em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0 1em}ul{list-style:disc}ol{list-style:decimal}li{margin:.5em 0;padding-left:.5em;line-height:1.6em}dt{float:left;margin:0 20px 0 0;width:120px;color:#15171a;font-weight:500;text-align:right}dd{margin:0 0 5px;text-align:left}blockquote{margin:1.5em 0;padding:0 1.6em;border-left:.5em solid #e5eff5}blockquote p{margin:.8em 0;font-size:1.2em;font-weight:300}blockquote small{display:inline-block;margin:.8em 0 .8em 1.5em;font-size:.9em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#26a8ed;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{margin-top:0;line-height:1.15;font-weight:700;text-rendering:optimizeLegibility}h1{margin:0 0 .5em;font-size:5rem;font-weight:700}@media (max-width:500px){h1{font-size:2.2rem}}h2{margin:1.5em 0 .5em;font-size:2rem}@media (max-width:500px){h2{font-size:1.8rem}}h3{margin:1.5em 0 .5em;font-size:1.8rem;font-weight:500}@media (max-width:500px){h3{font-size:1.7rem}}h4{margin:1.5em 0 .5em;font-size:1.6rem;font-weight:500}h5,h6{margin:1.5em 0 .5em;font-size:1.4rem;font-weight:500}
/*# sourceMappingURL=global.css.map */
a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{border:0;font:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}body{line-height:1}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{display:block;height:auto;max-width:100%}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;box-sizing:border-box;font-family:sans-serif}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{font-size:2em;margin:.67em 0}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#fdffb6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}kbd{background:#f6f8fa;border:1px solid rgba(124,139,154,.25);border-radius:6px;box-shadow:inset 0 -1px 0 rgba(124,139,154,.25);font-family:var(--font-mono);font-size:1.5rem;padding:3px 5px}@media (max-width:600px){kbd{font-size:1.3rem}}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{border:none;overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{border:0;padding:0}textarea{overflow:auto}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{-webkit-tap-highlight-color:rgba(0,0,0,0);font-size:62.5%}body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on;background:#fff;color:var(--color-darkgrey);font-family:var(--font-sans);font-size:1.6rem;font-style:normal;font-weight:400;letter-spacing:0;line-height:1.6em}::-moz-selection{background:#daf2fd;text-shadow:none}::selection{background:#daf2fd;text-shadow:none}hr{border:0;border-top:1px solid #f0f0f0;display:block;height:1px;margin:2.5em 0 3.5em;padding:0;position:relative;width:100%}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{border:0;margin:0;padding:0}textarea{resize:vertical}::not(.gh-content) blockquote,::not(.gh-content) dl,::not(.gh-content) ol,::not(.gh-content) p,::not(.gh-content) ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0}ol,ul{max-width:100%}li{line-height:1.6em;padding-left:.3em}li+li{margin-top:.5em}dt{color:#daf2fd;float:left;font-weight:500;margin:0 20px 0 0;text-align:right;width:120px}dd{margin:0 0 5px;text-align:left}blockquote{border-left:#daf2fd;margin:1.5em 0;padding:0 1.6em}blockquote small{display:inline-block;font-size:.9em;margin:.8em 0 .8em 1.5em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#15171a;text-decoration:none}h1,h2,h3,h4,h5,h6{text-rendering:optimizeLegibility;font-weight:600;letter-spacing:-.01em;line-height:1.15;margin-top:0}h1{font-size:4.8rem;font-weight:700;letter-spacing:-.015em;margin:0 0 .5em}@media (max-width:600px){h1{font-size:2.8rem}}h2{font-size:2.8rem;font-weight:700;margin:1.5em 0 .5em}@media (max-width:600px){h2{font-size:2.3rem}}h3{font-size:2.4rem;font-weight:600;margin:1.5em 0 .5em}@media (max-width:600px){h3{font-size:1.7rem}}h4{font-size:2rem;margin:1.5em 0 .5em}@media (max-width:600px){h4{font-size:1.7rem}}h5{font-size:2rem}h5,h6{margin:1.5em 0 .5em}h6{font-size:1.8rem}
/*# sourceMappingURL=global.css.map */

File diff suppressed because one or more lines are too long

2
assets/built/prism.css Normal file
View File

@ -0,0 +1,2 @@
code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;color:#f8f8f2;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;-webkit-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;text-shadow:0 1px rgba(0,0,0,.3);white-space:pre;word-break:normal;word-spacing:normal}pre[class*=language-]{border-radius:.3em;margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}
/*# sourceMappingURL=prism.css.map */

View File

@ -0,0 +1 @@
{"version":3,"sources":["prism.css"],"names":[],"mappings":"AAQA,6CAUC,gBAAiB,CAPjB,eAAgB,CADhB,aAAc,CAGd,6DAAsE,CAYtE,oBAAqB,CAGrB,YAAa,CATb,eAAgB,CAEhB,eAAgB,CAChB,aAAc,CACd,UAAW,CATX,eAAgB,CAFhB,gCAAqC,CAGrC,eAAgB,CAEhB,iBAAkB,CADlB,mBAaD,CAGA,sBAIC,kBAAoB,CAFpB,aAAc,CACd,aAAc,CAFd,WAID,CAEA,uDAEC,kBACD,CAGA,iCAEC,kBAAmB,CADnB,YAAa,CAEb,kBACD,CAEA,yDAIC,aACD,CAEA,mBACC,aACD,CAEA,WACC,UACD,CAEA,wEAKC,aACD,CAEA,6BAEC,aACD,CAEA,0FAMC,aACD,CAEA,0GAMC,aACD,CAEA,gDAGC,aACD,CAEA,eACC,aACD,CAEA,8BAEC,aACD,CAEA,6BAEC,eACD,CACA,cACC,iBACD,CAEA,cACC,WACD","file":"prism.css","sourcesContent":["/* PrismJS 1.12.2\nhttp://prismjs.com/download.html#themes=prism-okaidia&languages=markup+clike+javascript+c+bash+cpp+csharp+ruby+docker+go+json+makefile+markdown+properties+python+vim+yaml */\n/**\n * okaidia theme for JavaScript, CSS and HTML\n * Loosely based on Monokai textmate theme by http://www.monokai.nl/\n * @author ocodia\n */\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tcolor: #f8f8f2;\n\tbackground: none;\n\ttext-shadow: 0 1px rgba(0, 0, 0, 0.3);\n\tfont-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-break: normal;\n\tword-wrap: normal;\n\tline-height: 1.5;\n\n\t-moz-tab-size: 4;\n\t-o-tab-size: 4;\n\ttab-size: 4;\n\n\t-webkit-hyphens: none;\n\t-moz-hyphens: none;\n\t-ms-hyphens: none;\n\thyphens: none;\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n\tpadding: 1em;\n\tmargin: .5em 0;\n\toverflow: auto;\n\tborder-radius: 0.3em;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tbackground: #272822;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n\tpadding: .1em;\n\tborder-radius: .3em;\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: slategray;\n}\n\n.token.punctuation {\n\tcolor: #f8f8f2;\n}\n\n.namespace {\n\topacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.constant,\n.token.symbol,\n.token.deleted {\n\tcolor: #f92672;\n}\n\n.token.boolean,\n.token.number {\n\tcolor: #ae81ff;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n\tcolor: #a6e22e;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string,\n.token.variable {\n\tcolor: #f8f8f2;\n}\n\n.token.atrule,\n.token.attr-value,\n.token.function {\n\tcolor: #e6db74;\n}\n\n.token.keyword {\n\tcolor: #66d9ef;\n}\n\n.token.regex,\n.token.important {\n\tcolor: #fd971f;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n\n"]}

2
assets/built/prism.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,237 +0,0 @@
{
"remove-empty-rulesets": true,
"always-semicolon": true,
"color-case": "lower",
"block-indent": " ",
"color-shorthand": true,
"element-case": "lower",
"eof-newline": true,
"leading-zero": true,
"quotes": "double",
"space-before-colon": "",
"space-after-colon": " ",
"space-before-combinator": " ",
"space-after-combinator": " ",
"space-between-declarations": "\n",
"space-before-opening-brace": " ",
"space-after-opening-brace": "\n",
"space-after-selector-delimiter": "\n",
"space-before-selector-delimiter": "",
"space-before-closing-brace": "\n",
"strip-spaces": true,
"tab-size": 4,
"unitless-zero": true,
"sort-order": [ [
"content",
"visibility",
"position",
"top",
"right",
"bottom",
"left",
"z-index",
"order",
"flex",
"flex-grow",
"flex-shrink",
"flex-basis",
"align-self",
"display",
"flex-flow",
"flex-direction",
"flex-wrap",
"justify-content",
"align-items",
"align-content",
"flex-order",
"flex-pack",
"flex-align",
"float",
"clear",
"overflow",
"overflow-x",
"overflow-y",
"-webkit-overflow-scrolling",
"clip",
"box-sizing",
"margin",
"margin-top",
"margin-right",
"margin-bottom",
"margin-left",
"padding",
"padding-top",
"padding-right",
"padding-bottom",
"padding-left",
"min-width",
"min-height",
"max-width",
"max-height",
"width",
"height",
"outline",
"outline-width",
"outline-style",
"outline-color",
"outline-offset",
"border",
"border-spacing",
"border-collapse",
"border-width",
"border-style",
"border-color",
"border-top",
"border-top-width",
"border-top-style",
"border-top-color",
"border-right",
"border-right-width",
"border-right-style",
"border-right-color",
"border-bottom",
"border-bottom-width",
"border-bottom-style",
"border-bottom-color",
"border-left",
"border-left-width",
"border-left-style",
"border-left-color",
"border-image",
"border-image-source",
"border-image-slice",
"border-image-width",
"border-image-outset",
"border-image-repeat",
"border-top-image",
"border-right-image",
"border-bottom-image",
"border-left-image",
"border-corner-image",
"border-top-left-image",
"border-top-right-image",
"border-bottom-right-image",
"border-bottom-left-image",
"color",
"font",
"font-family",
"font-size",
"line-height",
"font-weight",
"font-style",
"font-variant",
"font-size-adjust",
"font-stretch",
"font-feature-settings",
"letter-spacing",
"text-rendering",
"text-align",
"text-align-last",
"text-decoration",
"text-emphasis",
"text-emphasis-position",
"text-emphasis-style",
"text-emphasis-color",
"text-indent",
"text-justify",
"text-outline",
"text-transform",
"text-wrap",
"text-overflow",
"text-overflow-ellipsis",
"text-overflow-mode",
"text-shadow",
"white-space",
"word-spacing",
"word-wrap",
"word-break",
"tab-size",
"hyphens",
"user-select",
"fill",
"stroke",
"background",
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
"background-color",
"background-image",
"background-attachment",
"background-position",
"background-position-x",
"background-position-y",
"background-clip",
"background-origin",
"background-size",
"background-repeat",
"border-radius",
"border-top-left-radius",
"border-top-right-radius",
"border-bottom-right-radius",
"border-bottom-left-radius",
"box-decoration-break",
"box-shadow",
"table-layout",
"caption-side",
"empty-cells",
"list-style",
"list-style-position",
"list-style-type",
"list-style-image",
"quotes",
"counter-increment",
"counter-reset",
"vertical-align",
"src",
"opacity",
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity",
"filter",
"resize",
"cursor",
"nav-index",
"nav-up",
"nav-right",
"nav-down",
"nav-left",
"transition",
"transition-delay",
"transition-timing-function",
"transition-duration",
"transition-property",
"transform",
"transform-origin",
"animation",
"animation-name",
"animation-duration",
"animation-play-state",
"animation-timing-function",
"animation-delay",
"animation-iteration-count",
"animation-direction",
"animation-fill-mode",
"pointer-events",
"unicode-bidi",
"direction",
"columns",
"column-span",
"column-width",
"column-count",
"column-fill",
"column-gap",
"column-rule",
"column-rule-width",
"column-rule-style",
"column-rule-color",
"break-before",
"break-inside",
"break-after",
"page-break-before",
"page-break-inside",
"page-break-after",
"orphans",
"widows",
"zoom",
"max-zoom",
"min-zoom",
"user-zoom",
"orientation"
] ]
}

View File

@ -1,240 +0,0 @@
{
"remove-empty-rulesets": true,
"always-semicolon": true,
"color-case": "lower",
"block-indent": " ",
"color-shorthand": true,
"element-case": "lower",
"eof-newline": true,
"leading-zero": true,
"quotes": "double",
"space-before-colon": "",
"space-after-colon": " ",
"space-before-combinator": " ",
"space-after-combinator": " ",
"space-between-declarations": "\n",
"space-before-opening-brace": " ",
"space-after-opening-brace": "\n",
"space-after-selector-delimiter": "\n",
"space-before-selector-delimiter": "",
"space-before-closing-brace": "\n",
"strip-spaces": true,
"tab-size": 4,
"unitless-zero": true,
"sort-order": [ [
"content",
"visibility",
"position",
"top",
"right",
"bottom",
"left",
"z-index",
"order",
"flex",
"flex-grow",
"flex-shrink",
"flex-basis",
"align-self",
"display",
"flex-flow",
"flex-direction",
"justify-content",
"align-items",
"align-content",
"flex-wrap",
"flex-order",
"flex-pack",
"flex-align",
"float",
"clear",
"box-sizing",
"width",
"height",
"min-width",
"min-height",
"max-width",
"max-height",
"overflow",
"overflow-x",
"overflow-y",
"clip",
"margin",
"margin-top",
"margin-right",
"margin-bottom",
"margin-left",
"padding",
"padding-top",
"padding-right",
"padding-bottom",
"padding-left",
"outline",
"outline-width",
"outline-style",
"outline-color",
"outline-offset",
"border",
"border-spacing",
"border-collapse",
"border-width",
"border-style",
"border-color",
"border-top",
"border-top-width",
"border-top-style",
"border-top-color",
"border-right",
"border-right-width",
"border-right-style",
"border-right-color",
"border-bottom",
"border-bottom-width",
"border-bottom-style",
"border-bottom-color",
"border-left",
"border-left-width",
"border-left-style",
"border-left-color",
"border-image",
"border-image-source",
"border-image-slice",
"border-image-width",
"border-image-outset",
"border-image-repeat",
"border-top-image",
"border-right-image",
"border-bottom-image",
"border-left-image",
"border-corner-image",
"border-top-left-image",
"border-top-right-image",
"border-bottom-right-image",
"border-bottom-left-image",
"table-layout",
"caption-side",
"empty-cells",
"list-style",
"list-style-position",
"list-style-type",
"list-style-image",
"quotes",
"counter-increment",
"counter-reset",
"vertical-align",
"stroke",
"fill",
"stroke-width",
"stroke-opacity",
"color",
"font",
"font-family",
"font-size",
"line-height",
"font-weight",
"font-style",
"font-variant",
"font-size-adjust",
"font-stretch",
"text-rendering",
"font-feature-settings",
"letter-spacing",
"hyphens",
"text-align",
"text-align-last",
"text-decoration",
"text-emphasis",
"text-emphasis-position",
"text-emphasis-style",
"text-emphasis-color",
"text-indent",
"text-justify",
"text-outline",
"text-transform",
"text-wrap",
"text-overflow",
"text-overflow-ellipsis",
"text-overflow-mode",
"text-shadow",
"white-space",
"word-spacing",
"word-wrap",
"word-break",
"tab-size",
"user-select",
"src",
"resize",
"cursor",
"nav-index",
"nav-up",
"nav-right",
"nav-down",
"nav-left",
"background",
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
"background-color",
"background-image",
"background-size",
"background-attachment",
"background-position",
"background-position-x",
"background-position-y",
"background-clip",
"background-origin",
"background-repeat",
"border-radius",
"border-top-left-radius",
"border-top-right-radius",
"border-bottom-right-radius",
"border-bottom-left-radius",
"box-decoration-break",
"box-shadow",
"opacity",
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity",
"filter",
"transition",
"transition-delay",
"transition-timing-function",
"transition-duration",
"transition-property",
"transform",
"transform-origin",
"animation",
"animation-name",
"animation-duration",
"animation-play-state",
"animation-timing-function",
"animation-delay",
"animation-iteration-count",
"animation-direction",
"animation-fill-mode",
"pointer-events",
"unicode-bidi",
"direction",
"columns",
"column-span",
"column-width",
"column-count",
"column-fill",
"column-gap",
"column-rule",
"column-rule-width",
"column-rule-style",
"column-rule-color",
"break-before",
"break-inside",
"break-after",
"page-break-before",
"page-break-inside",
"page-break-after",
"orphans",
"widows",
"zoom",
"max-zoom",
"min-zoom",
"user-zoom",
"orientation",
"-webkit-overflow-scrolling",
"-ms-overflow-scrolling"
] ]
}

View File

@ -1,21 +1,3 @@
/* Variables
/* ---------------------------------------------------------- */
:root {
/* Colours */
--blue: #3eb0ef;
--green: #a4d037;
--purple: #ad26b4;
--yellow: #fecd35;
--red: #f05230;
--darkgrey: #15171A;
--midgrey: #738a94;
--lightgrey: #c5d2d9;
--whitegrey: #e5eff5;
--pink: #fa3a57;
--brown: #a3821a;
}
/* Reset
/* ---------------------------------------------------------- */
@ -106,10 +88,6 @@ video {
body {
line-height: 1;
}
ol,
ul {
list-style: none;
}
blockquote,
q {
quotes: none;
@ -126,7 +104,9 @@ table {
border-collapse: collapse;
}
img {
display: block;
max-width: 100%;
height: auto;
}
html {
box-sizing: border-box;
@ -192,6 +172,20 @@ samp {
font-family: monospace, monospace;
font-size: 1em;
}
kbd {
padding: 3px 5px;
font-family: var(--font-mono);
font-size: 1.5rem;
background: #f6f8fa;
border: 1px solid rgba(124, 139, 154, 0.25);
border-radius: 6px;
box-shadow: inset 0 -1px 0 rgba(124, 139, 154, 0.25);
}
@media (max-width: 600px) {
kbd {
font-size: 1.3rem;
}
}
button,
input,
optgroup,
@ -267,23 +261,19 @@ th {
padding: 0;
}
/* ==========================================================================
Base styles: opinionated defaults
========================================================================== */
html {
overflow-x: hidden;
overflow-y: scroll;
font-size: 62.5%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
overflow-x: hidden;
color: color(var(--midgrey) l(-25%));
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
font-size: 1.5rem;
color: var(--color-darkgrey);
font-family: var(--font-sans);
font-size: 1.6rem;
line-height: 1.6em;
font-weight: 400;
font-style: normal;
@ -298,7 +288,7 @@ body {
::selection {
text-shadow: none;
background: color(var(--blue) lightness(+30%));
background: #daf2fd;
}
hr {
@ -309,7 +299,7 @@ hr {
padding: 0;
height: 1px;
border: 0;
border-top: 1px solid color(var(--lightgrey) l(+10%));
border-top: 1px solid #f0f0f0;
}
audio,
@ -331,17 +321,17 @@ textarea {
resize: vertical;
}
p,
ul,
ol,
dl,
blockquote {
::not(.gh-content) p,
::not(.gh-content) ul,
::not(.gh-content) ol,
::not(.gh-content) dl,
::not(.gh-content) blockquote {
margin: 0 0 1.5em 0;
}
ol,
ul {
padding-left: 1em;
padding-left: 1.3em;
padding-right: 1.5em;
}
@ -349,28 +339,28 @@ ol ol,
ul ul,
ul ol,
ol ul {
margin: 0.5em 0 1em;
}
ul {
list-style: disc;
margin: 0.5em 0;
}
ul,
ol {
list-style: decimal;
max-width: 100%;
}
li {
margin: 0.5em 0;
padding-left: 0.5em;
padding-left: 0.3em;
line-height: 1.6em;
}
li + li {
margin-top: 0.5em;
}
dt {
float: left;
margin: 0 20px 0 0;
width: 120px;
color: var(--darkgrey);
color: #daf2fd;
font-weight: 500;
text-align: right;
}
@ -383,13 +373,7 @@ dd {
blockquote {
margin: 1.5em 0;
padding: 0 1.6em 0 1.6em;
border-left: var(--whitegrey) 0.5em solid;;
}
blockquote p {
margin: 0.8em 0;
font-size: 1.2em;
font-weight: 300;
border-left: #daf2fd;
}
blockquote small {
@ -411,14 +395,10 @@ blockquote cite a {
}
a {
color: color(var(--blue) l(-5%));
color: #15171A;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
h1,
h2,
h3,
@ -427,37 +407,40 @@ h5,
h6 {
margin-top: 0;
line-height: 1.15;
font-weight: 700;
font-weight: 600;
text-rendering: optimizeLegibility;
letter-spacing: -0.01em;
}
h1 {
margin: 0 0 0.5em 0;
font-size: 5rem;
font-size: 4.8rem;
font-weight: 700;
letter-spacing: -0.015em;
}
@media (max-width: 500px) {
@media (max-width: 600px) {
h1 {
font-size: 2.2rem;
font-size: 2.8rem;
}
}
h2 {
margin: 1.5em 0 0.5em 0;
font-size: 2rem;
font-size: 2.8rem;
font-weight: 700;
}
@media (max-width: 500px) {
@media (max-width: 600px) {
h2 {
font-size: 1.8rem;
font-size: 2.3rem;
}
}
h3 {
margin: 1.5em 0 0.5em 0;
font-size: 1.8rem;
font-weight: 500;
font-size: 2.4rem;
font-weight: 600;
}
@media (max-width: 500px) {
@media (max-width: 600px) {
h3 {
font-size: 1.7rem;
}
@ -465,18 +448,20 @@ h3 {
h4 {
margin: 1.5em 0 0.5em 0;
font-size: 1.6rem;
font-weight: 500;
font-size: 2rem;
}
@media (max-width: 600px) {
h4 {
font-size: 1.7rem;
}
}
h5 {
margin: 1.5em 0 0.5em 0;
font-size: 1.4rem;
font-weight: 500;
font-size: 2rem;
}
h6 {
margin: 1.5em 0 0.5em 0;
font-size: 1.4rem;
font-weight: 500;
font-size: 1.8rem;
}

124
assets/css/prism.css Normal file
View File

@ -0,0 +1,124 @@
/* PrismJS 1.12.2
http://prismjs.com/download.html#themes=prism-okaidia&languages=markup+clike+javascript+c+bash+cpp+csharp+ruby+docker+go+json+makefile+markdown+properties+python+vim+yaml */
/**
* okaidia theme for JavaScript, CSS and HTML
* Loosely based on Monokai textmate theme by http://www.monokai.nl/
* @author ocodia
*/
code[class*="language-"],
pre[class*="language-"] {
color: #f8f8f2;
background: none;
text-shadow: 0 1px rgba(0, 0, 0, 0.3);
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
border-radius: 0.3em;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #272822;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #f8f8f2;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.constant,
.token.symbol,
.token.deleted {
color: #f92672;
}
.token.boolean,
.token.number {
color: #ae81ff;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #a6e22e;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
color: #f8f8f2;
}
.token.atrule,
.token.attr-value,
.token.function {
color: #e6db74;
}
.token.keyword {
color: #66d9ef;
}
.token.regex,
.token.important {
color: #fd971f;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

File diff suppressed because it is too large Load Diff

85
assets/js/dropdown.js Normal file
View File

@ -0,0 +1,85 @@
(function () {
const mediaQuery = window.matchMedia('(max-width: 767px)');
const head = document.querySelector('.gh-head');
const menu = head.querySelector('.gh-head-menu');
const nav = menu.querySelector('.nav');
if (!nav) return;
const logo = document.querySelector('.gh-head-logo');
const navHTML = nav.innerHTML;
if (mediaQuery.matches) {
const items = nav.querySelectorAll('li');
items.forEach(function (item, index) {
item.style.transitionDelay = 0.03 * (index + 1) + 's';
});
}
var windowClickListener;
const makeDropdown = function () {
if (mediaQuery.matches) return;
const submenuItems = [];
while ((nav.offsetWidth + 64) > menu.offsetWidth) {
if (nav.lastElementChild) {
submenuItems.unshift(nav.lastElementChild);
nav.lastElementChild.remove();
} else {
return;
}
}
if (!submenuItems.length) {
document.body.classList.add('is-dropdown-loaded');
return;
}
const toggle = document.createElement('button');
toggle.setAttribute('class', 'nav-more-toggle');
toggle.setAttribute('aria-label', 'More');
toggle.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="currentColor"><path d="M21.333 16c0-1.473 1.194-2.667 2.667-2.667v0c1.473 0 2.667 1.194 2.667 2.667v0c0 1.473-1.194 2.667-2.667 2.667v0c-1.473 0-2.667-1.194-2.667-2.667v0zM13.333 16c0-1.473 1.194-2.667 2.667-2.667v0c1.473 0 2.667 1.194 2.667 2.667v0c0 1.473-1.194 2.667-2.667 2.667v0c-1.473 0-2.667-1.194-2.667-2.667v0zM5.333 16c0-1.473 1.194-2.667 2.667-2.667v0c1.473 0 2.667 1.194 2.667 2.667v0c0 1.473-1.194 2.667-2.667 2.667v0c-1.473 0-2.667-1.194-2.667-2.667v0z"></path></svg>';
const wrapper = document.createElement('div');
wrapper.setAttribute('class', 'gh-dropdown');
if (submenuItems.length >= 10) {
document.body.classList.add('is-dropdown-mega');
wrapper.style.gridTemplateRows = 'repeat(' + Math.ceil(submenuItems.length / 2) + ', 1fr)';
} else {
document.body.classList.remove('is-dropdown-mega');
}
submenuItems.forEach(function (child) {
wrapper.appendChild(child);
});
toggle.appendChild(wrapper);
nav.appendChild(toggle);
document.body.classList.add('is-dropdown-loaded');
toggle.addEventListener('click', function () {
document.body.classList.toggle('is-dropdown-open');
});
windowClickListener = function (e) {
if (!toggle.contains(e.target) && document.body.classList.contains('is-dropdown-open')) {
document.body.classList.remove('is-dropdown-open');
}
};
window.addEventListener('click', windowClickListener);
}
imagesLoaded(head, function () {
makeDropdown();
});
window.addEventListener('resize', function () {
setTimeout(function () {
window.removeEventListener('click', windowClickListener);
nav.innerHTML = navHTML;
makeDropdown();
}, 1);
});
})();

View File

@ -0,0 +1,114 @@
/* eslint-env browser */
/**
* Infinite Scroll
* Used on all pages where there is a list of posts (homepage, tag index, etc).
*
* When the page is scrolled to 300px from the bottom, the next page of posts
* is fetched by following the the <link rel="next" href="..."> that is output
* by {{ghost_head}}.
*
* The individual post items are extracted from the fetched pages by looking for
* a wrapper element with the class "post-card". Any found elements are appended
* to the element with the class "post-feed" in the currently viewed page.
*/
(function (window, document) {
if (document.documentElement.classList.contains('no-infinite-scroll')) return;
// next link element
var nextElement = document.querySelector('link[rel=next]');
if (!nextElement) {
return;
}
// post feed element
var feedElement = document.querySelector('.post-feed');
if (!feedElement) {
return;
}
var buffer = 300;
var ticking = false;
var loading = false;
var lastScrollY = window.scrollY;
var lastWindowHeight = window.innerHeight;
var lastDocumentHeight = document.documentElement.scrollHeight;
function onPageLoad() {
if (this.status === 404) {
window.removeEventListener('scroll', onScroll);
window.removeEventListener('resize', onResize);
return;
}
// append contents
var postElements = this.response.querySelectorAll('article.post-card');
postElements.forEach(function (item) {
// document.importNode is important, without it the item's owner
// document will be different which can break resizing of
// `object-fit: cover` images in Safari
feedElement.appendChild(document.importNode(item, true));
});
// set next link
var resNextElement = this.response.querySelector('link[rel=next]');
if (resNextElement) {
nextElement.href = resNextElement.href;
} else {
window.removeEventListener('scroll', onScroll);
window.removeEventListener('resize', onResize);
}
// sync status
lastDocumentHeight = document.documentElement.scrollHeight;
ticking = false;
loading = false;
}
function onUpdate() {
// return if already loading
if (loading) {
return;
}
// return if not scroll to the bottom
if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) {
ticking = false;
return;
}
loading = true;
var xhr = new window.XMLHttpRequest();
xhr.responseType = 'document';
xhr.addEventListener('load', onPageLoad);
xhr.open('GET', nextElement.href);
xhr.send(null);
}
function requestTick() {
ticking || window.requestAnimationFrame(onUpdate);
ticking = true;
}
function onScroll() {
lastScrollY = window.scrollY;
requestTick();
}
function onResize() {
lastWindowHeight = window.innerHeight;
lastDocumentHeight = document.documentElement.scrollHeight;
requestTick();
}
window.addEventListener('scroll', onScroll, {passive: true});
window.addEventListener('resize', onResize);
requestTick();
})(window, document);

View File

@ -1,83 +0,0 @@
// Code snippet inspired by https://github.com/douglasrodrigues5/ghost-blog-infinite-scroll
$(function ($) {
var currentPage = 1;
var pathname = window.location.pathname;
var $document = $(document);
var $result = $('.post-feed');
var buffer = 100;
var ticking = false;
var isLoading = false;
var lastScrollY = window.scrollY;
var lastWindowHeight = window.innerHeight;
var lastDocumentHeight = $document.height();
// remove hash params from pathname
pathname = pathname.replace(/#(.*)$/g, '').replace('/\//g', '/');
function onScroll() {
lastScrollY = window.scrollY;
requestTick();
}
function onResize() {
lastWindowHeight = window.innerHeight;
lastDocumentHeight = $document.height();
requestTick();
}
function requestTick() {
if (!ticking) {
requestAnimationFrame(infiniteScroll)
}
ticking = true;
}
function infiniteScroll () {
// return if already loading
if (isLoading) {
return;
}
// return if not scroll to the bottom
if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) {
ticking = false;
return;
}
// return if currentPage is the last page already
if (currentPage === maxPages) {
return;
}
isLoading = true;
// next page
currentPage++;
// Load more
var nextPage = pathname + 'page/' + currentPage + '/';
$.get(nextPage, function (content) {
$result.append($(content).find('.post').hide().fadeIn(100));
}).fail(function (xhr) {
// 404 indicates we've run out of pages
if (xhr.status === 404) {
window.removeEventListener('scroll', onScroll, {passive: true});
window.removeEventListener('resize', onResize);
}
}).always(function () {
lastDocumentHeight = $document.height();
isLoading = false;
ticking = false;
});
}
window.addEventListener('scroll', onScroll, {passive: true});
window.addEventListener('resize', onResize);
infiniteScroll();
});

File diff suppressed because one or more lines are too long

20
assets/js/prism.js Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -1,54 +1,76 @@
{{!< default}}
{{!-- The tag above means - insert everything in this file into the {body} of the default.hbs template --}}
{{#author}}
{{!-- Everything inside the #author tags pulls data from the author --}}
<header class="site-header outer {{#if cover_image}}" style="background-image: url({{cover_image}}){{else}}no-cover{{/if}}">
<div class="inner">
{{> "site-nav"}}
<div class="site-header-content">
{{#if profile_image}}
<img class="author-profile-image" src="{{profile_image}}" alt="{{name}}" />
{{/if}}
<h1 class="site-title">{{name}}</h1>
{{#if bio}}
<h2 class="author-bio">{{bio}}</h2>
{{/if}}
<div class="author-meta">
{{#if location}}
<div class="author-location">{{location}} <span class="bull">&bull;</span></div>
{{/if}}
<div class="author-stats">
{{plural ../pagination.total empty='No posts' singular='% post' plural='% posts'}} <span class="bull">&bull;</span>
</div>
{{#if website}}
<a class="social-link social-link-wb" href="{{website}}" target="_blank">{{> "icons/website"}}</a>
{{/if}}
{{#if twitter}}
<a class="social-link social-link-tw" href="{{twitter_url}}" target="_blank">{{> "icons/twitter"}}</a>
{{/if}}
{{#if facebook}}
<a class="social-link social-link-fb" href="{{facebook_url}}" target="_blank">{{> "icons/facebook"}}</a>
{{/if}}
<a class="social-link social-link-rss" href="http://cloud.feedly.com/#subscription/feed/{{url absolute="true"}}/rss/" target="_blank">{{> "icons/rss"}}</a>
<main id="site-main" class="site-main outer">
<div class="inner posts">
<div class="post-feed">
{{#author}}
<section class="post-card post-card-large">
{{#if cover_image}}
<div class="post-card-image-link">
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img class="post-card-image"
srcset="{{img_url cover_image size="s"}} 300w,
{{img_url cover_image size="m"}} 600w,
{{img_url cover_image size="l"}} 1000w,
{{img_url cover_image size="xl"}} 2000w"
sizes="(max-width: 1000px) 400px, 800px"
src="{{img_url cover_image size="m"}}"
alt="{{title}}"
/>
</div>
</div>
</div>
</header>
{{/author}}
{{/if}}
{{!-- The main content area --}}
<main id="site-main" class="site-main outer" role="main">
<div class="inner">
<div class="post-card-content">
<div class="post-card-content-link">
<div class="post-feed">
{{#foreach posts}}
{{#if profile_image}}
<img class="author-profile-pic" src="{{profile_image}}" alt="{{name}}" />
{{/if}}
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
{{> "post-card"}}
<header class="post-card-header">
<h2 class="post-card-title">{{name}}</h2>
</header>
{{/foreach}}
</div>
{{#if bio}}
<div class="post-card-excerpt">{{bio}}</div>
{{/if}}
<footer class="author-profile-footer">
{{#if location}}
<div class="author-profile-location">{{location}}</div>
{{/if}}
<div class="author-profile-meta">
{{#if website}}
<a class="author-profile-social-link" href="{{website}}" target="_blank" rel="noopener">{{website}}</a>
{{/if}}
{{#if twitter}}
<a class="author-profile-social-link" href="{{twitter_url}}" target="_blank" rel="noopener">{{> "icons/twitter"}}</a>
{{/if}}
{{#if facebook}}
<a class="author-profile-social-link" href="{{facebook_url}}" target="_blank" rel="noopener">{{> "icons/facebook"}}</a>
{{/if}}
</div>
</footer>
</div>
</div>
</section>
{{/author}}
{{#foreach posts}}
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
{{> "post-card"}}
{{/foreach}}
</div>
{{pagination}}
</div>
</main>

View File

@ -1,80 +1,127 @@
<!DOCTYPE html>
<html>
<html lang="{{@site.locale}}"{{#match @custom.color_scheme "Dark"}} class="dark-mode"{{else match @custom.color_scheme "Auto"}} class="auto-color"{{/match}}>
<head>
{{!-- Document Settings --}}
{{!-- Basic meta - advanced meta is output with {ghost_head} below --}}
<title>{{meta_title}}</title>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
{{!-- Base Meta --}}
<title>{{meta_title}}</title>
<title>
{{#is "post, page"}}
{{meta_title}} - {{@site.title}}
{{else}}
{{meta_title}}
{{/is}}
</title>
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{!-- Preload scripts --}}
<link rel="preload" as="style" href="{{asset "built/screen.css"}}" />
<link rel="preload" as="script" href="{{asset "built/casper.js"}}" />
{{!-- Styles'n'Scripts --}}
{{!-- Theme assets - use the {asset} helper to reference styles & scripts,
this will take care of caching and cache-busting automatically --}}
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
<link rel="stylesheet" type="text/css" href="{{asset "css/prism.css"}}" />
{{!-- This tag outputes SEO meta+structured data and other important settings --}}
{{!-- This tag outputs all your advanced SEO meta, structured data, and other important settings,
it should always be the last tag before the closing head tag --}}
{{ghost_head}}
</head>
<body class="{{body_class}}">
<body class="{{body_class}} is-head-{{#match @custom.navigation_layout "Logo on cover"}}left-logo{{else match @custom.navigation_layout "Logo in the middle"}}middle-logo{{else}}stacked{{/match}}{{#match @custom.title_font "=" "Elegant serif"}} has-serif-title{{/match}}{{#match @custom.body_font "=" "Modern sans-serif"}} has-sans-body{{/match}}{{#if @custom.show_publication_cover}} has-cover{{/if}}">
<div class="viewport">
<div class="site-wrapper">
{{!-- All the main content gets inserted here, index.hbs, post.hbs, etc --}}
{{{body}}}
{{!-- The footer at the very bottom of the screen --}}
<footer class="site-footer outer">
<div class="site-footer-content inner">
<section class="copyright"><a href="{{@blog.url}}">{{@blog.title}}</a> &copy; {{date format="YYYY"}}</section>
<nav class="site-footer-nav">
<a href="{{@blog.url}}">Latest Posts</a>
{{#if @blog.facebook}}<a href="{{facebook_url @blog.facebook}}" target="_blank">Facebook</a>{{/if}}
{{#if @blog.twitter}}<a href="{{twitter_url @blog.twitter}}" target="_blank">Twitter</a>{{/if}}
<a href="https://ghost.org" target="_blank">Ghost</a>
</nav>
<header id="gh-head" class="gh-head outer{{#match @custom.header_style "Hidden"}} is-header-hidden{{/match}}">
<div class="gh-head-inner inner">
<div class="gh-head-brand">
<a class="gh-head-logo{{#unless @site.logo}} no-image{{/unless}}" href="{{@site.url}}">
{{#if @site.logo}}
<img src="{{@site.logo}}" alt="{{@site.title}}">
{{else}}
{{@site.title}}
{{/if}}
</a>
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button>
<button class="gh-burger"></button>
</div>
</footer>
<nav class="gh-head-menu">
{{navigation}}
{{#unless @site.members_enabled}}
{{#match @custom.navigation_layout "Stacked"}}
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button>
{{/match}}
{{/unless}}
</nav>
</div>
{{!-- The big email subscribe modal content --}}
{{#if @labs.subscribers}}
<div id="subscribe" class="subscribe-overlay">
<a class="subscribe-overlay-close" href="#"></a>
<div class="subscribe-overlay-content">
{{#if @blog.logo}}
<img class="subscribe-overlay-logo" src="{{@blog.logo}}" alt="{{@blog.title}}" />
{{/if}}
<h1 class="subscribe-overlay-title">Subscribe to {{@blog.title}}</h1>
<p class="subscribe-overlay-description">Stay up to date! Get all the latest &amp; greatest posts delivered straight to your inbox</p>
{{subscribe_form placeholder="youremail@example.com"}}
<div class="gh-head-actions">
{{#unless @site.members_enabled}}
{{^match @custom.navigation_layout "Stacked"}}
<button class="gh-search gh-icon-btn" data-ghost-search>{{> "icons/search"}}</button>
{{/match}}
{{else}}
<button class="gh-search gh-icon-btn" data-ghost-search>{{> "icons/search"}}</button>
<div class="gh-head-members">
{{#unless @member}}
{{#unless @site.members_invite_only}}
<a class="gh-head-link" href="#/portal/signin" data-portal="signin">Sign in</a>
<a class="gh-head-button" href="#/portal/signup" data-portal="signup">Subscribe</a>
{{else}}
<a class="gh-head-button" href="#/portal/signin" data-portal="signin">Sign in</a>
{{/unless}}
{{else}}
<a class="gh-head-button" href="#/portal/account" data-portal="account">Account</a>
{{/unless}}
</div>
{{/unless}}
</div>
</div>
</header>
<div class="site-content">
{{!-- All other templates get inserted here, index.hbs, post.hbs, etc --}}
{{{body}}}
</div>
{{/if}}
{{!-- jQuery + Fitvids, which makes all video embeds responsive --}}
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous">
</script>
<script type="text/javascript" src="{{asset "js/jquery.fitvids.js"}}"></script>
{{!-- The global footer at the very bottom of the screen --}}
<footer class="site-footer outer">
<div class="inner">
<section class="copyright"><a href="{{@site.url}}">{{@site.title}}</a> &copy; {{date format="YYYY"}}</section>
<nav class="site-footer-nav">
{{navigation type="secondary"}}
</nav>
<div class="gh-powered-by"><a href="https://ghost.org/" target="_blank" rel="noopener">Powered by Ghost</a></div>
</div>
</footer>
{{#if pagination.pages}}
<script>
var maxPages = parseInt('{{pagination.pages}}');
</script>
<script src="{{asset "js/infinitescroll.js"}}"></script>
{{/if}}
</div>
{{!-- /.viewport --}}
{{!-- The #block helper will pull in data from the #contentFor other template files. In this case, there's some JavaScript which we only want to use in post.hbs, but it needs to be included down here, after jQuery has already loaded. --}}
{{{block "scripts"}}}
{{!-- Ghost outputs important scripts and data with this tag - it should always be the very last thing before the closing body tag --}}
{{ghost_foot}}
{{!-- Scripts - handle member signups, responsive videos, infinite scroll, floating headers, and galleries --}}
<script
src="https://code.jquery.com/jquery-3.5.1.min.js"
integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
crossorigin="anonymous">
</script>
<script src="{{asset "built/casper.js"}}"></script>
<script src="{{asset "js/prism.js"}}"></script>
<script>
$(document).ready(function () {
// Mobile Menu Trigger
$('.gh-burger').click(function () {
$('body').toggleClass('gh-head-open');
});
// FitVids - Makes video embeds responsive
$(".gh-content").fitVids();
});
</script>
{{!-- Ghost outputs required functional scripts with this tag - it should always be the last thing before the closing body tag --}}
{{ghost_foot}}
</body>
</html>

View File

@ -1,56 +1,37 @@
{{!< default}}
{{!--
This error template is used for all 404 errors, which might occur on your site.
It's a good idea to keep this template as minimal as possible in terms of both file size and complexity.
There are two error files in this theme, one for 404s and one for all other errors.
This file is the former, and handles all 404 Page Not Found errors.
The 404 error is the most common error that a visitor might see, for example when
following a broken link
Keep this template as lightweight as you can!
--}}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>{{meta_title}}</title>
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
</head>
<body class="error-template">
<div class="site-wrapper">
<header class="site-header outer {{#if feature_image}}" style="background-image: url({{feature_image}}){{else}}no-cover{{/if}}">
<div class="inner">
<nav class="site-nav-center">
{{#if @blog.logo}}
<a class="site-nav-logo" href="{{@blog.url}}"><img src="{{@blog.logo}}" alt="{{@blog.title}}" /></a>
{{else}}
<a class="site-nav-logo" href="{{@blog.url}}">{{@blog.title}}</a>
{{/if}}
</nav>
</div>
</header>
<main id="site-main" class="site-main outer" role="main">
<div class="inner">
<section class="error-message">
<h1 class="error-code">{{code}}</h1>
<p class="error-description">{{message}}</p>
<a class="error-link" href="{{@blog.url}}">Go to the front page →</a>
</section>
</div>
</main>
{{#get "posts" limit="3"}}
<aside class="outer">
<div class="inner">
<div class="post-feed">
{{#foreach posts}}
{{> "post-card"}}
{{/foreach}}
</div>
</div>
</aside>
{{/get}}
<section class="outer error-content">
<div class="inner">
<section class="error-message">
<h1 class="error-code">{{statusCode}}</h1>
<p class="error-description">{{message}}</p>
<a class="error-link" href="{{@site.url}}">Go to the front page →</a>
</section>
</div>
</body>
</html>
</section>
{{!-- Given that people landing on this page didn't find what they
were looking for, let's give them some alternative stuff to read. --}}
<aside class="read-more-wrap outer">
<div class="read-more inner">
{{#get "posts" include="authors" limit="3" as |more_posts|}}
{{#if more_posts}}
{{#foreach more_posts}}
{{> "post-card"}}
{{/foreach}}
{{/if}}
{{/get}}
</div>
</aside>

View File

@ -1,7 +1,15 @@
{{!--
This error template is used for all 400/500 errors, except 404, which might occur on your site.
It's a good idea to keep this template as minimal as possible in terms of both file size and complexity.
You'll notice that we *don't* use any JavsScript, or ghost_head / ghost_foot in this file.
There are two error files in this theme, one for 404s and one for all other errors.
This file is the latter, and handles all 400/500 errors that might occur.
Because 500 errors in particular usually happen when a server is struggling, this
template is as simple as possible. No template dependencies, no JS, no API calls.
This is to prevent rendering the error-page itself compounding the issue causing
the error in the first place.
Keep this template as lightweight as you can!
--}}
<!DOCTYPE html>
@ -14,44 +22,47 @@ You'll notice that we *don't* use any JavsScript, or ghost_head / ghost_foot in
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
</head>
<body class="error-template">
<body>
<div class="site-wrapper">
<header class="site-header outer {{#if feature_image}}" style="background-image: url({{feature_image}}){{else}}no-cover{{/if}}">
<div class="inner">
<nav class="site-nav-center">
{{#if @blog.logo}}
<a class="site-nav-logo" href="{{@blog.url}}"><img src="{{@blog.logo}}" alt="{{@blog.title}}" /></a>
{{else}}
<a class="site-nav-logo" href="{{@blog.url}}">{{@blog.title}}</a>
{{/if}}
</nav>
<header class="site-header no-image">
<div class="site-nav-main outer">
<div class="inner">
<nav class="site-nav-center">
{{#if @site.logo}}
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{img_url @site.logo size="xs"}}"
alt="{{@site.title}}" /></a>
{{else}}
<a class="site-nav-logo" href="{{@site.url}}">{{@site.title}}</a>
{{/if}}
</nav>
</div>
</div>
</header>
<main id="site-main" class="site-main outer" role="main">
<main class="outer error-content">
<div class="inner">
<section class="error-message">
<h1 class="error-code">{{code}}</h1>
<h1 class="error-code">{{statusCode}}</h1>
<p class="error-description">{{message}}</p>
<a class="error-link" href="{{@blog.url}}">Go to the front page →</a>
<a class="error-link" href="{{@site.url}}">Go to the front page →</a>
</section>
{{#if errorDetails}}
<section class="error-stack">
<h3>Theme errors</h3>
<ul class="error-stack-list">
{{#each errorDetails}}
{{#foreach errorDetails}}
<li>
<em class="error-stack-function">{{{rule}}}</em>
{{#each failures}}
{{#foreach failures}}
<p><span class="error-stack-file">Ref: {{ref}}</span></p>
<p><span class="error-stack-file">Message: {{message}}</span></p>
{{/each}}
{{/foreach}}
</li>
{{/each}}
{{/foreach}}
</ul>
</section>
{{/if}}

View File

@ -1,54 +1,176 @@
var gulp = require('gulp');
const {series, watch, src, dest, parallel} = require('gulp');
const pump = require('pump');
const path = require('path');
const releaseUtils = require('@tryghost/release-utils');
const inquirer = require('inquirer');
// gulp plugins and utils
var gutil = require('gulp-util');
var livereload = require('gulp-livereload');
var nodemon = require('gulp-nodemon');
var postcss = require('gulp-postcss');
var sourcemaps = require('gulp-sourcemaps');
const livereload = require('gulp-livereload');
const postcss = require('gulp-postcss');
const zip = require('gulp-zip');
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');
const beeper = require('beeper');
const fs = require('fs');
// postcss plugins
var autoprefixer = require('autoprefixer');
var colorFunction = require('postcss-color-function');
var cssnano = require('cssnano');
var customProperties = require('postcss-custom-properties');
var easyimport = require('postcss-easy-import');
const autoprefixer = require('autoprefixer');
const colorFunction = require('postcss-color-mod-function');
const cssnano = require('cssnano');
const easyimport = require('postcss-easy-import');
var swallowError = function swallowError(error) {
gutil.log(error.toString());
gutil.beep();
this.emit('end');
const REPO = 'TryGhost/Casper';
const REPO_READONLY = 'TryGhost/Casper';
const CHANGELOG_PATH = path.join(process.cwd(), '.', 'changelog.md');
function serve(done) {
livereload.listen();
done();
}
const handleError = (done) => {
return function (err) {
if (err) {
beeper();
}
return done(err);
};
};
var nodemonServerInit = function () {
livereload.listen(1234);
function hbs(done) {
pump([
src(['*.hbs', 'partials/**/*.hbs']),
livereload()
], handleError(done));
}
function css(done) {
pump([
src('assets/css/*.css', {sourcemaps: true}),
postcss([
easyimport,
colorFunction(),
autoprefixer(),
cssnano()
]),
dest('assets/built/', {sourcemaps: '.'}),
livereload()
], handleError(done));
}
function js(done) {
pump([
src([
// pull in lib files first so our own code can depend on it
'assets/js/lib/*.js',
'assets/js/*.js'
], {sourcemaps: true}),
concat('casper.js'),
uglify(),
dest('assets/built/', {sourcemaps: '.'}),
livereload()
], handleError(done));
}
function zipper(done) {
const filename = require('./package.json').name + '.zip';
pump([
src([
'**',
'!node_modules', '!node_modules/**',
'!dist', '!dist/**',
'!yarn-error.log',
'!yarn.lock',
'!gulpfile.js'
]),
zip(filename),
dest('dist/')
], handleError(done));
}
const cssWatcher = () => watch('assets/css/**', css);
const jsWatcher = () => watch('assets/js/**', js);
const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
const watcher = parallel(cssWatcher, jsWatcher, hbsWatcher);
const build = series(css, js);
exports.build = build;
exports.zip = series(build, zipper);
exports.default = series(build, serve, watcher);
exports.release = async () => {
// @NOTE: https://yarnpkg.com/lang/en/docs/cli/version/
// require(./package.json) can run into caching issues, this re-reads from file everytime on release
let packageJSON = JSON.parse(fs.readFileSync('./package.json'));
const newVersion = packageJSON.version;
if (!newVersion || newVersion === '') {
console.log(`Invalid version: ${newVersion}`);
return;
}
console.log(`\nCreating release for ${newVersion}...`);
const githubToken = process.env.GST_TOKEN;
if (!githubToken) {
console.log('Please configure your environment with a GitHub token located in GST_TOKEN');
return;
}
try {
const result = await inquirer.prompt([{
type: 'input',
name: 'compatibleWithGhost',
message: 'Which version of Ghost is it compatible with?',
default: '5.0.0'
}]);
const compatibleWithGhost = result.compatibleWithGhost;
const releasesResponse = await releaseUtils.releases.get({
userAgent: 'Casper',
uri: `https://api.github.com/repos/${REPO_READONLY}/releases`
});
if (!releasesResponse || !releasesResponse) {
console.log('No releases found. Skipping...');
return;
}
let previousVersion = releasesResponse[0].tag_name || releasesResponse[0].name;
console.log(`Previous version: ${previousVersion}`);
const changelog = new releaseUtils.Changelog({
changelogPath: CHANGELOG_PATH,
folder: path.join(process.cwd(), '.')
});
changelog
.write({
githubRepoPath: `https://github.com/${REPO}`,
lastVersion: previousVersion
})
.sort()
.clean();
const newReleaseResponse = await releaseUtils.releases.create({
draft: true,
preRelease: false,
tagName: 'v' + newVersion,
releaseName: newVersion,
userAgent: 'Casper',
uri: `https://api.github.com/repos/${REPO}/releases`,
github: {
token: githubToken
},
content: [`**Compatible with Ghost ≥ ${compatibleWithGhost}**\n\n`],
changelogPath: CHANGELOG_PATH
});
console.log(`\nRelease draft generated: ${newReleaseResponse.releaseUrl}\n`);
} catch (err) {
console.error(err);
process.exit(1);
}
};
gulp.task('build', ['css'], function (/* cb */) {
return nodemonServerInit();
});
gulp.task('css', function () {
var processors = [
easyimport,
customProperties,
colorFunction(),
autoprefixer({browsers: ['last 2 versions']}),
cssnano()
];
gulp.src('assets/css/*.css')
.on('error', swallowError)
.pipe(sourcemaps.init())
.pipe(postcss(processors))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('assets/built/'))
.pipe(livereload());
});
gulp.task('watch', function () {
gulp.watch('assets/css/**', ['css']);
});
gulp.task('default', ['build'], function () {
gulp.start('watch');
});

View File

@ -2,35 +2,53 @@
{{!-- The tag above means: insert everything in this file
into the {body} of the default.hbs template --}}
{{!-- The big featured header, it uses blog cover image as a BG if available --}}
<header class="site-header outer {{#if @blog.cover_image}}" style="background-image: url({{@blog.cover_image}}){{else}}no-cover{{/if}}">
<div class="inner">
<div class="site-header-content">
<h1 class="site-title">
{{#if @blog.logo}}
<img class="site-logo" src="{{@blog.logo}}" alt="{{@blog.title}}" />
<div class="site-header-content outer{{#match @custom.header_style "Left aligned"}} left-aligned{{/match}}{{#unless @custom.show_publication_cover}}{{#match @custom.header_style "Hidden"}} no-content{{/match}}{{/unless}}">
{{#if @custom.show_publication_cover}}
{{#if @site.cover_image}}
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img class="site-header-cover"
srcset="{{img_url @site.cover_image size="s"}} 300w,
{{img_url @site.cover_image size="m"}} 600w,
{{img_url @site.cover_image size="l"}} 1000w,
{{img_url @site.cover_image size="xl"}} 2000w"
sizes="100vw"
src="{{img_url @site.cover_image size="xl"}}"
alt="{{@site.title}}"
/>
{{/if}}
{{/if}}
{{#match @custom.header_style "!=" "Hidden"}}
<div class="site-header-inner inner">
{{#match @custom.navigation_layout "Logo on cover"}}
{{#if @site.logo}}
<img class="site-logo" src="{{@site.logo}}" alt="{{@site.title}}">
{{else}}
{{@blog.title}}
<h1 class="site-title">{{@site.title}}</h1>
{{/if}}
</h1>
<h2 class="site-description">{{@blog.description}}</h2>
{{/match}}
{{#if @site.description}}
<p class="site-description">{{@site.description}}</p>
{{/if}}
</div>
{{> "site-nav"}}
</div>
</header>
{{/match}}
</div>
{{!-- The main content area --}}
<main id="site-main" class="site-main outer" role="main">
<div class="inner">
<div class="post-feed">
{{#foreach posts}}
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
{{> "post-card"}}
{{/foreach}}
</div>
<main id="site-main" class="site-main outer">
<div class="inner posts">
<div class="post-feed">
{{#foreach posts}}
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
{{> "post-card"}}
{{/foreach}}
</div>
{{pagination}}
</div>
</main>

View File

@ -1,19 +1,29 @@
{
"name": "casper",
"description": "The default personal blogging theme for Ghost. Beautiful, minimal and responsive.",
"name": "vivid-casper",
"description": "Minor tweaks from the default personal blogging theme for Ghost. Beautiful, minimal and responsive.",
"demo": "https://demo.ghost.io",
"version": "2.0.5",
"version": "5.5.3",
"engines": {
"ghost": ">=1.2.0"
"ghost": ">=5.0.0"
},
"license": "MIT",
"screenshots": {
"desktop": "assets/screenshot-desktop.jpg",
"mobile": "assets/screenshot-mobile.jpg"
},
"scripts": {
"dev": "gulp",
"zip": "gulp zip",
"test": "gscan .",
"test:ci": "gscan --fatal --verbose .",
"pretest": "gulp build",
"preship": "yarn test",
"ship": "STATUS=$(git status --porcelain); echo $STATUS; if [ -z \"$STATUS\" ]; then yarn version && git push --follow-tags; else echo \"Uncomitted changes found.\" && exit 1; fi",
"postship": "git fetch && gulp release"
},
"author": {
"name": "Ghost Foundation",
"email": "hello@ghost.org",
"name": "ViViDboarder",
"email": "vividboarder@gmail.com",
"url": "https://ghost.org"
},
"gpm": {
@ -25,29 +35,145 @@
},
"keywords": [
"ghost",
"theme"
"theme",
"ghost-theme"
],
"repository": {
"type": "git",
"url": "https://github.com/TryGhost/Casper.git"
"url": "https://github.com/ViViDboarder/Casper.git"
},
"bugs": "https://github.com/TryGhost/Casper/issues",
"contributors": "https://github.com/TryGhost/Casper/graphs/contributors",
"bugs": "https://github.com/ViViDboarder/Casper/issues",
"contributors": "https://github.com/ViViDboarder/Casper/graphs/contributors",
"devDependencies": {
"autoprefixer": "6.3.6",
"cssnano": "3.7.1",
"gulp": "3.9.1",
"gulp-livereload": "3.8.1",
"gulp-nodemon": "2.1.0",
"gulp-postcss": "6.1.1",
"gulp-sourcemaps": "1.6.0",
"gulp-util": "3.0.7",
"gulp-watch": "4.3.8",
"postcss-color-function": "2.0.1",
"postcss-custom-properties": "5.0.1",
"postcss-easy-import": "1.0.1"
"@tryghost/release-utils": "0.8.1",
"autoprefixer": "10.4.7",
"beeper": "2.1.0",
"cssnano": "5.1.12",
"gscan": "4.36.1",
"gulp": "4.0.2",
"gulp-concat": "2.6.1",
"gulp-livereload": "4.0.2",
"gulp-postcss": "9.0.1",
"gulp-uglify": "3.0.2",
"gulp-zip": "5.1.0",
"inquirer": "8.2.4",
"postcss": "8.2.13",
"postcss-color-mod-function": "3.0.3",
"postcss-easy-import": "4.0.0",
"pump": "3.0.0"
},
"browserslist": [
"defaults"
],
"config": {
"posts_per_page": 25
"posts_per_page": 25,
"image_sizes": {
"xxs": {
"width": 30
},
"xs": {
"width": 100
},
"s": {
"width": 300
},
"m": {
"width": 600
},
"l": {
"width": 1000
},
"xl": {
"width": 2000
}
},
"card_assets": true,
"custom": {
"navigation_layout": {
"type": "select",
"options": [
"Logo on cover",
"Logo in the middle",
"Stacked"
],
"default": "Logo on cover"
},
"title_font": {
"type": "select",
"options": [
"Modern sans-serif",
"Elegant serif"
],
"default": "Modern sans-serif"
},
"body_font": {
"type": "select",
"options": [
"Modern sans-serif",
"Elegant serif"
],
"default": "Elegant serif"
},
"show_publication_cover": {
"type": "boolean",
"default": true,
"group": "homepage"
},
"header_style": {
"type": "select",
"options": [
"Center aligned",
"Left aligned",
"Hidden"
],
"default": "Center aligned",
"group": "homepage"
},
"feed_layout": {
"type": "select",
"options": [
"Classic",
"Grid",
"List"
],
"default": "Classic",
"group": "homepage"
},
"color_scheme": {
"type": "select",
"options": [
"Light",
"Dark",
"Auto"
],
"default": "Light"
},
"post_image_style": {
"type": "select",
"options": [
"Wide",
"Full",
"Small",
"Hidden"
],
"default": "Wide",
"group": "post"
},
"email_signup_text": {
"type": "text",
"default": "Sign up for more like this.",
"group": "post"
},
"show_recent_posts_footer": {
"type": "boolean",
"default": true,
"group": "post"
}
}
},
"renovate": {
"extends": [
"@tryghost:theme"
]
}
}

View File

@ -1,48 +1,47 @@
{{!< default}}
{{!-- The tag above means: insert everything in this file
into the {body} of the default.hbs template --}}
into the {body} tag of the default.hbs template --}}
{{!-- The big featured header, it uses blog cover image as a BG if available --}}
<header class="site-header outer">
<div class="inner">
{{> "site-nav"}}
</div>
</header>
{{!-- Everything inside the #post tags pulls data from the post --}}
{{#post}}
{{!-- Everything inside the #post block pulls data from the page --}}
<main id="site-main" class="site-main outer" role="main">
<div class="inner">
<main id="site-main" class="site-main">
<article class="article {{post_class}}">
<article class="post-full {{post_class}} {{#unless feature_image}}no-image{{/unless}}">
{{#if show_title_and_feature_image}}
<header class="article-header gh-canvas">
<header class="post-full-header">
<h1 class="post-full-title">{{title}}</h1>
</header>
<h1 class="article-title">{{title}}</h1>
{{#if feature_image}}
<figure class="post-full-image" style="background-image: url({{feature_image}})">
</figure>
<figure class="article-image">
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img
srcset="{{img_url feature_image size="s"}} 300w,
{{img_url feature_image size="m"}} 600w,
{{img_url feature_image size="l"}} 1000w,
{{img_url feature_image size="xl"}} 2000w"
sizes="(min-width: 1400px) 1400px, 92vw"
src="{{img_url feature_image size="xl"}}"
alt="{{#if feature_image_alt}}{{feature_image_alt}}{{else}}{{title}}{{/if}}"
/>
{{#if feature_image_caption}}
<figcaption>{{feature_image_caption}}</figcaption>
{{/if}}
</figure>
{{/if}}
<section class="post-full-content">
{{content}}
</section>
</header>
{{/if}}
</article>
<section class="gh-content gh-canvas">
{{content}}
</section>
</div>
</article>
</main>
{{/post}}
{{!-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs --}}
{{#contentFor "scripts"}}
<script>
$(function() {
var $postContent = $(".post-full-content");
$postContent.fitVids();
});
</script>
{{/contentFor}}
{{/post}}

View File

@ -1,28 +0,0 @@
<div class="floating-header">
<div class="floating-header-logo">
<a href="{{@blog.url}}">
{{#if @blog.icon}}
<img src="{{@blog.icon}}" alt="{{@blog.title}} icon" />
{{/if}}
<span>{{@blog.title}}</span>
</a>
</div>
<span class="floating-header-divider">&mdash;</span>
<div class="floating-header-title">{{title}}</div>
<div class="floating-header-share">
<div class="floating-header-share-label">Share this {{> "icons/point"}}</div>
<a class="floating-header-share-tw" href="https://twitter.com/share?text={{encode title}}&amp;url={{url absolute="true"}}"
onclick="window.open(this.href, 'share-twitter', 'width=550,height=235');return false;">
{{> "icons/twitter"}}
</a>
<a class="floating-header-share-fb" href="https://www.facebook.com/sharer/sharer.php?u={{url absolute="true"}}"
onclick="window.open(this.href, 'share-facebook','width=580,height=296');return false;">
{{> "icons/facebook"}}
</a>
</div>
<progress class="progress" value="0">
<div class="progress-container">
<span class="progress-bar"></span>
</div>
</progress>
</div>

View File

@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M3.513 18.998C4.749 15.504 8.082 13 12 13s7.251 2.504 8.487 5.998C18.47 21.442 15.417 23 12 23s-6.47-1.558-8.487-4.002zM12 12c2.21 0 4-2.79 4-5s-1.79-4-4-4-4 1.79-4 4 1.79 5 4 5z" fill="#FFF"/></g></svg>

After

Width:  |  Height:  |  Size: 308 B

2
partials/icons/facebook.hbs Executable file → Normal file
View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M19 6h5V0h-5c-3.86 0-7 3.14-7 7v3H8v6h4v16h6V16h5l1-6h-6V7c0-.542.458-1 1-1z"/></svg>
<svg class="icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M23.9981 11.9991C23.9981 5.37216 18.626 0 11.9991 0C5.37216 0 0 5.37216 0 11.9991C0 17.9882 4.38789 22.9522 10.1242 23.8524V15.4676H7.07758V11.9991H10.1242V9.35553C10.1242 6.34826 11.9156 4.68714 14.6564 4.68714C15.9692 4.68714 17.3424 4.92149 17.3424 4.92149V7.87439H15.8294C14.3388 7.87439 13.8739 8.79933 13.8739 9.74824V11.9991H17.2018L16.6698 15.4676H13.8739V23.8524C19.6103 22.9522 23.9981 17.9882 23.9981 11.9991Z"/></svg>

Before

Width:  |  Height:  |  Size: 155 B

After

Width:  |  Height:  |  Size: 531 B

3
partials/icons/fire.hbs Normal file
View File

@ -0,0 +1,3 @@
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.49365 4.58752C3.53115 6.03752 2.74365 7.70002 2.74365 9.25002C2.74365 10.6424 3.29678 11.9778 4.28134 12.9623C5.26591 13.9469 6.60127 14.5 7.99365 14.5C9.38604 14.5 10.7214 13.9469 11.706 12.9623C12.6905 11.9778 13.2437 10.6424 13.2437 9.25002C13.2437 6.00002 10.9937 3.50002 9.16865 1.68127L6.99365 6.25002L4.49365 4.58752Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>

After

Width:  |  Height:  |  Size: 538 B

View File

@ -1 +0,0 @@
<svg class="ghost-svg" viewBox="0 0 493 161" xmlns="http://www.w3.org/2000/svg"><title>Ghost Logo</title><g fill="none" fill-rule="evenodd"><path d="M328.52 37.36c-27.017 0-40.97 19.323-40.97 43.16 0 23.837 13.61 43.162 40.97 43.162s40.968-19.325 40.968-43.163c0-23.84-13.954-43.16-40.97-43.16zm20.438 43.237c-.02 15.328-5.126 27.743-20.44 27.743-15.312 0-20.42-12.414-20.435-27.743v-.078c.016-15.33 5.124-27.74 20.437-27.74 15.312 0 20.42 12.41 20.438 27.74v.07zM207.553 5.19c0-1.103.885-2.124 1.984-2.282 0 0 13.577-1.95 14.784-2.115 1.37-.187 3.19.798 3.19 2.744v44.236c3.23-3.105 6.79-5.608 10.66-7.515 3.88-1.906 8.43-2.86 13.66-2.86 4.53 0 8.53.776 12.03 2.33 3.5 1.55 6.43 3.73 8.77 6.533 2.34 2.81 4.12 6.16 5.33 10.05 1.21 3.9 1.82 8.19 1.82 12.87v51.35c0 1.1-.89 2-2 2h-15.95c-1.1 0-2-.9-2-1.99V69.18c0-5.118-1.17-9.08-3.51-11.888-2.35-2.804-5.86-4.207-10.544-4.207-3.45 0-6.677.79-9.69 2.37-3.02 1.58-5.87 3.73-8.564 6.46v58.617c0 1.102-.894 2-2.002 2h-15.94c-1.11 0-2.005-.895-2.005-2V5.188zm244.007 95.327v-43.68h-13.482c-1.1 0-1.742-.87-1.443-1.916l3-10.49c.262-.9.942-1.87 2.308-2.07l9.597-1.35 3.508-23.49c.163-1.09 1.18-2.1 2.274-2.26 0 0 9.192-1.31 10.963-1.58 1.673-.25 3.19.97 3.19 2.81v24.52h17.565c1.106 0 2.002.9 2.002 2.01v11.82c0 1.11-.89 2.01-2.002 2.01h-17.566v43.08c0 6.02 3.623 8.32 7.095 8.32 2.12 0 5.02-1.14 7.19-2.16 1.34-.62 3.41-.16 3.95 1.73l2.45 8.65c.3 1.07-.25 2.37-1.23 2.86 0 0-7.29 4.37-17.06 4.37-13.73 0-22.33-8.08-22.33-23.16zm-44.584-47.74c-7.084 0-12.657 2.476-12.657 8.433 0 7.44 12.01 9.606 20.23 12.64 5.49 2.027 20.24 5.98 20.24 22.016 0 19.48-16 27.807-33.06 27.807-17.06 0-25.4-5.465-25.4-5.465-.96-.527-1.5-1.822-1.2-2.89 0 0 2.1-7.52 2.64-9.386.48-1.68 2.41-2.27 3.64-1.792 4.39 1.712 12.32 4.092 21.28 4.092 9.07 0 13.46-2.803 13.46-8.777 0-7.95-12.26-10.38-20.36-12.967-5.59-1.78-20.36-5.93-20.36-23.566 0-17.373 15.08-25.524 31.2-25.524 13.64 0 23.5 4.69 23.5 4.69 1.01.427 1.58 1.635 1.28 2.698l-2.658 9.357c-.488 1.74-1.898 2.537-3.666 1.957-3.89-1.277-11.2-3.322-18.15-3.322zm-210.313-15.28c-6.695.775-11.472 3.962-14.562 6.93-6.06-4.81-14.49-7.106-23.94-7.106-18.95 0-33.76 9.26-33.76 29.43 0 11.58 4.88 19.56 12.62 24.26-5.75 2.75-9.57 8.59-9.57 14.34 0 9.61 7.5 12.61 7.5 12.61s-13.11 6.44-13.11 19.32c0 16.49 15.01 23.16 33.34 23.16 26.43 0 44.61-11.04 44.61-31.31 0-12.47-9.44-19.36-30.01-20.18-12.2-.48-20.11-.93-22.07-1.58-2.59-.87-3.86-2.96-3.86-5.28 0-2.55 2.08-4.98 5.35-6.65 2.86.516 5.87.768 8.99.768 18.97 0 33.76-9.223 33.76-29.425 0-4.897-.87-9.15-2.46-12.78 2.79-1.506 8.34-2.25 8.34-2.25 1.09-.17 1.975-1.21 1.974-2.31V40.3c0-1.88-1.59-2.955-3.1-2.78zm-49.13 85.132s9.954.38 19.9.84c11.172.52 14.654 2.96 14.654 8.81 0 7.15-9.71 14.1-23.28 14.1-12.88 0-19.314-4.54-19.314-12.08 0-4.33 2.26-9.18 8.04-11.69zm10.66-40.54c-8.978 0-15.983-4.83-15.983-15.35 0-10.53 7.01-15.35 15.983-15.35 8.974 0 15.984 4.81 15.984 15.34 0 10.53-7.002 15.34-15.984 15.34z" fill="#2D3134"/><g opacity=".6" transform="translate(0 36)" fill="#2E3134"><rect x=".209" y="69.017" width="33.643" height="17.014" rx="4"/><rect x="50.672" y="69.017" width="33.622" height="17.014" rx="4"/><rect x=".184" y="34.99" width="84.121" height="17.014" rx="4"/><rect x=".209" y=".964" width="50.469" height="17.013" rx="4"/><rect x="67.494" y=".964" width="16.821" height="17.013" rx="4"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 14.5s2 3 5 3 5.5-2.463 5.5-5.5S21 6.5 18 6.5c-5 0-7 11-12 11C2.962 17.5.5 15.037.5 12S3 6.5 6 6.5s4.5 3.5 4.5 3.5"/></svg>

Before

Width:  |  Height:  |  Size: 196 B

11
partials/icons/loader.hbs Normal file
View File

@ -0,0 +1,11 @@
<svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
<path opacity="0.2" fill="#000" d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946
s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634
c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z" />
<path fill="#000" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0
C22.32,8.481,24.301,9.057,26.013,10.047z">
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 20 20" to="360 20 20"
dur="0.5s" repeatCount="indefinite" />
</path>
</svg>

After

Width:  |  Height:  |  Size: 923 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" fill="none"><path d="M19.5 8c0 4.144-7.5 15.5-7.5 15.5S4.5 12.144 4.5 8C4.5 3.858 7.857.5 12 .5c4.142 0 7.5 3.358 7.5 7.5z"/><circle cx="12" cy="8" r="3"/></svg>

Before

Width:  |  Height:  |  Size: 329 B

5
partials/icons/lock.hbs Normal file
View File

@ -0,0 +1,5 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.25 6.875H3.75C3.40482 6.875 3.125 7.15482 3.125 7.5V16.25C3.125 16.5952 3.40482 16.875 3.75 16.875H16.25C16.5952 16.875 16.875 16.5952 16.875 16.25V7.5C16.875 7.15482 16.5952 6.875 16.25 6.875Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M7.1875 6.875V4.0625C7.1875 3.31658 7.48382 2.60121 8.01126 2.07376C8.53871 1.54632 9.25408 1.25 10 1.25C10.7459 1.25 11.4613 1.54632 11.9887 2.07376C12.5162 2.60121 12.8125 3.31658 12.8125 4.0625V6.875" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M10 13.125C10.6904 13.125 11.25 12.5654 11.25 11.875C11.25 11.1846 10.6904 10.625 10 10.625C9.30964 10.625 8.75 11.1846 8.75 11.875C8.75 12.5654 9.30964 13.125 10 13.125Z" fill="currentColor"></path>
</svg>

After

Width:  |  Height:  |  Size: 932 B

View File

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M7.5 15.5V4a1.5 1.5 0 1 1 3 0v4.5h2a1 1 0 0 1 1 1h2a1 1 0 0 1 1 1H18a1.5 1.5 0 0 1 1.5 1.5v3.099c0 .929-.13 1.854-.385 2.748L17.5 23.5h-9c-1.5-2-5.417-8.673-5.417-8.673a1.2 1.2 0 0 1 1.76-1.605L7.5 15.5zm6-6v2m-3-3.5v3.5m6-1v2"/>
</svg>

Before

Width:  |  Height:  |  Size: 311 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg>

After

Width:  |  Height:  |  Size: 248 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M30.063 7.313c-.813 1.125-1.75 2.125-2.875 2.938v.75c0 1.563-.188 3.125-.688 4.625a15.088 15.088 0 0 1-2.063 4.438c-.875 1.438-2 2.688-3.25 3.813a15.015 15.015 0 0 1-4.625 2.563c-1.813.688-3.75 1-5.75 1-3.25 0-6.188-.875-8.875-2.625.438.063.875.125 1.375.125 2.688 0 5.063-.875 7.188-2.5-1.25 0-2.375-.375-3.375-1.125s-1.688-1.688-2.063-2.875c.438.063.813.125 1.125.125.5 0 1-.063 1.5-.25-1.313-.25-2.438-.938-3.313-1.938a5.673 5.673 0 0 1-1.313-3.688v-.063c.813.438 1.688.688 2.625.688a5.228 5.228 0 0 1-1.875-2c-.5-.875-.688-1.813-.688-2.75 0-1.063.25-2.063.75-2.938 1.438 1.75 3.188 3.188 5.25 4.25s4.313 1.688 6.688 1.813a5.579 5.579 0 0 1 1.5-5.438c1.125-1.125 2.5-1.688 4.125-1.688s3.063.625 4.188 1.813a11.48 11.48 0 0 0 3.688-1.375c-.438 1.375-1.313 2.438-2.563 3.188 1.125-.125 2.188-.438 3.313-.875z"/></svg>
<svg class="icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z"/></svg>

Before

Width:  |  Height:  |  Size: 888 B

After

Width:  |  Height:  |  Size: 752 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M23.5 11.957c0 6.375-5.163 11.544-11.532 11.544C5.599 23.5.5 18.125.5 11.75.5 5.542 5.37.758 11.505.511l.5-.011C18.374.5 23.5 5.582 23.5 11.957zM11.505.511c-6 6.5-6 14.98 0 22.98m1-22.98c6 6.5 6 14.977 0 22.977M2 17.479h20.063m-19.657-12h19.062m-20.968 6h22.938" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10" fill="none"/></svg>

Before

Width:  |  Height:  |  Size: 413 B

View File

@ -1,26 +1,78 @@
<article class="post-card {{post_class}}{{#unless feature_image}} no-image{{/unless}}">
{{!-- This is a partial file used to generate a post "card"
which templates loop over to generate a list of posts. --}}
<article class="post-card {{post_class}}{{#match @custom.feed_layout "Classic"}}{{#is "home"}}{{#has index="0"}} post-card-large{{/has}}{{#has index="1,2"}} dynamic{{/has}}{{/is}}{{/match}}{{#match @custom.feed_layout "Grid"}} keep-ratio{{/match}}{{#match @custom.feed_layout "List"}}{{#is "home, paged"}} post-card-large{{/is}}{{/match}}{{#unless access}} post-access-{{visibility}}{{/unless}}">
{{#if feature_image}}
<a class="post-card-image-link" href="{{url}}">
<div class="post-card-image" style="background-image: url({{feature_image}})"></div>
</a>
<a class="post-card-image-link" href="{{url}}">
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img class="post-card-image"
srcset="{{img_url feature_image size="s"}} 300w,
{{img_url feature_image size="m"}} 600w,
{{img_url feature_image size="l"}} 1000w,
{{img_url feature_image size="xl"}} 2000w"
sizes="(max-width: 1000px) 400px, 800px"
src="{{img_url feature_image size="m"}}"
alt="{{#if feature_image_alt}}{{feature_image_alt}}{{else}}{{title}}{{/if}}"
loading="lazy"
/>
{{#unless access}}
{{^has visibility="public"}}
<div class="post-card-access">
{{> "icons/lock"}}
{{#has visibility="members"}}
Members only
{{else}}
Paid-members only
{{/has}}
</div>
{{/has}}
{{/unless}}
</a>
{{/if}}
<div class="post-card-content">
<a class="post-card-content-link" href="{{url}}">
<header class="post-card-header">
{{#if primary_tag}}
<span class="post-card-tags">{{primary_tag.name}}</span>
{{/if}}
<h2 class="post-card-title">{{title}}</h2>
<div class="post-card-tags">
{{#primary_tag}}
<span class="post-card-primary-tag">{{name}}</span>
{{/primary_tag}}
{{#if featured}}
<span class="post-card-featured">{{> "icons/fire"}} Featured</span>
{{/if}}
</div>
<h2 class="post-card-title">
{{#unless access}}
{{^has visibility="public"}}
{{#unless feature_image}}
{{> "icons/lock"}}
{{/unless}}
{{/has}}
{{/unless}}
{{title}}
</h2>
</header>
<section class="post-card-excerpt">
<p>{{excerpt words="33"}}</p>
</section>
</a>
<footer class="post-card-meta">
{{#if author.profile_image}}
<img class="author-profile-image" src="{{author.profile_image}}" alt="{{author.name}}" />
{{#if excerpt}}
<div class="post-card-excerpt">{{excerpt}}</div>
{{/if}}
</a>
<footer class="post-card-meta">
<time class="post-card-meta-date" datetime="{{date format="YYYY-MM-DD"}}">{{date}}</time>
{{#if reading_time}}
<span class="post-card-meta-length">{{reading_time}}</span>
{{/if}}
{{#if @site.comments_enabled}}
{{comment_count}}
{{/if}}
<span class="post-card-author">{{author}}</span>
</footer>
</div>
</article>

View File

@ -1,29 +0,0 @@
<nav class="site-nav">
<div class="site-nav-left">
{{^is "home"}}
{{#if @blog.logo}}
<a class="site-nav-logo" href="{{@blog.url}}"><img src="{{@blog.logo}}" alt="{{@blog.title}}" /></a>
{{else}}
<a class="site-nav-logo" href="{{@blog.url}}">{{@blog.title}}</a>
{{/if}}
{{/is}}
{{#if @blog.navigation}}
{{navigation}}
{{/if}}
</div>
<div class="site-nav-right">
<div class="social-links">
{{#if @blog.facebook}}
<a class="social-link social-link-fb" href="{{facebook_url @blog.facebook}}" target="_blank">{{> "icons/facebook"}}</a>
{{/if}}
{{#if @blog.twitter}}
<a class="social-link social-link-tw" href="{{twitter_url @blog.twitter}}" target="_blank">{{> "icons/twitter"}}</a>
{{/if}}
</div>
{{#if @labs.subscribers}}
<a class="subscribe-button" href="#subscribe">Subscribe</a>
{{else}}
<a class="rss-button" href="http://cloud.feedly.com/#subscription/feed/{{@blog.url}}/rss/" target="_blank">{{> "icons/rss"}}</a>
{{/if}}
</div>
</nav>

296
post.hbs
View File

@ -1,220 +1,140 @@
{{!< default}}
{{!-- The tag above means: insert everything in this file
into the {body} of the default.hbs template --}}
into the {body} tag of the default.hbs template --}}
<header class="site-header outer">
<div class="inner">
{{> "site-nav"}}
</div>
</header>
{{!-- Everything inside the #post tags pulls data from the post --}}
{{#post}}
{{!-- Everything inside the #post block pulls data from the post --}}
<main id="site-main" class="site-main outer" role="main">
<div class="inner">
<main id="site-main" class="site-main">
<article class="article {{post_class}} {{#match @custom.post_image_style "Full"}}image-full{{else match @custom.post_image_style "=" "Small"}}image-small{{/match}}">
<article class="post-full {{post_class}} {{#unless feature_image}}no-image{{/unless}}">
<header class="article-header gh-canvas">
<header class="post-full-header">
<section class="post-full-meta">
<time class="post-full-meta-date" datetime="{{date format="YYYY-MM-DD"}}">{{date format="D MMMM YYYY"}}</time>
{{#primary_tag}}
<span class="date-divider">/</span> <a href="{{url}}">{{name}}</a>
{{/primary_tag}}
</section>
<h1 class="post-full-title">{{title}}</h1>
</header>
{{#if feature_image}}
<figure class="post-full-image" style="background-image: url({{feature_image}})">
</figure>
<div class="article-tag post-card-tags">
{{#primary_tag}}
<span class="post-card-primary-tag">
<a href="{{url}}">{{name}}</a>
</span>
{{/primary_tag}}
{{#if featured}}
<span class="post-card-featured">{{> "icons/fire"}} Featured</span>
{{/if}}
</div>
<section class="post-full-content">
{{content}}
</section>
<h1 class="article-title">{{title}}</h1>
{{!-- Email subscribe form at the bottom of the page --}}
{{#if @labs.subscribers}}
<section class="subscribe-form">
<h3 class="subscribe-form-title">Subscribe to {{@blog.title}}</h3>
<p>Get the latest posts delivered right to your inbox</p>
{{subscribe_form placeholder="youremail@example.com"}}
</section>
{{/if}}
{{#if custom_excerpt}}
<p class="article-excerpt">{{custom_excerpt}}</p>
{{/if}}
<footer class="post-full-footer">
{{!-- Everything inside the #author tags pulls data from the author --}}
{{#author}}
<div class="article-byline">
<section class="article-byline-content">
<section class="author-card">
<ul class="author-list">
{{#foreach authors}}
<li class="author-list-item">
{{#if profile_image}}
<img class="author-profile-image" src="{{profile_image}}" alt="{{name}}" />
<a href="{{url}}" class="author-avatar">
<img class="author-profile-image" src="{{img_url profile_image size="xs"}}" alt="{{name}}" />
</a>
{{else}}
<a href="{{url}}" class="author-avatar author-profile-image">{{> "icons/avatar"}}</a>
{{/if}}
</li>
{{/foreach}}
</ul>
<div class="article-byline-meta">
<h4 class="author-name">{{authors}}</h4>
<div class="byline-meta-content">
<time class="byline-meta-date" datetime="{{date format="YYYY-MM-DD"}}">{{date}}</time>
{{#if reading_time}}
<span class="byline-reading-time"><span class="bull">&bull;</span> {{reading_time}}</span>
{{/if}}
<section class="author-card-content">
<h4 class="author-card-name"><a href="{{url}}">{{name}}</a></h4>
{{#if bio}}
<p>{{bio}}</p>
{{else}}
<p>Read <a href="{{url}}">more posts</a> by this author.</p>
{{/if}}
</section>
</section>
<div class="post-full-footer-right">
<a class="author-card-button" href="{{url}}">Read More</a>
</div>
</div>
{{/author}}
</footer>
</section>
</div>
{{!--
{{#match @custom.post_image_style "!=" "Hidden"}}
{{#if feature_image}}
<figure class="article-image">
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img
srcset="{{img_url feature_image size="s"}} 300w,
{{img_url feature_image size="m"}} 600w,
{{img_url feature_image size="l"}} 1000w,
{{img_url feature_image size="xl"}} 2000w"
sizes="(min-width: 1400px) 1400px, 92vw"
src="{{img_url feature_image size="xl"}}"
alt="{{#if feature_image_alt}}{{feature_image_alt}}{{else}}{{title}}{{/if}}"
/>
{{#if feature_image_caption}}
<figcaption>{{feature_image_caption}}</figcaption>
{{/if}}
</figure>
{{/if}}
{{/match}}
If you use Disqus comments, just uncomment this block.
The only thing you need to change is "test-apkdzgmqhj" - which
should be replaced with your own Disqus site-id.
</header>
<section class="post-full-comments">
<div id="disqus_thread"></div>
<script>
var disqus_config = function () {
this.page.url = '{{url absolute="true"}}';
this.page.identifier = 'ghost-{{comment_id}}';
};
(function() {
var d = document, s = d.createElement('script');
s.src = 'https://test-apkdzgmqhj.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
</section>
--}}
<section class="gh-content gh-canvas">
{{content}}
</section>
</article>
{{#if comments}}
<section class="article-comments gh-canvas">
{{comments}}
</section>
{{/if}}
</div>
</article>
</main>
{{!-- Links to Previous/Next posts --}}
<aside class="read-next outer">
<div class="inner">
<div class="read-next-feed">
{{#get "posts" filter="tags:{{primary_tag.slug}}+id:-{{id}}" limit="3" as |related_posts|}}
{{#if related_posts}}
<article class="read-next-card"
{{#if ../primary_tag.feature_image}}
style="background-image: url({{../primary_tag.feature_image}})"
{{else}}
{{#if @blog.cover_image}}
style="background-image: url({{@blog.cover_image}})"{{/if}}
{{/if}}
>
<header class="read-next-card-header">
<small class="read-next-card-header-sitetitle">&mdash; {{@blog.title}} &mdash;</small>
{{#../primary_tag}}
<h3 class="read-next-card-header-title"><a href="{{url}}">{{name}}</a></h3>
{{/../primary_tag}}
</header>
<div class="read-next-divider">{{> "icons/infinity"}}</div>
<div class="read-next-card-content">
<ul>
{{#foreach related_posts}}
<li><a href="{{url}}">{{title}}</a></li>
{{/foreach}}
</ul>
</div>
<footer class="read-next-card-footer">
<a href="{{#../primary_tag}}{{url}}{{/../primary_tag}}">{{plural meta.pagination.total empty='No posts' singular='% post' plural='See all % posts'}} →</a>
</footer>
</article>
{{/if}}
{{/get}}
{{!-- If there's a next post, display it using the same markup included from - partials/post-card.hbs --}}
{{#next_post}}
{{> "post-card"}}
{{/next_post}}
{{!-- If there's a previous post, display it using the same markup included from - partials/post-card.hbs --}}
{{#prev_post}}
{{> "post-card"}}
{{/prev_post}}
{{!-- A signup call to action is displayed here, unless viewed as a logged-in member --}}
{{#if @site.members_enabled}}
{{#unless @member}}
{{#unless @site.comments_enabled}}
{{#if access}}
<section class="footer-cta outer">
<div class="inner">
{{#if @custom.email_signup_text}}<h2 class="footer-cta-title">{{@custom.email_signup_text}}</h2>{{/if}}
<a class="footer-cta-button" href="#/portal" data-portal>
<div class="footer-cta-input">Enter your email</div>
<span>Subscribe</span>
</a>
</div>
</div>
</aside>
</section>
{{/if}}
{{/unless}}
{{/unless}}
{{/if}}
{{!-- Floating header which appears on-scroll, included from includes/floating-header.hbs --}}
{{> floating-header}}
{{/post}}
{{!-- Read more links, just above the footer --}}
{{#if @custom.show_recent_posts_footer}}
{{!-- The {#get} helper below fetches some of the latest posts here
so that people have something else to read when they finish this one.
{{!-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs --}}
{{#contentFor "scripts"}}
<script>
This query gets the latest 3 posts on the site, but adds a filter to
exclude the post we're currently on from being included. --}}
{{#get "posts" filter="id:-{{id}}" limit="3" as |more_posts|}}
// NOTE: Scroll performance is poor in Safari
// - this appears to be due to the events firing much more slowly in Safari.
// Dropping the scroll event and using only a raf loop results in smoother
// scrolling but continuous processing even when not scrolling
$(document).ready(function () {
// Start fitVids
var $postContent = $(".post-full-content");
$postContent.fitVids();
// End fitVids
{{#if more_posts}}
<aside class="read-more-wrap outer">
<div class="read-more inner">
{{#foreach more_posts}}
{{> "post-card"}}
{{/foreach}}
</div>
</aside>
{{/if}}
var progressBar = document.querySelector('progress');
var header = document.querySelector('.floating-header');
var title = document.querySelector('.post-full-title');
{{/get}}
{{/if}}
var lastScrollY = window.scrollY;
var lastWindowHeight = window.innerHeight;
var lastDocumentHeight = $(document).height();
var ticking = false;
function onScroll() {
lastScrollY = window.scrollY;
requestTick();
}
function onResize() {
lastWindowHeight = window.innerHeight;
lastDocumentHeight = $(document).height();
requestTick();
}
function requestTick() {
if (!ticking) {
requestAnimationFrame(update);
}
ticking = true;
}
function update() {
var trigger = title.getBoundingClientRect().top + window.scrollY;
var triggerOffset = title.offsetHeight + 35;
var progressMax = lastDocumentHeight - lastWindowHeight;
// show/hide floating header
if (lastScrollY >= trigger + triggerOffset) {
header.classList.add('floating-active');
} else {
header.classList.remove('floating-active');
}
progressBar.setAttribute('max', progressMax);
progressBar.setAttribute('value', lastScrollY);
ticking = false;
}
window.addEventListener('scroll', onScroll, {passive: true});
window.addEventListener('resize', onResize, false);
update();
});
</script>
{{/contentFor}}
{{/post}}

76
tag.hbs
View File

@ -1,33 +1,55 @@
{{!< default}}
{{!-- The tag above means - insert everything in this file into the {body} of the default.hbs template --}}
{{!-- The big featured header, it uses blog cover image as a BG if available --}}
{{#tag}}
<header class="site-header outer {{#if feature_image}}" style="background-image: url({{feature_image}}){{else}}no-cover{{/if}}">
<div class="inner">
{{> "site-nav"}}
<div class="site-header-content">
<h1 class="site-title">{{name}}</h1>
<h2 class="site-description">
{{#if description}}
{{description}}
{{else}}
A collection of {{plural ../pagination.total empty='posts' singular='% post' plural='% posts'}}
{{/if}}
</h2>
</div>
</div>
</header>
{{/tag}}
<main id="site-main" class="site-main outer">
<div class="inner posts">
<div class="post-feed">
{{#tag}}
<section class="post-card post-card-large">
{{#if feature_image}}
<div class="post-card-image-link">
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img class="post-card-image"
srcset="{{img_url feature_image size="s"}} 300w,
{{img_url feature_image size="m"}} 600w,
{{img_url feature_image size="l"}} 1000w,
{{img_url feature_image size="xl"}} 2000w"
sizes="(max-width: 1000px) 400px, 800px"
src="{{img_url feature_image size="m"}}"
alt="{{title}}"
/>
</div>
{{/if}}
<div class="post-card-content">
<div class="post-card-content-link">
<header class="post-card-header">
<h2 class="post-card-title">{{name}}</h2>
</header>
<div class="post-card-excerpt">
{{#if description}}
{{description}}
{{else}}
A collection of {{plural ../pagination.total empty='zero posts' singular='% post' plural='% posts'}}
{{/if}}
</div>
</div>
</div>
</section>
{{/tag}}
{{#foreach posts}}
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
{{> "post-card"}}
{{/foreach}}
{{!-- The main content area --}}
<main id="site-main" class="site-main outer" role="main">
<div class="inner">
<div class="post-feed">
{{#foreach posts}}
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
{{> "post-card"}}
{{/foreach}}
</div>
</div>
{{pagination}}
</div>
</main>

5638
yarn.lock Normal file

File diff suppressed because it is too large Load Diff