38 | ```
39 |
40 | 2. Setup a new ssh private key in GithHub and WP Engine via https://wpengine.com/support/github-action-deploy/#Setup_Instructions
41 |
42 |
43 | 3. Add GitHub Action Secrets
44 |
45 | Add the following secrets to your repo:
46 | - `WPE_SSHG_KEY_PRIVATE`: Your SSH private key.
47 | - `THEME_NAME`: The name of your WordPress theme in `wp-content/themes/{theme-name}`.
48 | - `DEV_ENVIRONMENT`: Your WPEngine site's development environment name (e.g., `sitename-dev`).
49 | - `STG_ENVIRONMENT`: Your WPEngine site's staging environment name (e.g., `sitename-stg`).
50 | - `PROD_ENVIRONMENT`: Your WPEngine site's production environment name (e.g., `sitename`).
51 |
52 |
53 | 4. Push the repo to your own GitHub and the [post-deploy.sh](post-deploy.sh) will activate the theme if it's not already, and clear the cache during [GitHub deploys](.github/workflows/action.yml#L55-L58) 🎉.
54 |
55 | ## Frequently Asked Questions
56 | - I thought WP Engine doesn't support Sage/Roots theme?
57 | - Sage was never fully supported due to the way Sage out of the box conflicted with our security best practices. In late 2022, we started to make changes to fully support pre-compiling Sage templates to enable official support if they follow the way this repo deploys with [`post-deploy.sh`](https://github.com/wpengine/example-sage-theme/blob/main/post-deploy.sh) script, that ultimately runs `wp acorn view:cache`.
58 | - Sage wasn't supported until late 2022?
59 | - There have been ways of running Sage on WP Engine prior using customization or other means, but this approach is our offically supported way.
60 | - What about Timber/Twig themes?
61 | - Those themes are also supported! Just [disable filesystem caching](https://timber.github.io/docs/guides/hosts-servers/#wordpress-vip) and let our other, more advanced, caching mechanisms take the place of that.
62 | - Why not just disable filesystem caching on Sage the same way?
63 | - That's probably another great alternative, but it requires more effort/customization then many of our customers want, if that is a route you want to go, please be sure to let our support team know when you've made progress there and we'd love to add docs on how to accomplish that as well!
64 | - I have more questions or need more help!
65 | - [Log in to your account](https://my.wpengine.com) to get expert one-on-one help, 24 hours a day, 7 days a week, 365 days a year.
66 |
67 | ## Alternatives
68 |
69 | Also check out [local, our effortless way to develop WordPress sites locally](https://localwp.com/). Just be sure to run
70 | ```bash
71 | wp acorn view:cache
72 | ```
73 | after pushing changes to wpengine.com.
74 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | end_of_line = lf
6 | insert_final_newline = true
7 | indent_style = space
8 | indent_size = 2
9 | trim_trailing_whitespace = true
10 | quote_type = single
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [*.php]
16 | indent_size = 4
17 |
18 | [*.blade.php]
19 | indent_size = 2
20 |
21 | [resources/views/**.php]
22 | indent_size = 2
23 |
24 | [index.php]
25 | indent_size = 2
26 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /vendor
3 | /public
4 | .env
5 | .budfiles
6 | npm-debug.log
7 | yarn-error.log
8 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright (c) Roots Software Foundation LLC
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of
4 | this software and associated documentation files (the "Software"), to deal in
5 | the Software without restriction, including without limitation the rights to
6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7 | of the Software, and to permit persons to whom the Software is furnished to do
8 | so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 | SOFTWARE.
20 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | Advanced WordPress starter theme with Tailwind CSS and Laravel Blade
22 |
23 |
24 | Website Documentation Releases Community
25 |
26 |
27 | ## Sponsors
28 |
29 | Sage is an open source project and completely free to use. If you've benefited from our projects and would like to support our future endeavors, please consider [sponsoring Roots](https://github.com/sponsors/roots).
30 |
31 |
34 |
35 | ## Overview
36 |
37 | Sage is a WordPress starter theme with block editor support.
38 |
39 | - Harness the power of [Laravel](https://laravel.com) and its available packages thanks to [Acorn](https://github.com/roots/acorn)
40 | - Clean, efficient theme templating utilizing [Laravel Blade](https://laravel.com/docs/master/blade)
41 | - Modern frontend development workflow powered by [Bud](https://bud.js.org/)
42 | - Out of the box support for [Tailwind CSS](https://tailwindcss.com/)
43 |
44 | ## Getting Started
45 |
46 | See the [Sage installation documentation](https://roots.io/sage/docs/installation/).
47 |
48 | ## Stay Connected
49 |
50 | - Join us on Discord by [sponsoring us on GitHub](https://github.com/sponsors/roots)
51 | - Participate on [Roots Discourse](https://discourse.roots.io/)
52 | - Follow [@rootswp on Twitter](https://twitter.com/rootswp)
53 | - Read the [Roots Blog](https://roots.io/blog/)
54 | - Subscribe to the [Roots Newsletter](https://roots.io/newsletter/)
55 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/app/Providers/ThemeServiceProvider.php:
--------------------------------------------------------------------------------
1 | $this->siteName(),
27 | ];
28 | }
29 |
30 | /**
31 | * Returns the site name.
32 | *
33 | * @return string
34 | */
35 | public function siteName()
36 | {
37 | return get_bloginfo('name', 'display');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/app/View/Composers/Comments.php:
--------------------------------------------------------------------------------
1 | $this->title(),
27 | 'responses' => $this->responses(),
28 | 'previous' => $this->previous(),
29 | 'next' => $this->next(),
30 | 'paginated' => $this->paginated(),
31 | 'closed' => $this->closed(),
32 | ];
33 | }
34 |
35 | /**
36 | * The comment title.
37 | *
38 | * @return string
39 | */
40 | public function title()
41 | {
42 | return sprintf(
43 | /* translators: %1$s is replaced with the number of comments and %2$s with the post title */
44 | _nx('%1$s response to “%2$s”', '%1$s responses to “%2$s”', get_comments_number(), 'comments title', 'sage'),
45 | get_comments_number() === 1 ? _x('One', 'comments title', 'sage') : number_format_i18n(get_comments_number()),
46 | get_the_title()
47 | );
48 | }
49 |
50 | /**
51 | * Retrieve the comments.
52 | *
53 | * @return string
54 | */
55 | public function responses()
56 | {
57 | if (! have_comments()) {
58 | return;
59 | }
60 |
61 | return wp_list_comments([
62 | 'style' => 'ol',
63 | 'short_ping' => true,
64 | 'echo' => false,
65 | ]);
66 | }
67 |
68 | /**
69 | * The previous comments link.
70 | *
71 | * @return string
72 | */
73 | public function previous()
74 | {
75 | if (! get_previous_comments_link()) {
76 | return;
77 | }
78 |
79 | return get_previous_comments_link(
80 | __('← Older comments', 'sage')
81 | );
82 | }
83 |
84 | /**
85 | * The next comments link.
86 | *
87 | * @return string
88 | */
89 | public function next()
90 | {
91 | if (! get_next_comments_link()) {
92 | return;
93 | }
94 |
95 | return get_next_comments_link(
96 | __('Newer comments →', 'sage')
97 | );
98 | }
99 |
100 | /**
101 | * Determine if the comments are paginated.
102 | *
103 | * @return bool
104 | */
105 | public function paginated()
106 | {
107 | return get_comment_pages_count() > 1 && get_option('page_comments');
108 | }
109 |
110 | /**
111 | * Determine if the comments are closed.
112 | *
113 | * @return bool
114 | */
115 | public function closed()
116 | {
117 | return ! comments_open() && get_comments_number() != '0' && post_type_supports(get_post_type(), 'comments');
118 | }
119 | }
120 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/app/View/Composers/Post.php:
--------------------------------------------------------------------------------
1 | $this->title(),
29 | 'pagination' => $this->pagination(),
30 | ];
31 | }
32 |
33 | /**
34 | * Retrieve the post title.
35 | *
36 | * @return string
37 | */
38 | public function title()
39 | {
40 | if ($this->view->name() !== 'partials.page-header') {
41 | return get_the_title();
42 | }
43 |
44 | if (is_home()) {
45 | if ($home = get_option('page_for_posts', true)) {
46 | return get_the_title($home);
47 | }
48 |
49 | return __('Latest Posts', 'sage');
50 | }
51 |
52 | if (is_archive()) {
53 | return get_the_archive_title();
54 | }
55 |
56 | if (is_search()) {
57 | return sprintf(
58 | /* translators: %s is replaced with the search query */
59 | __('Search Results for %s', 'sage'),
60 | get_search_query()
61 | );
62 | }
63 |
64 | if (is_404()) {
65 | return __('Not Found', 'sage');
66 | }
67 |
68 | return get_the_title();
69 | }
70 |
71 | /**
72 | * Retrieve the pagination links.
73 | *
74 | * @return string
75 | */
76 | public function pagination()
77 | {
78 | return wp_link_pages([
79 | 'echo' => 0,
80 | 'before' => ''.__('Pages:', 'sage'),
81 | 'after' => '
',
82 | ]);
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/app/filters.php:
--------------------------------------------------------------------------------
1 | %s', get_permalink(), __('Continued', 'sage'));
16 | });
17 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/app/setup.php:
--------------------------------------------------------------------------------
1 | enqueue();
18 | }, 100);
19 |
20 | /**
21 | * Register the theme assets with the block editor.
22 | *
23 | * @return void
24 | */
25 | add_action('enqueue_block_editor_assets', function () {
26 | bundle('editor')->enqueue();
27 | }, 100);
28 |
29 | /**
30 | * Register the initial theme setup.
31 | *
32 | * @return void
33 | */
34 | add_action('after_setup_theme', function () {
35 | /**
36 | * Disable full-site editing support.
37 | *
38 | * @link https://wptavern.com/gutenberg-10-5-embeds-pdfs-adds-verse-block-color-options-and-introduces-new-patterns
39 | */
40 | remove_theme_support('block-templates');
41 |
42 | /**
43 | * Register the navigation menus.
44 | *
45 | * @link https://developer.wordpress.org/reference/functions/register_nav_menus/
46 | */
47 | register_nav_menus([
48 | 'primary_navigation' => __('Primary Navigation', 'sage'),
49 | ]);
50 |
51 | /**
52 | * Disable the default block patterns.
53 | *
54 | * @link https://developer.wordpress.org/block-editor/developers/themes/theme-support/#disabling-the-default-block-patterns
55 | */
56 | remove_theme_support('core-block-patterns');
57 |
58 | /**
59 | * Enable plugins to manage the document title.
60 | *
61 | * @link https://developer.wordpress.org/reference/functions/add_theme_support/#title-tag
62 | */
63 | add_theme_support('title-tag');
64 |
65 | /**
66 | * Enable post thumbnail support.
67 | *
68 | * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
69 | */
70 | add_theme_support('post-thumbnails');
71 |
72 | /**
73 | * Enable responsive embed support.
74 | *
75 | * @link https://developer.wordpress.org/block-editor/how-to-guides/themes/theme-support/#responsive-embedded-content
76 | */
77 | add_theme_support('responsive-embeds');
78 |
79 | /**
80 | * Enable HTML5 markup support.
81 | *
82 | * @link https://developer.wordpress.org/reference/functions/add_theme_support/#html5
83 | */
84 | add_theme_support('html5', [
85 | 'caption',
86 | 'comment-form',
87 | 'comment-list',
88 | 'gallery',
89 | 'search-form',
90 | 'script',
91 | 'style',
92 | ]);
93 |
94 | /**
95 | * Enable selective refresh for widgets in customizer.
96 | *
97 | * @link https://developer.wordpress.org/reference/functions/add_theme_support/#customize-selective-refresh-widgets
98 | */
99 | add_theme_support('customize-selective-refresh-widgets');
100 | }, 20);
101 |
102 | /**
103 | * Register the theme sidebars.
104 | *
105 | * @return void
106 | */
107 | add_action('widgets_init', function () {
108 | $config = [
109 | 'before_widget' => '',
111 | 'before_title' => '',
112 | 'after_title' => ' ',
113 | ];
114 |
115 | register_sidebar([
116 | 'name' => __('Primary', 'sage'),
117 | 'id' => 'sidebar-primary',
118 | ] + $config);
119 |
120 | register_sidebar([
121 | 'name' => __('Footer', 'sage'),
122 | 'id' => 'sidebar-footer',
123 | ] + $config);
124 | });
125 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/bud.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Compiler configuration
3 | *
4 | * @see {@link https://roots.io/sage/docs sage documentation}
5 | * @see {@link https://bud.js.org/learn/config bud.js configuration guide}
6 | *
7 | * @type {import('@roots/bud').Config}
8 | */
9 | export default async (app) => {
10 | /**
11 | * Application assets & entrypoints
12 | *
13 | * @see {@link https://bud.js.org/reference/bud.entry}
14 | * @see {@link https://bud.js.org/reference/bud.assets}
15 | */
16 | app
17 | .entry('app', ['@scripts/app', '@styles/app'])
18 | .entry('editor', ['@scripts/editor', '@styles/editor'])
19 | .assets(['images']);
20 |
21 | /**
22 | * Set public path
23 | *
24 | * @see {@link https://bud.js.org/reference/bud.setPublicPath}
25 | */
26 | app.setPublicPath('/app/themes/sage/public/');
27 |
28 | /**
29 | * Development server settings
30 | *
31 | * @see {@link https://bud.js.org/reference/bud.setUrl}
32 | * @see {@link https://bud.js.org/reference/bud.setProxyUrl}
33 | * @see {@link https://bud.js.org/reference/bud.watch}
34 | */
35 | app
36 | .setUrl('http://localhost:3000')
37 | .setProxyUrl('http://example.test')
38 | .watch(['resources/views', 'app']);
39 |
40 | /**
41 | * Generate WordPress `theme.json`
42 | *
43 | * @note This overwrites `theme.json` on every build.
44 | *
45 | * @see {@link https://bud.js.org/extensions/sage/theme.json}
46 | * @see {@link https://developer.wordpress.org/block-editor/how-to-guides/themes/theme-json}
47 | */
48 | app.wpjson
49 | .setSettings({
50 | background: {
51 | backgroundImage: true,
52 | },
53 | color: {
54 | custom: false,
55 | customDuotone: false,
56 | customGradient: false,
57 | defaultDuotone: false,
58 | defaultGradients: false,
59 | defaultPalette: false,
60 | duotone: [],
61 | },
62 | custom: {
63 | spacing: {},
64 | typography: {
65 | 'font-size': {},
66 | 'line-height': {},
67 | },
68 | },
69 | spacing: {
70 | padding: true,
71 | units: ['px', '%', 'em', 'rem', 'vw', 'vh'],
72 | },
73 | typography: {
74 | customFontSize: false,
75 | },
76 | })
77 | .useTailwindColors()
78 | .useTailwindFontFamily()
79 | .useTailwindFontSize();
80 | };
81 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "roots/sage",
3 | "type": "wordpress-theme",
4 | "license": "MIT",
5 | "description": "WordPress starter theme with a modern development workflow",
6 | "homepage": "https://roots.io/sage/",
7 | "authors": [
8 | {
9 | "name": "Ben Word",
10 | "email": "ben@benword.com",
11 | "homepage": "https://github.com/retlehs"
12 | },
13 | {
14 | "name": "Scott Walkinshaw",
15 | "email": "scott.walkinshaw@gmail.com",
16 | "homepage": "https://github.com/swalkinshaw"
17 | },
18 | {
19 | "name": "QWp6t",
20 | "email": "hi@qwp6t.me",
21 | "homepage": "https://github.com/qwp6t"
22 | },
23 | {
24 | "name": "Brandon Nifong",
25 | "email": "brandon@tendency.me",
26 | "homepage": "https://github.com/log1x"
27 | }
28 | ],
29 | "keywords": [
30 | "wordpress"
31 | ],
32 | "support": {
33 | "issues": "https://github.com/roots/sage/issues",
34 | "forum": "https://discourse.roots.io/"
35 | },
36 | "autoload": {
37 | "psr-4": {
38 | "App\\": "app/"
39 | }
40 | },
41 | "require": {
42 | "php": ">=8.1",
43 | "roots/acorn": "^4.3"
44 | },
45 | "require-dev": {
46 | "laravel/pint": "^1.13"
47 | },
48 | "suggest": {
49 | "log1x/sage-directives": "A collection of useful Blade directives for WordPress and Sage (^1.0)."
50 | },
51 | "config": {
52 | "optimize-autoloader": true,
53 | "preferred-install": "dist",
54 | "sort-packages": true
55 | },
56 | "minimum-stability": "dev",
57 | "prefer-stable": true,
58 | "extra": {
59 | "acorn": {
60 | "providers": [
61 | "App\\Providers\\ThemeServiceProvider"
62 | ]
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/functions.php:
--------------------------------------------------------------------------------
1 | composer install.', 'sage'));
16 | }
17 |
18 | require $composer;
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Register The Bootloader
23 | |--------------------------------------------------------------------------
24 | |
25 | | The first thing we will do is schedule a new Acorn application container
26 | | to boot when WordPress is finished loading the theme. The application
27 | | serves as the "glue" for all the components of Laravel and is
28 | | the IoC container for the system binding all of the various parts.
29 | |
30 | */
31 |
32 | if (! function_exists('\Roots\bootloader')) {
33 | wp_die(
34 | __('You need to install Acorn to use this theme.', 'sage'),
35 | '',
36 | [
37 | 'link_url' => 'https://roots.io/acorn/docs/installation/',
38 | 'link_text' => __('Acorn Docs: Installation', 'sage'),
39 | ]
40 | );
41 | }
42 |
43 | \Roots\bootloader()->boot();
44 |
45 | /*
46 | |--------------------------------------------------------------------------
47 | | Register Sage Theme Files
48 | |--------------------------------------------------------------------------
49 | |
50 | | Out of the box, Sage ships with categorically named theme files
51 | | containing common functionality and setup to be bootstrapped with your
52 | | theme. Simply add (or remove) files from the array below to change what
53 | | is registered alongside Sage.
54 | |
55 | */
56 |
57 | collect(['setup', 'filters'])
58 | ->each(function ($file) {
59 | if (! locate_template($file = "app/{$file}.php", true, true)) {
60 | wp_die(
61 | /* translators: %s is replaced with the relative file path */
62 | sprintf(__('Error locating %s
for inclusion.', 'sage'), $file)
63 | );
64 | }
65 | });
66 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/index.php:
--------------------------------------------------------------------------------
1 | render();
4 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "@roots/bud/config/jsconfig.json",
4 | "@roots/sage/config/jsconfig.json"
5 | ],
6 | "compilerOptions": {
7 | "baseUrl": "resources",
8 | /**
9 | * Resolve aliases
10 | */
11 | "paths": {
12 | "@fonts/*": ["fonts/*"],
13 | "@images/*": ["images/*"],
14 | "@scripts/*": ["scripts/*"],
15 | "@styles/*": ["styles/*"]
16 | },
17 | /**
18 | * Type definitions
19 | */
20 | "types": [
21 | "@roots/bud",
22 | "@roots/bud-react",
23 | "@roots/bud-postcss",
24 | "@roots/bud-preset-recommend",
25 | "@roots/bud-preset-wordpress",
26 | "@roots/bud-tailwindcss",
27 | "@roots/bud-wordpress-theme-json",
28 | "@roots/sage"
29 | ]
30 | },
31 | "files": ["bud.config.js"],
32 | "include": ["resources"],
33 | "exclude": ["node_modules", "public"]
34 | }
35 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sage",
3 | "private": true,
4 | "browserslist": [
5 | "extends @roots/browserslist-config"
6 | ],
7 | "engines": {
8 | "node": ">=20.0.0"
9 | },
10 | "type": "module",
11 | "scripts": {
12 | "dev": "bud dev",
13 | "build": "bud build",
14 | "translate": "npm run translate:pot && npm run translate:update",
15 | "translate:pot": "wp i18n make-pot . ./resources/lang/sage.pot --include=\"theme.json,patterns,app,resources\"",
16 | "translate:update": "for file in ./resources/lang/*.po; do wp i18n update-po ./resources/lang/sage.pot $file; done",
17 | "translate:compile": "npm run translate:mo && npm run translate:js",
18 | "translate:js": "wp i18n make-json ./resources/lang --pretty-print",
19 | "translate:mo": "wp i18n make-mo ./resources/lang ./resources/lang"
20 | },
21 | "devDependencies": {
22 | "@roots/bud": "6.20.0",
23 | "@roots/bud-tailwindcss": "6.20.0",
24 | "@roots/sage": "6.20.0"
25 | },
26 | "dependencies": {}
27 | }
28 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/fonts/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpengine/example-sage-theme/912378f6a643c806973334369c1cceebc7bd2e11/wp-content/themes/your-roots-theme-name-here/resources/fonts/.gitkeep
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/images/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpengine/example-sage-theme/912378f6a643c806973334369c1cceebc7bd2e11/wp-content/themes/your-roots-theme-name-here/resources/images/.gitkeep
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/scripts/app.js:
--------------------------------------------------------------------------------
1 | import domReady from '@roots/sage/client/dom-ready';
2 |
3 | /**
4 | * Application entrypoint
5 | */
6 | domReady(async () => {
7 | // ...
8 | });
9 |
10 | /**
11 | * @see {@link https://webpack.js.org/api/hot-module-replacement/}
12 | */
13 | if (import.meta.webpackHot) import.meta.webpackHot.accept(console.error);
14 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/scripts/editor.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @see {@link https://bud.js.org/extensions/bud-preset-wordpress/editor-integration/filters}
3 | */
4 | roots.register.filters('@scripts/filters');
5 |
6 | /**
7 | * @see {@link https://webpack.js.org/api/hot-module-replacement/}
8 | */
9 | if (import.meta.webpackHot) import.meta.webpackHot.accept(console.error);
10 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/scripts/filters/button.filter.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @see {@link https://developer.wordpress.org/block-editor/reference-guides/filters/block-filters/#blocks-registerblocktype}
3 | */
4 | export const hook = 'blocks.registerBlockType';
5 |
6 | /**
7 | * Filter handle
8 | */
9 | export const name = 'sage/button';
10 |
11 | /**
12 | * Filter callback
13 | *
14 | * @param {object} settings
15 | * @param {string} name
16 | * @returns modified settings
17 | */
18 | export function callback(settings, name) {
19 | if (name !== 'core/button') return settings;
20 |
21 | return {
22 | ...settings,
23 | styles: [{ label: 'Outline', name: 'outline' }],
24 | };
25 | }
26 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/styles/app.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/styles/editor.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpengine/example-sage-theme/912378f6a643c806973334369c1cceebc7bd2e11/wp-content/themes/your-roots-theme-name-here/resources/styles/editor.css
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/404.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.app')
2 |
3 | @section('content')
4 | @include('partials.page-header')
5 |
6 | @if (! have_posts())
7 |
8 | {!! __('Sorry, but the page you are trying to view does not exist.', 'sage') !!}
9 |
10 |
11 | {!! get_search_form(false) !!}
12 | @endif
13 | @endsection
14 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/components/alert.blade.php:
--------------------------------------------------------------------------------
1 | @props([
2 | 'type' => null,
3 | 'message' => null,
4 | ])
5 |
6 | @php($class = match ($type) {
7 | 'success' => 'text-green-50 bg-green-400',
8 | 'caution' => 'text-yellow-50 bg-yellow-400',
9 | 'warning' => 'text-red-50 bg-red-400',
10 | default => 'text-indigo-50 bg-indigo-400',
11 | })
12 |
13 | merge(['class' => "px-2 py-1 {$class}"]) }}>
14 | {!! $message ?? $slot !!}
15 |
16 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/forms/search.blade.php:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/index.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.app')
2 |
3 | @section('content')
4 | @include('partials.page-header')
5 |
6 | @if (! have_posts())
7 |
8 | {!! __('Sorry, no results were found.', 'sage') !!}
9 |
10 |
11 | {!! get_search_form(false) !!}
12 | @endif
13 |
14 | @while(have_posts()) @php(the_post())
15 | @includeFirst(['partials.content-' . get_post_type(), 'partials.content'])
16 | @endwhile
17 |
18 | {!! get_the_posts_navigation() !!}
19 | @endsection
20 |
21 | @section('sidebar')
22 | @include('sections.sidebar')
23 | @endsection
24 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/layouts/app.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | @php(do_action('get_header'))
7 | @php(wp_head())
8 |
9 |
10 |
11 | @php(wp_body_open())
12 |
13 |
14 |
15 | {{ __('Skip to content') }}
16 |
17 |
18 | @include('sections.header')
19 |
20 |
21 | @yield('content')
22 |
23 |
24 | @hasSection('sidebar')
25 |
28 | @endif
29 |
30 | @include('sections.footer')
31 |
32 |
33 | @php(do_action('get_footer'))
34 | @php(wp_footer())
35 |
36 |
37 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/page.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.app')
2 |
3 | @section('content')
4 | @while(have_posts()) @php(the_post())
5 | @include('partials.page-header')
6 | @includeFirst(['partials.content-page', 'partials.content'])
7 | @endwhile
8 | @endsection
9 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/partials/comments.blade.php:
--------------------------------------------------------------------------------
1 | @if (! post_password_required())
2 |
39 | @endif
40 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/partials/content-page.blade.php:
--------------------------------------------------------------------------------
1 | @php(the_content())
2 |
3 | @if ($pagination)
4 |
5 | {!! $pagination !!}
6 |
7 | @endif
8 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/partials/content-search.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 | @includeWhen(get_post_type() === 'post', 'partials.entry-meta')
10 |
11 |
12 |
13 | @php(the_excerpt())
14 |
15 |
16 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/partials/content-single.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {!! $title !!}
5 |
6 |
7 | @include('partials.entry-meta')
8 |
9 |
10 |
11 | @php(the_content())
12 |
13 |
14 | @if ($pagination)
15 |
16 |
17 | {!! $pagination !!}
18 |
19 |
20 | @endif
21 |
22 | @php(comments_template())
23 |
24 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/partials/content.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 | @include('partials.entry-meta')
10 |
11 |
12 |
13 | @php(the_excerpt())
14 |
15 |
16 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/partials/entry-meta.blade.php:
--------------------------------------------------------------------------------
1 |
2 | {{ get_the_date() }}
3 |
4 |
5 |
6 | {{ __('By', 'sage') }}
7 |
8 | {{ get_the_author() }}
9 |
10 |
11 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/partials/page-header.blade.php:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/search.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.app')
2 |
3 | @section('content')
4 | @include('partials.page-header')
5 |
6 | @if (! have_posts())
7 |
8 | {!! __('Sorry, no results were found.', 'sage') !!}
9 |
10 |
11 | {!! get_search_form(false) !!}
12 | @endif
13 |
14 | @while(have_posts()) @php(the_post())
15 | @include('partials.content-search')
16 | @endwhile
17 |
18 | {!! get_the_posts_navigation() !!}
19 | @endsection
20 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/sections/footer.blade.php:
--------------------------------------------------------------------------------
1 |
2 | @php(dynamic_sidebar('sidebar-footer'))
3 |
4 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/sections/header.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | {!! $siteName !!}
4 |
5 |
6 | @if (has_nav_menu('primary_navigation'))
7 |
8 | {!! wp_nav_menu(['theme_location' => 'primary_navigation', 'menu_class' => 'nav', 'echo' => false]) !!}
9 |
10 | @endif
11 |
12 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/sections/sidebar.blade.php:
--------------------------------------------------------------------------------
1 | @php(dynamic_sidebar('sidebar-primary'))
2 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/single.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.app')
2 |
3 | @section('content')
4 | @while(have_posts()) @php(the_post())
5 | @includeFirst(['partials.content-single-' . get_post_type(), 'partials.content-single'])
6 | @endwhile
7 | @endsection
8 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/resources/views/template-custom.blade.php:
--------------------------------------------------------------------------------
1 | {{--
2 | Template Name: Custom Template
3 | --}}
4 |
5 | @extends('layouts.app')
6 |
7 | @section('content')
8 | @while(have_posts()) @php(the_post())
9 | @include('partials.page-header')
10 | @include('partials.content-page')
11 | @endwhile
12 | @endsection
13 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpengine/example-sage-theme/912378f6a643c806973334369c1cceebc7bd2e11/wp-content/themes/your-roots-theme-name-here/screenshot.png
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/style.css:
--------------------------------------------------------------------------------
1 | /*
2 | Theme Name: Sage Starter Theme
3 | Theme URI: https://roots.io/sage/
4 | Description: Sage is a WordPress starter theme.
5 | Version: 10.8.2
6 | Author: Roots
7 | Author URI: https://roots.io/
8 | Text Domain: sage
9 | License: MIT License
10 | License URI: https://opensource.org/licenses/MIT
11 | Requires PHP: 8.1
12 | Requires at least: 5.9
13 | */
14 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} config */
2 | const config = {
3 | content: ['./app/**/*.php', './resources/**/*.{php,vue,js}'],
4 | theme: {
5 | extend: {
6 | colors: {}, // Extend Tailwind's default colors
7 | },
8 | },
9 | plugins: [],
10 | };
11 |
12 | export default config;
13 |
--------------------------------------------------------------------------------
/wp-content/themes/your-roots-theme-name-here/theme.json:
--------------------------------------------------------------------------------
1 | {
2 | "__generated__": "⚠️ This file is generated. Do not edit.",
3 | "$schema": "https://schemas.wp.org/trunk/theme.json",
4 | "version": 2,
5 | "settings": {
6 | "background": {
7 | "backgroundImage": true
8 | },
9 | "color": {
10 | "custom": false,
11 | "customDuotone": false,
12 | "customGradient": false,
13 | "defaultDuotone": false,
14 | "defaultGradients": false,
15 | "defaultPalette": false,
16 | "duotone": [],
17 | "palette": [
18 | {
19 | "color": "inherit",
20 | "name": "Inherit",
21 | "slug": "inherit"
22 | },
23 | {
24 | "color": "currentcolor",
25 | "name": "Current",
26 | "slug": "current"
27 | },
28 | {
29 | "color": "transparent",
30 | "name": "Transparent",
31 | "slug": "transparent"
32 | },
33 | {
34 | "color": "#000",
35 | "name": "Black",
36 | "slug": "black"
37 | },
38 | {
39 | "color": "#fff",
40 | "name": "White",
41 | "slug": "white"
42 | },
43 | {
44 | "color": "#f8fafc",
45 | "name": "Slate 50",
46 | "slug": "slate-50"
47 | },
48 | {
49 | "color": "#f1f5f9",
50 | "name": "Slate 100",
51 | "slug": "slate-100"
52 | },
53 | {
54 | "color": "#e2e8f0",
55 | "name": "Slate 200",
56 | "slug": "slate-200"
57 | },
58 | {
59 | "color": "#cbd5e1",
60 | "name": "Slate 300",
61 | "slug": "slate-300"
62 | },
63 | {
64 | "color": "#94a3b8",
65 | "name": "Slate 400",
66 | "slug": "slate-400"
67 | },
68 | {
69 | "color": "#64748b",
70 | "name": "Slate 500",
71 | "slug": "slate-500"
72 | },
73 | {
74 | "color": "#475569",
75 | "name": "Slate 600",
76 | "slug": "slate-600"
77 | },
78 | {
79 | "color": "#334155",
80 | "name": "Slate 700",
81 | "slug": "slate-700"
82 | },
83 | {
84 | "color": "#1e293b",
85 | "name": "Slate 800",
86 | "slug": "slate-800"
87 | },
88 | {
89 | "color": "#0f172a",
90 | "name": "Slate 900",
91 | "slug": "slate-900"
92 | },
93 | {
94 | "color": "#020617",
95 | "name": "Slate 950",
96 | "slug": "slate-950"
97 | },
98 | {
99 | "color": "#f9fafb",
100 | "name": "Gray 50",
101 | "slug": "gray-50"
102 | },
103 | {
104 | "color": "#f3f4f6",
105 | "name": "Gray 100",
106 | "slug": "gray-100"
107 | },
108 | {
109 | "color": "#e5e7eb",
110 | "name": "Gray 200",
111 | "slug": "gray-200"
112 | },
113 | {
114 | "color": "#d1d5db",
115 | "name": "Gray 300",
116 | "slug": "gray-300"
117 | },
118 | {
119 | "color": "#9ca3af",
120 | "name": "Gray 400",
121 | "slug": "gray-400"
122 | },
123 | {
124 | "color": "#6b7280",
125 | "name": "Gray 500",
126 | "slug": "gray-500"
127 | },
128 | {
129 | "color": "#4b5563",
130 | "name": "Gray 600",
131 | "slug": "gray-600"
132 | },
133 | {
134 | "color": "#374151",
135 | "name": "Gray 700",
136 | "slug": "gray-700"
137 | },
138 | {
139 | "color": "#1f2937",
140 | "name": "Gray 800",
141 | "slug": "gray-800"
142 | },
143 | {
144 | "color": "#111827",
145 | "name": "Gray 900",
146 | "slug": "gray-900"
147 | },
148 | {
149 | "color": "#030712",
150 | "name": "Gray 950",
151 | "slug": "gray-950"
152 | },
153 | {
154 | "color": "#fafafa",
155 | "name": "Zinc 50",
156 | "slug": "zinc-50"
157 | },
158 | {
159 | "color": "#f4f4f5",
160 | "name": "Zinc 100",
161 | "slug": "zinc-100"
162 | },
163 | {
164 | "color": "#e4e4e7",
165 | "name": "Zinc 200",
166 | "slug": "zinc-200"
167 | },
168 | {
169 | "color": "#d4d4d8",
170 | "name": "Zinc 300",
171 | "slug": "zinc-300"
172 | },
173 | {
174 | "color": "#a1a1aa",
175 | "name": "Zinc 400",
176 | "slug": "zinc-400"
177 | },
178 | {
179 | "color": "#71717a",
180 | "name": "Zinc 500",
181 | "slug": "zinc-500"
182 | },
183 | {
184 | "color": "#52525b",
185 | "name": "Zinc 600",
186 | "slug": "zinc-600"
187 | },
188 | {
189 | "color": "#3f3f46",
190 | "name": "Zinc 700",
191 | "slug": "zinc-700"
192 | },
193 | {
194 | "color": "#27272a",
195 | "name": "Zinc 800",
196 | "slug": "zinc-800"
197 | },
198 | {
199 | "color": "#18181b",
200 | "name": "Zinc 900",
201 | "slug": "zinc-900"
202 | },
203 | {
204 | "color": "#09090b",
205 | "name": "Zinc 950",
206 | "slug": "zinc-950"
207 | },
208 | {
209 | "color": "#fafafa",
210 | "name": "Neutral 50",
211 | "slug": "neutral-50"
212 | },
213 | {
214 | "color": "#f5f5f5",
215 | "name": "Neutral 100",
216 | "slug": "neutral-100"
217 | },
218 | {
219 | "color": "#e5e5e5",
220 | "name": "Neutral 200",
221 | "slug": "neutral-200"
222 | },
223 | {
224 | "color": "#d4d4d4",
225 | "name": "Neutral 300",
226 | "slug": "neutral-300"
227 | },
228 | {
229 | "color": "#a3a3a3",
230 | "name": "Neutral 400",
231 | "slug": "neutral-400"
232 | },
233 | {
234 | "color": "#737373",
235 | "name": "Neutral 500",
236 | "slug": "neutral-500"
237 | },
238 | {
239 | "color": "#525252",
240 | "name": "Neutral 600",
241 | "slug": "neutral-600"
242 | },
243 | {
244 | "color": "#404040",
245 | "name": "Neutral 700",
246 | "slug": "neutral-700"
247 | },
248 | {
249 | "color": "#262626",
250 | "name": "Neutral 800",
251 | "slug": "neutral-800"
252 | },
253 | {
254 | "color": "#171717",
255 | "name": "Neutral 900",
256 | "slug": "neutral-900"
257 | },
258 | {
259 | "color": "#0a0a0a",
260 | "name": "Neutral 950",
261 | "slug": "neutral-950"
262 | },
263 | {
264 | "color": "#fafaf9",
265 | "name": "Stone 50",
266 | "slug": "stone-50"
267 | },
268 | {
269 | "color": "#f5f5f4",
270 | "name": "Stone 100",
271 | "slug": "stone-100"
272 | },
273 | {
274 | "color": "#e7e5e4",
275 | "name": "Stone 200",
276 | "slug": "stone-200"
277 | },
278 | {
279 | "color": "#d6d3d1",
280 | "name": "Stone 300",
281 | "slug": "stone-300"
282 | },
283 | {
284 | "color": "#a8a29e",
285 | "name": "Stone 400",
286 | "slug": "stone-400"
287 | },
288 | {
289 | "color": "#78716c",
290 | "name": "Stone 500",
291 | "slug": "stone-500"
292 | },
293 | {
294 | "color": "#57534e",
295 | "name": "Stone 600",
296 | "slug": "stone-600"
297 | },
298 | {
299 | "color": "#44403c",
300 | "name": "Stone 700",
301 | "slug": "stone-700"
302 | },
303 | {
304 | "color": "#292524",
305 | "name": "Stone 800",
306 | "slug": "stone-800"
307 | },
308 | {
309 | "color": "#1c1917",
310 | "name": "Stone 900",
311 | "slug": "stone-900"
312 | },
313 | {
314 | "color": "#0c0a09",
315 | "name": "Stone 950",
316 | "slug": "stone-950"
317 | },
318 | {
319 | "color": "#fef2f2",
320 | "name": "Red 50",
321 | "slug": "red-50"
322 | },
323 | {
324 | "color": "#fee2e2",
325 | "name": "Red 100",
326 | "slug": "red-100"
327 | },
328 | {
329 | "color": "#fecaca",
330 | "name": "Red 200",
331 | "slug": "red-200"
332 | },
333 | {
334 | "color": "#fca5a5",
335 | "name": "Red 300",
336 | "slug": "red-300"
337 | },
338 | {
339 | "color": "#f87171",
340 | "name": "Red 400",
341 | "slug": "red-400"
342 | },
343 | {
344 | "color": "#ef4444",
345 | "name": "Red 500",
346 | "slug": "red-500"
347 | },
348 | {
349 | "color": "#dc2626",
350 | "name": "Red 600",
351 | "slug": "red-600"
352 | },
353 | {
354 | "color": "#b91c1c",
355 | "name": "Red 700",
356 | "slug": "red-700"
357 | },
358 | {
359 | "color": "#991b1b",
360 | "name": "Red 800",
361 | "slug": "red-800"
362 | },
363 | {
364 | "color": "#7f1d1d",
365 | "name": "Red 900",
366 | "slug": "red-900"
367 | },
368 | {
369 | "color": "#450a0a",
370 | "name": "Red 950",
371 | "slug": "red-950"
372 | },
373 | {
374 | "color": "#fff7ed",
375 | "name": "Orange 50",
376 | "slug": "orange-50"
377 | },
378 | {
379 | "color": "#ffedd5",
380 | "name": "Orange 100",
381 | "slug": "orange-100"
382 | },
383 | {
384 | "color": "#fed7aa",
385 | "name": "Orange 200",
386 | "slug": "orange-200"
387 | },
388 | {
389 | "color": "#fdba74",
390 | "name": "Orange 300",
391 | "slug": "orange-300"
392 | },
393 | {
394 | "color": "#fb923c",
395 | "name": "Orange 400",
396 | "slug": "orange-400"
397 | },
398 | {
399 | "color": "#f97316",
400 | "name": "Orange 500",
401 | "slug": "orange-500"
402 | },
403 | {
404 | "color": "#ea580c",
405 | "name": "Orange 600",
406 | "slug": "orange-600"
407 | },
408 | {
409 | "color": "#c2410c",
410 | "name": "Orange 700",
411 | "slug": "orange-700"
412 | },
413 | {
414 | "color": "#9a3412",
415 | "name": "Orange 800",
416 | "slug": "orange-800"
417 | },
418 | {
419 | "color": "#7c2d12",
420 | "name": "Orange 900",
421 | "slug": "orange-900"
422 | },
423 | {
424 | "color": "#431407",
425 | "name": "Orange 950",
426 | "slug": "orange-950"
427 | },
428 | {
429 | "color": "#fffbeb",
430 | "name": "Amber 50",
431 | "slug": "amber-50"
432 | },
433 | {
434 | "color": "#fef3c7",
435 | "name": "Amber 100",
436 | "slug": "amber-100"
437 | },
438 | {
439 | "color": "#fde68a",
440 | "name": "Amber 200",
441 | "slug": "amber-200"
442 | },
443 | {
444 | "color": "#fcd34d",
445 | "name": "Amber 300",
446 | "slug": "amber-300"
447 | },
448 | {
449 | "color": "#fbbf24",
450 | "name": "Amber 400",
451 | "slug": "amber-400"
452 | },
453 | {
454 | "color": "#f59e0b",
455 | "name": "Amber 500",
456 | "slug": "amber-500"
457 | },
458 | {
459 | "color": "#d97706",
460 | "name": "Amber 600",
461 | "slug": "amber-600"
462 | },
463 | {
464 | "color": "#b45309",
465 | "name": "Amber 700",
466 | "slug": "amber-700"
467 | },
468 | {
469 | "color": "#92400e",
470 | "name": "Amber 800",
471 | "slug": "amber-800"
472 | },
473 | {
474 | "color": "#78350f",
475 | "name": "Amber 900",
476 | "slug": "amber-900"
477 | },
478 | {
479 | "color": "#451a03",
480 | "name": "Amber 950",
481 | "slug": "amber-950"
482 | },
483 | {
484 | "color": "#fefce8",
485 | "name": "Yellow 50",
486 | "slug": "yellow-50"
487 | },
488 | {
489 | "color": "#fef9c3",
490 | "name": "Yellow 100",
491 | "slug": "yellow-100"
492 | },
493 | {
494 | "color": "#fef08a",
495 | "name": "Yellow 200",
496 | "slug": "yellow-200"
497 | },
498 | {
499 | "color": "#fde047",
500 | "name": "Yellow 300",
501 | "slug": "yellow-300"
502 | },
503 | {
504 | "color": "#facc15",
505 | "name": "Yellow 400",
506 | "slug": "yellow-400"
507 | },
508 | {
509 | "color": "#eab308",
510 | "name": "Yellow 500",
511 | "slug": "yellow-500"
512 | },
513 | {
514 | "color": "#ca8a04",
515 | "name": "Yellow 600",
516 | "slug": "yellow-600"
517 | },
518 | {
519 | "color": "#a16207",
520 | "name": "Yellow 700",
521 | "slug": "yellow-700"
522 | },
523 | {
524 | "color": "#854d0e",
525 | "name": "Yellow 800",
526 | "slug": "yellow-800"
527 | },
528 | {
529 | "color": "#713f12",
530 | "name": "Yellow 900",
531 | "slug": "yellow-900"
532 | },
533 | {
534 | "color": "#422006",
535 | "name": "Yellow 950",
536 | "slug": "yellow-950"
537 | },
538 | {
539 | "color": "#f7fee7",
540 | "name": "Lime 50",
541 | "slug": "lime-50"
542 | },
543 | {
544 | "color": "#ecfccb",
545 | "name": "Lime 100",
546 | "slug": "lime-100"
547 | },
548 | {
549 | "color": "#d9f99d",
550 | "name": "Lime 200",
551 | "slug": "lime-200"
552 | },
553 | {
554 | "color": "#bef264",
555 | "name": "Lime 300",
556 | "slug": "lime-300"
557 | },
558 | {
559 | "color": "#a3e635",
560 | "name": "Lime 400",
561 | "slug": "lime-400"
562 | },
563 | {
564 | "color": "#84cc16",
565 | "name": "Lime 500",
566 | "slug": "lime-500"
567 | },
568 | {
569 | "color": "#65a30d",
570 | "name": "Lime 600",
571 | "slug": "lime-600"
572 | },
573 | {
574 | "color": "#4d7c0f",
575 | "name": "Lime 700",
576 | "slug": "lime-700"
577 | },
578 | {
579 | "color": "#3f6212",
580 | "name": "Lime 800",
581 | "slug": "lime-800"
582 | },
583 | {
584 | "color": "#365314",
585 | "name": "Lime 900",
586 | "slug": "lime-900"
587 | },
588 | {
589 | "color": "#1a2e05",
590 | "name": "Lime 950",
591 | "slug": "lime-950"
592 | },
593 | {
594 | "color": "#f0fdf4",
595 | "name": "Green 50",
596 | "slug": "green-50"
597 | },
598 | {
599 | "color": "#dcfce7",
600 | "name": "Green 100",
601 | "slug": "green-100"
602 | },
603 | {
604 | "color": "#bbf7d0",
605 | "name": "Green 200",
606 | "slug": "green-200"
607 | },
608 | {
609 | "color": "#86efac",
610 | "name": "Green 300",
611 | "slug": "green-300"
612 | },
613 | {
614 | "color": "#4ade80",
615 | "name": "Green 400",
616 | "slug": "green-400"
617 | },
618 | {
619 | "color": "#22c55e",
620 | "name": "Green 500",
621 | "slug": "green-500"
622 | },
623 | {
624 | "color": "#16a34a",
625 | "name": "Green 600",
626 | "slug": "green-600"
627 | },
628 | {
629 | "color": "#15803d",
630 | "name": "Green 700",
631 | "slug": "green-700"
632 | },
633 | {
634 | "color": "#166534",
635 | "name": "Green 800",
636 | "slug": "green-800"
637 | },
638 | {
639 | "color": "#14532d",
640 | "name": "Green 900",
641 | "slug": "green-900"
642 | },
643 | {
644 | "color": "#052e16",
645 | "name": "Green 950",
646 | "slug": "green-950"
647 | },
648 | {
649 | "color": "#ecfdf5",
650 | "name": "Emerald 50",
651 | "slug": "emerald-50"
652 | },
653 | {
654 | "color": "#d1fae5",
655 | "name": "Emerald 100",
656 | "slug": "emerald-100"
657 | },
658 | {
659 | "color": "#a7f3d0",
660 | "name": "Emerald 200",
661 | "slug": "emerald-200"
662 | },
663 | {
664 | "color": "#6ee7b7",
665 | "name": "Emerald 300",
666 | "slug": "emerald-300"
667 | },
668 | {
669 | "color": "#34d399",
670 | "name": "Emerald 400",
671 | "slug": "emerald-400"
672 | },
673 | {
674 | "color": "#10b981",
675 | "name": "Emerald 500",
676 | "slug": "emerald-500"
677 | },
678 | {
679 | "color": "#059669",
680 | "name": "Emerald 600",
681 | "slug": "emerald-600"
682 | },
683 | {
684 | "color": "#047857",
685 | "name": "Emerald 700",
686 | "slug": "emerald-700"
687 | },
688 | {
689 | "color": "#065f46",
690 | "name": "Emerald 800",
691 | "slug": "emerald-800"
692 | },
693 | {
694 | "color": "#064e3b",
695 | "name": "Emerald 900",
696 | "slug": "emerald-900"
697 | },
698 | {
699 | "color": "#022c22",
700 | "name": "Emerald 950",
701 | "slug": "emerald-950"
702 | },
703 | {
704 | "color": "#f0fdfa",
705 | "name": "Teal 50",
706 | "slug": "teal-50"
707 | },
708 | {
709 | "color": "#ccfbf1",
710 | "name": "Teal 100",
711 | "slug": "teal-100"
712 | },
713 | {
714 | "color": "#99f6e4",
715 | "name": "Teal 200",
716 | "slug": "teal-200"
717 | },
718 | {
719 | "color": "#5eead4",
720 | "name": "Teal 300",
721 | "slug": "teal-300"
722 | },
723 | {
724 | "color": "#2dd4bf",
725 | "name": "Teal 400",
726 | "slug": "teal-400"
727 | },
728 | {
729 | "color": "#14b8a6",
730 | "name": "Teal 500",
731 | "slug": "teal-500"
732 | },
733 | {
734 | "color": "#0d9488",
735 | "name": "Teal 600",
736 | "slug": "teal-600"
737 | },
738 | {
739 | "color": "#0f766e",
740 | "name": "Teal 700",
741 | "slug": "teal-700"
742 | },
743 | {
744 | "color": "#115e59",
745 | "name": "Teal 800",
746 | "slug": "teal-800"
747 | },
748 | {
749 | "color": "#134e4a",
750 | "name": "Teal 900",
751 | "slug": "teal-900"
752 | },
753 | {
754 | "color": "#042f2e",
755 | "name": "Teal 950",
756 | "slug": "teal-950"
757 | },
758 | {
759 | "color": "#ecfeff",
760 | "name": "Cyan 50",
761 | "slug": "cyan-50"
762 | },
763 | {
764 | "color": "#cffafe",
765 | "name": "Cyan 100",
766 | "slug": "cyan-100"
767 | },
768 | {
769 | "color": "#a5f3fc",
770 | "name": "Cyan 200",
771 | "slug": "cyan-200"
772 | },
773 | {
774 | "color": "#67e8f9",
775 | "name": "Cyan 300",
776 | "slug": "cyan-300"
777 | },
778 | {
779 | "color": "#22d3ee",
780 | "name": "Cyan 400",
781 | "slug": "cyan-400"
782 | },
783 | {
784 | "color": "#06b6d4",
785 | "name": "Cyan 500",
786 | "slug": "cyan-500"
787 | },
788 | {
789 | "color": "#0891b2",
790 | "name": "Cyan 600",
791 | "slug": "cyan-600"
792 | },
793 | {
794 | "color": "#0e7490",
795 | "name": "Cyan 700",
796 | "slug": "cyan-700"
797 | },
798 | {
799 | "color": "#155e75",
800 | "name": "Cyan 800",
801 | "slug": "cyan-800"
802 | },
803 | {
804 | "color": "#164e63",
805 | "name": "Cyan 900",
806 | "slug": "cyan-900"
807 | },
808 | {
809 | "color": "#083344",
810 | "name": "Cyan 950",
811 | "slug": "cyan-950"
812 | },
813 | {
814 | "color": "#f0f9ff",
815 | "name": "Sky 50",
816 | "slug": "sky-50"
817 | },
818 | {
819 | "color": "#e0f2fe",
820 | "name": "Sky 100",
821 | "slug": "sky-100"
822 | },
823 | {
824 | "color": "#bae6fd",
825 | "name": "Sky 200",
826 | "slug": "sky-200"
827 | },
828 | {
829 | "color": "#7dd3fc",
830 | "name": "Sky 300",
831 | "slug": "sky-300"
832 | },
833 | {
834 | "color": "#38bdf8",
835 | "name": "Sky 400",
836 | "slug": "sky-400"
837 | },
838 | {
839 | "color": "#0ea5e9",
840 | "name": "Sky 500",
841 | "slug": "sky-500"
842 | },
843 | {
844 | "color": "#0284c7",
845 | "name": "Sky 600",
846 | "slug": "sky-600"
847 | },
848 | {
849 | "color": "#0369a1",
850 | "name": "Sky 700",
851 | "slug": "sky-700"
852 | },
853 | {
854 | "color": "#075985",
855 | "name": "Sky 800",
856 | "slug": "sky-800"
857 | },
858 | {
859 | "color": "#0c4a6e",
860 | "name": "Sky 900",
861 | "slug": "sky-900"
862 | },
863 | {
864 | "color": "#082f49",
865 | "name": "Sky 950",
866 | "slug": "sky-950"
867 | },
868 | {
869 | "color": "#eff6ff",
870 | "name": "Blue 50",
871 | "slug": "blue-50"
872 | },
873 | {
874 | "color": "#dbeafe",
875 | "name": "Blue 100",
876 | "slug": "blue-100"
877 | },
878 | {
879 | "color": "#bfdbfe",
880 | "name": "Blue 200",
881 | "slug": "blue-200"
882 | },
883 | {
884 | "color": "#93c5fd",
885 | "name": "Blue 300",
886 | "slug": "blue-300"
887 | },
888 | {
889 | "color": "#60a5fa",
890 | "name": "Blue 400",
891 | "slug": "blue-400"
892 | },
893 | {
894 | "color": "#3b82f6",
895 | "name": "Blue 500",
896 | "slug": "blue-500"
897 | },
898 | {
899 | "color": "#2563eb",
900 | "name": "Blue 600",
901 | "slug": "blue-600"
902 | },
903 | {
904 | "color": "#1d4ed8",
905 | "name": "Blue 700",
906 | "slug": "blue-700"
907 | },
908 | {
909 | "color": "#1e40af",
910 | "name": "Blue 800",
911 | "slug": "blue-800"
912 | },
913 | {
914 | "color": "#1e3a8a",
915 | "name": "Blue 900",
916 | "slug": "blue-900"
917 | },
918 | {
919 | "color": "#172554",
920 | "name": "Blue 950",
921 | "slug": "blue-950"
922 | },
923 | {
924 | "color": "#eef2ff",
925 | "name": "Indigo 50",
926 | "slug": "indigo-50"
927 | },
928 | {
929 | "color": "#e0e7ff",
930 | "name": "Indigo 100",
931 | "slug": "indigo-100"
932 | },
933 | {
934 | "color": "#c7d2fe",
935 | "name": "Indigo 200",
936 | "slug": "indigo-200"
937 | },
938 | {
939 | "color": "#a5b4fc",
940 | "name": "Indigo 300",
941 | "slug": "indigo-300"
942 | },
943 | {
944 | "color": "#818cf8",
945 | "name": "Indigo 400",
946 | "slug": "indigo-400"
947 | },
948 | {
949 | "color": "#6366f1",
950 | "name": "Indigo 500",
951 | "slug": "indigo-500"
952 | },
953 | {
954 | "color": "#4f46e5",
955 | "name": "Indigo 600",
956 | "slug": "indigo-600"
957 | },
958 | {
959 | "color": "#4338ca",
960 | "name": "Indigo 700",
961 | "slug": "indigo-700"
962 | },
963 | {
964 | "color": "#3730a3",
965 | "name": "Indigo 800",
966 | "slug": "indigo-800"
967 | },
968 | {
969 | "color": "#312e81",
970 | "name": "Indigo 900",
971 | "slug": "indigo-900"
972 | },
973 | {
974 | "color": "#1e1b4b",
975 | "name": "Indigo 950",
976 | "slug": "indigo-950"
977 | },
978 | {
979 | "color": "#f5f3ff",
980 | "name": "Violet 50",
981 | "slug": "violet-50"
982 | },
983 | {
984 | "color": "#ede9fe",
985 | "name": "Violet 100",
986 | "slug": "violet-100"
987 | },
988 | {
989 | "color": "#ddd6fe",
990 | "name": "Violet 200",
991 | "slug": "violet-200"
992 | },
993 | {
994 | "color": "#c4b5fd",
995 | "name": "Violet 300",
996 | "slug": "violet-300"
997 | },
998 | {
999 | "color": "#a78bfa",
1000 | "name": "Violet 400",
1001 | "slug": "violet-400"
1002 | },
1003 | {
1004 | "color": "#8b5cf6",
1005 | "name": "Violet 500",
1006 | "slug": "violet-500"
1007 | },
1008 | {
1009 | "color": "#7c3aed",
1010 | "name": "Violet 600",
1011 | "slug": "violet-600"
1012 | },
1013 | {
1014 | "color": "#6d28d9",
1015 | "name": "Violet 700",
1016 | "slug": "violet-700"
1017 | },
1018 | {
1019 | "color": "#5b21b6",
1020 | "name": "Violet 800",
1021 | "slug": "violet-800"
1022 | },
1023 | {
1024 | "color": "#4c1d95",
1025 | "name": "Violet 900",
1026 | "slug": "violet-900"
1027 | },
1028 | {
1029 | "color": "#2e1065",
1030 | "name": "Violet 950",
1031 | "slug": "violet-950"
1032 | },
1033 | {
1034 | "color": "#faf5ff",
1035 | "name": "Purple 50",
1036 | "slug": "purple-50"
1037 | },
1038 | {
1039 | "color": "#f3e8ff",
1040 | "name": "Purple 100",
1041 | "slug": "purple-100"
1042 | },
1043 | {
1044 | "color": "#e9d5ff",
1045 | "name": "Purple 200",
1046 | "slug": "purple-200"
1047 | },
1048 | {
1049 | "color": "#d8b4fe",
1050 | "name": "Purple 300",
1051 | "slug": "purple-300"
1052 | },
1053 | {
1054 | "color": "#c084fc",
1055 | "name": "Purple 400",
1056 | "slug": "purple-400"
1057 | },
1058 | {
1059 | "color": "#a855f7",
1060 | "name": "Purple 500",
1061 | "slug": "purple-500"
1062 | },
1063 | {
1064 | "color": "#9333ea",
1065 | "name": "Purple 600",
1066 | "slug": "purple-600"
1067 | },
1068 | {
1069 | "color": "#7e22ce",
1070 | "name": "Purple 700",
1071 | "slug": "purple-700"
1072 | },
1073 | {
1074 | "color": "#6b21a8",
1075 | "name": "Purple 800",
1076 | "slug": "purple-800"
1077 | },
1078 | {
1079 | "color": "#581c87",
1080 | "name": "Purple 900",
1081 | "slug": "purple-900"
1082 | },
1083 | {
1084 | "color": "#3b0764",
1085 | "name": "Purple 950",
1086 | "slug": "purple-950"
1087 | },
1088 | {
1089 | "color": "#fdf4ff",
1090 | "name": "Fuchsia 50",
1091 | "slug": "fuchsia-50"
1092 | },
1093 | {
1094 | "color": "#fae8ff",
1095 | "name": "Fuchsia 100",
1096 | "slug": "fuchsia-100"
1097 | },
1098 | {
1099 | "color": "#f5d0fe",
1100 | "name": "Fuchsia 200",
1101 | "slug": "fuchsia-200"
1102 | },
1103 | {
1104 | "color": "#f0abfc",
1105 | "name": "Fuchsia 300",
1106 | "slug": "fuchsia-300"
1107 | },
1108 | {
1109 | "color": "#e879f9",
1110 | "name": "Fuchsia 400",
1111 | "slug": "fuchsia-400"
1112 | },
1113 | {
1114 | "color": "#d946ef",
1115 | "name": "Fuchsia 500",
1116 | "slug": "fuchsia-500"
1117 | },
1118 | {
1119 | "color": "#c026d3",
1120 | "name": "Fuchsia 600",
1121 | "slug": "fuchsia-600"
1122 | },
1123 | {
1124 | "color": "#a21caf",
1125 | "name": "Fuchsia 700",
1126 | "slug": "fuchsia-700"
1127 | },
1128 | {
1129 | "color": "#86198f",
1130 | "name": "Fuchsia 800",
1131 | "slug": "fuchsia-800"
1132 | },
1133 | {
1134 | "color": "#701a75",
1135 | "name": "Fuchsia 900",
1136 | "slug": "fuchsia-900"
1137 | },
1138 | {
1139 | "color": "#4a044e",
1140 | "name": "Fuchsia 950",
1141 | "slug": "fuchsia-950"
1142 | },
1143 | {
1144 | "color": "#fdf2f8",
1145 | "name": "Pink 50",
1146 | "slug": "pink-50"
1147 | },
1148 | {
1149 | "color": "#fce7f3",
1150 | "name": "Pink 100",
1151 | "slug": "pink-100"
1152 | },
1153 | {
1154 | "color": "#fbcfe8",
1155 | "name": "Pink 200",
1156 | "slug": "pink-200"
1157 | },
1158 | {
1159 | "color": "#f9a8d4",
1160 | "name": "Pink 300",
1161 | "slug": "pink-300"
1162 | },
1163 | {
1164 | "color": "#f472b6",
1165 | "name": "Pink 400",
1166 | "slug": "pink-400"
1167 | },
1168 | {
1169 | "color": "#ec4899",
1170 | "name": "Pink 500",
1171 | "slug": "pink-500"
1172 | },
1173 | {
1174 | "color": "#db2777",
1175 | "name": "Pink 600",
1176 | "slug": "pink-600"
1177 | },
1178 | {
1179 | "color": "#be185d",
1180 | "name": "Pink 700",
1181 | "slug": "pink-700"
1182 | },
1183 | {
1184 | "color": "#9d174d",
1185 | "name": "Pink 800",
1186 | "slug": "pink-800"
1187 | },
1188 | {
1189 | "color": "#831843",
1190 | "name": "Pink 900",
1191 | "slug": "pink-900"
1192 | },
1193 | {
1194 | "color": "#500724",
1195 | "name": "Pink 950",
1196 | "slug": "pink-950"
1197 | },
1198 | {
1199 | "color": "#fff1f2",
1200 | "name": "Rose 50",
1201 | "slug": "rose-50"
1202 | },
1203 | {
1204 | "color": "#ffe4e6",
1205 | "name": "Rose 100",
1206 | "slug": "rose-100"
1207 | },
1208 | {
1209 | "color": "#fecdd3",
1210 | "name": "Rose 200",
1211 | "slug": "rose-200"
1212 | },
1213 | {
1214 | "color": "#fda4af",
1215 | "name": "Rose 300",
1216 | "slug": "rose-300"
1217 | },
1218 | {
1219 | "color": "#fb7185",
1220 | "name": "Rose 400",
1221 | "slug": "rose-400"
1222 | },
1223 | {
1224 | "color": "#f43f5e",
1225 | "name": "Rose 500",
1226 | "slug": "rose-500"
1227 | },
1228 | {
1229 | "color": "#e11d48",
1230 | "name": "Rose 600",
1231 | "slug": "rose-600"
1232 | },
1233 | {
1234 | "color": "#be123c",
1235 | "name": "Rose 700",
1236 | "slug": "rose-700"
1237 | },
1238 | {
1239 | "color": "#9f1239",
1240 | "name": "Rose 800",
1241 | "slug": "rose-800"
1242 | },
1243 | {
1244 | "color": "#881337",
1245 | "name": "Rose 900",
1246 | "slug": "rose-900"
1247 | },
1248 | {
1249 | "color": "#4c0519",
1250 | "name": "Rose 950",
1251 | "slug": "rose-950"
1252 | }
1253 | ]
1254 | },
1255 | "custom": {
1256 | "spacing": {},
1257 | "typography": {
1258 | "font-size": {},
1259 | "line-height": {}
1260 | }
1261 | },
1262 | "spacing": {
1263 | "padding": true,
1264 | "units": [
1265 | "px",
1266 | "%",
1267 | "em",
1268 | "rem",
1269 | "vw",
1270 | "vh"
1271 | ]
1272 | },
1273 | "typography": {
1274 | "customFontSize": false,
1275 | "fontFamilies": [
1276 | {
1277 | "fontFamily": "ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"",
1278 | "name": "Ui-sans-serif",
1279 | "slug": "sans"
1280 | },
1281 | {
1282 | "fontFamily": "ui-serif,Georgia,Cambria,\"Times New Roman\",Times,serif",
1283 | "name": "Ui-serif",
1284 | "slug": "serif"
1285 | },
1286 | {
1287 | "fontFamily": "ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace",
1288 | "name": "Ui-monospace",
1289 | "slug": "mono"
1290 | }
1291 | ],
1292 | "fontSizes": [
1293 | {
1294 | "name": "xs",
1295 | "size": "0.75rem",
1296 | "slug": "xs"
1297 | },
1298 | {
1299 | "name": "sm",
1300 | "size": "0.875rem",
1301 | "slug": "sm"
1302 | },
1303 | {
1304 | "name": "base",
1305 | "size": "1rem",
1306 | "slug": "base"
1307 | },
1308 | {
1309 | "name": "lg",
1310 | "size": "1.125rem",
1311 | "slug": "lg"
1312 | },
1313 | {
1314 | "name": "xl",
1315 | "size": "1.25rem",
1316 | "slug": "xl"
1317 | },
1318 | {
1319 | "name": "2xl",
1320 | "size": "1.5rem",
1321 | "slug": "2xl"
1322 | },
1323 | {
1324 | "name": "3xl",
1325 | "size": "1.875rem",
1326 | "slug": "3xl"
1327 | },
1328 | {
1329 | "name": "4xl",
1330 | "size": "2.25rem",
1331 | "slug": "4xl"
1332 | },
1333 | {
1334 | "name": "5xl",
1335 | "size": "3rem",
1336 | "slug": "5xl"
1337 | },
1338 | {
1339 | "name": "6xl",
1340 | "size": "3.75rem",
1341 | "slug": "6xl"
1342 | },
1343 | {
1344 | "name": "7xl",
1345 | "size": "4.5rem",
1346 | "slug": "7xl"
1347 | },
1348 | {
1349 | "name": "8xl",
1350 | "size": "6rem",
1351 | "slug": "8xl"
1352 | },
1353 | {
1354 | "name": "9xl",
1355 | "size": "8rem",
1356 | "slug": "9xl"
1357 | }
1358 | ]
1359 | }
1360 | }
1361 | }
--------------------------------------------------------------------------------
5 | {!! $title !!} 6 |
7 | 8 |9 | {!! $responses !!} 10 |
11 | 12 | @if ($paginated) 13 | 28 | @endif 29 | @endif 30 | 31 | @if ($closed) 32 |