{{title}}
8 | 9 | {{#if custom_excerpt}} 10 |{{custom_excerpt}}
11 | {{/if}} 12 | 13 | {{#if feature_image}} 14 |├── assets
├── built
│ ├── vars.css
│ ├── vars.css.map
│ ├── infinitescroll.js
│ ├── jquery.fitvids.js
│ ├── jquery.fitvids.js.map
│ ├── infinitescroll.js.map
│ ├── screen.css
│ └── screen.css.map
├── screenshot-desktop.jpg
├── css
│ ├── vars.css
│ ├── ghost
│ │ ├── readmore.css
│ │ ├── footer.css
│ │ ├── errors.css
│ │ ├── members.css
│ │ ├── content.css
│ │ └── header.css
│ ├── components
│ │ ├── buttons.css
│ │ ├── forms.css
│ │ └── global.css
│ └── screen.css
└── js
│ ├── jquery.fitvids.js
│ └── infinitescroll.js
├── renovate.json
├── partials
├── icons
│ ├── arrow-left.hbs
│ ├── arrow-right.hbs
│ ├── rss.hbs
│ ├── avatar.hbs
│ ├── facebook.hbs
│ ├── twitter.hbs
│ └── loader.hbs
└── card.hbs
├── .gitignore
├── .editorconfig
├── .github
└── workflows
│ ├── deploy-theme.yml
│ └── test.yml
├── index.hbs
├── tag.hbs
├── page.hbs
├── LICENSE
├── error.hbs
├── author.hbs
├── post.hbs
├── README.md
├── gulpfile.js
├── package.json
└── default.hbs
/assets/built/vars.css:
--------------------------------------------------------------------------------
1 |
2 | /*# sourceMappingURL=vars.css.map */
--------------------------------------------------------------------------------
/assets/built/vars.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"vars.css"}
--------------------------------------------------------------------------------
/assets/screenshot-desktop.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TryGhost/Tribeca/HEAD/assets/screenshot-desktop.jpg
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "@tryghost:theme"
4 | ],
5 | "node": {
6 | "supportPolicy": ["lts_latest"]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/partials/icons/arrow-left.hbs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/partials/icons/arrow-right.hbs:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/partials/icons/rss.hbs:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | b-cov
2 | *.seed
3 | *.log
4 | *.csv
5 | *.dat
6 | *.out
7 | *.pid
8 | *.gz
9 |
10 | pids
11 | logs
12 | results
13 |
14 | npm-debug.log
15 | node_modules
16 | package-lock.json
17 |
18 | .idea/*
19 | *.iml
20 | projectFilesBackup
21 |
22 | .DS_Store
23 |
24 | dist/
25 |
--------------------------------------------------------------------------------
/partials/icons/avatar.hbs:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 |
3 | root = true
4 |
5 | [*]
6 | charset = utf-8
7 | indent_style = space
8 | indent_size = 4
9 | end_of_line = lf
10 | insert_final_newline = true
11 | trim_trailing_whitespace = true
12 |
13 | [*.hbs]
14 | insert_final_newline = false
15 |
16 | [*.md]
17 | trim_trailing_whitespace = false
18 |
--------------------------------------------------------------------------------
/partials/icons/facebook.hbs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.github/workflows/deploy-theme.yml:
--------------------------------------------------------------------------------
1 | name: Deploy Theme
2 | on:
3 | push:
4 | branches:
5 | - main
6 | jobs:
7 | deploy:
8 | runs-on: ubuntu-18.04
9 | steps:
10 | - uses: actions/checkout@master
11 | - name: Deploy Ghost Theme
12 | uses: TryGhost/action-deploy-theme@v1.6.3
13 | with:
14 | api-url: ${{ secrets.GHOST_ADMIN_API_URL }}
15 | api-key: ${{ secrets.GHOST_ADMIN_API_KEY }}
16 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: Test
2 | on:
3 | pull_request:
4 | push:
5 | branches:
6 | - main
7 | - 'renovate/*'
8 | jobs:
9 | build:
10 | runs-on: ubuntu-18.04
11 | if: github.event_name == 'push' || (github.event_name == 'pull_request' && !startsWith(github.head_ref, 'renovate/'))
12 | strategy:
13 | matrix:
14 | node: [ '10' ]
15 | name: Node ${{ matrix.node }}
16 | steps:
17 | - uses: actions/checkout@v3
18 | - uses: actions/setup-node@v3
19 | with:
20 | node-version: ${{ matrix.node }}
21 | - run: yarn
22 | - run: yarn test:ci
23 |
--------------------------------------------------------------------------------
/index.hbs:
--------------------------------------------------------------------------------
1 | {{!< default}}
2 |
3 |
6 | {{/if}}
7 |
{{@site.description}}
9 |
11 | {{#if description}} 12 | {{description}} 13 | {{else}} 14 | A collection of {{plural ../pagination.total empty='posts' singular='% post' plural='% posts'}} 15 | {{/if}} 16 |
17 |{{custom_excerpt}}
11 | {{/if}} 12 | 13 | {{#if feature_image}} 14 |{{excerpt}}
22 | Read more 23 |{{message}}
11 | 12 | 13 | {{#if errorDetails}} 14 |{{bio}}
15 | {{/if}} 16 | 17 | 30 |x
',e.appendChild(i.childNodes[1])),t&&o.extend(r,t),this.each(function(){var t=['iframe[src*="player.vimeo.com"]','iframe[src*="youtube.com"]','iframe[src*="youtube-nocookie.com"]','iframe[src*="kickstarter.com"][src*="video.html"]',"object","embed"];r.customSelector&&t.push(r.customSelector);var d=".fitvidsignore";r.ignore&&(d=d+", "+r.ignore);t=o(this).find(t.join(","));(t=(t=t.not("object object")).not(d)).each(function(){var t,e,i=o(this);0{{custom_excerpt}}
13 | {{/if}} 14 | 15 | {{#if feature_image}} 16 |x
'; 29 | head.appendChild(div.childNodes[1]); 30 | } 31 | 32 | if ( options ) { 33 | $.extend( settings, options ); 34 | } 35 | 36 | return this.each(function(){ 37 | var selectors = [ 38 | 'iframe[src*="player.vimeo.com"]', 39 | 'iframe[src*="youtube.com"]', 40 | 'iframe[src*="youtube-nocookie.com"]', 41 | 'iframe[src*="kickstarter.com"][src*="video.html"]', 42 | 'object', 43 | 'embed' 44 | ]; 45 | 46 | if (settings.customSelector) { 47 | selectors.push(settings.customSelector); 48 | } 49 | 50 | var ignoreList = '.fitvidsignore'; 51 | 52 | if(settings.ignore) { 53 | ignoreList = ignoreList + ', ' + settings.ignore; 54 | } 55 | 56 | var $allVideos = $(this).find(selectors.join(',')); 57 | $allVideos = $allVideos.not('object object'); // SwfObj conflict patch 58 | $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video. 59 | 60 | $allVideos.each(function(){ 61 | var $this = $(this); 62 | if($this.parents(ignoreList).length > 0) { 63 | return; // Disable FitVids on this video. 64 | } 65 | if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } 66 | if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width')))) 67 | { 68 | $this.attr('height', 9); 69 | $this.attr('width', 16); 70 | } 71 | var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(), 72 | width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(), 73 | aspectRatio = height / width; 74 | if(!$this.attr('name')){ 75 | var videoName = 'fitvid' + $.fn.fitVids._count; 76 | $this.attr('name', videoName); 77 | $.fn.fitVids._count++; 78 | } 79 | $this.wrap('x
';\n head.appendChild(div.childNodes[1]);\n }\n\n if ( options ) {\n $.extend( settings, options );\n }\n\n return this.each(function(){\n var selectors = [\n 'iframe[src*=\"player.vimeo.com\"]',\n 'iframe[src*=\"youtube.com\"]',\n 'iframe[src*=\"youtube-nocookie.com\"]',\n 'iframe[src*=\"kickstarter.com\"][src*=\"video.html\"]',\n 'object',\n 'embed'\n ];\n\n if (settings.customSelector) {\n selectors.push(settings.customSelector);\n }\n\n var ignoreList = '.fitvidsignore';\n\n if(settings.ignore) {\n ignoreList = ignoreList + ', ' + settings.ignore;\n }\n\n var $allVideos = $(this).find(selectors.join(','));\n $allVideos = $allVideos.not('object object'); // SwfObj conflict patch\n $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.\n\n $allVideos.each(function(){\n var $this = $(this);\n if($this.parents(ignoreList).length > 0) {\n return; // Disable FitVids on this video.\n }\n if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }\n if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))\n {\n $this.attr('height', 9);\n $this.attr('width', 16);\n }\n var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),\n width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),\n aspectRatio = height / width;\n if(!$this.attr('name')){\n var videoName = 'fitvid' + $.fn.fitVids._count;\n $this.attr('name', videoName);\n $.fn.fitVids._count++;\n }\n $this.wrap('