├── .gitattributes
├── .github
└── workflows
│ ├── dev.yml
│ └── phpcs.yml
├── .gitignore
├── 404.php
├── LICENSE
├── README.MD
├── archive.php
├── block-templates
└── index.html
├── comments.php
├── composer.json
├── css
└── app.css
├── editor-style.css
├── footer.php
├── functions.php
├── header.php
├── inc
├── custom-header.php
├── customizer.php
├── jetpack.php
├── template-functions.php
└── template-tags.php
├── index.php
├── js
├── app.js
├── app.min.js
├── customizer.js
└── navigation.js
├── languages
├── readme.txt
└── tailwind.pot
├── package-lock.json
├── package.json
├── page.php
├── phpcs.xml.dist
├── postcss.config.js
├── resources
├── css
│ ├── app.css
│ ├── block-editor.css
│ ├── custom.css
│ └── editor-style.css
└── js
│ └── app.js
├── safelist.txt
├── search.php
├── sidebar.php
├── single.php
├── style-rtl.css
├── style.css
├── tailpress.json
├── tailwind.config.js
├── template-parts
├── content-none.php
├── content-page.php
├── content-search.php
├── content-single.php
└── content.php
├── theme.json
└── webpack.mix.js
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.github/workflows/dev.yml:
--------------------------------------------------------------------------------
1 | # This is a basic workflow to help you get started with Actions
2 |
3 | name: CI
4 |
5 | # Controls when the action will run.
6 | on:
7 | # Triggers the workflow on push or pull request events but only for the dev branch
8 | push:
9 | branches: [ dev ]
10 |
11 | # Allows you to run this workflow manually from the Actions tab
12 | workflow_dispatch:
13 |
14 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
15 | jobs:
16 | # This workflow contains a single job called "build"
17 | build:
18 | # The type of runner that the job will run on
19 | runs-on: ubuntu-latest
20 |
21 | # Steps represent a sequence of tasks that will be executed as part of the job
22 | steps:
23 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
24 | - uses: actions/checkout@v2
25 |
26 | - name: reactive-readme
27 | # You may pin to the exact commit or the version.
28 | # uses: VisualBean/reactive-readme@820e2e0b3d730eaef7c5b5f23960aef0b0e9a325
29 | uses: VisualBean/reactive-readme@v1
30 | with:
31 | # The value to set the template to.
32 | value: "# You're in the dev branch"
33 | # The section of the README to update.
34 | section: devmessage
35 | # The target branch to update.
36 | branch: dev
37 |
38 |
--------------------------------------------------------------------------------
/.github/workflows/phpcs.yml:
--------------------------------------------------------------------------------
1 | name: WPCS check
2 |
3 | on: pull_request
4 |
5 | jobs:
6 | phpcs:
7 | name: WPCS
8 | runs-on: ubuntu-latest
9 | steps:
10 | - uses: actions/checkout@v2
11 | - name: WPCS check
12 | uses: 10up/wpcs-action@stable
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /.idea
3 | /.vscode
4 | /mix-manifest.json
5 |
--------------------------------------------------------------------------------
/404.php:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
15 |
16 |
19 |
20 |
21 |
22 |
23 |
28 |
29 |
45 |
46 | ' . sprintf( esc_html__( 'Try looking in the monthly archives. %1$s', 'tailwind' ), convert_smilies( ':)' ) ) . '';
49 | the_widget( 'WP_Widget_Archives', 'dropdown=1', "after_title=$tailwind_archive_content" );
50 |
51 | the_widget( 'WP_Widget_Tag_Cloud' );
52 | ?>
53 |
54 |
55 |
56 |
57 |
58 |
59 |
5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6 | Everyone is permitted to copy and distribute verbatim copies
7 | of this license document, but changing it is not allowed.
8 |
9 | Preamble
10 |
11 | The licenses for most software are designed to take away your
12 | freedom to share and change it. By contrast, the GNU General Public
13 | License is intended to guarantee your freedom to share and change free
14 | software--to make sure the software is free for all its users. This
15 | General Public License applies to most of the Free Software
16 | Foundation's software and to any other program whose authors commit to
17 | using it. (Some other Free Software Foundation software is covered by
18 | the GNU Lesser General Public License instead.) You can apply it to
19 | your programs, too.
20 |
21 | When we speak of free software, we are referring to freedom, not
22 | price. Our General Public Licenses are designed to make sure that you
23 | have the freedom to distribute copies of free software (and charge for
24 | this service if you wish), that you receive source code or can get it
25 | if you want it, that you can change the software or use pieces of it
26 | in new free programs; and that you know you can do these things.
27 |
28 | To protect your rights, we need to make restrictions that forbid
29 | anyone to deny you these rights or to ask you to surrender the rights.
30 | These restrictions translate to certain responsibilities for you if you
31 | distribute copies of the software, or if you modify it.
32 |
33 | For example, if you distribute copies of such a program, whether
34 | gratis or for a fee, you must give the recipients all the rights that
35 | you have. You must make sure that they, too, receive or can get the
36 | source code. And you must show them these terms so they know their
37 | rights.
38 |
39 | We protect your rights with two steps: (1) copyright the software, and
40 | (2) offer you this license which gives you legal permission to copy,
41 | distribute and/or modify the software.
42 |
43 | Also, for each author's protection and ours, we want to make certain
44 | that everyone understands that there is no warranty for this free
45 | software. If the software is modified by someone else and passed on, we
46 | want its recipients to know that what they have is not the original, so
47 | that any problems introduced by others will not reflect on the original
48 | authors' reputations.
49 |
50 | Finally, any free program is threatened constantly by software
51 | patents. We wish to avoid the danger that redistributors of a free
52 | program will individually obtain patent licenses, in effect making the
53 | program proprietary. To prevent this, we have made it clear that any
54 | patent must be licensed for everyone's free use or not licensed at all.
55 |
56 | The precise terms and conditions for copying, distribution and
57 | modification follow.
58 |
59 | GNU GENERAL PUBLIC LICENSE
60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61 |
62 | 0. This License applies to any program or other work which contains
63 | a notice placed by the copyright holder saying it may be distributed
64 | under the terms of this General Public License. The "Program", below,
65 | refers to any such program or work, and a "work based on the Program"
66 | means either the Program or any derivative work under copyright law:
67 | that is to say, a work containing the Program or a portion of it,
68 | either verbatim or with modifications and/or translated into another
69 | language. (Hereinafter, translation is included without limitation in
70 | the term "modification".) Each licensee is addressed as "you".
71 |
72 | Activities other than copying, distribution and modification are not
73 | covered by this License; they are outside its scope. The act of
74 | running the Program is not restricted, and the output from the Program
75 | is covered only if its contents constitute a work based on the
76 | Program (independent of having been made by running the Program).
77 | Whether that is true depends on what the Program does.
78 |
79 | 1. You may copy and distribute verbatim copies of the Program's
80 | source code as you receive it, in any medium, provided that you
81 | conspicuously and appropriately publish on each copy an appropriate
82 | copyright notice and disclaimer of warranty; keep intact all the
83 | notices that refer to this License and to the absence of any warranty;
84 | and give any other recipients of the Program a copy of this License
85 | along with the Program.
86 |
87 | You may charge a fee for the physical act of transferring a copy, and
88 | you may at your option offer warranty protection in exchange for a fee.
89 |
90 | 2. You may modify your copy or copies of the Program or any portion
91 | of it, thus forming a work based on the Program, and copy and
92 | distribute such modifications or work under the terms of Section 1
93 | above, provided that you also meet all of these conditions:
94 |
95 | a) You must cause the modified files to carry prominent notices
96 | stating that you changed the files and the date of any change.
97 |
98 | b) You must cause any work that you distribute or publish, that in
99 | whole or in part contains or is derived from the Program or any
100 | part thereof, to be licensed as a whole at no charge to all third
101 | parties under the terms of this License.
102 |
103 | c) If the modified program normally reads commands interactively
104 | when run, you must cause it, when started running for such
105 | interactive use in the most ordinary way, to print or display an
106 | announcement including an appropriate copyright notice and a
107 | notice that there is no warranty (or else, saying that you provide
108 | a warranty) and that users may redistribute the program under
109 | these conditions, and telling the user how to view a copy of this
110 | License. (Exception: if the Program itself is interactive but
111 | does not normally print such an announcement, your work based on
112 | the Program is not required to print an announcement.)
113 |
114 | These requirements apply to the modified work as a whole. If
115 | identifiable sections of that work are not derived from the Program,
116 | and can be reasonably considered independent and separate works in
117 | themselves, then this License, and its terms, do not apply to those
118 | sections when you distribute them as separate works. But when you
119 | distribute the same sections as part of a whole which is a work based
120 | on the Program, the distribution of the whole must be on the terms of
121 | this License, whose permissions for other licensees extend to the
122 | entire whole, and thus to each and every part regardless of who wrote it.
123 |
124 | Thus, it is not the intent of this section to claim rights or contest
125 | your rights to work written entirely by you; rather, the intent is to
126 | exercise the right to control the distribution of derivative or
127 | collective works based on the Program.
128 |
129 | In addition, mere aggregation of another work not based on the Program
130 | with the Program (or with a work based on the Program) on a volume of
131 | a storage or distribution medium does not bring the other work under
132 | the scope of this License.
133 |
134 | 3. You may copy and distribute the Program (or a work based on it,
135 | under Section 2) in object code or executable form under the terms of
136 | Sections 1 and 2 above provided that you also do one of the following:
137 |
138 | a) Accompany it with the complete corresponding machine-readable
139 | source code, which must be distributed under the terms of Sections
140 | 1 and 2 above on a medium customarily used for software interchange; or,
141 |
142 | b) Accompany it with a written offer, valid for at least three
143 | years, to give any third party, for a charge no more than your
144 | cost of physically performing source distribution, a complete
145 | machine-readable copy of the corresponding source code, to be
146 | distributed under the terms of Sections 1 and 2 above on a medium
147 | customarily used for software interchange; or,
148 |
149 | c) Accompany it with the information you received as to the offer
150 | to distribute corresponding source code. (This alternative is
151 | allowed only for noncommercial distribution and only if you
152 | received the program in object code or executable form with such
153 | an offer, in accord with Subsection b above.)
154 |
155 | The source code for a work means the preferred form of the work for
156 | making modifications to it. For an executable work, complete source
157 | code means all the source code for all modules it contains, plus any
158 | associated interface definition files, plus the scripts used to
159 | control compilation and installation of the executable. However, as a
160 | special exception, the source code distributed need not include
161 | anything that is normally distributed (in either source or binary
162 | form) with the major components (compiler, kernel, and so on) of the
163 | operating system on which the executable runs, unless that component
164 | itself accompanies the executable.
165 |
166 | If distribution of executable or object code is made by offering
167 | access to copy from a designated place, then offering equivalent
168 | access to copy the source code from the same place counts as
169 | distribution of the source code, even though third parties are not
170 | compelled to copy the source along with the object code.
171 |
172 | 4. You may not copy, modify, sublicense, or distribute the Program
173 | except as expressly provided under this License. Any attempt
174 | otherwise to copy, modify, sublicense or distribute the Program is
175 | void, and will automatically terminate your rights under this License.
176 | However, parties who have received copies, or rights, from you under
177 | this License will not have their licenses terminated so long as such
178 | parties remain in full compliance.
179 |
180 | 5. You are not required to accept this License, since you have not
181 | signed it. However, nothing else grants you permission to modify or
182 | distribute the Program or its derivative works. These actions are
183 | prohibited by law if you do not accept this License. Therefore, by
184 | modifying or distributing the Program (or any work based on the
185 | Program), you indicate your acceptance of this License to do so, and
186 | all its terms and conditions for copying, distributing or modifying
187 | the Program or works based on it.
188 |
189 | 6. Each time you redistribute the Program (or any work based on the
190 | Program), the recipient automatically receives a license from the
191 | original licensor to copy, distribute or modify the Program subject to
192 | these terms and conditions. You may not impose any further
193 | restrictions on the recipients' exercise of the rights granted herein.
194 | You are not responsible for enforcing compliance by third parties to
195 | this License.
196 |
197 | 7. If, as a consequence of a court judgment or allegation of patent
198 | infringement or for any other reason (not limited to patent issues),
199 | conditions are imposed on you (whether by court order, agreement or
200 | otherwise) that contradict the conditions of this License, they do not
201 | excuse you from the conditions of this License. If you cannot
202 | distribute so as to satisfy simultaneously your obligations under this
203 | License and any other pertinent obligations, then as a consequence you
204 | may not distribute the Program at all. For example, if a patent
205 | license would not permit royalty-free redistribution of the Program by
206 | all those who receive copies directly or indirectly through you, then
207 | the only way you could satisfy both it and this License would be to
208 | refrain entirely from distribution of the Program.
209 |
210 | If any portion of this section is held invalid or unenforceable under
211 | any particular circumstance, the balance of the section is intended to
212 | apply and the section as a whole is intended to apply in other
213 | circumstances.
214 |
215 | It is not the purpose of this section to induce you to infringe any
216 | patents or other property right claims or to contest validity of any
217 | such claims; this section has the sole purpose of protecting the
218 | integrity of the free software distribution system, which is
219 | implemented by public license practices. Many people have made
220 | generous contributions to the wide range of software distributed
221 | through that system in reliance on consistent application of that
222 | system; it is up to the author/donor to decide if he or she is willing
223 | to distribute software through any other system and a licensee cannot
224 | impose that choice.
225 |
226 | This section is intended to make thoroughly clear what is believed to
227 | be a consequence of the rest of this License.
228 |
229 | 8. If the distribution and/or use of the Program is restricted in
230 | certain countries either by patents or by copyrighted interfaces, the
231 | original copyright holder who places the Program under this License
232 | may add an explicit geographical distribution limitation excluding
233 | those countries, so that distribution is permitted only in or among
234 | countries not thus excluded. In such case, this License incorporates
235 | the limitation as if written in the body of this License.
236 |
237 | 9. The Free Software Foundation may publish revised and/or new versions
238 | of the General Public License from time to time. Such new versions will
239 | be similar in spirit to the present version, but may differ in detail to
240 | address new problems or concerns.
241 |
242 | Each version is given a distinguishing version number. If the Program
243 | specifies a version number of this License which applies to it and "any
244 | later version", you have the option of following the terms and conditions
245 | either of that version or of any later version published by the Free
246 | Software Foundation. If the Program does not specify a version number of
247 | this License, you may choose any version ever published by the Free Software
248 | Foundation.
249 |
250 | 10. If you wish to incorporate parts of the Program into other free
251 | programs whose distribution conditions are different, write to the author
252 | to ask for permission. For software which is copyrighted by the Free
253 | Software Foundation, write to the Free Software Foundation; we sometimes
254 | make exceptions for this. Our decision will be guided by the two goals
255 | of preserving the free status of all derivatives of our free software and
256 | of promoting the sharing and reuse of software generally.
257 |
258 | NO WARRANTY
259 |
260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268 | REPAIR OR CORRECTION.
269 |
270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278 | POSSIBILITY OF SUCH DAMAGES.
279 |
280 | END OF TERMS AND CONDITIONS
281 |
282 | How to Apply These Terms to Your New Programs
283 |
284 | If you develop a new program, and you want it to be of the greatest
285 | possible use to the public, the best way to achieve this is to make it
286 | free software which everyone can redistribute and change under these terms.
287 |
288 | To do so, attach the following notices to the program. It is safest
289 | to attach them to the start of each source file to most effectively
290 | convey the exclusion of warranty; and each file should have at least
291 | the "copyright" line and a pointer to where the full notice is found.
292 |
293 | {description}
294 | Copyright (C) {year} {fullname}
295 |
296 | This program is free software; you can redistribute it and/or modify
297 | it under the terms of the GNU General Public License as published by
298 | the Free Software Foundation; either version 2 of the License, or
299 | (at your option) any later version.
300 |
301 | This program is distributed in the hope that it will be useful,
302 | but WITHOUT ANY WARRANTY; without even the implied warranty of
303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304 | GNU General Public License for more details.
305 |
306 | You should have received a copy of the GNU General Public License along
307 | with this program; if not, write to the Free Software Foundation, Inc.,
308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309 |
310 | Also add information on how to contact you by electronic and paper mail.
311 |
312 | If the program is interactive, make it output a short notice like this
313 | when it starts in an interactive mode:
314 |
315 | Gnomovision version 69, Copyright (C) year name of author
316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317 | This is free software, and you are welcome to redistribute it
318 | under certain conditions; type `show c' for details.
319 |
320 | The hypothetical commands `show w' and `show c' should show the appropriate
321 | parts of the General Public License. Of course, the commands you use may
322 | be called something other than `show w' and `show c'; they could even be
323 | mouse-clicks or menu items--whatever suits your program.
324 |
325 | You should also get your employer (if you work as a programmer) or your
326 | school, if any, to sign a "copyright disclaimer" for the program, if
327 | necessary. Here is a sample; alter the names:
328 |
329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330 | `Gnomovision' (which makes passes at compilers) written by James Hacker.
331 |
332 | {signature of Ty Coon}, 1 April 1989
333 | Ty Coon, President of Vice
334 |
335 | This General Public License does not permit incorporating your program into
336 | proprietary programs. If your program is a subroutine library, you may
337 | consider it more useful to permit linking proprietary applications with the
338 | library. If this is what you want to do, use the GNU Lesser General
339 | Public License instead of this License.
340 |
--------------------------------------------------------------------------------
/README.MD:
--------------------------------------------------------------------------------
1 | # TailPress
2 | A minimal boilerplate theme for WordPress using [TailwindCSS](https://tailwindcss.com/), with [PostCSS](https://postcss.org) and ~~[Laravel Mix](https://laravel-mix.com/)~~ npx Tailwind Compiler.
3 |
4 | # ATTENTION
5 | **We've updated the default repo to `underscores` instead of `main`. This change comes with the fact that `_S` is a stable theme maintained directly by WordPress and allows for easier updates than the custom theme that was being used originially in the `main` branch. If you would like to use the `main` branch instead, please feel free to, but we will be deprecating support for it as of December 1st, 2021. All development will be in the `underscores` branch from then on.
6 | Thanks!**
7 |
8 | # Update Apr. 4th, 2022
9 | TailwindCSS Updated to 3.0.23
10 |
11 | Check the [upgrade guide here](https://tailwindcss.com/docs/upgrade-guide) for what has changed in TailwindCSS.
12 |
13 | # Update Dec. 11th, 2021
14 | Tailwind Updated to 3.0.1
15 |
16 | ## Getting started
17 | * Clone repo `git clone https://github.com/pixeldevsio/tailpress.git && cd tailpress`
18 | * Run `rm -rf .git` to remove git.
19 | * Run `npm install`
20 | * Run `npm run development`
21 | * Run `npm run watch` to start developing
22 |
23 | You will find the editable CSS and Javascript files within the `/resources` folder.
24 |
25 | Before you use your theme in production, make sure you run `npm run production`.
26 |
27 | ## NEW! AlpineJS support
28 | [AlpineJS](https://alpinejs.dev/) is now included in the theme! All you need to do is add `define('ALPINEJS', TRUE)` inside of your `wp-config.php` before the `/* That's all, stop editing! Happy publishing. */` line and AlpineJS will be automatically included and ready to use.
29 | [AlpineJS Docs](https://alpinejs.dev/start-here)
30 |
31 | ## Block editor support
32 | TailPress comes with basic support for the [block editor](https://wordpress.org/support/article/wordpress-editor/).
33 |
34 | CSS-classes for alignment, background and text colors will be generated automatically. You can modify this within the `tailwind.config.js` file.
35 |
36 | To make the editing experience within the block editor more in line with the front end styling, a `editor-style.css` is generated. This file is only compiled on production builds.
37 |
38 | ## Full Site Editing support
39 | TailPress is now updated to support Full Site Editing.
40 |
41 | The template editing mode is a way to edit the website without the complexity of the site editor interface.
42 | It is more limited than the site editor because you can not select or navigate between templates in this view.
43 |
44 | You access the template editing mode via the block editor.
45 |
46 | Create a new post or page. Next, open the document settings sidebar and locate the Template panel below Status & visibility.
47 | Here you will find information about the current template and a list of existing templates to choose from.
48 |
49 | Create a new template by selecting the New link.
50 |
51 | Edit and save the template in the same way as in the site editor.
52 |
53 | ### Define theme colors
54 | Four colors (primary, secondary, dark and light) are defined from the beginning. You can modify the colors in `tailpress.json`.
55 |
56 | ### Define theme font sizes
57 | You can modify the font sizes within `tailpress.json`.
58 |
59 | ## JIT
60 | [Tailwind CSS JIT](https://github.com/tailwindlabs/tailwindcss-jit) is used to allow for fast compiling.
61 |
62 | If you prefer to use the regular Tailwind CSS instead, you can change to that dependency in `package.json`.
63 | Also make sure to you change the PostCSS plugins in `webpack.mix.js`.
64 |
65 | ## PurgeCSS
66 | By default, PurgeCSS is enabled. You can modify or disable it by changing the settings in the `tailwind.config.js` file. There are several [PurgeCSS options](https://tailwindcss.com/docs/optimizing-for-production#purge-css-options).
67 |
68 | ## Links
69 | * [TailwindCSS Documentation](https://tailwindcss.com/docs)
70 |
--------------------------------------------------------------------------------
/archive.php:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
15 |
16 |
17 |
23 |
24 |
46 |
47 |
48 |
49 |
22 |
23 |
78 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "automattic/underscores",
3 | "type": "wordpress-theme",
4 | "description": "Hi. I'm a starter theme called _s, or underscores, if you like. I'm a theme meant for hacking so don't use me as a Parent Theme. Instead try turning me into the next, most awesome, WordPress theme out there. That's what I'm here for.",
5 | "keywords": [
6 | "WordPress",
7 | "Themes"
8 | ],
9 | "homepage": "https://github.com/Automattic/_s",
10 | "license": "GPL-2.0-or-later",
11 | "authors": [
12 | {
13 | "name": "Contributors",
14 | "homepage": "https://github.com/Automattic/_s/graphs/contributors"
15 | }
16 | ],
17 | "require": {
18 | "php": ">=5.6"
19 | },
20 | "require-dev": {
21 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
22 | "wptrt/wpthemereview": "^0.2.1",
23 | "php-parallel-lint/php-parallel-lint": "^1.2.0",
24 | "wp-cli/i18n-command": "^2.2.5"
25 | },
26 | "scripts": {
27 | "lint:wpcs": "@php ./vendor/squizlabs/php_codesniffer/bin/phpcs",
28 | "lint:php": "@php ./vendor/bin/parallel-lint --exclude .git --exclude vendor .",
29 | "make-pot": "wp i18n make-pot . languages/_s.pot"
30 | },
31 | "support": {
32 | "issues": "https://github.com/Automattic/_s/issues",
33 | "source": "https://github.com/Automattic/_s"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/css/app.css:
--------------------------------------------------------------------------------
1 | /*
2 | ! tailwindcss v3.0.1 | MIT License | https://tailwindcss.com
3 | */
4 |
5 | /*
6 | 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
7 | 2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
8 | */
9 |
10 | *,
11 | ::before,
12 | ::after {
13 | box-sizing: border-box;
14 | /* 1 */
15 | border-width: 0;
16 | /* 2 */
17 | border-style: solid;
18 | /* 2 */
19 | border-color: currentColor;
20 | /* 2 */
21 | }
22 |
23 | ::before,
24 | ::after {
25 | --tw-content: '';
26 | }
27 |
28 | /*
29 | 1. Use a consistent sensible line-height in all browsers.
30 | 2. Prevent adjustments of font size after orientation changes in iOS.
31 | 3. Use a more readable tab size.
32 | 4. Use the user's configured `sans` font-family by default.
33 | */
34 |
35 | html {
36 | line-height: 1.5;
37 | /* 1 */
38 | -webkit-text-size-adjust: 100%;
39 | /* 2 */
40 | -moz-tab-size: 4;
41 | /* 3 */
42 | -o-tab-size: 4;
43 | tab-size: 4;
44 | /* 3 */
45 | font-family: SF Compact, ui-sans-serif;
46 | /* 4 */
47 | }
48 |
49 | /*
50 | 1. Remove the margin in all browsers.
51 | 2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
52 | */
53 |
54 | body {
55 | margin: 0;
56 | /* 1 */
57 | line-height: inherit;
58 | /* 2 */
59 | }
60 |
61 | /*
62 | 1. Add the correct height in Firefox.
63 | 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
64 | 3. Ensure horizontal rules are visible by default.
65 | */
66 |
67 | hr {
68 | height: 0;
69 | /* 1 */
70 | color: inherit;
71 | /* 2 */
72 | border-top-width: 1px;
73 | /* 3 */
74 | }
75 |
76 | /*
77 | Add the correct text decoration in Chrome, Edge, and Safari.
78 | */
79 |
80 | abbr[title] {
81 | -webkit-text-decoration: underline dotted;
82 | text-decoration: underline dotted;
83 | }
84 |
85 | /*
86 | Remove the default font size and weight for headings.
87 | */
88 |
89 | h1,
90 | h2,
91 | h3,
92 | h4,
93 | h5,
94 | h6 {
95 | font-size: inherit;
96 | font-weight: inherit;
97 | }
98 |
99 | /*
100 | Reset links to optimize for opt-in styling instead of opt-out.
101 | */
102 |
103 | a {
104 | color: inherit;
105 | text-decoration: inherit;
106 | }
107 |
108 | /*
109 | Add the correct font weight in Edge and Safari.
110 | */
111 |
112 | b,
113 | strong {
114 | font-weight: bolder;
115 | }
116 |
117 | /*
118 | 1. Use the user's configured `mono` font family by default.
119 | 2. Correct the odd `em` font sizing in all browsers.
120 | */
121 |
122 | code,
123 | kbd,
124 | samp,
125 | pre {
126 | font-family: ui-monospace, SFMono-Regular;
127 | /* 1 */
128 | font-size: 1em;
129 | /* 2 */
130 | }
131 |
132 | /*
133 | Add the correct font size in all browsers.
134 | */
135 |
136 | small {
137 | font-size: 80%;
138 | }
139 |
140 | /*
141 | Prevent `sub` and `sup` elements from affecting the line height in all browsers.
142 | */
143 |
144 | sub,
145 | sup {
146 | font-size: 75%;
147 | line-height: 0;
148 | position: relative;
149 | vertical-align: baseline;
150 | }
151 |
152 | sub {
153 | bottom: -0.25em;
154 | }
155 |
156 | sup {
157 | top: -0.5em;
158 | }
159 |
160 | /*
161 | 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
162 | 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
163 | 3. Remove gaps between table borders by default.
164 | */
165 |
166 | table {
167 | text-indent: 0;
168 | /* 1 */
169 | border-color: inherit;
170 | /* 2 */
171 | border-collapse: collapse;
172 | /* 3 */
173 | }
174 |
175 | /*
176 | 1. Change the font styles in all browsers.
177 | 2. Remove the margin in Firefox and Safari.
178 | 3. Remove default padding in all browsers.
179 | */
180 |
181 | button,
182 | input,
183 | optgroup,
184 | select,
185 | textarea {
186 | font-family: inherit;
187 | /* 1 */
188 | font-size: 100%;
189 | /* 1 */
190 | line-height: inherit;
191 | /* 1 */
192 | color: inherit;
193 | /* 1 */
194 | margin: 0;
195 | /* 2 */
196 | padding: 0;
197 | /* 3 */
198 | }
199 |
200 | /*
201 | Remove the inheritance of text transform in Edge and Firefox.
202 | */
203 |
204 | button,
205 | select {
206 | text-transform: none;
207 | }
208 |
209 | /*
210 | 1. Correct the inability to style clickable types in iOS and Safari.
211 | 2. Remove default button styles.
212 | */
213 |
214 | button,
215 | [type='button'],
216 | [type='reset'],
217 | [type='submit'] {
218 | -webkit-appearance: button;
219 | /* 1 */
220 | background-color: transparent;
221 | /* 2 */
222 | background-image: none;
223 | /* 2 */
224 | }
225 |
226 | /*
227 | Use the modern Firefox focus style for all focusable elements.
228 | */
229 |
230 | :-moz-focusring {
231 | outline: auto;
232 | }
233 |
234 | /*
235 | Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
236 | */
237 |
238 | :-moz-ui-invalid {
239 | box-shadow: none;
240 | }
241 |
242 | /*
243 | Add the correct vertical alignment in Chrome and Firefox.
244 | */
245 |
246 | progress {
247 | vertical-align: baseline;
248 | }
249 |
250 | /*
251 | Correct the cursor style of increment and decrement buttons in Safari.
252 | */
253 |
254 | ::-webkit-inner-spin-button,
255 | ::-webkit-outer-spin-button {
256 | height: auto;
257 | }
258 |
259 | /*
260 | 1. Correct the odd appearance in Chrome and Safari.
261 | 2. Correct the outline style in Safari.
262 | */
263 |
264 | [type='search'] {
265 | -webkit-appearance: textfield;
266 | /* 1 */
267 | outline-offset: -2px;
268 | /* 2 */
269 | }
270 |
271 | /*
272 | Remove the inner padding in Chrome and Safari on macOS.
273 | */
274 |
275 | ::-webkit-search-decoration {
276 | -webkit-appearance: none;
277 | }
278 |
279 | /*
280 | 1. Correct the inability to style clickable types in iOS and Safari.
281 | 2. Change font properties to `inherit` in Safari.
282 | */
283 |
284 | ::-webkit-file-upload-button {
285 | -webkit-appearance: button;
286 | /* 1 */
287 | font: inherit;
288 | /* 2 */
289 | }
290 |
291 | /*
292 | Add the correct display in Chrome and Safari.
293 | */
294 |
295 | summary {
296 | display: list-item;
297 | }
298 |
299 | /*
300 | Removes the default spacing and border for appropriate elements.
301 | */
302 |
303 | blockquote,
304 | dl,
305 | dd,
306 | h1,
307 | h2,
308 | h3,
309 | h4,
310 | h5,
311 | h6,
312 | hr,
313 | figure,
314 | p,
315 | pre {
316 | margin: 0;
317 | }
318 |
319 | fieldset {
320 | margin: 0;
321 | padding: 0;
322 | }
323 |
324 | legend {
325 | padding: 0;
326 | }
327 |
328 | ol,
329 | ul,
330 | menu {
331 | list-style: none;
332 | margin: 0;
333 | padding: 0;
334 | }
335 |
336 | /*
337 | Prevent resizing textareas horizontally by default.
338 | */
339 |
340 | textarea {
341 | resize: vertical;
342 | }
343 |
344 | /*
345 | 1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
346 | 2. Set the default placeholder color to the user's configured gray 400 color.
347 | */
348 |
349 | input::-moz-placeholder, textarea::-moz-placeholder {
350 | opacity: 1;
351 | /* 1 */
352 | color: #9ca3af;
353 | /* 2 */
354 | }
355 |
356 | input:-ms-input-placeholder, textarea:-ms-input-placeholder {
357 | opacity: 1;
358 | /* 1 */
359 | color: #9ca3af;
360 | /* 2 */
361 | }
362 |
363 | input::placeholder,
364 | textarea::placeholder {
365 | opacity: 1;
366 | /* 1 */
367 | color: #9ca3af;
368 | /* 2 */
369 | }
370 |
371 | /*
372 | Set the default cursor for buttons.
373 | */
374 |
375 | button,
376 | [role="button"] {
377 | cursor: pointer;
378 | }
379 |
380 | /*
381 | Make sure disabled buttons don't get the pointer cursor.
382 | */
383 |
384 | :disabled {
385 | cursor: default;
386 | }
387 |
388 | /*
389 | 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
390 | 2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
391 | This can trigger a poorly considered lint error in some tools but is included by design.
392 | */
393 |
394 | img,
395 | svg,
396 | video,
397 | canvas,
398 | audio,
399 | iframe,
400 | embed,
401 | object {
402 | display: block;
403 | /* 1 */
404 | vertical-align: middle;
405 | /* 2 */
406 | }
407 |
408 | /*
409 | Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
410 | */
411 |
412 | img,
413 | video {
414 | max-width: 100%;
415 | height: auto;
416 | }
417 |
418 | /*
419 | Ensure the default browser behavior of the `hidden` attribute.
420 | */
421 |
422 | [hidden] {
423 | display: none;
424 | }
425 |
426 | .container {
427 | width: 100%;
428 | padding-right: 1rem;
429 | padding-left: 1rem;
430 | }
431 |
432 | @media (min-width: 640px) {
433 | .container {
434 | max-width: 640px;
435 | padding-right: 2rem;
436 | padding-left: 2rem;
437 | }
438 | }
439 |
440 | @media (min-width: 768px) {
441 | .container {
442 | max-width: 768px;
443 | }
444 | }
445 |
446 | @media (min-width: 1024px) {
447 | .container {
448 | max-width: 1024px;
449 | padding-right: 0rem;
450 | padding-left: 0rem;
451 | }
452 | }
453 |
454 | @media (min-width: 1280px) {
455 | .container {
456 | max-width: 1280px;
457 | }
458 | }
459 |
460 | @media (min-width: 1536px) {
461 | .container {
462 | max-width: 1536px;
463 | }
464 | }
465 |
466 | .visible {
467 | visibility: visible;
468 | }
469 |
470 | .mb-4 {
471 | margin-bottom: 1rem;
472 | }
473 |
474 | .mb-1 {
475 | margin-bottom: 0.25rem;
476 | }
477 |
478 | .text-2xl {
479 | font-size: 1.5rem;
480 | }
481 |
482 | .text-sm {
483 | font-size: .875rem;
484 | }
485 |
486 | .font-extrabold {
487 | font-weight: 800;
488 | }
489 |
490 | .leading-tight {
491 | line-height: 1.25;
492 | }
493 |
494 | .text-gray-700 {
495 | --tw-text-opacity: 1;
496 | color: rgb(55 65 81 / var(--tw-text-opacity));
497 | }
498 |
499 | .has-primary-text-color {
500 | color: #0EA5E9;
501 | }
502 |
503 | .has-secondary-text-color {
504 | color: #14B8A6;
505 | }
506 |
507 | .has-dark-text-color {
508 | color: #1F2937;
509 | }
510 |
511 | .has-light-text-color {
512 | color: #F9FAFB;
513 | }
514 |
515 | .has-primary-background-color {
516 | background-color: #0EA5E9;
517 | }
518 |
519 | .has-secondary-background-color {
520 | background-color: #14B8A6;
521 | }
522 |
523 | .has-dark-background-color {
524 | background-color: #1F2937;
525 | }
526 |
527 | .has-light-background-color {
528 | background-color: #F9FAFB;
529 | }
530 |
531 | .alignfull {
532 | margin: 0.5rem calc(50% - 50vw);
533 | max-width: 100vw;
534 | width: 100vw;
535 | }
536 |
537 | .alignwide {
538 | margin-left: -4rem;
539 | margin-right: -4rem;
540 | margin-top: 0.5rem;
541 | margin-bottom: 0.5rem;
542 | max-width: 1280px;
543 | }
544 |
545 | .alignnone {
546 | margin-left: 0px;
547 | margin-right: 0px;
548 | height: auto;
549 | max-width: 100%;
550 | }
551 |
552 | .aligncenter {
553 | margin: 0.5rem auto;
554 | display: block;
555 | }
556 |
557 | @media (min-width: 640px) {
558 | .alignleft:not(.wp-block-button) {
559 | margin-right: 0.5rem;
560 | }
561 |
562 | .alignleft:not(.wp-block-button) {
563 | float: left;
564 | }
565 |
566 | .alignright:not(.wp-block-button) {
567 | margin-left: 0.5rem;
568 | }
569 |
570 | .alignright:not(.wp-block-button) {
571 | float: right;
572 | }
573 |
574 | .wp-block-button.alignleft a {
575 | float: left;
576 | }
577 |
578 | .wp-block-button.alignleft a {
579 | margin-right: 1rem;
580 | }
581 |
582 | .wp-block-button.alignright a {
583 | float: right;
584 | }
585 |
586 | .wp-block-button.alignright a {
587 | margin-left: 1rem;
588 | }
589 | }
590 |
591 | .has-small-font-size {
592 | font-size: 14px;
593 | font-weight: normal;
594 | }
595 |
596 | .has-regular-font-size {
597 | font-size: 16px;
598 | font-weight: normal;
599 | }
600 |
601 | .has-large-font-size {
602 | font-size: 18px;
603 | font-weight: bold;
604 | }
605 |
606 | .wp-caption {
607 | display: inline-block;
608 | }
609 |
610 | .wp-caption img {
611 | margin-bottom: 0.5rem;
612 | line-height: 1;
613 | }
614 |
615 | .wp-caption-text {
616 | font-size: .;
617 | color: #4b5563;
618 | }
619 |
620 | .entry-content, .block-editor-block-list__layout {
621 | h1 {
622 | font-size: 1.5rem;
623 | }
624 | h2 {
625 | font-size: 1.25rem;
626 | }
627 | h3 {
628 | font-size: 1.125rem;
629 | }
630 | p, ul, ol {
631 | a {
632 | --tw-text-opacity: 1;
633 | color: rgb(59 130 246 / var(--tw-text-opacity));
634 | }
635 | a {
636 | text-decoration: underline;
637 | }
638 | a {
639 | &:hover {
640 | text-decoration: none;
641 | }
642 | }
643 | }
644 | p, ul, ol {
645 | margin-bottom: 2rem;
646 | }
647 | ul {
648 | li {
649 | list-style-position: inside;
650 | }
651 | li {
652 | list-style-type: disc;
653 | }
654 | }
655 | ol {
656 | li {
657 | list-style-position: inside;
658 | }
659 | li {
660 | list-style-type: decimal;
661 | }
662 | }
663 | }
664 |
665 | @media (min-width: 1024px) {
666 | .lg\:text-5xl {
667 | font-size: 3rem;
668 | }
669 | }
--------------------------------------------------------------------------------
/editor-style.css:
--------------------------------------------------------------------------------
1 | .container {
2 | width: 100%;
3 | padding-right: 1rem;
4 | padding-left: 1rem
5 | }
6 |
7 | @media (min-width: 640px) {
8 | .container {
9 | max-width: 640px;
10 | padding-right: 2rem;
11 | padding-left: 2rem
12 | }
13 | }
14 |
15 | @media (min-width: 768px) {
16 | .container {
17 | max-width: 768px
18 | }
19 | }
20 |
21 | @media (min-width: 1024px) {
22 | .container {
23 | max-width: 1024px;
24 | padding-right: 0rem;
25 | padding-left: 0rem
26 | }
27 | }
28 |
29 | @media (min-width: 1280px) {
30 | .container {
31 | max-width: 1280px
32 | }
33 | }
34 |
35 | @media (min-width: 1536px) {
36 | .container {
37 | max-width: 1536px
38 | }
39 | }
40 |
41 | .visible {
42 | visibility: visible
43 | }
44 |
45 | .mb-4 {
46 | margin-bottom: 1rem
47 | }
48 |
49 | .mb-1 {
50 | margin-bottom: 0.25rem
51 | }
52 |
53 | .text-2xl {
54 | font-size: 1.5rem
55 | }
56 |
57 | .text-sm {
58 | font-size: .875rem
59 | }
60 |
61 | .font-extrabold {
62 | font-weight: 800
63 | }
64 |
65 | .leading-tight {
66 | line-height: 1.25
67 | }
68 |
69 | .text-gray-700 {
70 | --tw-text-opacity: 1;
71 | color: rgb(55 65 81 / var(--tw-text-opacity))
72 | }
73 |
74 | .has-primary-text-color {
75 | color: #0EA5E9
76 | }
77 |
78 | .has-secondary-text-color {
79 | color: #14B8A6
80 | }
81 |
82 | .has-dark-text-color {
83 | color: #1F2937
84 | }
85 |
86 | .has-light-text-color {
87 | color: #F9FAFB
88 | }
89 |
90 | .has-primary-background-color {
91 | background-color: #0EA5E9
92 | }
93 |
94 | .has-secondary-background-color {
95 | background-color: #14B8A6
96 | }
97 |
98 | .has-dark-background-color {
99 | background-color: #1F2937
100 | }
101 |
102 | .has-light-background-color {
103 | background-color: #F9FAFB
104 | }
105 |
106 | .alignfull {
107 | margin: 0.5rem calc(50% - 50vw);
108 | max-width: 100vw;
109 | width: 100vw
110 | }
111 |
112 | .alignwide {
113 | margin-left: -4rem;
114 | margin-right: -4rem;
115 | margin-top: 0.5rem;
116 | margin-bottom: 0.5rem;
117 | max-width: 1280px
118 | }
119 |
120 | .alignnone {
121 | margin-left: 0px;
122 | margin-right: 0px;
123 | height: auto;
124 | max-width: 100%
125 | }
126 |
127 | .aligncenter {
128 | margin: 0.5rem auto;
129 | display: block
130 | }
131 |
132 | @media (min-width: 640px) {
133 | .alignleft:not(.wp-block-button) {
134 | margin-right: 0.5rem
135 | }
136 |
137 | .alignleft:not(.wp-block-button) {
138 | float: left
139 | }
140 |
141 | .alignright:not(.wp-block-button) {
142 | margin-left: 0.5rem
143 | }
144 |
145 | .alignright:not(.wp-block-button) {
146 | float: right
147 | }
148 |
149 | .wp-block-button.alignleft a {
150 | float: left
151 | }
152 |
153 | .wp-block-button.alignleft a {
154 | margin-right: 1rem
155 | }
156 |
157 | .wp-block-button.alignright a {
158 | float: right
159 | }
160 |
161 | .wp-block-button.alignright a {
162 | margin-left: 1rem
163 | }
164 | }
165 |
166 | .has-small-font-size {
167 | font-size: 14px;
168 | font-weight: normal
169 | }
170 |
171 | .has-regular-font-size {
172 | font-size: 16px;
173 | font-weight: normal
174 | }
175 |
176 | .has-large-font-size {
177 | font-size: 18px;
178 | font-weight: bold
179 | }
180 |
181 | .wp-caption {
182 | display: inline-block
183 | }
184 |
185 | .wp-caption img {
186 | margin-bottom: 0.5rem;
187 | line-height: 1
188 | }
189 |
190 | .wp-caption-text {
191 | font-size: .;
192 | color: #4b5563
193 | }
194 |
195 | .entry-content, .block-editor-block-list__layout {
196 | h1 {
197 | font-size: 1.5rem
198 | }
199 | h2 {
200 | font-size: 1.25rem
201 | }
202 | h3 {
203 | font-size: 1.125rem
204 | }
205 | p, ul, ol {
206 | a {
207 | --tw-text-opacity: 1;
208 | color: rgb(59 130 246 / var(--tw-text-opacity))
209 | }
210 | a {
211 | text-decoration: underline
212 | }
213 | a {
214 | &:hover {
215 | text-decoration: none
216 | }
217 | }
218 | }
219 | p, ul, ol {
220 | margin-bottom: 2rem
221 | }
222 | ul {
223 | li {
224 | list-style-position: inside
225 | }
226 | li {
227 | list-style-type: disc
228 | }
229 | }
230 | ol {
231 | li {
232 | list-style-position: inside
233 | }
234 | li {
235 | list-style-type: decimal
236 | }
237 | }
238 | }
239 |
240 | .block-editor__typewriter {
241 | font-family: SF Compact, ui-sans-serif
242 | }
243 |
244 | .wp-block {
245 | max-width: 1024px
246 | }
247 |
248 | .wp-block[data-align=wide] {
249 | max-width: 1280px
250 | }
251 |
252 | .wp-block[data-align=full] {
253 | max-width: 100%
254 | }
255 |
256 | @media (min-width: 1024px) {
257 | .lg\:text-5xl {
258 | font-size: 3rem
259 | }
260 | }
--------------------------------------------------------------------------------
/footer.php:
--------------------------------------------------------------------------------
1 |
13 |
14 |
29 |
30 |
31 |
32 |
33 |
30 | ' . wp_kses_post( get_the_title() ) . '' 37 | ); 38 | } else { 39 | printf( 40 | /* translators: 1: comment count number, 2: title. */ 41 | esc_html( _nx( '%1$s thought on “%2$s”', '%1$s thoughts on “%2$s”', $tailwind_comment_count, 'comments title', 'tailwind' ) ), 42 | number_format_i18n( $tailwind_comment_count ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped 43 | '' . wp_kses_post( get_the_title() ) . '' 44 | ); 45 | } 46 | ?> 47 |
48 | 49 | 50 | 51 |52 | 'ol', 56 | 'short_ping' => true, 57 | ) 58 | ); 59 | ?> 60 |
61 | 62 | 68 | 69 | 76 | 77 |