├── src
├── img-originals
│ ├── .gitignore
│ ├── article-832w
│ │ └── .gitignore
│ ├── showcase-teaser-318w212h
│ │ ├── .gitignore
│ │ └── 76.png
│ ├── showcase-teaser-450w300h
│ │ └── .gitignore
│ └── 76.png
├── templates
│ ├── pages
│ │ ├── .gitignore
│ │ ├── version.txp
│ │ ├── sitemap.txp
│ │ ├── error_default.txp
│ │ ├── sticky_only.txp
│ │ ├── contact.txp
│ │ ├── standard.txp
│ │ ├── blog.txp
│ │ └── showcase.txp
│ ├── forms
│ │ ├── file
│ │ │ ├── .gitignore
│ │ │ └── files.txp
│ │ ├── link
│ │ │ ├── .gitignore
│ │ │ └── plainlinks.txp
│ │ ├── misc
│ │ │ ├── .gitignore
│ │ │ ├── email_body.txp
│ │ │ ├── ads_webinformer.txp
│ │ │ ├── images_type.txp
│ │ │ ├── sidebar.txp
│ │ │ ├── head.txp
│ │ │ ├── pagination.txp
│ │ │ ├── language_table.txp
│ │ │ ├── body_crumbs.txp
│ │ │ ├── body_header.txp
│ │ │ ├── body_footer.txp
│ │ │ └── images.txp
│ │ ├── article
│ │ │ ├── .gitignore
│ │ │ ├── default.txp
│ │ │ ├── article_listing.txp
│ │ │ ├── blog.txp
│ │ │ └── article_listing_blog.txp
│ │ ├── comment
│ │ │ ├── .gitignore
│ │ │ ├── comment_form.txp
│ │ │ ├── comments.txp
│ │ │ └── comments_display.txp
│ │ └── shortcodes
│ │ │ ├── .gitignore
│ │ │ ├── media_image.txp
│ │ │ ├── media_file.txp
│ │ │ └── media_video.txp
│ ├── sections
│ │ ├── .gitignore
│ │ ├── sitemap.json
│ │ ├── version.json
│ │ ├── contact.json
│ │ ├── weblog.json
│ │ ├── showcase.json
│ │ ├── default.json
│ │ ├── start.json
│ │ ├── license.json
│ │ ├── privacy.json
│ │ └── about.json
│ ├── styles
│ │ ├── .gitignore
│ │ └── default.css
│ └── manifest.json
├── assets
│ ├── sass
│ │ ├── setup
│ │ │ ├── _index.scss
│ │ │ ├── _settings.scss
│ │ │ └── _mixins.scss
│ │ ├── modules
│ │ │ ├── _http-errors.scss
│ │ │ ├── _animation-keyframes.scss
│ │ │ ├── _disclosure.scss
│ │ │ ├── _index.scss
│ │ │ ├── _breadcrumbs.scss
│ │ │ ├── _misc.scss
│ │ │ ├── _accessibility.scss
│ │ │ ├── _fonts.scss
│ │ │ ├── _embedded-content.scss
│ │ │ ├── _pagination.scss
│ │ │ ├── _cards.scss
│ │ │ ├── _alerts.scss
│ │ │ ├── _blog.scss
│ │ │ ├── _links.scss
│ │ │ ├── _social.scss
│ │ │ ├── _tables.scss
│ │ │ ├── _progress.scss
│ │ │ ├── _code-highlighting.scss
│ │ │ ├── _buttons.scss
│ │ │ ├── _navigation.scss
│ │ │ ├── _forms.scss
│ │ │ ├── _typography.scss
│ │ │ └── _lists.scss
│ │ ├── print.scss
│ │ ├── designpatterns.scss
│ │ └── screen.scss
│ ├── img
│ │ ├── 160x160.png
│ │ ├── 480x240.png
│ │ ├── 832x554.png
│ │ ├── carver.png
│ │ ├── error.jxl
│ │ ├── error.png
│ │ ├── error.webp
│ │ ├── carver@2x.png
│ │ ├── error@2x.jxl
│ │ ├── error@2x.png
│ │ ├── error@2x.webp
│ │ ├── index-docs.jxl
│ │ ├── index-docs.png
│ │ ├── index-docs.webp
│ │ ├── index-themes.jxl
│ │ ├── index-themes.png
│ │ ├── index-docs@2x.jxl
│ │ ├── index-docs@2x.png
│ │ ├── index-docs@2x.webp
│ │ ├── index-features.jxl
│ │ ├── index-features.png
│ │ ├── index-plugins.jxl
│ │ ├── index-plugins.png
│ │ ├── index-showcase.png
│ │ ├── readme-footer.jpg
│ │ ├── readme-footer.png
│ │ ├── index-animation.png
│ │ ├── index-blog-header.jxl
│ │ ├── index-blog-header.png
│ │ ├── index-features.webp
│ │ ├── index-features@2x.jxl
│ │ ├── index-features@2x.png
│ │ ├── index-plugins@2x.jxl
│ │ ├── index-plugins@2x.png
│ │ ├── index-showcase@2x.png
│ │ ├── index-themes@2x.jxl
│ │ ├── index-themes@2x.png
│ │ ├── ad-300x250-fallback.png
│ │ ├── index-blog-header.webp
│ │ ├── index-device-screen.jxl
│ │ ├── index-device-screen.png
│ │ ├── index-features@2x.webp
│ │ ├── ad-300x250-fallback@2x.png
│ │ ├── ad-300x250-placeholder.png
│ │ ├── dark-index-blog-header.jxl
│ │ ├── dark-index-blog-header.png
│ │ ├── digitalocean-300x250.avif
│ │ ├── digitalocean-300x250.png
│ │ ├── digitalocean-300x250.webp
│ │ ├── index-blog-header@2x.jxl
│ │ ├── index-blog-header@2x.png
│ │ ├── index-blog-header@2x.webp
│ │ ├── index-device-screens.jxl
│ │ ├── index-device-screens.png
│ │ ├── index-device-screens.webp
│ │ ├── index-plugins-showcase.png
│ │ ├── index-themes-showcase.png
│ │ ├── readme-device-screens.jpg
│ │ ├── readme-device-screens.png
│ │ ├── dark-ad-300x250-fallback.png
│ │ ├── dark-index-blog-header.webp
│ │ ├── dark-index-device-screen.jxl
│ │ ├── dark-index-device-screen.png
│ │ ├── digitalocean-300x250@2x.avif
│ │ ├── digitalocean-300x250@2x.png
│ │ ├── digitalocean-300x250@2x.webp
│ │ ├── index-animation-fallback.jxl
│ │ ├── index-animation-fallback.png
│ │ ├── index-device-screens@2x.jxl
│ │ ├── index-device-screens@2x.png
│ │ ├── index-device-screens@2x.webp
│ │ ├── index-themes-showcase@2x.png
│ │ ├── ad-300x250-placeholder@2x.png
│ │ ├── dark-ad-300x250-fallback@2x.png
│ │ ├── dark-ad-300x250-placeholder.png
│ │ ├── dark-index-blog-header@2x.jxl
│ │ ├── dark-index-blog-header@2x.png
│ │ ├── dark-index-blog-header@2x.webp
│ │ ├── dark-index-device-screens.jxl
│ │ ├── dark-index-device-screens.png
│ │ ├── dark-index-device-screens.webp
│ │ ├── index-animation-fallback.avif
│ │ ├── index-animation-fallback.webp
│ │ ├── index-plugins-showcase@2x.png
│ │ ├── dark-index-device-screens@2x.jxl
│ │ ├── dark-index-device-screens@2x.png
│ │ ├── dark-index-device-screens@2x.webp
│ │ └── dark-ad-300x250-placeholder@2x.png
│ ├── fonts
│ │ ├── pt-serif-v18-latin-700.woff2
│ │ ├── pt-serif-v18-latin-italic.woff2
│ │ ├── pt-serif-v18-latin-700italic.woff2
│ │ ├── pt-serif-v18-latin-regular.woff2
│ │ └── License.txt
│ └── js
│ │ ├── detect.js
│ │ └── main.js
└── docs
│ └── textpattern-htaccess.txt
├── public
├── themes
│ └── .htaccess
├── robots.txt
├── .gitignore
├── assets
│ └── .htaccess
├── site.webmanifest
└── humans.txt
├── .github
├── PULL_REQUEST_TEMPLATE.md
├── dependabot.yml
├── ISSUE_TEMPLATE.md
└── CODE_OF_CONDUCT.md
├── .gitignore
├── .editorconfig
├── package.json
└── README.md
/src/img-originals/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/templates/pages/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/templates/forms/file/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/templates/forms/link/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/templates/forms/misc/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/templates/sections/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/templates/styles/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/templates/forms/article/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/templates/forms/comment/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/img-originals/article-832w/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/templates/forms/shortcodes/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/templates/styles/default.css:
--------------------------------------------------------------------------------
1 | /* Unused */
2 |
--------------------------------------------------------------------------------
/src/img-originals/showcase-teaser-318w212h/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/img-originals/showcase-teaser-450w300h/.gitignore:
--------------------------------------------------------------------------------
1 | /_*
--------------------------------------------------------------------------------
/src/templates/forms/comment/comment_form.txp:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/templates/forms/comment/comments.txp:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/templates/forms/comment/comments_display.txp:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/sass/setup/_index.scss:
--------------------------------------------------------------------------------
1 | @forward "settings";
2 | @forward "mixins";
3 |
--------------------------------------------------------------------------------
/public/themes/.htaccess:
--------------------------------------------------------------------------------
1 | Options -Indexes
2 |
3 |
4 | RedirectMatch 403 .*
5 |
--------------------------------------------------------------------------------
/src/assets/img/160x160.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/160x160.png
--------------------------------------------------------------------------------
/src/assets/img/480x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/480x240.png
--------------------------------------------------------------------------------
/src/assets/img/832x554.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/832x554.png
--------------------------------------------------------------------------------
/src/assets/img/carver.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/carver.png
--------------------------------------------------------------------------------
/src/assets/img/error.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/error.jxl
--------------------------------------------------------------------------------
/src/assets/img/error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/error.png
--------------------------------------------------------------------------------
/src/assets/img/error.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/error.webp
--------------------------------------------------------------------------------
/src/img-originals/76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/img-originals/76.png
--------------------------------------------------------------------------------
/src/assets/img/carver@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/carver@2x.png
--------------------------------------------------------------------------------
/src/assets/img/error@2x.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/error@2x.jxl
--------------------------------------------------------------------------------
/src/assets/img/error@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/error@2x.png
--------------------------------------------------------------------------------
/src/assets/img/error@2x.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/error@2x.webp
--------------------------------------------------------------------------------
/src/assets/img/index-docs.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-docs.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-docs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-docs.png
--------------------------------------------------------------------------------
/src/assets/img/index-docs.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-docs.webp
--------------------------------------------------------------------------------
/src/assets/img/index-themes.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-themes.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-themes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-themes.png
--------------------------------------------------------------------------------
/src/assets/img/index-docs@2x.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-docs@2x.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-docs@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-docs@2x.png
--------------------------------------------------------------------------------
/src/assets/img/index-docs@2x.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-docs@2x.webp
--------------------------------------------------------------------------------
/src/assets/img/index-features.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-features.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-features.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-features.png
--------------------------------------------------------------------------------
/src/assets/img/index-plugins.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-plugins.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-plugins.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-plugins.png
--------------------------------------------------------------------------------
/src/assets/img/index-showcase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-showcase.png
--------------------------------------------------------------------------------
/src/assets/img/readme-footer.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/readme-footer.jpg
--------------------------------------------------------------------------------
/src/assets/img/readme-footer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/readme-footer.png
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /file_download/
3 | Disallow: /textpattern/
4 | Sitemap: https://textpattern.com/sitemap.xml
5 |
--------------------------------------------------------------------------------
/src/assets/img/index-animation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-animation.png
--------------------------------------------------------------------------------
/src/assets/img/index-blog-header.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-blog-header.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-blog-header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-blog-header.png
--------------------------------------------------------------------------------
/src/assets/img/index-features.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-features.webp
--------------------------------------------------------------------------------
/src/assets/img/index-features@2x.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-features@2x.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-features@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-features@2x.png
--------------------------------------------------------------------------------
/src/assets/img/index-plugins@2x.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-plugins@2x.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-plugins@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-plugins@2x.png
--------------------------------------------------------------------------------
/src/assets/img/index-showcase@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-showcase@2x.png
--------------------------------------------------------------------------------
/src/assets/img/index-themes@2x.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-themes@2x.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-themes@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-themes@2x.png
--------------------------------------------------------------------------------
/src/assets/img/ad-300x250-fallback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/ad-300x250-fallback.png
--------------------------------------------------------------------------------
/src/assets/img/index-blog-header.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-blog-header.webp
--------------------------------------------------------------------------------
/src/assets/img/index-device-screen.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-device-screen.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-device-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-device-screen.png
--------------------------------------------------------------------------------
/src/assets/img/index-features@2x.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-features@2x.webp
--------------------------------------------------------------------------------
/src/assets/img/ad-300x250-fallback@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/ad-300x250-fallback@2x.png
--------------------------------------------------------------------------------
/src/assets/img/ad-300x250-placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/ad-300x250-placeholder.png
--------------------------------------------------------------------------------
/src/assets/img/dark-index-blog-header.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-blog-header.jxl
--------------------------------------------------------------------------------
/src/assets/img/dark-index-blog-header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-blog-header.png
--------------------------------------------------------------------------------
/src/assets/img/digitalocean-300x250.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/digitalocean-300x250.avif
--------------------------------------------------------------------------------
/src/assets/img/digitalocean-300x250.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/digitalocean-300x250.png
--------------------------------------------------------------------------------
/src/assets/img/digitalocean-300x250.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/digitalocean-300x250.webp
--------------------------------------------------------------------------------
/src/assets/img/index-blog-header@2x.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-blog-header@2x.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-blog-header@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-blog-header@2x.png
--------------------------------------------------------------------------------
/src/assets/img/index-blog-header@2x.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-blog-header@2x.webp
--------------------------------------------------------------------------------
/src/assets/img/index-device-screens.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-device-screens.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-device-screens.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-device-screens.png
--------------------------------------------------------------------------------
/src/assets/img/index-device-screens.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-device-screens.webp
--------------------------------------------------------------------------------
/src/assets/img/index-plugins-showcase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-plugins-showcase.png
--------------------------------------------------------------------------------
/src/assets/img/index-themes-showcase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-themes-showcase.png
--------------------------------------------------------------------------------
/src/assets/img/readme-device-screens.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/readme-device-screens.jpg
--------------------------------------------------------------------------------
/src/assets/img/readme-device-screens.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/readme-device-screens.png
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | Changes proposed in this pull request:
2 |
3 | - {Please write here}
4 | - {Please write here}
5 | - {Please write here}
6 |
--------------------------------------------------------------------------------
/src/assets/img/dark-ad-300x250-fallback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-ad-300x250-fallback.png
--------------------------------------------------------------------------------
/src/assets/img/dark-index-blog-header.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-blog-header.webp
--------------------------------------------------------------------------------
/src/assets/img/dark-index-device-screen.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-device-screen.jxl
--------------------------------------------------------------------------------
/src/assets/img/dark-index-device-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-device-screen.png
--------------------------------------------------------------------------------
/src/assets/img/digitalocean-300x250@2x.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/digitalocean-300x250@2x.avif
--------------------------------------------------------------------------------
/src/assets/img/digitalocean-300x250@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/digitalocean-300x250@2x.png
--------------------------------------------------------------------------------
/src/assets/img/digitalocean-300x250@2x.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/digitalocean-300x250@2x.webp
--------------------------------------------------------------------------------
/src/assets/img/index-animation-fallback.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-animation-fallback.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-animation-fallback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-animation-fallback.png
--------------------------------------------------------------------------------
/src/assets/img/index-device-screens@2x.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-device-screens@2x.jxl
--------------------------------------------------------------------------------
/src/assets/img/index-device-screens@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-device-screens@2x.png
--------------------------------------------------------------------------------
/src/assets/img/index-device-screens@2x.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-device-screens@2x.webp
--------------------------------------------------------------------------------
/src/assets/img/index-themes-showcase@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-themes-showcase@2x.png
--------------------------------------------------------------------------------
/src/assets/fonts/pt-serif-v18-latin-700.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/fonts/pt-serif-v18-latin-700.woff2
--------------------------------------------------------------------------------
/src/assets/img/ad-300x250-placeholder@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/ad-300x250-placeholder@2x.png
--------------------------------------------------------------------------------
/src/assets/img/dark-ad-300x250-fallback@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-ad-300x250-fallback@2x.png
--------------------------------------------------------------------------------
/src/assets/img/dark-ad-300x250-placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-ad-300x250-placeholder.png
--------------------------------------------------------------------------------
/src/assets/img/dark-index-blog-header@2x.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-blog-header@2x.jxl
--------------------------------------------------------------------------------
/src/assets/img/dark-index-blog-header@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-blog-header@2x.png
--------------------------------------------------------------------------------
/src/assets/img/dark-index-blog-header@2x.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-blog-header@2x.webp
--------------------------------------------------------------------------------
/src/assets/img/dark-index-device-screens.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-device-screens.jxl
--------------------------------------------------------------------------------
/src/assets/img/dark-index-device-screens.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-device-screens.png
--------------------------------------------------------------------------------
/src/assets/img/dark-index-device-screens.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-device-screens.webp
--------------------------------------------------------------------------------
/src/assets/img/index-animation-fallback.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-animation-fallback.avif
--------------------------------------------------------------------------------
/src/assets/img/index-animation-fallback.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-animation-fallback.webp
--------------------------------------------------------------------------------
/src/assets/img/index-plugins-showcase@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/index-plugins-showcase@2x.png
--------------------------------------------------------------------------------
/src/templates/forms/shortcodes/media_image.txp:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/assets/fonts/pt-serif-v18-latin-italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/fonts/pt-serif-v18-latin-italic.woff2
--------------------------------------------------------------------------------
/src/assets/img/dark-index-device-screens@2x.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-device-screens@2x.jxl
--------------------------------------------------------------------------------
/src/assets/img/dark-index-device-screens@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-device-screens@2x.png
--------------------------------------------------------------------------------
/src/assets/img/dark-index-device-screens@2x.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-index-device-screens@2x.webp
--------------------------------------------------------------------------------
/src/assets/fonts/pt-serif-v18-latin-700italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/fonts/pt-serif-v18-latin-700italic.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/pt-serif-v18-latin-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/fonts/pt-serif-v18-latin-regular.woff2
--------------------------------------------------------------------------------
/src/assets/img/dark-ad-300x250-placeholder@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/assets/img/dark-ad-300x250-placeholder@2x.png
--------------------------------------------------------------------------------
/src/img-originals/showcase-teaser-318w212h/76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/textpattern/textpattern-com-website/HEAD/src/img-originals/showcase-teaser-318w212h/76.png
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: npm
4 | directory: "/"
5 | schedule:
6 | interval: daily
7 | open-pull-requests-limit: 10
8 |
--------------------------------------------------------------------------------
/src/templates/forms/link/plainlinks.txp:
--------------------------------------------------------------------------------
1 |
Donate using PayPal
2 |
--------------------------------------------------------------------------------
/public/.gitignore:
--------------------------------------------------------------------------------
1 | /.htaccess
2 | /assets/*/
3 | /css.php
4 | /design-patterns.html
5 | /files
6 | /images
7 | /img
8 | /index.php
9 | /mockups
10 | /textpattern
11 | /themes/*/
12 | /vendor
13 | /video
14 | /*.ico
15 | /*.png
16 | /*.svg
17 |
--------------------------------------------------------------------------------
/src/templates/sections/sitemap.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sitemap",
3 | "title": "Sitemap",
4 | "page": "sitemap",
5 | "css": "default",
6 | "is_default": false,
7 | "in_rss": false,
8 | "on_frontpage": false,
9 | "searchable": false
10 | }
11 |
--------------------------------------------------------------------------------
/src/templates/sections/version.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "version",
3 | "title": "Version",
4 | "page": "version",
5 | "css": "default",
6 | "is_default": false,
7 | "in_rss": false,
8 | "on_frontpage": false,
9 | "searchable": false
10 | }
11 |
--------------------------------------------------------------------------------
/src/docs/textpattern-htaccess.txt:
--------------------------------------------------------------------------------
1 |
2 | Header set Content-Security-Policy "default-src 'self'; font-src 'self'; img-src 'self' data: * https://*; media-src 'self' * https://*; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'"
3 |
4 |
--------------------------------------------------------------------------------
/src/templates/forms/shortcodes/media_file.txp:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/templates/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "title": "Textpattern.com",
3 | "txp-type": "textpattern-theme",
4 | "version": "@@version",
5 | "description": "Textpattern.com site theme.",
6 | "author": "Phil Wareham",
7 | "author_uri": "https://github.com/textpattern/textpattern-com-website"
8 | }
9 |
--------------------------------------------------------------------------------
/src/assets/sass/modules/_http-errors.scss:
--------------------------------------------------------------------------------
1 | @use "../setup";
2 |
3 | /* HTTP error pages
4 | ========================================================================== */
5 |
6 | .http-status-code {
7 | font-size: 3em;
8 | }
9 |
10 | .http-status-description {
11 | display: inline-block;
12 | }
13 |
--------------------------------------------------------------------------------
/src/templates/sections/contact.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "contact",
3 | "title": "Contact",
4 | "description": "Use this online enquiry form to contact the Textpattern Development Team.",
5 | "page": "contact",
6 | "css": "default",
7 | "is_default": false,
8 | "in_rss": false,
9 | "on_frontpage": false,
10 | "searchable": false
11 | }
12 |
--------------------------------------------------------------------------------
/src/templates/forms/misc/email_body.txp:
--------------------------------------------------------------------------------
1 | Message received via the Textpattern.com website
2 | ------------------------------------------------
3 |
4 | Name:
5 | Website:
6 |
7 | Message:
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # OS generated files #
2 | ######################
3 | ._*
4 | .DS_Store
5 | .DS_Store?
6 | .nova
7 | .Spotlight-V100
8 | .Trashes
9 | .vscode
10 | Icon?
11 | ehthumbs.db
12 | Thumbs.db
13 |
14 | # Development files #
15 | ######################
16 | /composer.lock
17 | /node_modules
18 | /package-lock.json
19 | /npm-debug.log
20 | /yarn.lock
21 | /yarn-error.log
22 |
--------------------------------------------------------------------------------
/src/templates/sections/weblog.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "weblog",
3 | "title": "Blog",
4 | "description": "Latest blogs from Team Textpattern and guests; Textpattern news and other tidbits of info that we find of interest.",
5 | "page": "blog",
6 | "css": "default",
7 | "is_default": true,
8 | "in_rss": true,
9 | "on_frontpage": true,
10 | "searchable": true
11 | }
12 |
--------------------------------------------------------------------------------
/public/assets/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | Header append Cache-Control "public"
3 |
4 |
5 |
6 | ExpiresActive On
7 | ExpiresDefault "access plus 1 year"
8 |
9 |
10 |
11 | RewriteEngine On
12 | RewriteRule ^(js|css)/([a-z0-9]+)\.([0-9]+)\.(js|css)$ $1/$2.$4 [L]
13 |
14 |
--------------------------------------------------------------------------------
/src/templates/sections/showcase.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "showcase",
3 | "title": "Site showcase",
4 | "description": "Feast your eyes on some of the awesome websites powered by Textpattern CMS in our site showcase section.",
5 | "page": "showcase",
6 | "css": "default",
7 | "is_default": false,
8 | "in_rss": true,
9 | "on_frontpage": false,
10 | "searchable": true
11 | }
12 |
--------------------------------------------------------------------------------
/src/templates/sections/default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "default",
3 | "title": "Default",
4 | "description": "Textpattern CMS is a free, open source content management system with a browser-based interface in over 50 languages.",
5 | "page": "default",
6 | "css": "default",
7 | "is_default": false,
8 | "in_rss": false,
9 | "on_frontpage": true,
10 | "searchable": false
11 | }
12 |
--------------------------------------------------------------------------------
/src/templates/sections/start.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "start",
3 | "title": "Get started",
4 | "description": "Getting started with Textpattern CMS. How to install, upgrade and get involved with the content management system.",
5 | "page": "sticky_only",
6 | "css": "default",
7 | "is_default": false,
8 | "in_rss": false,
9 | "on_frontpage": false,
10 | "searchable": false
11 | }
12 |
--------------------------------------------------------------------------------
/src/templates/sections/license.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "license",
3 | "title": "Software license",
4 | "description": "Textpattern CMS is free, open source software, distributed under the GNU General Public License Version 2 (GPLv2).",
5 | "page": "sticky_only",
6 | "css": "default",
7 | "is_default": false,
8 | "in_rss": false,
9 | "on_frontpage": false,
10 | "searchable": false
11 | }
12 |
--------------------------------------------------------------------------------
/src/assets/sass/modules/_animation-keyframes.scss:
--------------------------------------------------------------------------------
1 | @use "../setup";
2 |
3 | /* Animation `keyframes` need to appear outside of `screen` rules.
4 | ========================================================================== */
5 |
6 | @keyframes progressbar-stripes {
7 | 0% {
8 | background-position: 0 0;
9 | }
10 |
11 | 100% {
12 | background-position: 48px 0;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/templates/sections/privacy.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "privacy",
3 | "title": "Privacy policy",
4 | "description": "This privacy policy governs the manner in which Textpattern collects, uses, maintains and discloses information collected from users.",
5 | "page": "sticky_only",
6 | "css": "default",
7 | "is_default": false,
8 | "in_rss": false,
9 | "on_frontpage": false,
10 | "searchable": false
11 | }
12 |
--------------------------------------------------------------------------------
/src/templates/sections/about.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "about",
3 | "title": "About",
4 | "description": "Designers, developers and bloggers love Textpattern for its flexibility. It's powerful engine can be tuned to suit whatever type of site you can imagine.",
5 | "page": "standard",
6 | "css": "default",
7 | "is_default": false,
8 | "in_rss": false,
9 | "on_frontpage": false,
10 | "searchable": true
11 | }
12 |
--------------------------------------------------------------------------------
/src/templates/forms/misc/ads_webinformer.txp:
--------------------------------------------------------------------------------
1 |
2 | if (!gps('txpreview')) {
3 | $opts = array('http' => array('timeout' => 1.6));
4 | $url = 'https://website.informer.com/widget/textpattern.com-2';
5 | $context = stream_context_create($opts);
6 | $widget = file_get_contents($url, false, $context);
7 |
8 | if ($widget) {
9 | echo $widget;
10 | }
11 | }
12 |
13 |
--------------------------------------------------------------------------------
/src/templates/forms/misc/images_type.txp:
--------------------------------------------------------------------------------
1 | .avif, .avif 2x" type="image/avif">
2 | .webp, .webp 2x" type="image/webp">
3 | , 2x" type="">
4 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # For more information about the properties used in
2 | # this file, please see the EditorConfig documentation:
3 | # https://editorconfig.org/
4 |
5 | root = true
6 |
7 | [*]
8 | charset = utf-8
9 | end_of_line = lf
10 | indent_size = 4
11 | indent_style = space
12 | insert_final_newline = true
13 | trim_trailing_whitespace = true
14 |
15 | [*.md]
16 | trim_trailing_whitespace = false
17 |
18 | [{*.json,*.yml,humans.txt}]
19 | indent_size = 2
20 | indent_style = space
21 |
--------------------------------------------------------------------------------
/src/assets/sass/modules/_disclosure.scss:
--------------------------------------------------------------------------------
1 | @use "../setup";
2 |
3 | /* Disclosure boxes (summary/details)
4 | ========================================================================== */
5 |
6 | /**
7 | * Example HTML:
8 | *
9 | *
10 | * Summary text
11 | * Detailed content.
12 | *
13 | */
14 |
15 | summary {
16 | cursor: pointer;
17 |
18 | &:focus {
19 | outline: 1px solid var(--clr-focus);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/public/site.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "Textpattern",
3 | "name": "Textpattern CMS Homepage",
4 | "start_url": "https://textpattern.com",
5 | "scope": "https://textpattern.com",
6 | "icons": [
7 | { "src": "/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable any" },
8 | { "src": "/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable any" }
9 | ],
10 | "background_color": "#ffffff",
11 | "theme_color": "#ffda44",
12 | "display": "minimal-ui"
13 | }
14 |
--------------------------------------------------------------------------------
/src/templates/pages/version.txp:
--------------------------------------------------------------------------------
1 | {
2 | "textpattern-version": {
3 | "release": "",
4 | "prerelease": ""null
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/src/assets/sass/modules/_index.scss:
--------------------------------------------------------------------------------
1 | @use "fonts";
2 | @use "layout";
3 | @use "navigation";
4 | @use "links";
5 | @use "typography";
6 | @use "alerts";
7 | @use "embedded-content";
8 | @use "tables";
9 | @use "lists";
10 | @use "forms";
11 | @use "buttons";
12 | @use "progress";
13 | @use "disclosure";
14 | @use "code-highlighting";
15 | @use "pagination";
16 | @use "breadcrumbs";
17 | @use "social";
18 | @use "misc";
19 | @use "http-errors";
20 | @use "blog";
21 | @use "cards";
22 | @use "icons";
23 | @use "responsive";
24 | @use "accessibility";
25 | @use "animation-keyframes";
26 |
--------------------------------------------------------------------------------
/src/assets/sass/setup/_settings.scss:
--------------------------------------------------------------------------------
1 | // typography grid
2 | $base-font-size: 16px !default;
3 | $base-line-height: 1.5 !default;
4 | $small-line-height: 1.375 !default;
5 | $code-font-size: 0.875rem !default; // 14px / 16px
6 | $small-font-size: 0.75rem !default; // 12px / 16px
7 |
8 | // layout grid
9 | $container-max-width: 72rem !default; // 1152px / 16px
10 | $breakpoint-3: 60rem !default; // 960px / 16px
11 | $breakpoint-2: 48rem !default; // 768px / 16px
12 | $breakpoint-1: 30rem !default; // 480px / 16px
13 |
14 | // borders
15 | $border-radius: 0.5em !default; // 8px / 16px
16 |
--------------------------------------------------------------------------------
/src/assets/sass/modules/_breadcrumbs.scss:
--------------------------------------------------------------------------------
1 | @use "../setup";
2 |
3 | /* Breadcrumb links
4 | ========================================================================== */
5 |
6 | /**
7 | * Lists as breadcrumbs
8 | *
9 | * Example HTML:
10 | *
11 | *
12 | *
13 | *
14 | *
15 | */
16 |
17 | .breadcrumbs {
18 | margin: 0 -1.3333333em;
19 | padding: 0.5em 1.3333333em; // 6px / 12px + 16px / 12px
20 | background-color: var(--clr-bkgd-box);
21 | list-style: none;
22 | font-size: setup.$small-font-size;
23 |
24 | li {
25 | display: inline-block;
26 | }
27 |
28 | // Path-like breadcrumb styling.
29 |
30 | > li + li::before {
31 | content: "\00A0" "\002F" "\00A0";
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/assets/sass/modules/_misc.scss:
--------------------------------------------------------------------------------
1 | @use "../setup";
2 |
3 | /* Miscellaneous
4 | ========================================================================== */
5 |
6 | /**
7 | * Hide text but still allow screen reader access.
8 | *
9 | * Example HTML:
10 | *
11 | *
12 | */
13 |
14 | .accessibility {
15 | position: absolute;
16 | width: 1px;
17 | height: 1px;
18 | margin: -1px;
19 | padding: 0;
20 | overflow: hidden;
21 | clip: rect(0 0 0 0); // TODO: Deprecated - use `clip-path` when browser support is better.
22 | //clip-path: inset(50%); // TODO: Currently causes severe performance issues in Chrome.
23 | border: 0;
24 | white-space: nowrap;
25 | }
26 |
27 | /**
28 | * Hide completely.
29 | */
30 |
31 | .not-shown {
32 | display: none;
33 | }
34 |
--------------------------------------------------------------------------------
/src/templates/pages/sitemap.txp:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/assets/sass/modules/_accessibility.scss:
--------------------------------------------------------------------------------
1 | @use "../setup";
2 |
3 | @media (prefers-reduced-motion: reduce), (update: slow) {
4 | body {
5 | scroll-behavior: auto;
6 | }
7 |
8 | .js #site-navigation,
9 | #site-navigation.site-navigation-open,
10 | .search-form [type="search"] {
11 | transition-duration: 0;
12 | }
13 |
14 | progress::-webkit-progress-value {
15 | animation: none;
16 | background-image: none;
17 | }
18 |
19 | progress:indeterminate::-webkit-progress-bar {
20 | animation: none;
21 | background-image: none;
22 | }
23 |
24 | progress::-moz-progress-bar {
25 | animation: none;
26 | background-image: none;
27 | }
28 |
29 | progress:indeterminate::-moz-progress-bar {
30 | animation: none;
31 | background-image: none;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve the Textpattern.com website.
4 | ---
5 |
6 | **Describe the bug**
7 | A clear and concise description of what the bug is.
8 |
9 | **To reproduce**
10 | Steps to reproduce the behaviour:
11 | 1. Go to '...'
12 | 2. Click on '....'
13 | 3. Scroll down to '....'
14 | 4. See error
15 |
16 | **Expected behaviour**
17 | A clear and concise description of what you expected to happen.
18 |
19 | **Screenshots**
20 | If applicable, add screenshots to help explain your problem.
21 |
22 | **Desktop (please complete the following information):**
23 | - OS: [e.g. iOS]
24 | - Browser [e.g. chrome, safari]
25 | - Version [e.g. 22]
26 |
27 | **Smartphone (please complete the following information):**
28 | - Device: [e.g. iPhone6]
29 | - OS: [e.g. iOS8.1]
30 | - Browser [e.g. stock browser, safari]
31 | - Version [e.g. 22]
32 |
33 | **Additional context**
34 | Add any other context about the problem here.
35 |
--------------------------------------------------------------------------------
/src/templates/forms/file/files.txp:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/src/templates/forms/shortcodes/media_video.txp:
--------------------------------------------------------------------------------
1 |
2 | " height="" poster="">
3 | ">
4 | ">
5 |
6 | ">
7 | ">
8 | ">
9 | ">
10 | S">
11 |
12 |
--------------------------------------------------------------------------------
/src/assets/sass/modules/_fonts.scss:
--------------------------------------------------------------------------------
1 | @use "../setup";
2 |
3 | /* Fonts
4 | ========================================================================== */
5 |
6 | /**
7 | * 'PT Serif' font.
8 | */
9 |
10 | // Regular
11 | @font-face {
12 | font-family: "PT Serif";
13 | font-style: normal;
14 | font-weight: 400;
15 | font-display: optional;
16 | src: url("https://textpattern.com/assets/fonts/pt-serif-v18-latin-regular.woff2") format("woff2");
17 | }
18 |
19 | // Regular Italic
20 | @font-face {
21 | font-family: "PT Serif";
22 | font-style: italic;
23 | font-weight: 400;
24 | font-display: swap;
25 | src: url("https://textpattern.com/assets/fonts/pt-serif-v18-latin-italic.woff2") format("woff2");
26 | }
27 |
28 | // Bold
29 | @font-face {
30 | font-family: "PT Serif";
31 | font-style: normal;
32 | font-weight: 700;
33 | font-display: optional;
34 | src: url("https://textpattern.com/assets/fonts/pt-serif-v18-latin-700.woff2") format("woff2");
35 | }
36 |
37 | // Bold Italic
38 | @font-face {
39 | font-family: "PT Serif";
40 | font-style: italic;
41 | font-weight: 700;
42 | font-display: swap;
43 | src: url("https://textpattern.com/assets/fonts/pt-serif-v18-latin-700italic.woff2") format("woff2");
44 | }
45 |
--------------------------------------------------------------------------------
/src/templates/forms/misc/sidebar.txp:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/src/assets/sass/modules/_embedded-content.scss:
--------------------------------------------------------------------------------
1 | @use "../setup";
2 |
3 | /* Embedded content
4 | ========================================================================== */
5 |
6 | /**
7 | * Make embedded elements responsive.
8 | */
9 |
10 | img,
11 | video {
12 | max-width: 100%;
13 | height: auto;
14 | }
15 |
16 | /**
17 | * Images.
18 | *
19 | * 1. Remove the gap between images and the bottom of their containers.
20 | *
21 | * Image alignment (compatible with Textile markup syntax).
22 | *
23 | * Example HTML:
24 | *
25 | *
26 | *
27 | *
28 | */
29 |
30 | img {
31 | vertical-align: middle; /* 1 */
32 |
33 | &.align-left {
34 | margin: 1em 1em 1em 0;
35 | float: left;
36 | }
37 |
38 | &.align-right {
39 | margin: 1em 0 1em 1em;
40 | float: right;
41 | }
42 |
43 | &.align-center {
44 | display: block;
45 | margin: 1em auto;
46 | }
47 | }
48 |
49 | /**
50 | * Bordered images.
51 | *
52 | * Example HTML:
53 | *
54 | *
55 | */
56 |
57 | .img--bordered {
58 | border: 1px solid var(--clr-brdr-lite);
59 | }
60 |
61 | /**
62 | * Consistent margins on `figure`.
63 | */
64 |
65 | figure {
66 | margin: 1em 0;
67 | }
68 |
--------------------------------------------------------------------------------
/src/assets/sass/setup/_mixins.scss:
--------------------------------------------------------------------------------
1 | @use "settings";
2 |
3 | // Dark Mode shorthand.
4 |
5 | @mixin dark-mode {
6 | @media (prefers-color-scheme: dark) {
7 | @content;
8 | }
9 | }
10 |
11 | // higher resolution background images for high resolution displays.
12 | // TODO: harness image-set `type` (instead of the second mixin) when browser support is better.
13 |
14 | @mixin hires-graphic($hdfile, $hdtype, $hdwidth, $hdheight) {
15 | $filename: $hdfile + "." + $hdtype;
16 | $hdfilename: $hdfile + "@2x." + $hdtype;
17 |
18 | background-image: image-set(url("../img/" + $filename) 1x, url("../img/" + $hdfilename) 2x);
19 | background-size: $hdwidth $hdheight;
20 | }
21 |
22 | @mixin hires-graphic-modern($hdfile, $hdtype) {
23 | $filename: $hdfile + "." + $hdtype;
24 | $hdfilename: $hdfile + "@2x." + $hdtype;
25 |
26 | background-image: image-set(url("../img/" + $filename) 1x, url("../img/" + $hdfilename) 2x);
27 | }
28 |
29 | // standard gradients.
30 |
31 | @mixin gradient-linear($color-gradient-from, $color-gradient-to) {
32 | background-color: $color-gradient-to;
33 | background-image: linear-gradient($color-gradient-from, $color-gradient-to);
34 | }
35 |
36 | // hide text.
37 |
38 | @mixin hide-text {
39 | overflow: hidden;
40 | text-indent: 110%;
41 | text-transform: capitalize;
42 | white-space: nowrap;
43 | }
44 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "textpattern-com",
3 | "description": "Official website of the Textpattern project.",
4 | "version": "1.8.6",
5 | "repository": {
6 | "type": "git",
7 | "url": "https://github.com/textpattern/textpattern-com-website"
8 | },
9 | "bugs": {
10 | "url": "https://github.com/textpattern/textpattern-com-website/issues"
11 | },
12 | "devDependencies": {
13 | "@lodder/grunt-postcss": "3.1.1",
14 | "autoprefixer": "10.4.23",
15 | "cssnano": "7.1.2",
16 | "grunt": "1.6.1",
17 | "grunt-cli": "1.5.0",
18 | "grunt-concurrent": "3.0.0",
19 | "grunt-contrib-clean": "2.0.1",
20 | "grunt-contrib-copy": "1.0.0",
21 | "grunt-contrib-jshint": "3.2.0",
22 | "grunt-contrib-watch": "1.1.0",
23 | "grunt-replace-regex": "1.0.3",
24 | "grunt-sass": "4.0.1",
25 | "grunt-stylelint": "0.20.1",
26 | "grunt-terser": "2.0.0",
27 | "load-grunt-tasks": "5.1.0",
28 | "postcss": "8.5.6",
29 | "sass": "1.97.0",
30 | "stylelint": "16.26.1",
31 | "stylelint-config-standard-scss": "16.0.0",
32 | "stylelint-order": "7.0.0"
33 | },
34 | "dependencies": {
35 | "prismjs": "1.30.0",
36 | "textpattern-branding": "0.3.3"
37 | },
38 | "optionalDependencies": {
39 | "fibers": "5.0.3"
40 | },
41 | "browserslist": [
42 | "> 0.5%",
43 | "Firefox ESR",
44 | "not IE 11"
45 | ],
46 | "license": "GPL-2.0"
47 | }
48 |
--------------------------------------------------------------------------------
/src/templates/forms/misc/head.txp:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/templates/forms/article/default.txp:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | ">
11 | ">
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src/assets/js/detect.js:
--------------------------------------------------------------------------------
1 | document.documentElement.className='js';
2 |
3 | // Test browser for modern image format support (for use in CSS).
4 | (function(document) {
5 | function setHTMLClass(height, className) {
6 | if (height === 2) {
7 | document.documentElement.className += ' ' + className;
8 | } else {
9 | document.documentElement.className += ' not-' + className;
10 | }
11 | }
12 |
13 | var AVIF = new Image();
14 | AVIF.onload = AVIF.onerror = function () {
15 | setHTMLClass(AVIF.height, 'avif');
16 | };
17 | AVIF.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=';
18 |
19 | var JXL = new Image();
20 | JXL.onload = JXL.onerror = function() {
21 | setHTMLClass(JXL.height, 'jxl');
22 | };
23 | JXL.src = 'data:image/jxl;base64,/woIELASCAgQAFwASxLFgkWAHL0xqnCBCV0qDp901Te/5QM=';
24 |
25 | var WebP = new Image();
26 | WebP.onload = WebP.onerror = function() {
27 | setHTMLClass(WebP.height, 'webp');
28 | };
29 | WebP.src = 'data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA';
30 | })(window.sandboxApi && window.sandboxApi.parentWindow && window.sandboxApi.parentWindow.document || document);
31 |
--------------------------------------------------------------------------------
/src/templates/forms/misc/pagination.txp:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/src/templates/forms/misc/language_table.txp:
--------------------------------------------------------------------------------
1 |
2 | $key = parse('');
3 |
4 | try {
5 | $xml = new SimpleXMLElement('https://api.crowdin.com/api/project/textpattern-cms-textpacks/status?key='.$key.'&xml', 0, TRUE);
6 | } catch (Exception $e) {
7 | return;
8 | }
9 |
10 | echo <<
12 | List current of languages translation for Textpattern CMS
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | | Language |
22 | Code |
23 | Translation status |
24 |
25 |
26 |
27 |
28 | EOHTML;
29 |
30 | foreach ($xml->language as $languageElement) {
31 | $name = htmlspecialchars($languageElement->name);
32 | $code = htmlspecialchars($languageElement->code);
33 | $progress = htmlspecialchars($languageElement->translated_progress);
34 |
35 | echo <<
37 | {$name} |
38 | {$code} |
39 | {$progress}% Translate |
40 |
41 |
42 | EOHTML;
43 | }
44 |
45 | echo <<
47 |
48 |
49 | EOHTML;
50 |
51 |
--------------------------------------------------------------------------------
/src/assets/js/main.js:
--------------------------------------------------------------------------------
1 | (function ()
2 | {
3 | 'use strict';
4 |
5 | // Load objects as variables.
6 |
7 | var code = document.querySelectorAll('pre code'),
8 | endnote = document.querySelector('.footnotes'),
9 | navmenu = document.getElementById('site-navigation');
10 |
11 | // Syntax highlighting, via 'Prism'.
12 | // Applies syntax highlighting to `code` HTML elements.
13 | // More info - https://prismjs.com.
14 |
15 | if (code.length) {
16 | var elems = document.querySelectorAll('.language-txp');
17 |
18 | [].forEach.call(elems, function(el) {
19 | el.classList.add('language-html');
20 | el.classList.remove('language-txp');
21 | });
22 |
23 | Prism.highlightAll();
24 | }
25 |
26 | // Inject a heading into endnotes regions.
27 |
28 | if (endnote) {
29 | endnote.insertAdjacentHTML('afterbegin', 'Endnotes
');
30 | }
31 |
32 | // Responsive navigation menu.
33 |
34 | if (navmenu) {
35 | var navtoggle = document.getElementById('site-navigation-toggle'),
36 | navlist = document.getElementById('site-navigation-list');
37 |
38 | navtoggle.addEventListener('click', function(e)
39 | {
40 | e.preventDefault();
41 | navtoggle.classList.toggle('site-navigation-toggle-active');
42 | navmenu.classList.toggle('site-navigation-open');
43 | });
44 |
45 | navlist.addEventListener('focusin', function()
46 | {
47 | navtoggle.classList.add('site-navigation-toggle-active');
48 | navmenu.classList.add('site-navigation-open');
49 | });
50 |
51 | navlist.addEventListener('focusout', function()
52 | {
53 | navtoggle.classList.remove('site-navigation-toggle-active');
54 | navmenu.classList.remove('site-navigation-open');
55 | });
56 | }
57 | })();
58 |
--------------------------------------------------------------------------------
/src/assets/sass/modules/_pagination.scss:
--------------------------------------------------------------------------------
1 | @use "../setup";
2 |
3 | /* Pagination links
4 | ========================================================================== */
5 |
6 | /**
7 | * Paginator (prev/next) navigation links on article lists.
8 | *
9 | * Example HTML:
10 | *
11 | *