From 3e5cd5b648fc49bddf6e2b620d5c7d2f5a437b50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= Date: Mon, 23 Sep 2024 15:52:20 +0200 Subject: [PATCH 01/20] add block based theme as a starter --- themes/10up-block-theme/.eslintrc | 5 + themes/10up-block-theme/.lintstagedrc.json | 14 + themes/10up-block-theme/.npmrc | 1 + themes/10up-block-theme/.nvmrc | 1 + themes/10up-block-theme/.stylelintignore | 4 + themes/10up-block-theme/LICENSE.md | 339 ++++++++ .../assets/css/base/align.css | 39 + .../assets/css/base/index.css | 4 + .../assets/css/base/layout.css | 73 ++ .../10up-block-theme/assets/css/base/link.css | 11 + .../assets/css/base/reset.css | 85 ++ .../assets/css/blocks/core/.gitkeep | 0 .../assets/css/components/index.css | 0 .../assets/css/editor-style-overrides.css | 72 ++ .../10up-block-theme/assets/css/frontend.css | 4 + .../assets/css/globals/.gitkeep | 0 .../assets/css/globals/media-queries.css | 25 + .../assets/css/globals/readme.md | 10 + .../assets/css/mixins/margin-collapse.css | 14 + .../assets/css/mixins/readme.md | 10 + .../assets/css/templates/index.css | 0 .../assets/css/utilities/index.css | 1 + .../assets/css/utilities/visually-hidden.css | 10 + themes/10up-block-theme/assets/fonts/.gitkeep | 0 .../10up-block-theme/assets/images/.gitkeep | 0 .../assets/js/block-extensions.js | 0 themes/10up-block-theme/assets/js/frontend.js | 1 + themes/10up-block-theme/assets/svg/.gitkeep | 0 themes/10up-block-theme/composer.json | 31 + themes/10up-block-theme/composer.lock | 813 ++++++++++++++++++ themes/10up-block-theme/functions.php | 40 + themes/10up-block-theme/includes/blocks.php | 91 ++ .../10up-block-theme/includes/blocks/.gitkeep | 0 themes/10up-block-theme/includes/core.php | 190 ++++ .../10up-block-theme/includes/overrides.php | 84 ++ .../includes/template-tags.php | 36 + themes/10up-block-theme/includes/utility.php | 79 ++ themes/10up-block-theme/package.json | 35 + themes/10up-block-theme/parts/footer.html | 62 ++ themes/10up-block-theme/parts/header.html | 7 + .../parts/site-header-navigation-area.html | 1 + themes/10up-block-theme/patterns/.gitkeep | 0 themes/10up-block-theme/phpcs.xml | 9 + themes/10up-block-theme/screenshot.png | Bin 0 -> 18915 bytes themes/10up-block-theme/style.css | 10 + themes/10up-block-theme/stylelint.config.js | 26 + .../styles/surface-primary.json | 12 + .../styles/surface-secondary.json | 12 + .../styles/surface-tertiary.json | 12 + themes/10up-block-theme/templates/404.html | 21 + themes/10up-block-theme/templates/index.html | 31 + themes/10up-block-theme/templates/single.html | 25 + .../10up-block-theme/templates/singular.html | 7 + themes/10up-block-theme/theme.json | 390 +++++++++ themes/10up-block-theme/webpack.config.js | 55 ++ 55 files changed, 2802 insertions(+) create mode 100644 themes/10up-block-theme/.eslintrc create mode 100644 themes/10up-block-theme/.lintstagedrc.json create mode 100644 themes/10up-block-theme/.npmrc create mode 100644 themes/10up-block-theme/.nvmrc create mode 100644 themes/10up-block-theme/.stylelintignore create mode 100644 themes/10up-block-theme/LICENSE.md create mode 100644 themes/10up-block-theme/assets/css/base/align.css create mode 100644 themes/10up-block-theme/assets/css/base/index.css create mode 100644 themes/10up-block-theme/assets/css/base/layout.css create mode 100644 themes/10up-block-theme/assets/css/base/link.css create mode 100644 themes/10up-block-theme/assets/css/base/reset.css create mode 100644 themes/10up-block-theme/assets/css/blocks/core/.gitkeep create mode 100644 themes/10up-block-theme/assets/css/components/index.css create mode 100644 themes/10up-block-theme/assets/css/editor-style-overrides.css create mode 100644 themes/10up-block-theme/assets/css/frontend.css create mode 100644 themes/10up-block-theme/assets/css/globals/.gitkeep create mode 100644 themes/10up-block-theme/assets/css/globals/media-queries.css create mode 100644 themes/10up-block-theme/assets/css/globals/readme.md create mode 100644 themes/10up-block-theme/assets/css/mixins/margin-collapse.css create mode 100644 themes/10up-block-theme/assets/css/mixins/readme.md create mode 100644 themes/10up-block-theme/assets/css/templates/index.css create mode 100644 themes/10up-block-theme/assets/css/utilities/index.css create mode 100644 themes/10up-block-theme/assets/css/utilities/visually-hidden.css create mode 100644 themes/10up-block-theme/assets/fonts/.gitkeep create mode 100644 themes/10up-block-theme/assets/images/.gitkeep create mode 100644 themes/10up-block-theme/assets/js/block-extensions.js create mode 100644 themes/10up-block-theme/assets/js/frontend.js create mode 100644 themes/10up-block-theme/assets/svg/.gitkeep create mode 100644 themes/10up-block-theme/composer.json create mode 100644 themes/10up-block-theme/composer.lock create mode 100755 themes/10up-block-theme/functions.php create mode 100644 themes/10up-block-theme/includes/blocks.php create mode 100644 themes/10up-block-theme/includes/blocks/.gitkeep create mode 100755 themes/10up-block-theme/includes/core.php create mode 100644 themes/10up-block-theme/includes/overrides.php create mode 100644 themes/10up-block-theme/includes/template-tags.php create mode 100755 themes/10up-block-theme/includes/utility.php create mode 100644 themes/10up-block-theme/package.json create mode 100644 themes/10up-block-theme/parts/footer.html create mode 100644 themes/10up-block-theme/parts/header.html create mode 100644 themes/10up-block-theme/parts/site-header-navigation-area.html create mode 100644 themes/10up-block-theme/patterns/.gitkeep create mode 100644 themes/10up-block-theme/phpcs.xml create mode 100644 themes/10up-block-theme/screenshot.png create mode 100755 themes/10up-block-theme/style.css create mode 100644 themes/10up-block-theme/stylelint.config.js create mode 100644 themes/10up-block-theme/styles/surface-primary.json create mode 100644 themes/10up-block-theme/styles/surface-secondary.json create mode 100644 themes/10up-block-theme/styles/surface-tertiary.json create mode 100644 themes/10up-block-theme/templates/404.html create mode 100644 themes/10up-block-theme/templates/index.html create mode 100644 themes/10up-block-theme/templates/single.html create mode 100644 themes/10up-block-theme/templates/singular.html create mode 100644 themes/10up-block-theme/theme.json create mode 100644 themes/10up-block-theme/webpack.config.js diff --git a/themes/10up-block-theme/.eslintrc b/themes/10up-block-theme/.eslintrc new file mode 100644 index 00000000..d3ad2ab6 --- /dev/null +++ b/themes/10up-block-theme/.eslintrc @@ -0,0 +1,5 @@ +{ + "extends": [ + "@10up/eslint-config/wordpress" + ] +} diff --git a/themes/10up-block-theme/.lintstagedrc.json b/themes/10up-block-theme/.lintstagedrc.json new file mode 100644 index 00000000..b96bb4cc --- /dev/null +++ b/themes/10up-block-theme/.lintstagedrc.json @@ -0,0 +1,14 @@ +{ + "*.css": [ + "10up-toolkit lint-style" + ], + "*.js": [ + "10up-toolkit lint-js" + ], + "*.jsx": [ + "10up-toolkit lint-js" + ], + "*.php": [ + "./vendor/bin/phpcs --extensions=php --warning-severity=8 -s" + ] +} diff --git a/themes/10up-block-theme/.npmrc b/themes/10up-block-theme/.npmrc new file mode 100644 index 00000000..b6f27f13 --- /dev/null +++ b/themes/10up-block-theme/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/themes/10up-block-theme/.nvmrc b/themes/10up-block-theme/.nvmrc new file mode 100644 index 00000000..3c032078 --- /dev/null +++ b/themes/10up-block-theme/.nvmrc @@ -0,0 +1 @@ +18 diff --git a/themes/10up-block-theme/.stylelintignore b/themes/10up-block-theme/.stylelintignore new file mode 100644 index 00000000..dbd36b7a --- /dev/null +++ b/themes/10up-block-theme/.stylelintignore @@ -0,0 +1,4 @@ +local-packages/ +node_modules/ +dist/ +vendor/ diff --git a/themes/10up-block-theme/LICENSE.md b/themes/10up-block-theme/LICENSE.md new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/themes/10up-block-theme/LICENSE.md @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/themes/10up-block-theme/assets/css/base/align.css b/themes/10up-block-theme/assets/css/base/align.css new file mode 100644 index 00000000..ba0b9e28 --- /dev/null +++ b/themes/10up-block-theme/assets/css/base/align.css @@ -0,0 +1,39 @@ +body .is-layout-constrained > :where(:not(.alignfull, .wp-block-image)) { + + &.alignright { + margin-right: var(--wp--custom--main-content-width-side-spacing); + max-width: calc(var(--wp--style--global--content-size) / 2); + } + + &.alignleft { + margin-left: var(--wp--custom--main-content-width-side-spacing); + max-width: calc(var(--wp--style--global--content-size) / 2); + } +} + +body .is-layout-constrained.has-global-padding > :where(:not(.alignfull, .wp-block-image)) { + + &.alignleft { + margin-left: calc(var(--wp--custom--main-content-width-side-spacing) - var(--wp--style--root--padding-left)); + } + + &.alignright { + margin-right: calc(var(--wp--custom--main-content-width-side-spacing) - var(--wp--style--root--padding-right)); + } +} + +body .is-layout-constrained > .is-layout-flow.alignwide { + + & .alignleft { + margin-left: 0; + } + + & .alignright { + margin-right: 0; + } +} + +body .has-global-padding > .alignfull { + margin-left: calc(var(--wp--style--root--padding-left) * -1); + margin-right: calc(var(--wp--style--root--padding-right) * -1); +} diff --git a/themes/10up-block-theme/assets/css/base/index.css b/themes/10up-block-theme/assets/css/base/index.css new file mode 100644 index 00000000..91fd5398 --- /dev/null +++ b/themes/10up-block-theme/assets/css/base/index.css @@ -0,0 +1,4 @@ +@import url("reset.css"); +@import url("link.css"); +@import url("layout.css"); +@import url("align.css"); diff --git a/themes/10up-block-theme/assets/css/base/layout.css b/themes/10up-block-theme/assets/css/base/layout.css new file mode 100644 index 00000000..d1a3725b --- /dev/null +++ b/themes/10up-block-theme/assets/css/base/layout.css @@ -0,0 +1,73 @@ +/** + * These are deprecated fallbacks for the variables that now live in the + * theme.json file. They are here to ensure backwards compatibility with + * older themes that do used these variables in their styles. + */ +:root { + --full-viewport-width: var(--wp--custom--full-viewport-width); + --site-outer-padding: var(--wp--custom--site-outer-padding); + --site-content-width: var(--wp--custom--site-content-width); + --main-content-width-side-spacing: var(--wp--custom--main-content-width-side-spacing); + --main-wide-width-side-spacing: var(--wp--custom--main-wide-width-side-spacing); + /* stylelint-disable-next-line length-zero-no-unit */ + --site-header-top-offset: var(--wp-admin--admin-bar--height, 0px); + + &.has-pinned-header { + --site-header-top-offset: calc(var(--header-height) + var(--wp-admin--admin-bar--height, 0px)); + } +} + +html { + scroll-behavior: smooth; +} + +/* + * Remove the default margin caused by global block-gap + * from the header and footer template parts + */ +.wp-site-blocks { + display: grid; + grid-template-areas: + "header" + "main" + "footer"; + grid-template-columns: 1fr; + grid-template-rows: auto 1fr auto; + min-height: 100vh; + min-height: 100dvh; + + & > header:where(.wp-block-template-part) { + grid-area: header; + margin-block-end: 0; + } + + & > main { + grid-area: main; + height: 100%; + } + + & > footer:where(.wp-block-template-part) { + align-self: flex-end; + grid-area: footer; + margin-block-start: 0; + } +} + +.wp-block-group:where(:not(:has(> :first-child[style*="margin"], > :last-child[style*="margin"]))) { + + @mixin margin-collapse; +} + + +.has-global-padding :where(.has-global-padding.is-layout-constrained) { + padding-left: var(--wp--style--root--padding-left); + padding-right: var(--wp--style--root--padding-right); +} + +.is-layout-constrained .wp-block-image.alignwide { + max-width: min(100%, var(--wp--style--global--wide-size)) !important; +} + +.wp-block-post-template.is-layout-flex { + align-items: stretch; +} diff --git a/themes/10up-block-theme/assets/css/base/link.css b/themes/10up-block-theme/assets/css/base/link.css new file mode 100644 index 00000000..252111b8 --- /dev/null +++ b/themes/10up-block-theme/assets/css/base/link.css @@ -0,0 +1,11 @@ +/* + * Ensure that we are not overriding the editor styles of the + * WordPress Components. + * + * This is a workaround for: https://github.com/WordPress/gutenberg/issues/10178 + * + * using :where to prevent the specificity increase of using :not + */ +a:where(:not(.components-external-link, :has(> img:only-child), .wp-element-button)) { + +} diff --git a/themes/10up-block-theme/assets/css/base/reset.css b/themes/10up-block-theme/assets/css/base/reset.css new file mode 100644 index 00000000..f2df1c75 --- /dev/null +++ b/themes/10up-block-theme/assets/css/base/reset.css @@ -0,0 +1,85 @@ +/* + * Use a more-intuitive box-sizing model. + */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +/* + * Allow percentage-based heights in the application + */ +html, +body, +.wp-site-blocks { + min-height: 100%; +} + +/* + * Remove height from the admin bar of the overall height + */ +html { + height: calc(100% - var(--wp-admin--admin-bar--height, 0px)); +} + + +/* + * Improve text rendering + */ +body { + -webkit-font-smoothing: antialiased; +} + +/* + * Improve media defaults + */ +img, +picture, +video, +canvas, +svg { + display: block; + height: auto; + max-width: 100%; +} + +/* + * Remove built-in form typography styles + */ +input, +button, +textarea, +select { + font: inherit; +} + +/* + * Avoid text overflows + */ +p, +h1, +h2, +h3, +h4, +h5, +h6 { + overflow-wrap: break-word; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + text-wrap: balance; + text-wrap: pretty; /* pretty is the nicer result but it isn't supported as well. So balance is here as a fallback */ +} + +/* + * Create a root stacking context + */ +.wp-site-blocks { + isolation: isolate; +} diff --git a/themes/10up-block-theme/assets/css/blocks/core/.gitkeep b/themes/10up-block-theme/assets/css/blocks/core/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/themes/10up-block-theme/assets/css/components/index.css b/themes/10up-block-theme/assets/css/components/index.css new file mode 100644 index 00000000..e69de29b diff --git a/themes/10up-block-theme/assets/css/editor-style-overrides.css b/themes/10up-block-theme/assets/css/editor-style-overrides.css new file mode 100644 index 00000000..0c080b32 --- /dev/null +++ b/themes/10up-block-theme/assets/css/editor-style-overrides.css @@ -0,0 +1,72 @@ +/* + * Override the styling of the post title in the post editor + * to make it look as though it's part of the editor frame instead + * of the post content. + */ +.edit-post-visual-editor__post-title-wrapper { + background-color: #fff; /* stylelint-disable-line scale-unlimited/declaration-strict-value */ + border-bottom: 1px solid #e0e0e0; + margin-bottom: 0; + margin-top: 0 !important; + max-width: none; + overflow: hidden; + width: 100%; + + & .wp-block-post-title { + color: #000; /* stylelint-disable-line scale-unlimited/declaration-strict-value */ + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + height: auto; + line-height: 1; + padding: 4px 0; + } +} + +/* + * Define the various widths of editor interface elements. + * Sadly these are not exposed as CSS variables, so we have to + * manually define them here and update them if they ever change. + */ +:root { + --wp--interface--sidebar--width: 280px; + --wp--interface--secondary--sidebar--width: 350px; +} + +/* + * Substract Inspector Controls Width from full viewport width if open + */ +.interface-interface-skeleton.is-sidebar-opened .editor-styles-wrapper { + --wp--custom--full-viewport-width: calc(100vw - var(--wp--interface--sidebar--width)); +} + +/* + * Substract List View Width from full viewport width if open + */ +.interface-interface-skeleton__secondary-sidebar ~ .interface-interface-skeleton__content .editor-styles-wrapper { + --wp--custom--full-viewport-width: calc(100vw - var(--wp--interface--secondary--sidebar--width)); +} + +/* + * Substract both List View and Inspector Controls + * Width from full viewport width if open + */ +.interface-interface-skeleton.is-sidebar-opened .interface-interface-skeleton__secondary-sidebar ~ .interface-interface-skeleton__content .editor-styles-wrapper { + --wp--custom--full-viewport-width: calc(100vw - var(--wp--interface--secondary--sidebar--width) - var(--wp--interface--sidebar--width)); +} + +.wp-block-image img[src$=".svg"] { + height: auto; +} + +.is-root-container { + min-height: 90dvh; +} + +/* + * Small editor blocks like the footer social nav are hard to click + * Setting a min-height so that elements can be selected to edit + * Prior to this scrollbars overlap small elements +*/ +.block-editor-iframe__container { + min-height: 70px; +} diff --git a/themes/10up-block-theme/assets/css/frontend.css b/themes/10up-block-theme/assets/css/frontend.css new file mode 100644 index 00000000..43bf8bf9 --- /dev/null +++ b/themes/10up-block-theme/assets/css/frontend.css @@ -0,0 +1,4 @@ +@import url("base/index.css"); +@import url("templates/index.css"); +@import url("components/index.css"); +@import url("utilities/index.css"); diff --git a/themes/10up-block-theme/assets/css/globals/.gitkeep b/themes/10up-block-theme/assets/css/globals/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/themes/10up-block-theme/assets/css/globals/media-queries.css b/themes/10up-block-theme/assets/css/globals/media-queries.css new file mode 100644 index 00000000..a9169876 --- /dev/null +++ b/themes/10up-block-theme/assets/css/globals/media-queries.css @@ -0,0 +1,25 @@ +/* + * Media Queries + */ + +/* tiny */ +@custom-media --bp-tiny ( min-width: 24.375rem ); /* 390px */ +@custom-media --bp-tiny-max ( max-width: 24.3125rem ); /* 389px */ + +/* small */ +@custom-media --bp-small ( min-width: 37.5rem ); /* 600px */ +@custom-media --bp-small-max ( max-width: 37.4375rem ); /* 599px */ + +/* medium */ +@custom-media --bp-medium ( min-width: 60rem ); /* 960px */ +@custom-media --bp-medium-max ( max-width: 59.9375rem ); /* 959px */ + +/* large */ +@custom-media --bp-large ( min-width: 80rem ); /* 1280px */ +@custom-media --bp-large-max ( max-width: 79.9375rem ); /* 1279px */ + +/* WP Core Breakpoints (used for the admin bar for example) */ +@custom-media --wp-small ( min-width: 600px ); +@custom-media --wp-small-max ( max-width: 599px ); +@custom-media --wp-medium (min-width: 783px); +@custom-media --wp-medium-max (max-width: 782px); diff --git a/themes/10up-block-theme/assets/css/globals/readme.md b/themes/10up-block-theme/assets/css/globals/readme.md new file mode 100644 index 00000000..ac076696 --- /dev/null +++ b/themes/10up-block-theme/assets/css/globals/readme.md @@ -0,0 +1,10 @@ +# PostCSS Globals + + Any individual `.css` files placed in this folder or any nested folder will automatically get loaded by the [@csstools/postcss-global-data](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-global-data) plugin. + + This ensures that the definitions defined in these files become available to all CSS entrypoints. So individual block styles, the main stylesheet, etc. all have access to these definitions. + + > [!WARNING] + > These CSS files should not produce any output. They are only meant to define global postcss features to become available to all entrypoints + > Also the loading order of these files should not matter at all. They get auto included via a glob expression. + Mixins also get their special treatment. They have a special [`mixins`](../mixins/) folder located next to this `globals` folder diff --git a/themes/10up-block-theme/assets/css/mixins/margin-collapse.css b/themes/10up-block-theme/assets/css/mixins/margin-collapse.css new file mode 100644 index 00000000..f0cc5618 --- /dev/null +++ b/themes/10up-block-theme/assets/css/mixins/margin-collapse.css @@ -0,0 +1,14 @@ +@define-mixin margin-collapse { + margin-trim: block; + + @supports not (margin-trim: block) { + + & > *:first-child { + margin-top: 0; + } + + & > *:last-child { + margin-bottom: 0; + } + } +} diff --git a/themes/10up-block-theme/assets/css/mixins/readme.md b/themes/10up-block-theme/assets/css/mixins/readme.md new file mode 100644 index 00000000..8399c076 --- /dev/null +++ b/themes/10up-block-theme/assets/css/mixins/readme.md @@ -0,0 +1,10 @@ +# PostCSS Global Mixins + + Any individual `.css` files placed in this folder or any nested folder will automatically get loaded by the [postcss-mixins](https://github.com/postcss/postcss-mixins) plugin. + + This ensures that the mixins defined in these files become available to all CSS entrypoints. So individual block styles, the main stylesheet, etc. all have access to these mixins. + + > [!WARNING] + > These CSS files should not produce any output. They are only meant to define global postcss features to become available to all entrypoints + > Also the loading order of these files should not matter at all. They get auto included via a glob expression. + Other global definitions such as `@custom-media`, `@custom-selector`, etc. also get their special treatment. They have a special [`globals`](../globals/) folder located next to this `mixins` folder diff --git a/themes/10up-block-theme/assets/css/templates/index.css b/themes/10up-block-theme/assets/css/templates/index.css new file mode 100644 index 00000000..e69de29b diff --git a/themes/10up-block-theme/assets/css/utilities/index.css b/themes/10up-block-theme/assets/css/utilities/index.css new file mode 100644 index 00000000..9c4c957f --- /dev/null +++ b/themes/10up-block-theme/assets/css/utilities/index.css @@ -0,0 +1 @@ +@import url("visually-hidden.css"); diff --git a/themes/10up-block-theme/assets/css/utilities/visually-hidden.css b/themes/10up-block-theme/assets/css/utilities/visually-hidden.css new file mode 100644 index 00000000..41eed5c5 --- /dev/null +++ b/themes/10up-block-theme/assets/css/utilities/visually-hidden.css @@ -0,0 +1,10 @@ +.visually-hidden { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} diff --git a/themes/10up-block-theme/assets/fonts/.gitkeep b/themes/10up-block-theme/assets/fonts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/themes/10up-block-theme/assets/images/.gitkeep b/themes/10up-block-theme/assets/images/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/themes/10up-block-theme/assets/js/block-extensions.js b/themes/10up-block-theme/assets/js/block-extensions.js new file mode 100644 index 00000000..e69de29b diff --git a/themes/10up-block-theme/assets/js/frontend.js b/themes/10up-block-theme/assets/js/frontend.js new file mode 100644 index 00000000..8c371783 --- /dev/null +++ b/themes/10up-block-theme/assets/js/frontend.js @@ -0,0 +1 @@ +import '../css/frontend.css'; diff --git a/themes/10up-block-theme/assets/svg/.gitkeep b/themes/10up-block-theme/assets/svg/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/themes/10up-block-theme/composer.json b/themes/10up-block-theme/composer.json new file mode 100644 index 00000000..d0f55abf --- /dev/null +++ b/themes/10up-block-theme/composer.json @@ -0,0 +1,31 @@ +{ + "name": "10up/tenup-theme", + "type": "wordpress-theme", + "authors": [ + { + "name": "10up", + "email": "info@10up.com" + } + ], + "require": { + "php": ">=8.0", + "haydenpierce/class-finder": "^0.4.3" + }, + "require-dev": { + "10up/phpcs-composer": "dev-trunk" + }, + "scripts": { + "lint": "phpcs .", + "lint-fix": "phpcbf ." + }, + "autoload": { + "psr-4": { + "TenupBlockTheme\\": "includes/classes/" + } + }, + "config": { + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } + } +} diff --git a/themes/10up-block-theme/composer.lock b/themes/10up-block-theme/composer.lock new file mode 100644 index 00000000..9a2cb267 --- /dev/null +++ b/themes/10up-block-theme/composer.lock @@ -0,0 +1,813 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "b8e0d1c59a064d11f91fbdc4897bab5b", + "packages": [ + { + "name": "haydenpierce/class-finder", + "version": "0.4.4", + "source": { + "type": "git", + "url": "git@gitlab.com:hpierce1102/ClassFinder.git", + "reference": "94c602870ddf8d4fa2d67fb9bae637d88f9bd76e" + }, + "dist": { + "type": "zip", + "url": "https://gitlab.com/api/v4/projects/hpierce1102%2FClassFinder/repository/archive.zip?sha=94c602870ddf8d4fa2d67fb9bae637d88f9bd76e", + "reference": "94c602870ddf8d4fa2d67fb9bae637d88f9bd76e", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=5.3" + }, + "require-dev": { + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "~9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "HaydenPierce\\ClassFinder\\": "src/", + "HaydenPierce\\ClassFinder\\UnitTest\\": "test/unit" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Hayden Pierce", + "email": "hayden@haydenpierce.com" + } + ], + "description": "A library that can provide of a list of classes in a given namespace", + "time": "2022-09-26T22:42:59+00:00" + } + ], + "packages-dev": [ + { + "name": "10up/phpcs-composer", + "version": "dev-trunk", + "source": { + "type": "git", + "url": "https://github.com/10up/phpcs-composer.git", + "reference": "75fde1b62cbb551146159154b0d7135d1da0db1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/10up/phpcs-composer/zipball/75fde1b62cbb551146159154b0d7135d1da0db1c", + "reference": "75fde1b62cbb551146159154b0d7135d1da0db1c", + "shasum": "" + }, + "require": { + "automattic/vipwpcs": "^3.0", + "phpcompatibility/phpcompatibility-wp": "^2" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "*", + "phpcompatibility/php-compatibility": "dev-develop as 9.99.99" + }, + "default-branch": true, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "10up", + "homepage": "https://10up.com/" + } + ], + "description": "10up's PHP CodeSniffer Ruleset", + "support": { + "issues": "https://github.com/10up/phpcs-composer/issues", + "source": "https://github.com/10up/phpcs-composer/tree/trunk" + }, + "time": "2023-12-14T21:42:57+00:00" + }, + { + "name": "automattic/vipwpcs", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/Automattic/VIP-Coding-Standards.git", + "reference": "2b1d206d81b74ed999023cffd924f862ff2753c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/VIP-Coding-Standards/zipball/2b1d206d81b74ed999023cffd924f862ff2753c8", + "reference": "2b1d206d81b74ed999023cffd924f862ff2753c8", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "phpcsstandards/phpcsextra": "^1.2.1", + "phpcsstandards/phpcsutils": "^1.0.11", + "sirbrillig/phpcs-variable-analysis": "^2.11.18", + "squizlabs/php_codesniffer": "^3.9.2", + "wp-coding-standards/wpcs": "^3.1.0" + }, + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpcompatibility/php-compatibility": "^9", + "phpcsstandards/phpcsdevtools": "^1.0", + "phpunit/phpunit": "^4 || ^5 || ^6 || ^7 || ^8 || ^9" + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Contributors", + "homepage": "https://github.com/Automattic/VIP-Coding-Standards/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress VIP minimum coding conventions", + "keywords": [ + "phpcs", + "standards", + "static analysis", + "wordpress" + ], + "support": { + "issues": "https://github.com/Automattic/VIP-Coding-Standards/issues", + "source": "https://github.com/Automattic/VIP-Coding-Standards", + "wiki": "https://github.com/Automattic/VIP-Coding-Standards/wiki" + }, + "time": "2024-05-10T20:31:09+00:00" + }, + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" + }, + "time": "2023-01-05T11:28:13+00:00" + }, + { + "name": "phpcompatibility/php-compatibility", + "version": "9.3.5", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" + }, + "conflict": { + "squizlabs/php_codesniffer": "2.6.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "homepage": "https://github.com/wimg", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" + } + ], + "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", + "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", + "keywords": [ + "compatibility", + "phpcs", + "standards" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", + "source": "https://github.com/PHPCompatibility/PHPCompatibility" + }, + "time": "2019-12-27T09:44:58+00:00" + }, + { + "name": "phpcompatibility/phpcompatibility-paragonie", + "version": "1.3.3", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git", + "reference": "293975b465e0e709b571cbf0c957c6c0a7b9a2ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/293975b465e0e709b571cbf0c957c6c0a7b9a2ac", + "reference": "293975b465e0e709b571cbf0c957c6c0a7b9a2ac", + "shasum": "" + }, + "require": { + "phpcompatibility/php-compatibility": "^9.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "paragonie/random_compat": "dev-master", + "paragonie/sodium_compat": "dev-master" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "lead" + } + ], + "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.", + "homepage": "http://phpcompatibility.com/", + "keywords": [ + "compatibility", + "paragonie", + "phpcs", + "polyfill", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues", + "security": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/security/policy", + "source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie" + }, + "funding": [ + { + "url": "https://github.com/PHPCompatibility", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-04-24T21:30:46+00:00" + }, + { + "name": "phpcompatibility/phpcompatibility-wp", + "version": "2.1.5", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git", + "reference": "01c1ff2704a58e46f0cb1ca9d06aee07b3589082" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/01c1ff2704a58e46f0cb1ca9d06aee07b3589082", + "reference": "01c1ff2704a58e46f0cb1ca9d06aee07b3589082", + "shasum": "" + }, + "require": { + "phpcompatibility/php-compatibility": "^9.0", + "phpcompatibility/phpcompatibility-paragonie": "^1.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "lead" + } + ], + "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.", + "homepage": "http://phpcompatibility.com/", + "keywords": [ + "compatibility", + "phpcs", + "standards", + "static analysis", + "wordpress" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibilityWP/issues", + "security": "https://github.com/PHPCompatibility/PHPCompatibilityWP/security/policy", + "source": "https://github.com/PHPCompatibility/PHPCompatibilityWP" + }, + "funding": [ + { + "url": "https://github.com/PHPCompatibility", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-04-24T21:37:59+00:00" + }, + { + "name": "phpcsstandards/phpcsextra", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHPCSExtra.git", + "reference": "11d387c6642b6e4acaf0bd9bf5203b8cca1ec489" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/11d387c6642b6e4acaf0bd9bf5203b8cca1ec489", + "reference": "11d387c6642b6e4acaf0bd9bf5203b8cca1ec489", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "phpcsstandards/phpcsutils": "^1.0.9", + "squizlabs/php_codesniffer": "^3.8.0" + }, + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpcsstandards/phpcsdevcs": "^1.1.6", + "phpcsstandards/phpcsdevtools": "^1.2.1", + "phpunit/phpunit": "^4.5 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-stable": "1.x-dev", + "dev-develop": "1.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHPCSExtra/graphs/contributors" + } + ], + "description": "A collection of sniffs and standards for use with PHP_CodeSniffer.", + "keywords": [ + "PHP_CodeSniffer", + "phpcbf", + "phpcodesniffer-standard", + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHPCSExtra/issues", + "security": "https://github.com/PHPCSStandards/PHPCSExtra/security/policy", + "source": "https://github.com/PHPCSStandards/PHPCSExtra" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2023-12-08T16:49:07+00:00" + }, + { + "name": "phpcsstandards/phpcsutils", + "version": "1.0.12", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", + "reference": "87b233b00daf83fb70f40c9a28692be017ea7c6c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/87b233b00daf83fb70f40c9a28692be017ea7c6c", + "reference": "87b233b00daf83fb70f40c9a28692be017ea7c6c", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.10.0 || 4.0.x-dev@dev" + }, + "require-dev": { + "ext-filter": "*", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpcsstandards/phpcsdevcs": "^1.1.6", + "yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-stable": "1.x-dev", + "dev-develop": "1.x-dev" + } + }, + "autoload": { + "classmap": [ + "PHPCSUtils/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHPCSUtils/graphs/contributors" + } + ], + "description": "A suite of utility functions for use with PHP_CodeSniffer", + "homepage": "https://phpcsutils.com/", + "keywords": [ + "PHP_CodeSniffer", + "phpcbf", + "phpcodesniffer-standard", + "phpcs", + "phpcs3", + "standards", + "static analysis", + "tokens", + "utility" + ], + "support": { + "docs": "https://phpcsutils.com/", + "issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues", + "security": "https://github.com/PHPCSStandards/PHPCSUtils/security/policy", + "source": "https://github.com/PHPCSStandards/PHPCSUtils" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-05-20T13:34:27+00:00" + }, + { + "name": "sirbrillig/phpcs-variable-analysis", + "version": "v2.11.19", + "source": { + "type": "git", + "url": "https://github.com/sirbrillig/phpcs-variable-analysis.git", + "reference": "bc8d7e30e2005bce5c59018b7cdb08e9fb45c0d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/bc8d7e30e2005bce5c59018b7cdb08e9fb45c0d1", + "reference": "bc8d7e30e2005bce5c59018b7cdb08e9fb45c0d1", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "squizlabs/php_codesniffer": "^3.5.6" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.0", + "phpcsstandards/phpcsdevcs": "^1.1", + "phpstan/phpstan": "^1.7", + "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.5 || ^7.0 || ^8.0 || ^9.0", + "sirbrillig/phpcs-import-detection": "^1.1", + "vimeo/psalm": "^0.2 || ^0.3 || ^1.1 || ^4.24 || ^5.0@beta" + }, + "type": "phpcodesniffer-standard", + "autoload": { + "psr-4": { + "VariableAnalysis\\": "VariableAnalysis/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Sam Graham", + "email": "php-codesniffer-variableanalysis@illusori.co.uk" + }, + { + "name": "Payton Swick", + "email": "payton@foolord.com" + } + ], + "description": "A PHPCS sniff to detect problems with variables.", + "keywords": [ + "phpcs", + "static analysis" + ], + "support": { + "issues": "https://github.com/sirbrillig/phpcs-variable-analysis/issues", + "source": "https://github.com/sirbrillig/phpcs-variable-analysis", + "wiki": "https://github.com/sirbrillig/phpcs-variable-analysis/wiki" + }, + "time": "2024-06-26T20:08:34+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.10.1", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/8f90f7a53ce271935282967f53d0894f8f1ff877", + "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + }, + "bin": [ + "bin/phpcbf", + "bin/phpcs" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-05-22T21:24:41+00:00" + }, + { + "name": "wp-coding-standards/wpcs", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", + "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/9333efcbff231f10dfd9c56bb7b65818b4733ca7", + "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "ext-libxml": "*", + "ext-tokenizer": "*", + "ext-xmlreader": "*", + "php": ">=5.4", + "phpcsstandards/phpcsextra": "^1.2.1", + "phpcsstandards/phpcsutils": "^1.0.10", + "squizlabs/php_codesniffer": "^3.9.0" + }, + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpcompatibility/php-compatibility": "^9.0", + "phpcsstandards/phpcsdevtools": "^1.2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "suggest": { + "ext-iconv": "For improved results", + "ext-mbstring": "For improved results" + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Contributors", + "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions", + "keywords": [ + "phpcs", + "standards", + "static analysis", + "wordpress" + ], + "support": { + "issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues", + "source": "https://github.com/WordPress/WordPress-Coding-Standards", + "wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki" + }, + "funding": [ + { + "url": "https://opencollective.com/php_codesniffer", + "type": "custom" + } + ], + "time": "2024-03-25T16:39:00+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "10up/phpcs-composer": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=8.0" + }, + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/themes/10up-block-theme/functions.php b/themes/10up-block-theme/functions.php new file mode 100755 index 00000000..14743aa3 --- /dev/null +++ b/themes/10up-block-theme/functions.php @@ -0,0 +1,40 @@ +name ] ); + } + ); + } + } +} + +/** + * Enqueue block specific styles. + */ +function enqueue_theme_block_styles() { + $stylesheets = glob( TENUP_BLOCK_THEME_DIST_PATH . '/blocks/autoenqueue/**/*.css' ); + foreach ( $stylesheets as $stylesheet_path ) { + $block_type = str_replace( TENUP_BLOCK_THEME_DIST_PATH . '/blocks/autoenqueue/', '', $stylesheet_path ); + $block_type = str_replace( '.css', '', $block_type ); + $asset_file = TENUP_BLOCK_THEME_DIST_PATH . 'blocks/autoenqueue/' . $block_type . '.asset.php'; + + if ( ! file_exists( $asset_file ) ) { + $asset_file = require $asset_file; + } else { + $asset_file = [ + 'version' => filemtime( $stylesheet_path ), + 'dependencies' => [], + ]; + } + + wp_register_style( + "tenup-theme-{$block_type}", + TENUP_BLOCK_THEME_DIST_URL . 'blocks/autoenqueue/' . $block_type . '.css', + $asset_file['dependencies'], + $asset_file['version'] + ); + + wp_enqueue_block_style( + $block_type, + [ + 'handle' => "tenup-theme-{$block_type}", + 'path' => $stylesheet_path, + ] + ); + + if ( file_exists( TENUP_BLOCK_THEME_DIST_PATH . 'blocks/autoenqueue/' . $block_type . '.js' ) ) { + wp_enqueue_script( + $block_type, + TENUP_BLOCK_THEME_DIST_URL . 'blocks/autoenqueue/' . $block_type . '.js', + $asset_file['dependencies'], + $asset_file['version'], + true + ); + } + } +} diff --git a/themes/10up-block-theme/includes/blocks/.gitkeep b/themes/10up-block-theme/includes/blocks/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/themes/10up-block-theme/includes/core.php b/themes/10up-block-theme/includes/core.php new file mode 100755 index 00000000..541af3b7 --- /dev/null +++ b/themes/10up-block-theme/includes/core.php @@ -0,0 +1,190 @@ + 'defer', + ] + ); +} + + +/** + * Enqueue styles for front-end. + * + * @return void + */ +function styles() { + wp_enqueue_style( + 'tenup-theme-styles', + TENUP_BLOCK_THEME_TEMPLATE_URL . '/dist/css/frontend.css', + [], + get_asset_info( 'frontend', 'version' ) + ); +} + +/** + * Enqueue styles for editor only. + * + * @return void + */ +function editor_style_overrides() { + wp_enqueue_style( + 'tenup-theme-editor-style-overrides', + TENUP_BLOCK_THEME_TEMPLATE_URL . '/dist/css/editor-style-overrides.css', + [], + TENUP_BLOCK_THEME_VERSION + ); + + wp_enqueue_script( + 'tenup-theme-block-extensions', + TENUP_BLOCK_THEME_TEMPLATE_URL . '/dist/js/block-extensions.js', + get_asset_info( 'block-extensions', 'dependencies' ), + get_asset_info( 'block-extensions', 'version' ), + true + ); +} + +/** + * register all icons located in the dist/svg folder + */ +function register_all_icons() { + if ( ! function_exists( '\UIKitCore\Helpers\register_icons' ) ) { + return; + } + + $icon_paths = glob( TENUP_BLOCK_THEME_DIST_PATH . 'svg/*.svg' ); + $icons = array_map( + function ( $icon_path ) { + $icon_name = preg_replace( '#\..*$#', '', basename( $icon_path ) ); + + return new \UIKitCore\Icon( + $icon_name, + ucwords( str_replace( '-', ' ', $icon_name ) ), + $icon_path + ); + }, + $icon_paths + ); + + \UIKitCore\Helpers\register_icons( + [ + 'name' => 'tenup', + 'label' => 'Theme Icons', + 'icons' => $icons, + ] + ); +} + +/** + * Handles JavaScript detection. + * + * Adds a `js` class to the root `` element when JavaScript is detected. + * + * @return void + */ +function js_detection() { + + echo "\n"; +} + +/** + * Handles scrollbar width detection. + * + * Adds a JavaScript event listener to the DOMContentLoaded event. When the DOM is fully loaded, + * it calculates the width of the scrollbar and sets a CSS variable `--wp--custom--scrollbar-width` with the width. + * It also adds an event listener to the window resize event to update the scrollbar width when the window is resized. + * + * @return void + */ +function scrollbar_detection() { + echo '' . "\n"; +} + +/** + * Inlines ct.css in the head + * + * Embeds a diagnostic CSS file written by Harry Roberts + * that helps diagnose render blocking resources and other + * performance bottle necks. + * + * The CSS is inlined in the head of the document, only when requesting + * a page with the query param ?debug_perf=1 + * + * @link https://csswizardry.com/ct/ + * @return void + */ +function embed_ct_css() { + + $debug_performance = rest_sanitize_boolean( filter_input( INPUT_GET, 'debug_perf', FILTER_SANITIZE_NUMBER_INT ) ); + + if ( ! $debug_performance ) { + return; + } + + wp_register_style( 'ct', false ); // phpcs:ignore + wp_enqueue_style( 'ct' ); + wp_add_inline_style( 'ct', 'head{--ct-is-problematic:solid;--ct-is-affected:dashed;--ct-notify:#0bce6b;--ct-warn:#ffa400;--ct-error:#ff4e42}head,head [rel=stylesheet],head script,head script:not([src])[async],head script:not([src])[defer],head script~meta[http-equiv=content-security-policy],head style,head>meta[charset]:not(:nth-child(-n+5)){display:block}head [rel=stylesheet],head script,head script~meta[http-equiv=content-security-policy],head style,head title,head>meta[charset]:not(:nth-child(-n+5)){margin:5px;padding:5px;border-width:5px;background-color:#fff;color:#333}head ::before,head script,head style{font:16px/1.5 monospace,monospace;display:block}head ::before{font-weight:700}head link[rel=stylesheet],head script[src]{border-style:var(--ct-is-problematic);border-color:var(--ct-warn)}head script[src]::before{content:"[Blocking Script – " attr(src) "]"}head link[rel=stylesheet]::before{content:"[Blocking Stylesheet – " attr(href) "]"}head script:not(:empty),head style:not(:empty){max-height:5em;overflow:auto;background-color:#ffd;white-space:pre;border-color:var(--ct-notify);border-style:var(--ct-is-problematic)}head script:not(:empty)::before{content:"[Inline Script] "}head style:not(:empty)::before{content:"[Inline Style] "}head script:not(:empty)~title,head script[src]:not([async]):not([defer]):not([type=module])~title{display:block;border-style:var(--ct-is-affected);border-color:var(--ct-error)}head script:not(:empty)~title::before,head script[src]:not([async]):not([defer]):not([type=module])~title::before{content:"[ blocked by JS] "}head [rel=stylesheet]:not([media=print]):not(.ct)~script,head style:not(:empty)~script{border-style:var(--ct-is-affected);border-color:var(--ct-warn)}head [rel=stylesheet]:not([media=print]):not(.ct)~script::before,head style:not(:empty)~script::before{content:"[JS blocked by CSS – " attr(src) "]"}head script[src][src][async][defer]{display:block;border-style:var(--ct-is-problematic);border-color:var(--ct-warn)}head script[src][src][async][defer]::before{content:"[async and defer is redundant: prefer defer – " attr(src) "]"}head script:not([src])[async],head script:not([src])[defer]{border-style:var(--ct-is-problematic);border-color:var(--ct-warn)}head script:not([src])[async]::before{content:"The async attribute is redundant on inline scripts"}head script:not([src])[defer]::before{content:"The defer attribute is redundant on inline scripts"}head [rel=stylesheet][href^="//"],head [rel=stylesheet][href^=http],head script[src][src][src^="//"],head script[src][src][src^=http]{border-style:var(--ct-is-problematic);border-color:var(--ct-error)}head script[src][src][src^="//"]::before,head script[src][src][src^=http]::before{content:"[Third Party Blocking Script – " attr(src) "]"}head [rel=stylesheet][href^="//"]::before,head [rel=stylesheet][href^=http]::before{content:"[Third Party Blocking Stylesheet – " attr(href) "]"}head script~meta[http-equiv=content-security-policy]{border-style:var(--ct-is-problematic);border-color:var(--ct-error)}head script~meta[http-equiv=content-security-policy]::before{content:"[Meta CSP defined after JS]"}head>meta[charset]:not(:nth-child(-n+5)){border-style:var(--ct-is-problematic);border-color:var(--ct-warn)}head>meta[charset]:not(:nth-child(-n+5))::before{content:"[Charset should appear as early as possible]"}link[rel=stylesheet].ct,link[rel=stylesheet][media=print],script[async],script[defer],script[type=module],style.ct{display:none}' ); +} diff --git a/themes/10up-block-theme/includes/overrides.php b/themes/10up-block-theme/includes/overrides.php new file mode 100644 index 00000000..7a70337c --- /dev/null +++ b/themes/10up-block-theme/includes/overrides.php @@ -0,0 +1,84 @@ +<?php +/** + * This file contains hooks and functions that override the behavior of WP Core. + * + * @package TenupBlockTheme + */ + +namespace TenupBlockTheme\Overrides; + +/** + * Registers instances where we will override default WP Core behavior. + * + * @link https://developer.wordpress.org/reference/functions/print_emoji_detection_script/ + * @link https://developer.wordpress.org/reference/functions/print_emoji_styles/ + * @link https://developer.wordpress.org/reference/functions/wp_staticize_emoji/ + * @link https://developer.wordpress.org/reference/functions/wp_staticize_emoji_for_email/ + * @link https://developer.wordpress.org/reference/functions/wp_generator/ + * @link https://developer.wordpress.org/reference/functions/wlwmanifest_link/ + * @link https://developer.wordpress.org/reference/functions/rsd_link/ + * + * @return void + */ +function setup() { + // Remove the Emoji detection script. + remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); + + // Remove inline Emoji detection script. + remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); + + // Remove Emoji-related styles from front end and back end. + remove_action( 'wp_print_styles', 'print_emoji_styles' ); + remove_action( 'admin_print_styles', 'print_emoji_styles' ); + + // Remove Emoji-to-static-img conversion. + remove_filter( 'the_content_feed', 'wp_staticize_emoji' ); + remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); + remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); + + add_filter( 'tiny_mce_plugins', 'TenupBlockTheme\Overrides\disable_emojis_tinymce' ); + add_filter( 'wp_resource_hints', 'TenupBlockTheme\Overrides\disable_emoji_dns_prefetch', 10, 2 ); + + // Remove WordPress generator meta. + remove_action( 'wp_head', 'wp_generator' ); + // Remove Windows Live Writer manifest link. + remove_action( 'wp_head', 'wlwmanifest_link' ); + // Remove the link to Really Simple Discovery service endpoint. + remove_action( 'wp_head', 'rsd_link' ); +} + +/** + * Filter function used to remove the TinyMCE emoji plugin. + * + * @link https://developer.wordpress.org/reference/hooks/tiny_mce_plugins/ + * + * @param array $plugins An array of default TinyMCE plugins. + * @return array An array of TinyMCE plugins, without wpemoji. + */ +function disable_emojis_tinymce( $plugins ) { + if ( is_array( $plugins ) && in_array( 'wpemoji', $plugins, true ) ) { + return array_diff( $plugins, array( 'wpemoji' ) ); + } + + return $plugins; +} + +/** + * Remove emoji CDN hostname from DNS prefetching hints. + * + * @link https://developer.wordpress.org/reference/hooks/emoji_svg_url/ + * + * @param array $urls URLs to print for resource hints. + * @param string $relation_type The relation type the URLs are printed for. + * @return array Difference betwen the two arrays. + */ +function disable_emoji_dns_prefetch( $urls, $relation_type ) { + if ( 'dns-prefetch' === $relation_type ) { + /** This filter is documented in wp-includes/formatting.php */ + $emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2/svg/' ); + + $urls = array_values( array_diff( $urls, array( $emoji_svg_url ) ) ); + } + + return $urls; +} diff --git a/themes/10up-block-theme/includes/template-tags.php b/themes/10up-block-theme/includes/template-tags.php new file mode 100644 index 00000000..6a9176d5 --- /dev/null +++ b/themes/10up-block-theme/includes/template-tags.php @@ -0,0 +1,36 @@ +<?php +/** + * Custom template tags for this theme. + * + * This file is for custom template tags only and it should not contain + * functions that will be used for filtering or adding an action. + * + * All functions should be prefixed with TenupBlockTheme in order to prevent + * pollution of the global namespace and potential conflicts with functions + * from plugins. + * Example: `TENUP_BLOCK_THEME_function()` + * + * @package TenupBlockTheme\TemplateTags + */ + +namespace TenupBlockTheme\TemplateTags; + +/** + * Set up theme defaults and register supported WordPress features. + * + * @return void + */ +function setup() { + add_action( 'wp_head', 'TenupBlockTheme\TemplateTags\add_viewport_meta_tag', 10, 0 ); +} + +/** + * Add viewport meta tag to head. + * + * @return void + */ +function add_viewport_meta_tag() { + ?> + <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> + <?php +} diff --git a/themes/10up-block-theme/includes/utility.php b/themes/10up-block-theme/includes/utility.php new file mode 100755 index 00000000..b2e5e17b --- /dev/null +++ b/themes/10up-block-theme/includes/utility.php @@ -0,0 +1,79 @@ +<?php +/** + * Utility functions for the theme. + * + * This file is for custom helper functions. + * These should not be confused with WordPress template + * tags. Template tags typically use prefixing, as opposed + * to Namespaces. + * + * @link https://developer.wordpress.org/themes/basics/template-tags/ + * @package TenupBlockTheme + */ + +namespace TenupBlockTheme\Utility; + +/** + * Get asset info from extracted asset files + * + * @param string $slug Asset slug as defined in build/webpack configuration + * @param string $attribute Optional attribute to get. Can be version or dependencies + * @return string|array + */ +function get_asset_info( $slug, $attribute = null ) { + if ( file_exists( TENUP_BLOCK_THEME_PATH . 'dist/js/' . $slug . '.asset.php' ) ) { + $asset = require TENUP_BLOCK_THEME_PATH . 'dist/js/' . $slug . '.asset.php'; + } elseif ( file_exists( TENUP_BLOCK_THEME_PATH . 'dist/css/' . $slug . '.asset.php' ) ) { + $asset = require TENUP_BLOCK_THEME_PATH . 'dist/css/' . $slug . '.asset.php'; + } else { + return null; + } + + if ( ! empty( $attribute ) && isset( $asset[ $attribute ] ) ) { + return $asset[ $attribute ]; + } + + return $asset; +} + + + +/** + * Enqueue a view script for a block + * + * @param string $block_name Block name. + * @param array $args { + * Optional. Array of arguments for enqueuing a view script. + * @type string $handle Script handle. + * @type string $src Script URL. + * @type array $dep Script dependencies. + * @type string|bool $ver Script version. + * @type bool $in_footer Whether to enqueue the script before </body> instead of in the <head>. + * } + * @return void + */ +function wp_enqueue_block_view_script( $block_name, $args = array() ) { + $default_args = array( + 'dep' => array(), + 'ver' => false, + 'in_footer' => true, + ); + + $args = wp_parse_args( $args, $default_args ); + + $block = \WP_Block_Type_Registry::get_instance()->get_registered( $block_name ); + + if ( ! empty( $args['src'] ) ) { + wp_register_script( + $args['handle'], + $args['src'], + $args['dep'], + $args['ver'], + $args['in_footer'] + ); + } + + if ( ! empty( $block ) ) { + $block->view_script_handles[] = $args['handle']; + } +} diff --git a/themes/10up-block-theme/package.json b/themes/10up-block-theme/package.json new file mode 100644 index 00000000..4ca7f8ad --- /dev/null +++ b/themes/10up-block-theme/package.json @@ -0,0 +1,35 @@ +{ + "name": "tenup-theme", + "version": "1.0.0", + "scripts": { + "start": "npm run watch", + "watch": "10up-toolkit watch --port=5020", + "build": "10up-toolkit build", + "build:analyze": "10up-toolkit build --analyze", + "format-js": "10up-toolkit format-js", + "lint-js": "10up-toolkit lint-js", + "lint-style": "10up-toolkit lint-style", + "test": "10up-toolkit test-unit-jest", + "clean-dist": "rm -rf ./dist", + "scaffold:block": "cd includes/blocks/ && wp-create-block --no-plugin --template ../../../../bin/create-block-template" + }, + "engines": { + "node": ">=18.0.0" + }, + "devDependencies": { + "10up-toolkit": "^6.2.1" + }, + "dependencies": { + "@10up/block-components": "^1.19.1", + "clsx": "^2.1.1" + }, + "10up-toolkit": { + "useBlockAssets": true, + "useScriptModules": true, + "entry": { + "editor-style-overrides": "./assets/css/editor-style-overrides.css", + "frontend": "./assets/js/frontend.js", + "block-extensions": "./assets/js/block-extensions.js" + } + } +} diff --git a/themes/10up-block-theme/parts/footer.html b/themes/10up-block-theme/parts/footer.html new file mode 100644 index 00000000..88e2b0d2 --- /dev/null +++ b/themes/10up-block-theme/parts/footer.html @@ -0,0 +1,62 @@ +<!-- wp:group {"style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"bottom":"var:preset|spacing|40-64","top":"var:preset|spacing|40-64"}}},"backgroundColor":"surface-secondary","layout":{"type":"constrained"}} --> + <div class="wp-block-group has-surface-secondary-background-color has-background" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--40-64);padding-bottom:var(--wp--preset--spacing--40-64)"><!-- wp:columns {"align":"wide","style":{"spacing":{"blockGap":{"top":"clamp(1.50rem, calc(1.43rem + 0.37vw), 1.69rem)","left":"150px"}}}} --> + <div class="wp-block-columns alignwide"><!-- wp:column {"width":"50%"} --> + <div class="wp-block-column" style="flex-basis:50%"><!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","orientation":"vertical"}} --> + <div class="wp-block-group"><!-- wp:site-title {"level":0,"style":{"typography":{"textTransform":"none","fontStyle":"normal","fontWeight":"600"}}} /--> + + <!-- wp:paragraph --> + <p>Effortlessly design a stunning custom site with an + intuitive interface, unlimited options, and responsive layouts.</p> + <!-- /wp:paragraph --></div> + <!-- /wp:group --></div> + <!-- /wp:column --> + + <!-- wp:column {"width":"50%"} --> + <div class="wp-block-column" style="flex-basis:50%"><!-- wp:group {"layout":{"type":"grid","minimumColumnWidth":"8rem"}} --> + <div class="wp-block-group"><!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","orientation":"vertical"}} --> + <div class="wp-block-group"><!-- wp:paragraph --> + <p><strong>Quick Links</strong></p> + <!-- /wp:paragraph --> + + <!-- wp:paragraph --> + <p>Sample Link<br>Sample Link<br>Sample + Link<br>Sample Link<br>Sample Link</p> + <!-- /wp:paragraph --></div> + <!-- /wp:group --> + + <!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","orientation":"vertical"}} --> + <div class="wp-block-group"><!-- wp:paragraph --> + <p><strong>Resources</strong></p> + <!-- /wp:paragraph --> + + <!-- wp:paragraph --> + <p>Sample Link<br>Sample Link<br>Sample + Link<br>Sample Link<br>Sample Link</p> + <!-- /wp:paragraph --></div> + <!-- /wp:group --> + + <!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","orientation":"vertical"}} --> + <div class="wp-block-group"><!-- wp:paragraph --> + <p><strong>About</strong></p> + <!-- /wp:paragraph --> + + <!-- wp:paragraph --> + <p>Sample Link<br>Sample Link<br>Sample + Link<br>Sample Link<br>Sample Link</p> + <!-- /wp:paragraph --></div> + <!-- /wp:group --></div> + <!-- /wp:group --></div> + <!-- /wp:column --></div> + <!-- /wp:columns --> + + <!-- wp:separator {"align":"wide","className":"is-style-default","style":{"spacing":{"margin":{"top":"var:preset|spacing|24"}},"color":{"background":"#e1e3e4"}},"separatorHeight":"1px"} --> + <hr class="wp-block-separator alignwide has-text-color has-alpha-channel-opacity has-background is-style-default" style="margin-top:var(--wp--preset--spacing--24);background-color:#e1e3e4;color:#e1e3e4"/> + <!-- /wp:separator --> + + <!-- wp:group {"align":"wide","style":{"spacing":{"margin":{"top":"var:preset|spacing|24"}},"border":{"radius":"2px","top":{"width":"0px","style":"none"},"right":[],"bottom":[],"left":[]}},"layout":{"type":"flex","flexWrap":"nowrap","justifyContent":"space-between"}} --> + <div class="wp-block-group alignwide" style="border-radius:2px;border-top-style:none;border-top-width:0px;margin-top:var(--wp--preset--spacing--24)"><!-- wp:tenup/copyright {"suffix":"10up Inc."} /--> + + <!-- wp:navigation {"ref":11,"overlayMenu":"never"} /--></div> + <!-- /wp:group --></div> + <!-- /wp:group --> + \ No newline at end of file diff --git a/themes/10up-block-theme/parts/header.html b/themes/10up-block-theme/parts/header.html new file mode 100644 index 00000000..6e4fa39f --- /dev/null +++ b/themes/10up-block-theme/parts/header.html @@ -0,0 +1,7 @@ +<!-- wp:group {"style":{"border":{"bottom":{"color":"var:preset|color|surface-secondary","width":"1px"},"top":[],"right":[],"left":[]}},"layout":{"type":"constrained"}} --> +<div class="wp-block-group" style="border-bottom-color:var(--wp--preset--color--surface-secondary);border-bottom-width:1px"><!-- wp:group {"align":"wide","className":"is-style-default","style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"top":"var:preset|spacing|24","bottom":"var:preset|spacing|24"}}},"layout":{"type":"flex","flexWrap":"nowrap","justifyContent":"space-between"}} --> +<div class="wp-block-group alignwide is-style-default" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--24);padding-bottom:var(--wp--preset--spacing--24)"><!-- wp:site-title /--> + +<!-- wp:template-part {"slug":"site-header-navigation-area"} /--></div> +<!-- /wp:group --></div> +<!-- /wp:group --> diff --git a/themes/10up-block-theme/parts/site-header-navigation-area.html b/themes/10up-block-theme/parts/site-header-navigation-area.html new file mode 100644 index 00000000..99936eab --- /dev/null +++ b/themes/10up-block-theme/parts/site-header-navigation-area.html @@ -0,0 +1 @@ +<!-- wp:navigation {"align":"wide","layout":{"type":"flex","justifyContent":"left"}} /--> diff --git a/themes/10up-block-theme/patterns/.gitkeep b/themes/10up-block-theme/patterns/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/themes/10up-block-theme/phpcs.xml b/themes/10up-block-theme/phpcs.xml new file mode 100644 index 00000000..ebc2a10d --- /dev/null +++ b/themes/10up-block-theme/phpcs.xml @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<ruleset name="10up PHPCS"> + <description>10up PHPCS extended.</description> + <exclude-pattern>dist/</exclude-pattern> + <exclude-pattern>plugins/*</exclude-pattern> + <rule ref="10up-Default" /> + + <arg name="colors"/> +</ruleset> diff --git a/themes/10up-block-theme/screenshot.png b/themes/10up-block-theme/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..849d2b38488a6b5f2b0b269caa4c232403d96a87 GIT binary patch literal 18915 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 NtEI1*qhWRD{{T>zgM<J8 literal 0 HcmV?d00001 diff --git a/themes/10up-block-theme/style.css b/themes/10up-block-theme/style.css new file mode 100755 index 00000000..e9bbfe4a --- /dev/null +++ b/themes/10up-block-theme/style.css @@ -0,0 +1,10 @@ +/** + * Theme Name: TENUP Theme + * Theme URI: https://10up.com + * Description: A theme for the TENUP project. + * Author: 10up + * Author URI: https://10up.com + * Version: 1.0.0 + * Tags: + * Text Domain: tenup-theme + */ diff --git a/themes/10up-block-theme/stylelint.config.js b/themes/10up-block-theme/stylelint.config.js new file mode 100644 index 00000000..fc8f56af --- /dev/null +++ b/themes/10up-block-theme/stylelint.config.js @@ -0,0 +1,26 @@ +const config = { + extends: ['@10up/stylelint-config'], + rules: { + 'scale-unlimited/declaration-strict-value': [ + '/color/', + { + ignoreValues: [ + 'currentcolor', + 'currentColor', + 'inherit', + 'initial', + 'transparent', + 'unset', + ], + }, + ], + 'custom-property-pattern': [ + '^([a-z][a-z0-9]*)(-[a-z0-9]+)*$|^wp[-]{1,2}([a-z][a-z0-9]*)([-]{1,2}[a-z0-9]+)*$', + { + message: 'Expected custom property name to be kebab-case or wp--kebab--case', + }, + ], + }, +}; + +module.exports = config; diff --git a/themes/10up-block-theme/styles/surface-primary.json b/themes/10up-block-theme/styles/surface-primary.json new file mode 100644 index 00000000..4da5111a --- /dev/null +++ b/themes/10up-block-theme/styles/surface-primary.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://schemas.wp.org/wp/6.6/theme.json", + "version": 3, + "title": "Primary", + "slug": "primary", + "blockTypes": [ + "core/group" + ], + "styles": { + "color": {} + } +} diff --git a/themes/10up-block-theme/styles/surface-secondary.json b/themes/10up-block-theme/styles/surface-secondary.json new file mode 100644 index 00000000..7faee321 --- /dev/null +++ b/themes/10up-block-theme/styles/surface-secondary.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://schemas.wp.org/wp/6.6/theme.json", + "version": 3, + "title": "Secondary", + "slug": "secondary", + "blockTypes": [ + "core/group" + ], + "styles": { + "color": {} + } +} diff --git a/themes/10up-block-theme/styles/surface-tertiary.json b/themes/10up-block-theme/styles/surface-tertiary.json new file mode 100644 index 00000000..bb7bcddf --- /dev/null +++ b/themes/10up-block-theme/styles/surface-tertiary.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://schemas.wp.org/wp/6.6/theme.json", + "version": 3, + "title": "Tertiary", + "slug": "tertiary", + "blockTypes": [ + "core/group" + ], + "styles": { + "color": {} + } +} diff --git a/themes/10up-block-theme/templates/404.html b/themes/10up-block-theme/templates/404.html new file mode 100644 index 00000000..a5ade16f --- /dev/null +++ b/themes/10up-block-theme/templates/404.html @@ -0,0 +1,21 @@ +<!-- wp:template-part {"slug":"header","tagName":"header"} /--> + +<!-- wp:group {"tagName":"main","className":"is-style-default","style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"top":"var(--wp--preset--spacing--32-48)","bottom":"var(--wp--preset--spacing--32-48)"}},"elements":{"link":{"color":{"text":"var:preset|color|base"}}},"dimensions":{"minHeight":""}},"backgroundColor":"gray-000","layout":{"type":"constrained"}} --> +<main class="wp-block-group is-style-default has-gray-000-background-color has-background has-link-color" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"><!-- wp:group {"align":"wide","style":{"spacing":{"padding":{"top":"var(--wp--preset--spacing--40-72)","bottom":"var(--wp--preset--spacing--40-72)","right":"var(--wp--preset--spacing--32-40)","left":"var(--wp--preset--spacing--32-40)"}}},"backgroundColor":"base","layout":{"type":"constrained"}} --> +<div class="wp-block-group alignwide has-base-background-color has-background" style="padding-top:var(--wp--preset--spacing--40-72);padding-right:var(--wp--preset--spacing--32-40);padding-bottom:var(--wp--preset--spacing--40-72);padding-left:var(--wp--preset--spacing--32-40)"><!-- wp:heading {"level":1,"style":{"spacing":{"margin":{"top":"0","right":"0","bottom":"0","left":"0"}}},"fontSize":"plus-7"} --> +<h1 class="wp-block-heading has-plus-7-font-size" style="margin-top:0;margin-right:0;margin-bottom:0;margin-left:0">404</h1> +<!-- /wp:heading --> + +<!-- wp:heading --> +<h2 class="wp-block-heading">Page can not be found</h2> +<!-- /wp:heading --> + +<!-- wp:paragraph --> +<p>Perhaps a new search will find what you are looking for:</p> +<!-- /wp:paragraph --> + +<!-- wp:search {"label":"Search","showLabel":false,"buttonText":"Search","buttonPosition":"button-inside"} /--></div> +<!-- /wp:group --></main> +<!-- /wp:group --> + +<!-- wp:template-part {"slug":"footer","tagName":"footer"} /--> diff --git a/themes/10up-block-theme/templates/index.html b/themes/10up-block-theme/templates/index.html new file mode 100644 index 00000000..4c7bcaec --- /dev/null +++ b/themes/10up-block-theme/templates/index.html @@ -0,0 +1,31 @@ +<!-- wp:template-part {"slug":"header","tagName":"header"} /--> + +<!-- wp:group {"tagName":"main","className":"is-style-default","style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"top":"var(--wp--preset--spacing--32-48)","bottom":"var(--wp--preset--spacing--32-48)"}}},"backgroundColor":"gray-000","layout":{"type":"constrained"}} --> +<main class="wp-block-group is-style-default has-gray-000-background-color has-background" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"><!-- wp:query {"queryId":0,"query":{"perPage":9,"pages":0,"offset":0,"postType":"post","order":"desc","orderBy":"date","author":"","search":"","exclude":[],"sticky":"","inherit":true,"taxQuery":null,"parents":[]},"align":"wide","layout":{"type":"default"}} --> +<div class="wp-block-query alignwide"><!-- wp:post-template {"style":{"elements":{"link":{"color":{"text":"var:preset|color|primary"}}}},"layout":{"type":"grid","columnCount":null,"minimumColumnWidth":"21rem"},"isEntireCardClickable":true} --> +<!-- wp:group {"align":"wide","style":{"spacing":{"blockGap":"0"},"border":{"radius":"8px","width":"1px"}},"borderColor":"surface-secondary","layout":{"type":"flex","orientation":"vertical","justifyContent":"stretch","flexWrap":"nowrap"}} --> +<div class="wp-block-group alignwide has-border-color has-surface-secondary-border-color" style="border-width:1px;border-radius:8px"><!-- wp:post-featured-image {"aspectRatio":"16/9","width":"100%","height":"","style":{"border":{"radius":{"topRight":"8px","bottomRight":"0px","topLeft":"8px","bottomLeft":"0px"}}},"displayFallback":true} /--> + +<!-- wp:group {"align":"wide","className":"is-style-default","style":{"spacing":{"padding":{"top":"var(--wp--preset--spacing--24)","right":"var(--wp--preset--spacing--24)","bottom":"var(--wp--preset--spacing--24)","left":"var(--wp--preset--spacing--24)"},"blockGap":"var:preset|spacing|8"},"layout":{"selfStretch":"fit"},"border":{"width":"0px","style":"none","radius":{"topLeft":"0px","topRight":"0px","bottomLeft":"8px","bottomRight":"8px"}}},"layout":{"type":"flex","orientation":"vertical","verticalAlignment":"space-between"}} --> +<div class="wp-block-group alignwide is-style-default" style="border-style:none;border-width:0px;border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:8px;border-bottom-right-radius:8px;padding-top:var(--wp--preset--spacing--24);padding-right:var(--wp--preset--spacing--24);padding-bottom:var(--wp--preset--spacing--24);padding-left:var(--wp--preset--spacing--24)"><!-- wp:post-title {"isLink":true,"align":"wide","style":{"spacing":{"margin":{"top":"0","right":"0","bottom":"0","left":"0"}}},"fontSize":"heading-4"} /--> + +<!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","flexWrap":"nowrap"}} --> +<div class="wp-block-group"><!-- wp:post-date {"fontSize":"minus-1"} /--> + +<!-- wp:post-terms {"term":"category","fontSize":"minus-1"} /--></div> +<!-- /wp:group --></div> +<!-- /wp:group --></div> +<!-- /wp:group --> +<!-- /wp:post-template --> + +<!-- wp:group {"align":"wide","style":{"spacing":{"margin":{"top":"var(--wp--preset--spacing--60)"}},"elements":{"link":{"color":{"text":"var:preset|color|contrast"}}}},"textColor":"contrast","layout":{"type":"default"}} --> +<div class="wp-block-group alignwide has-contrast-color has-text-color has-link-color" style="margin-top:var(--wp--preset--spacing--60)"><!-- wp:query-pagination {"paginationArrow":"arrow","align":"wide","layout":{"type":"flex","justifyContent":"space-between"}} --> +<!-- wp:query-pagination-previous /--> + +<!-- wp:query-pagination-next /--> +<!-- /wp:query-pagination --></div> +<!-- /wp:group --></div> +<!-- /wp:query --></main> +<!-- /wp:group --> + +<!-- wp:template-part {"slug":"footer","tagName":"footer"} /--> diff --git a/themes/10up-block-theme/templates/single.html b/themes/10up-block-theme/templates/single.html new file mode 100644 index 00000000..6217cc44 --- /dev/null +++ b/themes/10up-block-theme/templates/single.html @@ -0,0 +1,25 @@ +<!-- wp:template-part {"slug":"header","tagName":"header"} /--> + +<!-- wp:group {"tagName":"main","className":"is-style-default","style":{"spacing":{"margin":{"top":"0"},"padding":{"top":"var(--wp--preset--spacing--32-48)","bottom":"var(--wp--preset--spacing--32-48)"}}}} --> +<main class="wp-block-group is-style-default" style="margin-top:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"><!-- wp:group {"style":{"spacing":{"margin":{"top":"var(--wp--preset--spacing--32-40)"}}},"layout":{"type":"constrained"}} --> +<div class="wp-block-group" style="margin-top:var(--wp--preset--spacing--32-40)"><!-- wp:post-terms {"term":"category","style":{"elements":{"link":{"color":{"text":"var:preset|color|primary"}}}},"textColor":"primary"} /--> + +<!-- wp:post-title {"level":1} /--> + +<!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","flexWrap":"nowrap"}} --> +<div class="wp-block-group"><!-- wp:post-author {"showBio":false,"byline":""} /--> + +<!-- wp:paragraph --> +<p>·</p> +<!-- /wp:paragraph --> + +<!-- wp:post-date /--></div> +<!-- /wp:group --> + +<!-- wp:post-featured-image /--></div> +<!-- /wp:group --> + +<!-- wp:post-content {"layout":{"type":"constrained"}} /--></main> +<!-- /wp:group --> + +<!-- wp:template-part {"slug":"footer","tagName":"footer"} /--> diff --git a/themes/10up-block-theme/templates/singular.html b/themes/10up-block-theme/templates/singular.html new file mode 100644 index 00000000..4f7879c8 --- /dev/null +++ b/themes/10up-block-theme/templates/singular.html @@ -0,0 +1,7 @@ +<!-- wp:template-part {"slug":"header","tagName":"header"} /--> + +<!-- wp:group {"tagName":"main","className":"is-style-default","style":{"spacing":{"margin":{"top":"0"}}}} --> +<main class="wp-block-group is-style-default" style="margin-top:0"><!-- wp:post-content {"layout":{"type":"constrained"}} /--></main> +<!-- /wp:group --> + +<!-- wp:template-part {"slug":"footer","tagName":"footer"} /--> diff --git a/themes/10up-block-theme/theme.json b/themes/10up-block-theme/theme.json new file mode 100644 index 00000000..6f3e25e7 --- /dev/null +++ b/themes/10up-block-theme/theme.json @@ -0,0 +1,390 @@ +{ + "settings": { + "appearanceTools": true, + "color": { + "defaultDuotone": false, + "defaultGradients": false, + "defaultPalette": false, + "palette": [ + { + "color": "var(--wp--custom--color--text--primary)", + "name": "Text Primary", + "slug": "text-primary" + }, + { + "color": "var(--wp--custom--color--text--secondary)", + "name": "Text Secondary", + "slug": "text-secondary" + }, + { + "color": "var(--wp--custom--color--text--inverted)", + "name": "Text Inverted", + "slug": "text-inverted" + }, + { + "color": "var(--wp--custom--color--brand--900)", + "name": "Brand", + "slug": "brand" + }, + { + "color": "var(--wp--custom--color--brand--300)", + "name": "Brand Light", + "slug": "brand-light" + }, + { + "color": "var(--wp--custom--color--surface--primary)", + "name": "Surface Primary", + "slug": "surface-primary" + }, + { + "color": "var(--wp--custom--color--surface--secondary)", + "name": "Surface Secondary", + "slug": "surface-secondary" + }, + { + "color": "var(--wp--custom--color--surface--inverted)", + "name": "Surface Inverted", + "slug": "surface-inverted" + } + ] + }, + "custom": { + "color": { + "border": { + "brand": "var(--wp--custom--color--brand--900)", + "disabled": "var(--wp--custom--color--neutrals--500)", + "error": "var(--wp--custom--color--feedback--error--900)", + "primary": "var(--wp--custom--color--neutrals--300)", + "secondary": "var(--wp--custom--color--neutrals--900)", + "success": "var(--wp--custom--color--feedback--success--500)", + "tertiary": "var(--wp--custom--color--neutrals--700)" + }, + "brand": { + "300": "var(--wp--custom--color--primary--300)", + "500": "var(--wp--custom--color--primary--500)", + "900": "var(--wp--custom--color--primary--900)" + }, + "neutrals": { + "transparent": "transparent", + "white": "#ffffff", + "100": "#F1F3F4", + "300": "#D5D7D8", + "700": "#5F6368", + "900": "#141414", + "black": "#000000" + }, + "primary": { + "300": "#F63456", + "500": "#E12243", + "900": "#B30826" + }, + "secondary": { + "300": "#ABFCF2", + "900": "#1FB4AF" + }, + "feedback": { + "error-900": "#E80A31", + "error-500": "#F51D43", + "success-900": "#00BA27", + "success-500": "#00AC30" + }, + "surface": { + "brand": "var(--wp--custom--color--brand--900)", + "brand-light": "var(--wp--custom--color--brand--300)", + "disabled": "var(--wp--custom--color--neutrals--500)", + "inverted": "var(--wp--custom--color--neutrals--900)", + "primary": "var(--wp--custom--color--neutrals--white)", + "secondary": "var(--wp--custom--color--neutrals--100)" + }, + "text": { + "brand": "var(--wp--custom--color--primary--900)", + "disabled": "var(--wp--custom--color--neutrals--500)", + "inverted": "var(--wp--custom--color--neutrals--white)", + "primary": "var(--wp--custom--color--neutrals--900)", + "secondary": "var(--wp--custom--color--neutrals--700)" + }, + "button": { + "text": { + "default": "var(--wp--custom--color--button--primary--text--default)", + "hover": "var(--wp--custom--color--button--primary--text--hover)", + "disabled": "var(--wp--custom--color--button--primary--text--disabled)" + }, + "background": { + "default": "var(--wp--custom--color--button--primary--background--default)", + "hover": "var(--wp--custom--color--button--primary--background--hover)", + "disabled": "var(--wp--custom--color--button--primary--background--disabled)" + }, + "border": { + "default": "var(--wp--custom--color--button--primary--border--default)", + "hover": "var(--wp--custom--color--button--primary--border--hover)", + "disabled": "var(--wp--custom--color--button--primary--border--disabled)" + }, + "icon": { + "default": "var(--wp--custom--color--button--primary--icon--default)", + "hover": "var(--wp--custom--color--button--primary--icon--hover)", + "disabled": "var(--wp--custom--color--button--primary--icon--disabled)" + }, + "primary": { + "text": { + "default": "var(--wp--custom--color--text--inverted)", + "hover": "var(--wp--custom--color--text--inverted)", + "disabled": "var(--wp--custom--color--text--disabled)" + }, + "background": { + "default": "var(--wp--custom--color--surface--brand)", + "hover": "var(--wp--custom--color--surface--inverted)", + "disabled": "var(--wp--custom--color--surface--disabled)" + }, + "border": { + "default": "var(--wp--custom--color--surface--brand)", + "hover": "var(--wp--custom--color--surface--inverted)", + "disabled": "var(--wp--custom--color--surface--disabled)" + }, + "icon": { + "default": "var(--wp--custom--color--button--text--default)", + "hover": "var(--wp--custom--color--button--text--hover)", + "disabled": "var(--wp--custom--color--button--text--disabled)" + } + }, + "secondary": { + "text": { + "default": "var(--wp--custom--color--text--inverted)", + "hover": "var(--wp--custom--color--text--inverted)", + "disabled": "var(--wp--custom--color--text--disabled)" + }, + "background": { + "default": "var(--wp--custom--color--surface--inverted)", + "hover": "var(--wp--custom--color--surface--inverted)", + "disabled": "var(--wp--custom--color--surface--disabled)" + }, + "border": { + "default": "var(--wp--custom--color--surface--inverted)", + "hover": "var(--wp--custom--color--surface--inverted)", + "disabled": "var(--wp--custom--color--surface--disabled)" + }, + "icon": { + "default": "var(--wp--custom--color--button--text--default)", + "hover": "var(--wp--custom--color--button--text--hover)", + "disabled": "var(--wp--custom--color--button--text--disabled)" + } + } + } + }, + "font": { + "lineHeight": { + "120": "1.2", + "140": "1.4", + "150": "1.5" + }, + "size": { + "body": { + "lg": "var(--wp--custom--font--size--21)", + "md": "var(--wp--custom--font--size--16)", + "sm": "var(--wp--custom--font--size--12)" + }, + "button": { + "lg": "var(--wp--custom--font--size--16)", + "sm": "var(--wp--custom--font--size--14)" + }, + "display": { + "lg": { + "fluid": "true", + "max": "var(--wp--custom--font--size--90)", + "min": "var(--wp--custom--font--size--58)" + }, + "md": { + "fluid": "true", + "max": "var(--wp--custom--font--size--67))", + "min": "var(--wp--custom--font--size--54)" + } + }, + "eyebrow": { + "lg": "var(--wp--custom--font--size--12)", + "sm": "var(--wp--custom--font--size--9)" + }, + "heading": { + "1": "var(--wp--custom--font--size--51)", + "2": "var(--wp--custom--font--size--38)", + "3": "var(--wp--custom--font--size--28)", + "4": "var(--wp--custom--font--size--21)", + "5": "var(--wp--custom--font--size--16)", + "6": "var(--wp--custom--font--size--14)" + }, + "subHead": { + "lg": "var(--wp--custom--font--size--28)", + "md": "var(--wp--custom--font--size--16)", + "sm": "var(--wp--custom--font--size--12)" + }, + "9": "0.5625rem", + "12": "0.75rem", + "14": "0.875rem", + "16": "1rem", + "21": "1.3125rem", + "28": "1.75rem", + "38": "2.375rem", + "51": "3.1875rem", + "54": "3.375rem", + "58": "3.625rem", + "67": "4.1875rem", + "72": "4.5rem", + "90": "5.625rem" + } + }, + "full-viewport-width": "calc(100vw - var(--wp--custom--scrollbar-width, 0px))", + "main-content-width-side-spacing": "calc((var(--wp--custom--full-viewport-width) - var(--wp--style--global--content-size)) / 2)", + "main-wide-width-side-spacing": "calc((var(--wp--custom--full-viewport-width) - var(--wp--style--global--wide-size)) / 2)", + "scrollbar-width": "0px", + "search-block-height": "var(--wp--preset--spacing--32-48, 3rem)", + "search-block-icon-only-button-width": "var(--wp--preset--spacing--32-48, 3rem)", + "search-block-padding-inline": "var(--wp--preset--spacing--16, 1rem)", + "site-content-width": "calc(var(--wp--custom--full-viewport-width) - (2 * var(--wp--custom--site-outer-padding)))", + "site-outer-padding": "max(var(--wp--preset--spacing--16, 1rem), env(safe-area-inset-left))", + "spacing": { + "0": 0, + "2": "2px", + "4": "4px", + "8": "8px", + "12": "12px", + "16": "16px", + "24": "24px", + "32": "32px", + "40": "40px", + "48": "48px", + "56": "56px", + "64": "64px", + "72": "72px", + "80": "80px", + "96": "96px", + "112": "112px", + "120": "120px", + "128": "128px", + "144": "144px", + "160": "160px" + } + }, + "layout": { + "allowCustomContentAndWideSize": false, + "contentSize": "min(650px, var(--wp--custom--site-content-width))", + "wideSize": "min(1200px, var(--wp--custom--site-content-width))" + }, + "spacing": { + "defaultSpacingSizes": false, + "spacingSizes": [ + { + "name": "2px", + "size": "var(--wp--custom--spacing--2)", + "slug": "2" + }, + { + "name": "4px", + "size": "var(--wp--custom--spacing--4)", + "slug": "4" + }, + { + "name": "8px", + "size": "var(--wp--custom--spacing--8)", + "slug": "8" + }, + { + "name": "12px", + "size": "var(--wp--custom--spacing--12)", + "slug": "12" + }, + { + "name": "16px", + "size": "var(--wp--custom--spacing--16)", + "slug": "16" + }, + { + "name": "24px", + "size": "var(--wp--custom--spacing--24)", + "slug": "24" + }, + { + "name": "32px", + "size": "var(--wp--custom--spacing--32)", + "slug": "32" + }, + { + "name": "32px → 40px", + "size": "clamp(32px, 29.2174px + 0.8696vi, 40px)", + "slug": "32-40" + }, + { + "name": "32px → 48px", + "size": "clamp(32px, 26.4348px + 1.7391vi, 48px)", + "slug": "32-48" + }, + { + "name": "32px → 56px", + "size": "clamp(32px, 23.6522px + 2.6087vi, 56px)", + "slug": "32-56" + }, + { + "name": "40px → 64px", + "size": "clamp(40px, 31.6522px + 2.6087vi, 64px)", + "slug": "40-64" + }, + { + "name": "40px → 72px", + "size": "clamp(40px, 28.8696px + 3.4783vi, 72px)", + "slug": "40-72" + }, + { + "name": "40px → 80px", + "size": "clamp(40px, 26.087px + 4.3478vi, 80px)", + "slug": "40-80" + }, + { + "name": "56px → 112px", + "size": "clamp(56px, 36.5217px + 6.087vi, 112px)", + "slug": "56-112" + } + ] + }, + "typography": { + "fluid": { + "maxViewportWidth": "1450px", + "minViewportWidth": "390px" + }, + "fontFamilies": [ + { + "fontFamily": "-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif", + "name": "System Font", + "slug": "system-font" + } + ] + }, + "useRootPaddingAwareAlignments": true + }, + "styles": { + "spacing": { + "blockGap": "var(--wp--preset--spacing--24)", + "padding": { + "bottom": "0", + "left": "var(--wp--custom--site-outer-padding)", + "right": "var(--wp--custom--site-outer-padding)", + "top": "0" + } + }, + "typography": { + "fontFamily": "var(--wp--preset--font-family--system-font)", + "fontSize": "var(--wp--preset--font-size--body)", + "lineHeight": "1.5" + } + }, + "templateParts": [ + { + "area": "header", + "name": "header", + "title": "Site Header" + }, + { + "area": "footer", + "name": "footer", + "title": "Site Footer" + } + ], + "version": 3, + "$schema": "https://schemas.wp.org/wp/6.6/theme.json" +} \ No newline at end of file diff --git a/themes/10up-block-theme/webpack.config.js b/themes/10up-block-theme/webpack.config.js new file mode 100644 index 00000000..f9d2db04 --- /dev/null +++ b/themes/10up-block-theme/webpack.config.js @@ -0,0 +1,55 @@ +const config = require('10up-toolkit/config/webpack.config.js'); +const { sync: glob } = require('fast-glob'); +const { resolve, extname } = require('path'); +const { existsSync } = require('fs'); + +const [scriptConfig, moduleConfig] = config; + +function getBlockStylesheetEntrypoints() { + // get all stylesheets located in the assets/css/blocks directory and subdirectories + const blockStylesheetDirectory = resolve(process.cwd(), './assets/css/blocks').replace(/\\/g, '/'); + + // get all stylesheets in the blocks directory + const stylesheets = glob( + // glob only accepts forward-slashes this is required to make things work on Windows + `${blockStylesheetDirectory}/**/*.css`, + { + absolute: true, + }, + ); + + const additionalEntryPoints = {}; + try { + stylesheets.forEach((filePath) => { + const blockName = filePath + .replace(`${blockStylesheetDirectory}/`, '') + .replace(extname(filePath), ''); + additionalEntryPoints[`autoenqueue/${blockName}`] = resolve(filePath); + }); + } catch (error) { + console.error(error); // eslint-disable-line no-console + } + + return additionalEntryPoints; +} +module.exports = [ + { + ...scriptConfig, + entry: () => { + const additionalEntryPoints = getBlockStylesheetEntrypoints(); + const coreEntryPoints = scriptConfig.entry(); + + const entryPoints = Object.assign(coreEntryPoints, additionalEntryPoints); + + // filter entrypoints to only include those that exist + Object.keys(entryPoints).forEach((key) => { + if (!existsSync(entryPoints[key])) { + delete entryPoints[key]; + } + }); + + return entryPoints; + }, + }, + moduleConfig, +]; From 36895c06ef4c71eaaf482632a017231da25b9c2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 09:39:48 +0100 Subject: [PATCH 02/20] fix update config files to be in line with main theme --- themes/10up-block-theme/.lintstagedrc.json | 18 ++++++------------ themes/10up-block-theme/composer.json | 2 +- themes/10up-theme/.lintstagedrc.json | 2 ++ 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/themes/10up-block-theme/.lintstagedrc.json b/themes/10up-block-theme/.lintstagedrc.json index b96bb4cc..d58c3db6 100644 --- a/themes/10up-block-theme/.lintstagedrc.json +++ b/themes/10up-block-theme/.lintstagedrc.json @@ -1,14 +1,8 @@ { - "*.css": [ - "10up-toolkit lint-style" - ], - "*.js": [ - "10up-toolkit lint-js" - ], - "*.jsx": [ - "10up-toolkit lint-js" - ], - "*.php": [ - "./vendor/bin/phpcs --extensions=php --warning-severity=8 -s" - ] + "*.css": ["10up-toolkit lint-style"], + "*.js": ["10up-toolkit lint-js"], + "*.ts": ["10up-toolkit lint-js"], + "*.jsx": ["10up-toolkit lint-js"], + "*.tsx": ["10up-toolkit lint-js"], + "*.php": ["../../vendor/bin/phpcs"] } diff --git a/themes/10up-block-theme/composer.json b/themes/10up-block-theme/composer.json index d0f55abf..6c14a662 100644 --- a/themes/10up-block-theme/composer.json +++ b/themes/10up-block-theme/composer.json @@ -8,7 +8,7 @@ } ], "require": { - "php": ">=8.0", + "php": ">=8.3", "haydenpierce/class-finder": "^0.4.3" }, "require-dev": { diff --git a/themes/10up-theme/.lintstagedrc.json b/themes/10up-theme/.lintstagedrc.json index c3335db5..d58c3db6 100644 --- a/themes/10up-theme/.lintstagedrc.json +++ b/themes/10up-theme/.lintstagedrc.json @@ -1,6 +1,8 @@ { "*.css": ["10up-toolkit lint-style"], "*.js": ["10up-toolkit lint-js"], + "*.ts": ["10up-toolkit lint-js"], "*.jsx": ["10up-toolkit lint-js"], + "*.tsx": ["10up-toolkit lint-js"], "*.php": ["../../vendor/bin/phpcs"] } From 34dcc40fa325045a41d3cab48b6fea54bb80fecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:01:39 +0100 Subject: [PATCH 03/20] fix remove no longern needed webpack config --- themes/10up-block-theme/webpack.config.js | 55 ----------------------- 1 file changed, 55 deletions(-) delete mode 100644 themes/10up-block-theme/webpack.config.js diff --git a/themes/10up-block-theme/webpack.config.js b/themes/10up-block-theme/webpack.config.js deleted file mode 100644 index f9d2db04..00000000 --- a/themes/10up-block-theme/webpack.config.js +++ /dev/null @@ -1,55 +0,0 @@ -const config = require('10up-toolkit/config/webpack.config.js'); -const { sync: glob } = require('fast-glob'); -const { resolve, extname } = require('path'); -const { existsSync } = require('fs'); - -const [scriptConfig, moduleConfig] = config; - -function getBlockStylesheetEntrypoints() { - // get all stylesheets located in the assets/css/blocks directory and subdirectories - const blockStylesheetDirectory = resolve(process.cwd(), './assets/css/blocks').replace(/\\/g, '/'); - - // get all stylesheets in the blocks directory - const stylesheets = glob( - // glob only accepts forward-slashes this is required to make things work on Windows - `${blockStylesheetDirectory}/**/*.css`, - { - absolute: true, - }, - ); - - const additionalEntryPoints = {}; - try { - stylesheets.forEach((filePath) => { - const blockName = filePath - .replace(`${blockStylesheetDirectory}/`, '') - .replace(extname(filePath), ''); - additionalEntryPoints[`autoenqueue/${blockName}`] = resolve(filePath); - }); - } catch (error) { - console.error(error); // eslint-disable-line no-console - } - - return additionalEntryPoints; -} -module.exports = [ - { - ...scriptConfig, - entry: () => { - const additionalEntryPoints = getBlockStylesheetEntrypoints(); - const coreEntryPoints = scriptConfig.entry(); - - const entryPoints = Object.assign(coreEntryPoints, additionalEntryPoints); - - // filter entrypoints to only include those that exist - Object.keys(entryPoints).forEach((key) => { - if (!existsSync(entryPoints[key])) { - delete entryPoints[key]; - } - }); - - return entryPoints; - }, - }, - moduleConfig, -]; From ae4ae1665bd920ba89dbecb0463c3c57c612b59c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:01:52 +0100 Subject: [PATCH 04/20] fix update schema version of theme.json file --- themes/10up-block-theme/theme.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/10up-block-theme/theme.json b/themes/10up-block-theme/theme.json index 6f3e25e7..26fb2bf7 100644 --- a/themes/10up-block-theme/theme.json +++ b/themes/10up-block-theme/theme.json @@ -386,5 +386,5 @@ } ], "version": 3, - "$schema": "https://schemas.wp.org/wp/6.6/theme.json" -} \ No newline at end of file + "$schema": "https://schemas.wp.org/wp/6.7/theme.json" +} From e86ae1217bebd12eee2caa1a2f41d11e9503dd6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:02:13 +0100 Subject: [PATCH 05/20] fix formatting of template files --- themes/10up-block-theme/parts/footer.html | 143 +++++++++++------- themes/10up-block-theme/parts/header.html | 15 +- .../site-footer-legal-navigation-area.html | 1 + themes/10up-block-theme/patterns/card.php | 36 +++++ themes/10up-block-theme/templates/404.html | 32 ++-- themes/10up-block-theme/templates/index.html | 43 +++--- themes/10up-block-theme/templates/single.html | 32 ++-- .../10up-block-theme/templates/singular.html | 6 +- 8 files changed, 202 insertions(+), 106 deletions(-) create mode 100644 themes/10up-block-theme/parts/site-footer-legal-navigation-area.html create mode 100644 themes/10up-block-theme/patterns/card.php diff --git a/themes/10up-block-theme/parts/footer.html b/themes/10up-block-theme/parts/footer.html index 88e2b0d2..b87a46c9 100644 --- a/themes/10up-block-theme/parts/footer.html +++ b/themes/10up-block-theme/parts/footer.html @@ -1,62 +1,93 @@ <!-- wp:group {"style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"bottom":"var:preset|spacing|40-64","top":"var:preset|spacing|40-64"}}},"backgroundColor":"surface-secondary","layout":{"type":"constrained"}} --> - <div class="wp-block-group has-surface-secondary-background-color has-background" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--40-64);padding-bottom:var(--wp--preset--spacing--40-64)"><!-- wp:columns {"align":"wide","style":{"spacing":{"blockGap":{"top":"clamp(1.50rem, calc(1.43rem + 0.37vw), 1.69rem)","left":"150px"}}}} --> - <div class="wp-block-columns alignwide"><!-- wp:column {"width":"50%"} --> - <div class="wp-block-column" style="flex-basis:50%"><!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","orientation":"vertical"}} --> - <div class="wp-block-group"><!-- wp:site-title {"level":0,"style":{"typography":{"textTransform":"none","fontStyle":"normal","fontWeight":"600"}}} /--> - - <!-- wp:paragraph --> - <p>Effortlessly design a stunning custom site with an - intuitive interface, unlimited options, and responsive layouts.</p> - <!-- /wp:paragraph --></div> - <!-- /wp:group --></div> - <!-- /wp:column --> - - <!-- wp:column {"width":"50%"} --> - <div class="wp-block-column" style="flex-basis:50%"><!-- wp:group {"layout":{"type":"grid","minimumColumnWidth":"8rem"}} --> - <div class="wp-block-group"><!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","orientation":"vertical"}} --> - <div class="wp-block-group"><!-- wp:paragraph --> - <p><strong>Quick Links</strong></p> - <!-- /wp:paragraph --> - - <!-- wp:paragraph --> - <p>Sample Link<br>Sample Link<br>Sample - Link<br>Sample Link<br>Sample Link</p> - <!-- /wp:paragraph --></div> - <!-- /wp:group --> - - <!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","orientation":"vertical"}} --> - <div class="wp-block-group"><!-- wp:paragraph --> - <p><strong>Resources</strong></p> - <!-- /wp:paragraph --> - - <!-- wp:paragraph --> - <p>Sample Link<br>Sample Link<br>Sample - Link<br>Sample Link<br>Sample Link</p> - <!-- /wp:paragraph --></div> - <!-- /wp:group --> - - <!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","orientation":"vertical"}} --> - <div class="wp-block-group"><!-- wp:paragraph --> - <p><strong>About</strong></p> - <!-- /wp:paragraph --> - - <!-- wp:paragraph --> - <p>Sample Link<br>Sample Link<br>Sample - Link<br>Sample Link<br>Sample Link</p> - <!-- /wp:paragraph --></div> - <!-- /wp:group --></div> - <!-- /wp:group --></div> - <!-- /wp:column --></div> +<div class="wp-block-group has-surface-secondary-background-color has-background" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--40-64);padding-bottom:var(--wp--preset--spacing--40-64)"> + + <!-- wp:columns {"align":"wide","style":{"spacing":{"blockGap":{"top":"clamp(1.50rem, calc(1.43rem + 0.37vw), 1.69rem)","left":"150px"}}}} --> + <div class="wp-block-columns alignwide"> + + <!-- wp:column {"width":"50%"} --> + <div class="wp-block-column" style="flex-basis:50%"> + + <!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","orientation":"vertical"}} --> + <div class="wp-block-group"> + + <!-- wp:site-title {"level":0,"style":{"typography":{"textTransform":"none","fontStyle":"normal","fontWeight":"600"}}} /--> + <!-- wp:paragraph --> + <p>Effortlessly design a stunning custom site with an intuitive interface, unlimited options, and responsive layouts.</p> + <!-- /wp:paragraph --> + + </div> + <!-- /wp:group --> + + </div> + <!-- /wp:column --> + + <!-- wp:column {"width":"50%"} --> + <div class="wp-block-column" style="flex-basis:50%"> + + <!-- wp:group {"layout":{"type":"grid","minimumColumnWidth":"8rem"}} --> + <div class="wp-block-group"> + + <!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","orientation":"vertical"}} --> + <div class="wp-block-group"> + + <!-- wp:paragraph --> + <p><strong>Quick Links</strong></p> + <!-- /wp:paragraph --> + + <!-- wp:paragraph --> + <p>Sample Link<br>Sample Link<br>Sample Link<br>Sample Link<br>Sample Link</p> + <!-- /wp:paragraph --> + + </div> + <!-- /wp:group --> + + <!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","orientation":"vertical"}} --> + <div class="wp-block-group"> + + <!-- wp:paragraph --> + <p><strong>Resources</strong></p> + <!-- /wp:paragraph --> + + <!-- wp:paragraph --> + <p>Sample Link<br>Sample Link<br>Sample Link<br>Sample Link<br>Sample Link</p> + <!-- /wp:paragraph --> + + </div> + <!-- /wp:group --> + + <!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","orientation":"vertical"}} --> + <div class="wp-block-group"><!-- wp:paragraph --> + <p><strong>About</strong></p> + <!-- /wp:paragraph --> + + <!-- wp:paragraph --> + <p>Sample Link<br>Sample Link<br>Sample Link<br>Sample Link<br>Sample Link</p> + <!-- /wp:paragraph --> + + </div> + <!-- /wp:group --> + + </div> + <!-- /wp:group --> + + </div> + <!-- /wp:column --> + + </div> <!-- /wp:columns --> - + <!-- wp:separator {"align":"wide","className":"is-style-default","style":{"spacing":{"margin":{"top":"var:preset|spacing|24"}},"color":{"background":"#e1e3e4"}},"separatorHeight":"1px"} --> - <hr class="wp-block-separator alignwide has-text-color has-alpha-channel-opacity has-background is-style-default" style="margin-top:var(--wp--preset--spacing--24);background-color:#e1e3e4;color:#e1e3e4"/> + <hr class="wp-block-separator alignwide has-text-color has-alpha-channel-opacity has-background is-style-default" style="margin-top:var(--wp--preset--spacing--24);background-color:#e1e3e4;color:#e1e3e4" /> <!-- /wp:separator --> - + <!-- wp:group {"align":"wide","style":{"spacing":{"margin":{"top":"var:preset|spacing|24"}},"border":{"radius":"2px","top":{"width":"0px","style":"none"},"right":[],"bottom":[],"left":[]}},"layout":{"type":"flex","flexWrap":"nowrap","justifyContent":"space-between"}} --> - <div class="wp-block-group alignwide" style="border-radius:2px;border-top-style:none;border-top-width:0px;margin-top:var(--wp--preset--spacing--24)"><!-- wp:tenup/copyright {"suffix":"10up Inc."} /--> - - <!-- wp:navigation {"ref":11,"overlayMenu":"never"} /--></div> - <!-- /wp:group --></div> + <div class="wp-block-group alignwide" style="border-radius:2px;border-top-style:none;border-top-width:0px;margin-top:var(--wp--preset--spacing--24)"> + + <!-- wp:tenup/copyright {"suffix":"10up Inc."} /--> + <!-- wp:template-part {"slug":"site-footer-legal-navigation-area"} /--> + + </div> <!-- /wp:group --> - \ No newline at end of file + +</div> +<!-- /wp:group --> diff --git a/themes/10up-block-theme/parts/header.html b/themes/10up-block-theme/parts/header.html index 6e4fa39f..c2eda986 100644 --- a/themes/10up-block-theme/parts/header.html +++ b/themes/10up-block-theme/parts/header.html @@ -1,7 +1,14 @@ <!-- wp:group {"style":{"border":{"bottom":{"color":"var:preset|color|surface-secondary","width":"1px"},"top":[],"right":[],"left":[]}},"layout":{"type":"constrained"}} --> -<div class="wp-block-group" style="border-bottom-color:var(--wp--preset--color--surface-secondary);border-bottom-width:1px"><!-- wp:group {"align":"wide","className":"is-style-default","style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"top":"var:preset|spacing|24","bottom":"var:preset|spacing|24"}}},"layout":{"type":"flex","flexWrap":"nowrap","justifyContent":"space-between"}} --> -<div class="wp-block-group alignwide is-style-default" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--24);padding-bottom:var(--wp--preset--spacing--24)"><!-- wp:site-title /--> +<div class="wp-block-group" style="border-bottom-color:var(--wp--preset--color--surface-secondary);border-bottom-width:1px"> -<!-- wp:template-part {"slug":"site-header-navigation-area"} /--></div> -<!-- /wp:group --></div> + <!-- wp:group {"align":"wide","className":"is-style-default","style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"top":"var:preset|spacing|24","bottom":"var:preset|spacing|24"}}},"layout":{"type":"flex","flexWrap":"nowrap","justifyContent":"space-between"}} --> + <div class="wp-block-group alignwide is-style-default" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--24);padding-bottom:var(--wp--preset--spacing--24)"> + + <!-- wp:site-title /--> + <!-- wp:template-part {"slug":"site-header-navigation-area"} /--> + + </div> + <!-- /wp:group --> + +</div> <!-- /wp:group --> diff --git a/themes/10up-block-theme/parts/site-footer-legal-navigation-area.html b/themes/10up-block-theme/parts/site-footer-legal-navigation-area.html new file mode 100644 index 00000000..3650aa3b --- /dev/null +++ b/themes/10up-block-theme/parts/site-footer-legal-navigation-area.html @@ -0,0 +1 @@ +<!-- wp:navigation {"overlayMenu":"never"} /--> diff --git a/themes/10up-block-theme/patterns/card.php b/themes/10up-block-theme/patterns/card.php new file mode 100644 index 00000000..6f3f8974 --- /dev/null +++ b/themes/10up-block-theme/patterns/card.php @@ -0,0 +1,36 @@ +<?php +/** + * Title: Base Card + * Slug: tenup-theme/base-card + * Description: A card pattern with a featured image, title, date, and category. + * Inserter: false + * + * @package TenupBlockTheme + */ + +?> + +<!-- wp:group {"align":"wide","style":{"spacing":{"blockGap":"0"},"border":{"radius":"8px","width":"1px"}},"borderColor":"surface-secondary","layout":{"type":"flex","orientation":"vertical","justifyContent":"stretch","flexWrap":"nowrap"}} --> +<div class="wp-block-group alignwide has-border-color has-surface-secondary-border-color" style="border-width:1px;border-radius:8px"> + + <!-- wp:post-featured-image {"aspectRatio":"16/9","width":"100%","height":"","style":{"border":{"radius":{"topRight":"8px","bottomRight":"0px","topLeft":"8px","bottomLeft":"0px"}}},"displayFallback":true} /--> + + <!-- wp:group {"align":"wide","className":"is-style-default","style":{"spacing":{"padding":{"top":"var(--wp--preset--spacing--24)","right":"var(--wp--preset--spacing--24)","bottom":"var(--wp--preset--spacing--24)","left":"var(--wp--preset--spacing--24)"},"blockGap":"var:preset|spacing|8"},"layout":{"selfStretch":"fit"},"border":{"width":"0px","style":"none","radius":{"topLeft":"0px","topRight":"0px","bottomLeft":"8px","bottomRight":"8px"}}},"layout":{"type":"flex","orientation":"vertical","verticalAlignment":"space-between"}} --> + <div class="wp-block-group alignwide is-style-default" style="border-style:none;border-width:0px;border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:8px;border-bottom-right-radius:8px;padding-top:var(--wp--preset--spacing--24);padding-right:var(--wp--preset--spacing--24);padding-bottom:var(--wp--preset--spacing--24);padding-left:var(--wp--preset--spacing--24)"> + + <!-- wp:post-title {"isLink":true,"align":"wide","style":{"spacing":{"margin":{"top":"0","right":"0","bottom":"0","left":"0"}}},"fontSize":"heading-4"} /--> + + <!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","flexWrap":"nowrap"}} --> + <div class="wp-block-group"> + + <!-- wp:post-date {"fontSize":"minus-1"} /--> + <!-- wp:post-terms {"term":"category","fontSize":"minus-1"} /--> + + </div> + <!-- /wp:group --> + + </div> + <!-- /wp:group --> + +</div> +<!-- /wp:group --> diff --git a/themes/10up-block-theme/templates/404.html b/themes/10up-block-theme/templates/404.html index a5ade16f..65a7165c 100644 --- a/themes/10up-block-theme/templates/404.html +++ b/themes/10up-block-theme/templates/404.html @@ -1,21 +1,29 @@ <!-- wp:template-part {"slug":"header","tagName":"header"} /--> <!-- wp:group {"tagName":"main","className":"is-style-default","style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"top":"var(--wp--preset--spacing--32-48)","bottom":"var(--wp--preset--spacing--32-48)"}},"elements":{"link":{"color":{"text":"var:preset|color|base"}}},"dimensions":{"minHeight":""}},"backgroundColor":"gray-000","layout":{"type":"constrained"}} --> -<main class="wp-block-group is-style-default has-gray-000-background-color has-background has-link-color" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"><!-- wp:group {"align":"wide","style":{"spacing":{"padding":{"top":"var(--wp--preset--spacing--40-72)","bottom":"var(--wp--preset--spacing--40-72)","right":"var(--wp--preset--spacing--32-40)","left":"var(--wp--preset--spacing--32-40)"}}},"backgroundColor":"base","layout":{"type":"constrained"}} --> -<div class="wp-block-group alignwide has-base-background-color has-background" style="padding-top:var(--wp--preset--spacing--40-72);padding-right:var(--wp--preset--spacing--32-40);padding-bottom:var(--wp--preset--spacing--40-72);padding-left:var(--wp--preset--spacing--32-40)"><!-- wp:heading {"level":1,"style":{"spacing":{"margin":{"top":"0","right":"0","bottom":"0","left":"0"}}},"fontSize":"plus-7"} --> -<h1 class="wp-block-heading has-plus-7-font-size" style="margin-top:0;margin-right:0;margin-bottom:0;margin-left:0">404</h1> -<!-- /wp:heading --> +<main class="wp-block-group is-style-default has-gray-000-background-color has-background has-link-color" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"> -<!-- wp:heading --> -<h2 class="wp-block-heading">Page can not be found</h2> -<!-- /wp:heading --> + <!-- wp:group {"align":"wide","style":{"spacing":{"padding":{"top":"var(--wp--preset--spacing--40-72)","bottom":"var(--wp--preset--spacing--40-72)","right":"var(--wp--preset--spacing--32-40)","left":"var(--wp--preset--spacing--32-40)"}}},"backgroundColor":"base","layout":{"type":"constrained"}} --> + <div class="wp-block-group alignwide has-base-background-color has-background" style="padding-top:var(--wp--preset--spacing--40-72);padding-right:var(--wp--preset--spacing--32-40);padding-bottom:var(--wp--preset--spacing--40-72);padding-left:var(--wp--preset--spacing--32-40)"> -<!-- wp:paragraph --> -<p>Perhaps a new search will find what you are looking for:</p> -<!-- /wp:paragraph --> + <!-- wp:heading {"level":1,"style":{"spacing":{"margin":{"top":"0","right":"0","bottom":"0","left":"0"}}},"fontSize":"plus-7"} --> + <h1 class="wp-block-heading has-plus-7-font-size" style="margin-top:0;margin-right:0;margin-bottom:0;margin-left:0">404</h1> + <!-- /wp:heading --> -<!-- wp:search {"label":"Search","showLabel":false,"buttonText":"Search","buttonPosition":"button-inside"} /--></div> -<!-- /wp:group --></main> + <!-- wp:heading --> + <h2 class="wp-block-heading">Page can not be found</h2> + <!-- /wp:heading --> + + <!-- wp:paragraph --> + <p>Perhaps a new search will find what you are looking for:</p> + <!-- /wp:paragraph --> + + <!-- wp:search {"label":"Search","showLabel":false,"buttonText":"Search","buttonPosition":"button-inside"} /--> + + </div> + <!-- /wp:group --> + +</main> <!-- /wp:group --> <!-- wp:template-part {"slug":"footer","tagName":"footer"} /--> diff --git a/themes/10up-block-theme/templates/index.html b/themes/10up-block-theme/templates/index.html index 4c7bcaec..cc190ff4 100644 --- a/themes/10up-block-theme/templates/index.html +++ b/themes/10up-block-theme/templates/index.html @@ -1,31 +1,34 @@ <!-- wp:template-part {"slug":"header","tagName":"header"} /--> <!-- wp:group {"tagName":"main","className":"is-style-default","style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"top":"var(--wp--preset--spacing--32-48)","bottom":"var(--wp--preset--spacing--32-48)"}}},"backgroundColor":"gray-000","layout":{"type":"constrained"}} --> -<main class="wp-block-group is-style-default has-gray-000-background-color has-background" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"><!-- wp:query {"queryId":0,"query":{"perPage":9,"pages":0,"offset":0,"postType":"post","order":"desc","orderBy":"date","author":"","search":"","exclude":[],"sticky":"","inherit":true,"taxQuery":null,"parents":[]},"align":"wide","layout":{"type":"default"}} --> -<div class="wp-block-query alignwide"><!-- wp:post-template {"style":{"elements":{"link":{"color":{"text":"var:preset|color|primary"}}}},"layout":{"type":"grid","columnCount":null,"minimumColumnWidth":"21rem"},"isEntireCardClickable":true} --> -<!-- wp:group {"align":"wide","style":{"spacing":{"blockGap":"0"},"border":{"radius":"8px","width":"1px"}},"borderColor":"surface-secondary","layout":{"type":"flex","orientation":"vertical","justifyContent":"stretch","flexWrap":"nowrap"}} --> -<div class="wp-block-group alignwide has-border-color has-surface-secondary-border-color" style="border-width:1px;border-radius:8px"><!-- wp:post-featured-image {"aspectRatio":"16/9","width":"100%","height":"","style":{"border":{"radius":{"topRight":"8px","bottomRight":"0px","topLeft":"8px","bottomLeft":"0px"}}},"displayFallback":true} /--> +<main class="wp-block-group is-style-default has-gray-000-background-color has-background" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"> -<!-- wp:group {"align":"wide","className":"is-style-default","style":{"spacing":{"padding":{"top":"var(--wp--preset--spacing--24)","right":"var(--wp--preset--spacing--24)","bottom":"var(--wp--preset--spacing--24)","left":"var(--wp--preset--spacing--24)"},"blockGap":"var:preset|spacing|8"},"layout":{"selfStretch":"fit"},"border":{"width":"0px","style":"none","radius":{"topLeft":"0px","topRight":"0px","bottomLeft":"8px","bottomRight":"8px"}}},"layout":{"type":"flex","orientation":"vertical","verticalAlignment":"space-between"}} --> -<div class="wp-block-group alignwide is-style-default" style="border-style:none;border-width:0px;border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:8px;border-bottom-right-radius:8px;padding-top:var(--wp--preset--spacing--24);padding-right:var(--wp--preset--spacing--24);padding-bottom:var(--wp--preset--spacing--24);padding-left:var(--wp--preset--spacing--24)"><!-- wp:post-title {"isLink":true,"align":"wide","style":{"spacing":{"margin":{"top":"0","right":"0","bottom":"0","left":"0"}}},"fontSize":"heading-4"} /--> + <!-- wp:query {"queryId":0,"query":{"perPage":9,"pages":0,"offset":0,"postType":"post","order":"desc","orderBy":"date","author":"","search":"","exclude":[],"sticky":"","inherit":true,"taxQuery":null,"parents":[]},"align":"wide","layout":{"type":"default"}} --> + <div class="wp-block-query alignwide"> -<!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","flexWrap":"nowrap"}} --> -<div class="wp-block-group"><!-- wp:post-date {"fontSize":"minus-1"} /--> + <!-- wp:post-template {"style":{"elements":{"link":{"color":{"text":"var:preset|color|primary"}}}},"layout":{"type":"grid","columnCount":null,"minimumColumnWidth":"21rem"},"isEntireCardClickable":true} --> -<!-- wp:post-terms {"term":"category","fontSize":"minus-1"} /--></div> -<!-- /wp:group --></div> -<!-- /wp:group --></div> -<!-- /wp:group --> -<!-- /wp:post-template --> + <!-- wp:pattern {"slug":"tenup-theme/base-card"} /--> + + <!-- /wp:post-template --> + + <!-- wp:group {"align":"wide","style":{"spacing":{"margin":{"top":"var(--wp--preset--spacing--60)"}},"elements":{"link":{"color":{"text":"var:preset|color|contrast"}}}},"textColor":"contrast","layout":{"type":"default"}} --> + <div class="wp-block-group alignwide has-contrast-color has-text-color has-link-color" style="margin-top:var(--wp--preset--spacing--60)"> + + <!-- wp:query-pagination {"paginationArrow":"arrow","align":"wide","layout":{"type":"flex","justifyContent":"space-between"}} --> + + <!-- wp:query-pagination-previous /--> + <!-- wp:query-pagination-next /--> + + <!-- /wp:query-pagination --> + + </div> + <!-- /wp:group --> -<!-- wp:group {"align":"wide","style":{"spacing":{"margin":{"top":"var(--wp--preset--spacing--60)"}},"elements":{"link":{"color":{"text":"var:preset|color|contrast"}}}},"textColor":"contrast","layout":{"type":"default"}} --> -<div class="wp-block-group alignwide has-contrast-color has-text-color has-link-color" style="margin-top:var(--wp--preset--spacing--60)"><!-- wp:query-pagination {"paginationArrow":"arrow","align":"wide","layout":{"type":"flex","justifyContent":"space-between"}} --> -<!-- wp:query-pagination-previous /--> + </div> + <!-- /wp:query --> -<!-- wp:query-pagination-next /--> -<!-- /wp:query-pagination --></div> -<!-- /wp:group --></div> -<!-- /wp:query --></main> +</main> <!-- /wp:group --> <!-- wp:template-part {"slug":"footer","tagName":"footer"} /--> diff --git a/themes/10up-block-theme/templates/single.html b/themes/10up-block-theme/templates/single.html index 6217cc44..34219e19 100644 --- a/themes/10up-block-theme/templates/single.html +++ b/themes/10up-block-theme/templates/single.html @@ -1,25 +1,31 @@ <!-- wp:template-part {"slug":"header","tagName":"header"} /--> <!-- wp:group {"tagName":"main","className":"is-style-default","style":{"spacing":{"margin":{"top":"0"},"padding":{"top":"var(--wp--preset--spacing--32-48)","bottom":"var(--wp--preset--spacing--32-48)"}}}} --> -<main class="wp-block-group is-style-default" style="margin-top:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"><!-- wp:group {"style":{"spacing":{"margin":{"top":"var(--wp--preset--spacing--32-40)"}}},"layout":{"type":"constrained"}} --> -<div class="wp-block-group" style="margin-top:var(--wp--preset--spacing--32-40)"><!-- wp:post-terms {"term":"category","style":{"elements":{"link":{"color":{"text":"var:preset|color|primary"}}}},"textColor":"primary"} /--> +<main class="wp-block-group is-style-default" style="margin-top:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"> -<!-- wp:post-title {"level":1} /--> + <!-- wp:group {"style":{"spacing":{"margin":{"top":"var(--wp--preset--spacing--32-40)"}}},"layout":{"type":"constrained"}} --> + <div class="wp-block-group" style="margin-top:var(--wp--preset--spacing--32-40)"> -<!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","flexWrap":"nowrap"}} --> -<div class="wp-block-group"><!-- wp:post-author {"showBio":false,"byline":""} /--> + <!-- wp:post-terms {"term":"category","style":{"elements":{"link":{"color":{"text":"var:preset|color|primary"}}}},"textColor":"primary"} /--> + <!-- wp:post-title {"level":1} /--> -<!-- wp:paragraph --> -<p>·</p> -<!-- /wp:paragraph --> + <!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","flexWrap":"nowrap"}} --> + <div class="wp-block-group"> -<!-- wp:post-date /--></div> -<!-- /wp:group --> + <!-- wp:post-author {"showBio":false,"byline":""} /--> + <!-- wp:post-date /--> -<!-- wp:post-featured-image /--></div> -<!-- /wp:group --> + </div> + <!-- /wp:group --> + + <!-- wp:post-featured-image /--> + + </div> + <!-- /wp:group --> + + <!-- wp:post-content {"layout":{"type":"constrained"}} /--> -<!-- wp:post-content {"layout":{"type":"constrained"}} /--></main> +</main> <!-- /wp:group --> <!-- wp:template-part {"slug":"footer","tagName":"footer"} /--> diff --git a/themes/10up-block-theme/templates/singular.html b/themes/10up-block-theme/templates/singular.html index 4f7879c8..ad9a886e 100644 --- a/themes/10up-block-theme/templates/singular.html +++ b/themes/10up-block-theme/templates/singular.html @@ -1,7 +1,11 @@ <!-- wp:template-part {"slug":"header","tagName":"header"} /--> <!-- wp:group {"tagName":"main","className":"is-style-default","style":{"spacing":{"margin":{"top":"0"}}}} --> -<main class="wp-block-group is-style-default" style="margin-top:0"><!-- wp:post-content {"layout":{"type":"constrained"}} /--></main> +<main class="wp-block-group is-style-default" style="margin-top:0"> + + <!-- wp:post-content {"layout":{"type":"constrained"}} /--> + +</main> <!-- /wp:group --> <!-- wp:template-part {"slug":"footer","tagName":"footer"} /--> From 94e9600b804db389a4baedb017042d3bba8d2b82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:02:29 +0100 Subject: [PATCH 06/20] fix configs --- themes/10up-block-theme/phpcs.xml | 3 ++- themes/10up-block-theme/screenshot.png | Bin 18915 -> 23781 bytes themes/10up-block-theme/style.css | 2 +- themes/10up-block-theme/stylelint.config.js | 22 +------------------- 4 files changed, 4 insertions(+), 23 deletions(-) diff --git a/themes/10up-block-theme/phpcs.xml b/themes/10up-block-theme/phpcs.xml index ebc2a10d..fc52d93c 100644 --- a/themes/10up-block-theme/phpcs.xml +++ b/themes/10up-block-theme/phpcs.xml @@ -2,7 +2,8 @@ <ruleset name="10up PHPCS"> <description>10up PHPCS extended.</description> <exclude-pattern>dist/</exclude-pattern> - <exclude-pattern>plugins/*</exclude-pattern> + <exclude-pattern>vendor/</exclude-pattern> + <exclude-pattern>node_modules/</exclude-pattern> <rule ref="10up-Default" /> <arg name="colors"/> diff --git a/themes/10up-block-theme/screenshot.png b/themes/10up-block-theme/screenshot.png index 849d2b38488a6b5f2b0b269caa4c232403d96a87..3318d911dbe2da7e47d778eb6621b2b965a06d65 100644 GIT binary patch literal 23781 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 literal 18915 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 NtEI1*qhWRD{{T>zgM<J8 diff --git a/themes/10up-block-theme/style.css b/themes/10up-block-theme/style.css index e9bbfe4a..f9c8fdf0 100755 --- a/themes/10up-block-theme/style.css +++ b/themes/10up-block-theme/style.css @@ -1,5 +1,5 @@ /** - * Theme Name: TENUP Theme + * Theme Name: TENUP Block Theme * Theme URI: https://10up.com * Description: A theme for the TENUP project. * Author: 10up diff --git a/themes/10up-block-theme/stylelint.config.js b/themes/10up-block-theme/stylelint.config.js index fc8f56af..64e1883a 100644 --- a/themes/10up-block-theme/stylelint.config.js +++ b/themes/10up-block-theme/stylelint.config.js @@ -1,26 +1,6 @@ const config = { extends: ['@10up/stylelint-config'], - rules: { - 'scale-unlimited/declaration-strict-value': [ - '/color/', - { - ignoreValues: [ - 'currentcolor', - 'currentColor', - 'inherit', - 'initial', - 'transparent', - 'unset', - ], - }, - ], - 'custom-property-pattern': [ - '^([a-z][a-z0-9]*)(-[a-z0-9]+)*$|^wp[-]{1,2}([a-z][a-z0-9]*)([-]{1,2}[a-z0-9]+)*$', - { - message: 'Expected custom property name to be kebab-case or wp--kebab--case', - }, - ], - }, + rules: {}, }; module.exports = config; From 84082885c4fdf3adf3447aaa338f992656857c2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:11:37 +0100 Subject: [PATCH 07/20] fix move filter outside of loop --- themes/10up-block-theme/includes/blocks.php | 24 +++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/themes/10up-block-theme/includes/blocks.php b/themes/10up-block-theme/includes/blocks.php index d312d311..c0e00e42 100644 --- a/themes/10up-block-theme/includes/blocks.php +++ b/themes/10up-block-theme/includes/blocks.php @@ -26,21 +26,23 @@ function register_theme_blocks() { // Register all the blocks in the theme. if ( file_exists( TENUP_BLOCK_THEME_BLOCK_DIST_DIR ) ) { $block_json_files = glob( TENUP_BLOCK_THEME_BLOCK_DIST_DIR . '*/block.json' ); + $block_names = []; foreach ( $block_json_files as $filename ) { - $block_folder = dirname( $filename ); - $block = register_block_type_from_metadata( $block_folder ); + $block_folder = dirname( $filename ); + $block = register_block_type_from_metadata( $block_folder ); + $block_names[] = $block->name; + } - add_filter( - 'allowed_block_types_all', - function ( $allowed_blocks ) use ( $block ) { - if ( ! is_array( $allowed_blocks ) ) { - return $allowed_blocks; - } - return array_merge( $allowed_blocks, [ $block->name ] ); + add_filter( + 'allowed_block_types_all', + function ( array|bool $allowed_blocks ) use ( $block_names ): array|bool { + if ( ! is_array( $allowed_blocks ) ) { + return $allowed_blocks; } - ); - } + return array_merge( $allowed_blocks, $block_names ); + } + ); } } From 5dec4beb0230713bef86192b14e880c4d5b51925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:11:48 +0100 Subject: [PATCH 08/20] updates --- themes/10up-block-theme/includes/core.php | 41 +++-------------------- 1 file changed, 5 insertions(+), 36 deletions(-) diff --git a/themes/10up-block-theme/includes/core.php b/themes/10up-block-theme/includes/core.php index 541af3b7..a15baf91 100755 --- a/themes/10up-block-theme/includes/core.php +++ b/themes/10up-block-theme/includes/core.php @@ -15,19 +15,14 @@ * @return void */ function setup() { - $n = function ( $function_name ) { - return __NAMESPACE__ . "\\$function_name"; - }; - + add_action( 'init', 'TenupBlockTheme\Core\scripts' ); + add_action( 'init', 'TenupBlockTheme\Core\register_all_icons', 10 ); add_action( 'after_setup_theme', 'TenupBlockTheme\Core\i18n' ); add_action( 'after_setup_theme', 'TenupBlockTheme\Core\theme_setup' ); - add_action( 'init', 'TenupBlockTheme\Core\scripts' ); - add_action( 'wp_enqueue_scripts', 'TenupBlockTheme\Core\styles' ); - add_action( 'enqueue_block_editor_assets', 'TenupBlockTheme\Core\editor_style_overrides' ); add_action( 'wp_head', 'TenupBlockTheme\Core\js_detection', 0 ); add_action( 'wp_head', 'TenupBlockTheme\Core\scrollbar_detection', 0 ); - add_action( 'wp_head', 'TenupBlockTheme\Core\embed_ct_css', 0 ); - add_action( 'init', 'TenupBlockTheme\Core\register_all_icons', 10 ); + add_action( 'wp_enqueue_scripts', 'TenupBlockTheme\Core\styles' ); + add_action( 'enqueue_block_editor_assets', 'TenupBlockTheme\Core\editor_style_overrides' ); } /** @@ -160,31 +155,5 @@ function js_detection() { * @return void */ function scrollbar_detection() { - echo '<script>window.addEventListener("DOMContentLoaded",()=>{const t=()=>window.innerWidth-document.body.clientWidth;const e=()=>{document.documentElement.style.setProperty("--wp--custom--scrollbar-width",`${t()}px`)};e();window.addEventListener("resize",e);});</script>' . "\n"; -} - -/** - * Inlines ct.css in the head - * - * Embeds a diagnostic CSS file written by Harry Roberts - * that helps diagnose render blocking resources and other - * performance bottle necks. - * - * The CSS is inlined in the head of the document, only when requesting - * a page with the query param ?debug_perf=1 - * - * @link https://csswizardry.com/ct/ - * @return void - */ -function embed_ct_css() { - - $debug_performance = rest_sanitize_boolean( filter_input( INPUT_GET, 'debug_perf', FILTER_SANITIZE_NUMBER_INT ) ); - - if ( ! $debug_performance ) { - return; - } - - wp_register_style( 'ct', false ); // phpcs:ignore - wp_enqueue_style( 'ct' ); - wp_add_inline_style( 'ct', 'head{--ct-is-problematic:solid;--ct-is-affected:dashed;--ct-notify:#0bce6b;--ct-warn:#ffa400;--ct-error:#ff4e42}head,head [rel=stylesheet],head script,head script:not([src])[async],head script:not([src])[defer],head script~meta[http-equiv=content-security-policy],head style,head>meta[charset]:not(:nth-child(-n+5)){display:block}head [rel=stylesheet],head script,head script~meta[http-equiv=content-security-policy],head style,head title,head>meta[charset]:not(:nth-child(-n+5)){margin:5px;padding:5px;border-width:5px;background-color:#fff;color:#333}head ::before,head script,head style{font:16px/1.5 monospace,monospace;display:block}head ::before{font-weight:700}head link[rel=stylesheet],head script[src]{border-style:var(--ct-is-problematic);border-color:var(--ct-warn)}head script[src]::before{content:"[Blocking Script – " attr(src) "]"}head link[rel=stylesheet]::before{content:"[Blocking Stylesheet – " attr(href) "]"}head script:not(:empty),head style:not(:empty){max-height:5em;overflow:auto;background-color:#ffd;white-space:pre;border-color:var(--ct-notify);border-style:var(--ct-is-problematic)}head script:not(:empty)::before{content:"[Inline Script] "}head style:not(:empty)::before{content:"[Inline Style] "}head script:not(:empty)~title,head script[src]:not([async]):not([defer]):not([type=module])~title{display:block;border-style:var(--ct-is-affected);border-color:var(--ct-error)}head script:not(:empty)~title::before,head script[src]:not([async]):not([defer]):not([type=module])~title::before{content:"[<title> blocked by JS] "}head [rel=stylesheet]:not([media=print]):not(.ct)~script,head style:not(:empty)~script{border-style:var(--ct-is-affected);border-color:var(--ct-warn)}head [rel=stylesheet]:not([media=print]):not(.ct)~script::before,head style:not(:empty)~script::before{content:"[JS blocked by CSS – " attr(src) "]"}head script[src][src][async][defer]{display:block;border-style:var(--ct-is-problematic);border-color:var(--ct-warn)}head script[src][src][async][defer]::before{content:"[async and defer is redundant: prefer defer – " attr(src) "]"}head script:not([src])[async],head script:not([src])[defer]{border-style:var(--ct-is-problematic);border-color:var(--ct-warn)}head script:not([src])[async]::before{content:"The async attribute is redundant on inline scripts"}head script:not([src])[defer]::before{content:"The defer attribute is redundant on inline scripts"}head [rel=stylesheet][href^="//"],head [rel=stylesheet][href^=http],head script[src][src][src^="//"],head script[src][src][src^=http]{border-style:var(--ct-is-problematic);border-color:var(--ct-error)}head script[src][src][src^="//"]::before,head script[src][src][src^=http]::before{content:"[Third Party Blocking Script – " attr(src) "]"}head [rel=stylesheet][href^="//"]::before,head [rel=stylesheet][href^=http]::before{content:"[Third Party Blocking Stylesheet – " attr(href) "]"}head script~meta[http-equiv=content-security-policy]{border-style:var(--ct-is-problematic);border-color:var(--ct-error)}head script~meta[http-equiv=content-security-policy]::before{content:"[Meta CSP defined after JS]"}head>meta[charset]:not(:nth-child(-n+5)){border-style:var(--ct-is-problematic);border-color:var(--ct-warn)}head>meta[charset]:not(:nth-child(-n+5))::before{content:"[Charset should appear as early as possible]"}link[rel=stylesheet].ct,link[rel=stylesheet][media=print],script[async],script[defer],script[type=module],style.ct{display:none}' ); + echo '<script>window.addEventListener("DOMContentLoaded",()=>{const t=()=>window.innerWidth-document.body.clientWidth;const e=()=>{document.documentElement.style.setProperty("--wp--custom--scrollbar-width",`${t()}px`)};e();});</script>' . "\n"; } From d5b0d5ebbd085d6a93075fdf1719b284fea70c1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:11:56 +0100 Subject: [PATCH 09/20] remove unused helper function --- themes/10up-block-theme/includes/utility.php | 42 -------------------- 1 file changed, 42 deletions(-) diff --git a/themes/10up-block-theme/includes/utility.php b/themes/10up-block-theme/includes/utility.php index b2e5e17b..00e2d0a9 100755 --- a/themes/10up-block-theme/includes/utility.php +++ b/themes/10up-block-theme/includes/utility.php @@ -35,45 +35,3 @@ function get_asset_info( $slug, $attribute = null ) { return $asset; } - - - -/** - * Enqueue a view script for a block - * - * @param string $block_name Block name. - * @param array $args { - * Optional. Array of arguments for enqueuing a view script. - * @type string $handle Script handle. - * @type string $src Script URL. - * @type array $dep Script dependencies. - * @type string|bool $ver Script version. - * @type bool $in_footer Whether to enqueue the script before </body> instead of in the <head>. - * } - * @return void - */ -function wp_enqueue_block_view_script( $block_name, $args = array() ) { - $default_args = array( - 'dep' => array(), - 'ver' => false, - 'in_footer' => true, - ); - - $args = wp_parse_args( $args, $default_args ); - - $block = \WP_Block_Type_Registry::get_instance()->get_registered( $block_name ); - - if ( ! empty( $args['src'] ) ) { - wp_register_script( - $args['handle'], - $args['src'], - $args['dep'], - $args['ver'], - $args['in_footer'] - ); - } - - if ( ! empty( $block ) ) { - $block->view_script_handles[] = $args['handle']; - } -} From 376e1af1e0bb0849ceac49f20dae20831939f618 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:13:25 +0100 Subject: [PATCH 10/20] update helper function --- themes/10up-block-theme/includes/utility.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/themes/10up-block-theme/includes/utility.php b/themes/10up-block-theme/includes/utility.php index 00e2d0a9..68146b4f 100755 --- a/themes/10up-block-theme/includes/utility.php +++ b/themes/10up-block-theme/includes/utility.php @@ -18,7 +18,7 @@ * * @param string $slug Asset slug as defined in build/webpack configuration * @param string $attribute Optional attribute to get. Can be version or dependencies - * @return string|array + * @return ($attribute is null ? array{version: string, dependencies: array<string>} : $attribute is 'dependencies' ? array<string> : string) */ function get_asset_info( $slug, $attribute = null ) { if ( file_exists( TENUP_BLOCK_THEME_PATH . 'dist/js/' . $slug . '.asset.php' ) ) { @@ -26,7 +26,10 @@ function get_asset_info( $slug, $attribute = null ) { } elseif ( file_exists( TENUP_BLOCK_THEME_PATH . 'dist/css/' . $slug . '.asset.php' ) ) { $asset = require TENUP_BLOCK_THEME_PATH . 'dist/css/' . $slug . '.asset.php'; } else { - return null; + $asset = [ + 'version' => TENUP_BLOCK_THEME_VERSION, + 'dependencies' => [], + ]; } if ( ! empty( $attribute ) && isset( $asset[ $attribute ] ) ) { From d86beafbc569118068644576811f66b7843ae8e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:21:33 +0100 Subject: [PATCH 11/20] updates --- .../assets/css/base/layout.css | 57 ------------------- .../assets/css/base/reset.css | 22 +++++++ .../assets/css/editor-style-overrides.css | 10 ++-- themes/10up-block-theme/package.json | 5 +- 4 files changed, 30 insertions(+), 64 deletions(-) diff --git a/themes/10up-block-theme/assets/css/base/layout.css b/themes/10up-block-theme/assets/css/base/layout.css index d1a3725b..acdee8a6 100644 --- a/themes/10up-block-theme/assets/css/base/layout.css +++ b/themes/10up-block-theme/assets/css/base/layout.css @@ -1,64 +1,7 @@ -/** - * These are deprecated fallbacks for the variables that now live in the - * theme.json file. They are here to ensure backwards compatibility with - * older themes that do used these variables in their styles. - */ -:root { - --full-viewport-width: var(--wp--custom--full-viewport-width); - --site-outer-padding: var(--wp--custom--site-outer-padding); - --site-content-width: var(--wp--custom--site-content-width); - --main-content-width-side-spacing: var(--wp--custom--main-content-width-side-spacing); - --main-wide-width-side-spacing: var(--wp--custom--main-wide-width-side-spacing); - /* stylelint-disable-next-line length-zero-no-unit */ - --site-header-top-offset: var(--wp-admin--admin-bar--height, 0px); - - &.has-pinned-header { - --site-header-top-offset: calc(var(--header-height) + var(--wp-admin--admin-bar--height, 0px)); - } -} - html { scroll-behavior: smooth; } -/* - * Remove the default margin caused by global block-gap - * from the header and footer template parts - */ -.wp-site-blocks { - display: grid; - grid-template-areas: - "header" - "main" - "footer"; - grid-template-columns: 1fr; - grid-template-rows: auto 1fr auto; - min-height: 100vh; - min-height: 100dvh; - - & > header:where(.wp-block-template-part) { - grid-area: header; - margin-block-end: 0; - } - - & > main { - grid-area: main; - height: 100%; - } - - & > footer:where(.wp-block-template-part) { - align-self: flex-end; - grid-area: footer; - margin-block-start: 0; - } -} - -.wp-block-group:where(:not(:has(> :first-child[style*="margin"], > :last-child[style*="margin"]))) { - - @mixin margin-collapse; -} - - .has-global-padding :where(.has-global-padding.is-layout-constrained) { padding-left: var(--wp--style--root--padding-left); padding-right: var(--wp--style--root--padding-right); diff --git a/themes/10up-block-theme/assets/css/base/reset.css b/themes/10up-block-theme/assets/css/base/reset.css index f2df1c75..cd9dba69 100644 --- a/themes/10up-block-theme/assets/css/base/reset.css +++ b/themes/10up-block-theme/assets/css/base/reset.css @@ -23,6 +23,14 @@ html { height: calc(100% - var(--wp-admin--admin-bar--height, 0px)); } +/* + * Ensure best type rendering + */ +:root { + font-feature-settings: "kern"; + font-kerning: normal; + text-rendering: optimizeLegibility; +} /* * Improve text rendering @@ -77,9 +85,23 @@ h6 { text-wrap: pretty; /* pretty is the nicer result but it isn't supported as well. So balance is here as a fallback */ } +p { + text-wrap: pretty; +} + + /* * Create a root stacking context */ .wp-site-blocks { isolation: isolate; } + +/* + * Ensure the alt text is visible when an image is missing + */ +img { + font-size: 1rem; + font-style: italic; + line-height: 1.5; +} diff --git a/themes/10up-block-theme/assets/css/editor-style-overrides.css b/themes/10up-block-theme/assets/css/editor-style-overrides.css index 0c080b32..d96dedd7 100644 --- a/themes/10up-block-theme/assets/css/editor-style-overrides.css +++ b/themes/10up-block-theme/assets/css/editor-style-overrides.css @@ -33,21 +33,21 @@ } /* - * Substract Inspector Controls Width from full viewport width if open + * Subtract Inspector Controls Width from full viewport width if open */ .interface-interface-skeleton.is-sidebar-opened .editor-styles-wrapper { --wp--custom--full-viewport-width: calc(100vw - var(--wp--interface--sidebar--width)); } /* - * Substract List View Width from full viewport width if open + * Subtract List View Width from full viewport width if open */ .interface-interface-skeleton__secondary-sidebar ~ .interface-interface-skeleton__content .editor-styles-wrapper { --wp--custom--full-viewport-width: calc(100vw - var(--wp--interface--secondary--sidebar--width)); } /* - * Substract both List View and Inspector Controls + * Subtract both List View and Inspector Controls * Width from full viewport width if open */ .interface-interface-skeleton.is-sidebar-opened .interface-interface-skeleton__secondary-sidebar ~ .interface-interface-skeleton__content .editor-styles-wrapper { @@ -62,10 +62,10 @@ min-height: 90dvh; } -/* +/* * Small editor blocks like the footer social nav are hard to click * Setting a min-height so that elements can be selected to edit - * Prior to this scrollbars overlap small elements + * Prior to this scrollbars overlaped small elements */ .block-editor-iframe__container { min-height: 70px; diff --git a/themes/10up-block-theme/package.json b/themes/10up-block-theme/package.json index 4ca7f8ad..66459aa8 100644 --- a/themes/10up-block-theme/package.json +++ b/themes/10up-block-theme/package.json @@ -17,15 +17,16 @@ "node": ">=18.0.0" }, "devDependencies": { - "10up-toolkit": "^6.2.1" + "10up-toolkit": "^6.3.0" }, "dependencies": { - "@10up/block-components": "^1.19.1", + "@10up/block-components": "^1.19.4", "clsx": "^2.1.1" }, "10up-toolkit": { "useBlockAssets": true, "useScriptModules": true, + "loadBlockSpecificStyles": true, "entry": { "editor-style-overrides": "./assets/css/editor-style-overrides.css", "frontend": "./assets/js/frontend.js", From e91c139f5913576cafd0b91f9e9aee308bc3ee0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:22:24 +0100 Subject: [PATCH 12/20] update naming of mixin --- .../assets/css/mixins/{margin-collapse.css => margin-trim.css} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename themes/10up-block-theme/assets/css/mixins/{margin-collapse.css => margin-trim.css} (83%) diff --git a/themes/10up-block-theme/assets/css/mixins/margin-collapse.css b/themes/10up-block-theme/assets/css/mixins/margin-trim.css similarity index 83% rename from themes/10up-block-theme/assets/css/mixins/margin-collapse.css rename to themes/10up-block-theme/assets/css/mixins/margin-trim.css index f0cc5618..1d4968df 100644 --- a/themes/10up-block-theme/assets/css/mixins/margin-collapse.css +++ b/themes/10up-block-theme/assets/css/mixins/margin-trim.css @@ -1,4 +1,4 @@ -@define-mixin margin-collapse { +@define-mixin margin-trim { margin-trim: block; @supports not (margin-trim: block) { From d24ff41328210f91e89e11c35b9028f8aaf1682e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:26:17 +0100 Subject: [PATCH 13/20] add mixin for visually hidden things --- .../assets/css/mixins/visually-hidden.css | 10 ++++++++++ .../assets/css/utilities/visually-hidden.css | 10 ++-------- 2 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 themes/10up-block-theme/assets/css/mixins/visually-hidden.css diff --git a/themes/10up-block-theme/assets/css/mixins/visually-hidden.css b/themes/10up-block-theme/assets/css/mixins/visually-hidden.css new file mode 100644 index 00000000..230ca6e4 --- /dev/null +++ b/themes/10up-block-theme/assets/css/mixins/visually-hidden.css @@ -0,0 +1,10 @@ +@define-mixin visually-hidden { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} diff --git a/themes/10up-block-theme/assets/css/utilities/visually-hidden.css b/themes/10up-block-theme/assets/css/utilities/visually-hidden.css index 41eed5c5..f252d8f6 100644 --- a/themes/10up-block-theme/assets/css/utilities/visually-hidden.css +++ b/themes/10up-block-theme/assets/css/utilities/visually-hidden.css @@ -1,10 +1,4 @@ .visually-hidden { - border: 0; - clip: rect(0, 0, 0, 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; + + @mixin visually-hidden; } From 1a782e3b963e1ad788e6309b94b299012e005ed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:36:08 +0100 Subject: [PATCH 14/20] updates --- package-lock.json | 848 ++++++++++++++----- themes/10up-block-theme/includes/blocks.php | 20 +- themes/10up-block-theme/includes/utility.php | 2 + themes/10up-block-theme/package.json | 2 +- 4 files changed, 648 insertions(+), 224 deletions(-) diff --git a/package-lock.json b/package-lock.json index e651bde9..df2e472a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,6 +57,139 @@ "core-js": "^3.35.0" } }, + "node_modules/@10up/block-components": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/@10up/block-components/-/block-components-1.19.4.tgz", + "integrity": "sha512-PZIS4UR6Uq7k6sCZiVXMWk4pAH7mtA5KBsfsgPkUcBPmgtIyR7qYtVyNmJqaPGb0HUl3yKE7/r7g0PWgpeZ0hw==", + "workspaces": [ + "./", + "example/" + ], + "dependencies": { + "@dnd-kit/core": "^6.1.0", + "@dnd-kit/modifiers": "^7.0.0", + "@dnd-kit/sortable": "^8.0.0", + "@dnd-kit/utilities": "^3.2.2", + "@emotion/react": "^11.11.4", + "@emotion/styled": "^11.11.5", + "@floating-ui/react-dom": "^2.1.0", + "@leeoniya/ufuzzy": "^1.0.14", + "@tanstack/react-query": "^5.40.1", + "@typescript-eslint/parser": "^6.21.0", + "@wordpress/icons": "^10.0.0", + "array-move": "^4.0.0", + "react-window": "^1.8.10", + "uuid": "^9.0.1", + "wp-types": "^3.65.0" + } + }, + "node_modules/@10up/block-components/node_modules/@dnd-kit/core": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.3.1.tgz", + "integrity": "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==", + "dependencies": { + "@dnd-kit/accessibility": "^3.1.1", + "@dnd-kit/utilities": "^3.2.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@10up/block-components/node_modules/@dnd-kit/modifiers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@dnd-kit/modifiers/-/modifiers-7.0.0.tgz", + "integrity": "sha512-BG/ETy3eBjFap7+zIti53f0PCLGDzNXyTmn6fSdrudORf+OH04MxrW4p5+mPu4mgMk9kM41iYONjc3DOUWTcfg==", + "dependencies": { + "@dnd-kit/utilities": "^3.2.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@dnd-kit/core": "^6.1.0", + "react": ">=16.8.0" + } + }, + "node_modules/@10up/block-components/node_modules/@dnd-kit/sortable": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-8.0.0.tgz", + "integrity": "sha512-U3jk5ebVXe1Lr7c2wU7SBZjcWdQP+j7peHJfCspnA81enlu88Mgd7CC8Q+pub9ubP7eKVETzJW+IBAhsqbSu/g==", + "dependencies": { + "@dnd-kit/utilities": "^3.2.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@dnd-kit/core": "^6.1.0", + "react": ">=16.8.0" + } + }, + "node_modules/@10up/block-components/node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@10up/block-components/node_modules/react": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@10up/block-components/node_modules/react-dom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", + "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "peer": true, + "dependencies": { + "scheduler": "^0.25.0" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, + "node_modules/@10up/block-components/node_modules/react-window": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.11.tgz", + "integrity": "sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "memoize-one": ">=3.1.1 <6" + }, + "engines": { + "node": ">8.0.0" + }, + "peerDependencies": { + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@10up/block-components/node_modules/scheduler": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "peer": true + }, + "node_modules/@10up/block-components/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@10up/eslint-config": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@10up/eslint-config/-/eslint-config-4.1.0.tgz", @@ -128,7 +261,6 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", @@ -199,7 +331,6 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", - "dev": true, "dependencies": { "@babel/parser": "^7.26.2", "@babel/types": "^7.26.0", @@ -323,7 +454,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" @@ -434,7 +564,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -443,7 +572,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -488,7 +616,6 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", - "dev": true, "dependencies": { "@babel/types": "^7.26.0" }, @@ -1891,7 +2018,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", - "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1903,7 +2029,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.25.9", "@babel/parser": "^7.25.9", @@ -1917,7 +2042,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.25.9", "@babel/generator": "^7.25.9", @@ -1935,7 +2059,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", - "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" @@ -2989,6 +3112,174 @@ "node": ">=10.0.0" } }, + "node_modules/@dnd-kit/accessibility": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.1.tgz", + "integrity": "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/utilities": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.2.tgz", + "integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", + "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" + }, + "node_modules/@emotion/styled": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz", + "integrity": "sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" + }, "node_modules/@es-joy/jsdoccomment": { "version": "0.46.0", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.46.0.tgz", @@ -3008,7 +3299,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", - "dev": true, "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -3026,7 +3316,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3038,7 +3327,6 @@ "version": "4.12.1", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -3047,7 +3335,6 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, "peer": true, "dependencies": { "ajv": "^6.12.4", @@ -3071,14 +3358,12 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "peer": true }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "peer": true, "dependencies": { "balanced-match": "^1.0.0", @@ -3089,7 +3374,6 @@ "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, "peer": true, "dependencies": { "type-fest": "^0.20.2" @@ -3105,7 +3389,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "peer": true, "dependencies": { "argparse": "^2.0.1" @@ -3118,7 +3401,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "peer": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -3131,7 +3413,6 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, "peer": true, "engines": { "node": ">=10" @@ -3144,18 +3425,38 @@ "version": "8.57.1", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "dependencies": { + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" + }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", - "dev": true, "peer": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", @@ -3170,7 +3471,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "peer": true, "dependencies": { "balanced-match": "^1.0.0", @@ -3181,7 +3481,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "peer": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -3194,7 +3493,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, "peer": true, "engines": { "node": ">=12.22" @@ -3209,7 +3507,6 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", - "dev": true, "peer": true }, "node_modules/@istanbuljs/load-nyc-config": { @@ -3556,7 +3853,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -3570,7 +3866,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -3579,7 +3874,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -3597,19 +3891,22 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@leeoniya/ufuzzy": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/@leeoniya/ufuzzy/-/ufuzzy-1.0.17.tgz", + "integrity": "sha512-bGNsu11VP70ZgN+bP9SOQ9rsX6Tu/RzLJQ5F5TzgM9IaZncZweu7lDwcMfPAQ9RW3TVMfnbMCD/NnowkjyT+dQ==" + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", @@ -3629,7 +3926,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3642,7 +3938,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -3651,7 +3946,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -4309,6 +4603,30 @@ "url": "https://github.com/sponsors/gregberge" } }, + "node_modules/@tanstack/query-core": { + "version": "5.62.9", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.9.tgz", + "integrity": "sha512-lwePd8hNYhyQ4nM/iRQ+Wz2cDtspGeZZHFZmCzHJ7mfKXt+9S301fULiY2IR2byJYY6Z03T427E5PoVfMexHjw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.62.11", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.62.11.tgz", + "integrity": "sha512-Xb1nw0cYMdtFmwkvH9+y5yYFhXvLRCnXoqlzSw7UkqtCVFq3cG8q+rHZ2Yz1XrC+/ysUaTqbLKJqk95mCgC1oQ==", + "dependencies": { + "@tanstack/query-core": "5.62.9" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -4585,8 +4903,12 @@ "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==" }, "node_modules/@types/qs": { "version": "6.9.17", @@ -4600,6 +4922,23 @@ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, + "node_modules/@types/react": { + "version": "18.3.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", + "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", + "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -4738,7 +5077,6 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "dev": true, "dependencies": { "@typescript-eslint/scope-manager": "6.21.0", "@typescript-eslint/types": "6.21.0", @@ -4766,7 +5104,6 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, "dependencies": { "@typescript-eslint/types": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0" @@ -4810,7 +5147,6 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" }, @@ -4823,7 +5159,6 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, "dependencies": { "@typescript-eslint/types": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0", @@ -4851,7 +5186,6 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -4900,7 +5234,6 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, "dependencies": { "@typescript-eslint/types": "6.21.0", "eslint-visitor-keys": "^3.4.1" @@ -4917,7 +5250,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4929,7 +5261,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true, "peer": true }, "node_modules/@webassemblyjs/ast": { @@ -5165,6 +5496,59 @@ "webpack": "^5.0.0" } }, + "node_modules/@wordpress/element": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.14.0.tgz", + "integrity": "sha512-vZPm2ekv9B7fMcv/slyu/p8lV44EPa6RRHOk04ldNUpsrjC6ph6Q4wpuI5WzLEX7p1u71c8ZOuroEuRvdFxMcA==", + "dependencies": { + "@babel/runtime": "7.25.7", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", + "@wordpress/escape-html": "*", + "change-case": "^4.1.2", + "is-plain-object": "^5.0.0", + "react": "^18.3.0", + "react-dom": "^18.3.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/element/node_modules/@babel/runtime": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", + "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@wordpress/escape-html": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.14.0.tgz", + "integrity": "sha512-tLzQk7VQse1TF/StFe6vt4zdPCWV9LFRPhseC46tbBxAlm/+v6gmaJP501voA/vPQOJSZrYyA5iXGQhA8cJsRw==", + "dependencies": { + "@babel/runtime": "7.25.7" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/escape-html/node_modules/@babel/runtime": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", + "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@wordpress/eslint-plugin": { "version": "17.13.0", "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-17.13.0.tgz", @@ -5321,6 +5705,31 @@ "node": ">= 6" } }, + "node_modules/@wordpress/icons": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-10.14.0.tgz", + "integrity": "sha512-4S1AaBeqvTpsTC23y0+4WPiSyz7j+b7vJ4vQ4nqnPeBF7ZeC8J/UXWQnEuKY38n8TiutXljgagkEqGNC9pF2Mw==", + "dependencies": { + "@babel/runtime": "7.25.7", + "@wordpress/element": "*", + "@wordpress/primitives": "*" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/icons/node_modules/@babel/runtime": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", + "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@wordpress/jest-console": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-7.29.0.tgz", @@ -5376,6 +5785,34 @@ "prettier": ">=3" } }, + "node_modules/@wordpress/primitives": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-4.14.0.tgz", + "integrity": "sha512-IZibRVbvWoIQ+uynH0N5bmfWz83hD8lJj6jJFhSFuALK+4U5mRGg6tl0ZV0YllR6cjheD9UhTmfrAcOx+gQAjA==", + "dependencies": { + "@babel/runtime": "7.25.7", + "@wordpress/element": "*", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0" + } + }, + "node_modules/@wordpress/primitives/node_modules/@babel/runtime": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", + "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@wordpress/warning": { "version": "2.58.0", "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.58.0.tgz", @@ -5563,7 +6000,6 @@ "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -5585,7 +6021,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "peer": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -5619,7 +6054,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5722,7 +6156,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -5731,7 +6164,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5824,11 +6256,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-move": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/array-move/-/array-move-4.0.0.tgz", + "integrity": "sha512-+RY54S8OuVvg94THpneQvFRmqWdAHeqtMzgMW6JNurHxe8rsS07cHQdfGkXnTUXiBcyZ0j3SiDIxxj0RPiqCkQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, "engines": { "node": ">=8" } @@ -6124,6 +6566,43 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/babel-plugin-macros/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.12", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", @@ -6215,8 +6694,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/bare-events": { "version": "2.5.0", @@ -6381,7 +6859,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -6390,7 +6867,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, "dependencies": { "fill-range": "^7.1.1" }, @@ -6519,7 +6995,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -6528,7 +7003,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -6623,7 +7097,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -6634,7 +7107,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6650,7 +7122,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dev": true, "dependencies": { "camel-case": "^4.1.2", "capital-case": "^1.0.4", @@ -6925,6 +7396,14 @@ "node": ">=0.8" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -6958,7 +7437,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6969,8 +7447,7 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/color-string": { "version": "1.9.1", @@ -7078,8 +7555,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/confusing-browser-globals": { "version": "1.0.11", @@ -7110,7 +7586,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -7324,7 +7799,6 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7679,6 +8153,11 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -7794,7 +8273,6 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, "dependencies": { "ms": "^2.1.3" }, @@ -7905,7 +8383,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, "peer": true }, "node_modules/deepmerge": { @@ -8106,7 +8583,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, "dependencies": { "path-type": "^4.0.0" }, @@ -8130,7 +8606,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, "peer": true, "dependencies": { "esutils": "^2.0.2" @@ -8238,7 +8713,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -8348,7 +8822,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -8546,7 +9019,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { "node": ">=10" }, @@ -8590,7 +9062,6 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -9288,14 +9759,12 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "peer": true }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "peer": true, "dependencies": { "balanced-match": "^1.0.0", @@ -9306,7 +9775,6 @@ "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, "peer": true, "dependencies": { "esrecurse": "^4.3.0", @@ -9323,7 +9791,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -9336,7 +9803,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "peer": true, "dependencies": { "locate-path": "^6.0.0", @@ -9353,7 +9819,6 @@ "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, "peer": true, "dependencies": { "type-fest": "^0.20.2" @@ -9369,7 +9834,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "peer": true, "dependencies": { "argparse": "^2.0.1" @@ -9382,7 +9846,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "peer": true, "dependencies": { "p-locate": "^5.0.0" @@ -9398,7 +9861,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "peer": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -9411,7 +9873,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "peer": true, "dependencies": { "p-limit": "^3.0.2" @@ -9427,7 +9888,6 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, "peer": true, "engines": { "node": ">=10" @@ -9440,7 +9900,6 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, "peer": true, "dependencies": { "acorn": "^8.9.0", @@ -9458,7 +9917,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -9484,7 +9942,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -9496,7 +9953,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -9508,7 +9964,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -9517,7 +9972,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9677,8 +10131,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-diff": { "version": "1.3.0", @@ -9696,7 +10149,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -9712,7 +10164,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -9723,14 +10174,12 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, "peer": true }, "node_modules/fast-uri": { @@ -9753,7 +10202,6 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -9807,7 +10255,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, "peer": true, "dependencies": { "flat-cache": "^3.0.4" @@ -9820,7 +10267,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9883,6 +10329,11 @@ "integrity": "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==", "dev": true }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -9900,7 +10351,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, "peer": true, "dependencies": { "flatted": "^3.2.9", @@ -9915,7 +10365,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", - "dev": true, "peer": true }, "node_modules/follow-redirects": { @@ -10007,8 +10456,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", @@ -10028,7 +10476,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10161,7 +10608,6 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10181,7 +10627,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -10199,7 +10644,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -10209,7 +10653,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10262,7 +10705,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } @@ -10287,7 +10729,6 @@ "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -10331,8 +10772,7 @@ "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" }, "node_modules/gzip-size": { "version": "6.0.0", @@ -10378,7 +10818,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -10438,7 +10877,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -10459,12 +10897,24 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dev": true, "dependencies": { "capital-case": "^1.0.4", "tslib": "^2.0.3" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -10863,7 +11313,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, "engines": { "node": ">= 4" } @@ -10918,7 +11367,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -10934,7 +11382,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } @@ -10984,7 +11431,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -11007,7 +11453,6 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -11016,8 +11461,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", @@ -11091,8 +11535,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-async-function": { "version": "2.0.0", @@ -11180,7 +11623,6 @@ "version": "2.15.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "dev": true, "dependencies": { "hasown": "^2.0.2" }, @@ -11240,7 +11682,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -11297,7 +11738,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -11342,7 +11782,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -11366,7 +11805,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, "peer": true, "engines": { "node": ">=8" @@ -11385,8 +11823,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -11570,8 +12006,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", @@ -12457,7 +12892,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -12469,7 +12903,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, "peer": true }, "node_modules/json-parse-better-errors": { @@ -12481,20 +12914,17 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, "peer": true }, "node_modules/json2php": { @@ -12534,7 +12964,6 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, "peer": true, "dependencies": { "json-buffer": "3.0.1" @@ -12606,7 +13035,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "peer": true, "dependencies": { "prelude-ls": "^1.2.1", @@ -12631,8 +13059,7 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/lint-staged": { "version": "15.2.10", @@ -12948,7 +13375,6 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, "peer": true }, "node_modules/lodash.truncate": { @@ -13157,7 +13583,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -13265,6 +13690,11 @@ "node": ">= 4.0.0" } }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -13448,7 +13878,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -13466,7 +13895,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -13581,7 +14009,6 @@ "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -13645,8 +14072,7 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/multicast-dns": { "version": "7.2.5", @@ -13703,8 +14129,7 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "node_modules/negotiator": { "version": "0.6.4", @@ -13731,7 +14156,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -14289,7 +14713,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -14339,7 +14762,6 @@ "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, "peer": true, "dependencies": { "deep-is": "^0.1.3", @@ -14389,7 +14811,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -14453,7 +14874,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -14463,7 +14883,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -14489,7 +14908,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -14528,7 +14946,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -14538,7 +14955,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -14548,7 +14964,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -14557,7 +14972,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -14566,7 +14980,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -14574,8 +14987,7 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-to-regexp": { "version": "0.1.10", @@ -14587,7 +14999,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "engines": { "node": ">=8" } @@ -14595,14 +15006,12 @@ "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -16208,7 +16617,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, "peer": true, "engines": { "node": ">= 0.8.0" @@ -16368,7 +16776,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, "engines": { "node": ">=6" } @@ -16414,7 +16821,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -16510,7 +16916,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "dev": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -16518,6 +16923,18 @@ "node": ">=0.10.0" } }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -16678,8 +17095,7 @@ "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regenerator-transform": { "version": "0.15.2", @@ -16811,7 +17227,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -16889,7 +17304,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -16906,7 +17320,6 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -16930,7 +17343,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -17097,6 +17509,14 @@ "node": ">=v12.22.7" } }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/schema-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", @@ -17230,7 +17650,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -17431,7 +17850,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -17443,7 +17861,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -17565,7 +17982,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, "engines": { "node": ">=8" } @@ -17609,7 +18025,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -17990,7 +18405,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -18036,7 +18450,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" }, @@ -18324,6 +18737,11 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, "node_modules/sugarss": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-4.0.1.tgz", @@ -18344,7 +18762,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -18373,7 +18790,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -18612,6 +19028,10 @@ "streamx": "^2.15.0" } }, + "node_modules/tenup-block-theme": { + "resolved": "themes/10up-block-theme", + "link": true + }, "node_modules/tenup-plugin": { "resolved": "mu-plugins/10up-plugin", "link": true @@ -18790,7 +19210,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, "peer": true }, "node_modules/through": { @@ -18827,7 +19246,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -18891,7 +19309,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", - "dev": true, "engines": { "node": ">=16" }, @@ -18935,8 +19352,7 @@ "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -18975,7 +19391,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, "peer": true, "dependencies": { "prelude-ls": "^1.2.1" @@ -19095,8 +19510,6 @@ "version": "5.6.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", - "dev": true, - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -19218,7 +19631,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -19227,7 +19639,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -19236,7 +19647,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -19805,7 +20215,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -19899,12 +20308,22 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, "peer": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/wp-types": { + "version": "3.66.1", + "resolved": "https://registry.npmjs.org/wp-types/-/wp-types-3.66.1.tgz", + "integrity": "sha512-f0llrGik5sKF38t3sgSFUwU0IQ5ljZwii+rf4gUDv462OiCspuu52uTI9UOPpQqX0JNKUvAAik5Bm/KyYbjkcw==", + "dependencies": { + "typescript": ">=3" + }, + "funding": { + "url": "https://github.com/sponsors/johnbillion" + } + }, "node_modules/wrap-ansi": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", @@ -19987,8 +20406,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "4.0.2", @@ -20189,7 +20607,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -20197,6 +20614,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "themes/10up-block-theme": { + "version": "1.0.0", + "dependencies": { + "@10up/block-components": "^1.19.4", + "clsx": "^2.1.1" + }, + "devDependencies": { + "10up-toolkit": "^6.3.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, "themes/10up-theme": { "name": "tenup-theme", "version": "1.0.0", diff --git a/themes/10up-block-theme/includes/blocks.php b/themes/10up-block-theme/includes/blocks.php index c0e00e42..fe4f0c6b 100644 --- a/themes/10up-block-theme/includes/blocks.php +++ b/themes/10up-block-theme/includes/blocks.php @@ -7,6 +7,8 @@ namespace TenupBlockTheme\Blocks; +use function TenupBlockTheme\Utility\get_asset_info; + /** * Set up theme defaults and register supported WordPress features. * @@ -54,22 +56,12 @@ function enqueue_theme_block_styles() { foreach ( $stylesheets as $stylesheet_path ) { $block_type = str_replace( TENUP_BLOCK_THEME_DIST_PATH . '/blocks/autoenqueue/', '', $stylesheet_path ); $block_type = str_replace( '.css', '', $block_type ); - $asset_file = TENUP_BLOCK_THEME_DIST_PATH . 'blocks/autoenqueue/' . $block_type . '.asset.php'; - - if ( ! file_exists( $asset_file ) ) { - $asset_file = require $asset_file; - } else { - $asset_file = [ - 'version' => filemtime( $stylesheet_path ), - 'dependencies' => [], - ]; - } wp_register_style( "tenup-theme-{$block_type}", TENUP_BLOCK_THEME_DIST_URL . 'blocks/autoenqueue/' . $block_type . '.css', - $asset_file['dependencies'], - $asset_file['version'] + get_asset_info( 'blocks/autoenqueue/' . $block_type, 'dependencies' ), + get_asset_info( 'blocks/autoenqueue/' . $block_type, 'version' ), ); wp_enqueue_block_style( @@ -84,8 +76,8 @@ function enqueue_theme_block_styles() { wp_enqueue_script( $block_type, TENUP_BLOCK_THEME_DIST_URL . 'blocks/autoenqueue/' . $block_type . '.js', - $asset_file['dependencies'], - $asset_file['version'], + get_asset_info( 'blocks/autoenqueue/' . $block_type, 'dependencies' ), + get_asset_info( 'blocks/autoenqueue/' . $block_type, 'version' ), true ); } diff --git a/themes/10up-block-theme/includes/utility.php b/themes/10up-block-theme/includes/utility.php index 68146b4f..ebbb5b64 100755 --- a/themes/10up-block-theme/includes/utility.php +++ b/themes/10up-block-theme/includes/utility.php @@ -25,6 +25,8 @@ function get_asset_info( $slug, $attribute = null ) { $asset = require TENUP_BLOCK_THEME_PATH . 'dist/js/' . $slug . '.asset.php'; } elseif ( file_exists( TENUP_BLOCK_THEME_PATH . 'dist/css/' . $slug . '.asset.php' ) ) { $asset = require TENUP_BLOCK_THEME_PATH . 'dist/css/' . $slug . '.asset.php'; + } elseif ( file_exists( TENUP_BLOCK_THEME_PATH . 'dist/' . $slug . '.asset.php' ) ) { + $asset = require TENUP_BLOCK_THEME_PATH . 'dist/' . $slug . '.asset.php'; } else { $asset = [ 'version' => TENUP_BLOCK_THEME_VERSION, diff --git a/themes/10up-block-theme/package.json b/themes/10up-block-theme/package.json index 66459aa8..45ad8871 100644 --- a/themes/10up-block-theme/package.json +++ b/themes/10up-block-theme/package.json @@ -1,5 +1,5 @@ { - "name": "tenup-theme", + "name": "tenup-block-theme", "version": "1.0.0", "scripts": { "start": "npm run watch", From 623807c2f02b757f318b247c5c05a9f4ca47b073 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:40:30 +0100 Subject: [PATCH 15/20] fix add --passWithNoTests flag to test command --- themes/10up-block-theme/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/10up-block-theme/package.json b/themes/10up-block-theme/package.json index 45ad8871..0b329520 100644 --- a/themes/10up-block-theme/package.json +++ b/themes/10up-block-theme/package.json @@ -9,7 +9,7 @@ "format-js": "10up-toolkit format-js", "lint-js": "10up-toolkit lint-js", "lint-style": "10up-toolkit lint-style", - "test": "10up-toolkit test-unit-jest", + "test": "10up-toolkit test-unit-jest --passWithNoTests", "clean-dist": "rm -rf ./dist", "scaffold:block": "cd includes/blocks/ && wp-create-block --no-plugin --template ../../../../bin/create-block-template" }, From 6f3a7277b335671c1419edd920fb8040f503f69e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:44:54 +0100 Subject: [PATCH 16/20] add file comments --- .editorconfig | 2 +- themes/10up-block-theme/assets/css/base/index.css | 2 ++ themes/10up-block-theme/assets/css/components/index.css | 1 + themes/10up-block-theme/assets/css/templates/index.css | 1 + themes/10up-block-theme/assets/css/utilities/index.css | 2 ++ 5 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.editorconfig b/.editorconfig index df13f286..9c5408bf 100755 --- a/.editorconfig +++ b/.editorconfig @@ -7,7 +7,7 @@ insert_final_newline = true trim_trailing_whitespace = true indent_style = tab -[{*.json,*.yml,.babelrc,.bowerrc,.browserslistrc,.postcssrc}] +[{*.json,*.yml,.babelrc,.bowerrc,.browserslistrc,.postcssrc, .eslintrc, .stylelintrc}] indent_style = space indent_size = 2 diff --git a/themes/10up-block-theme/assets/css/base/index.css b/themes/10up-block-theme/assets/css/base/index.css index 91fd5398..73134d0c 100644 --- a/themes/10up-block-theme/assets/css/base/index.css +++ b/themes/10up-block-theme/assets/css/base/index.css @@ -1,3 +1,5 @@ +/* --- Base --- */ + @import url("reset.css"); @import url("link.css"); @import url("layout.css"); diff --git a/themes/10up-block-theme/assets/css/components/index.css b/themes/10up-block-theme/assets/css/components/index.css index e69de29b..5bb52faa 100644 --- a/themes/10up-block-theme/assets/css/components/index.css +++ b/themes/10up-block-theme/assets/css/components/index.css @@ -0,0 +1 @@ +/* --- Components --- */ diff --git a/themes/10up-block-theme/assets/css/templates/index.css b/themes/10up-block-theme/assets/css/templates/index.css index e69de29b..85f37d1f 100644 --- a/themes/10up-block-theme/assets/css/templates/index.css +++ b/themes/10up-block-theme/assets/css/templates/index.css @@ -0,0 +1 @@ +/* --- Templates --- */ diff --git a/themes/10up-block-theme/assets/css/utilities/index.css b/themes/10up-block-theme/assets/css/utilities/index.css index 9c4c957f..fc0fc976 100644 --- a/themes/10up-block-theme/assets/css/utilities/index.css +++ b/themes/10up-block-theme/assets/css/utilities/index.css @@ -1 +1,3 @@ +/* --- Utilities --- */ + @import url("visually-hidden.css"); From 21e6f26b21f73c7529afda6717c5ac9529d2a40b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:48:38 +0100 Subject: [PATCH 17/20] remove empty file --- themes/10up-block-theme/assets/css/base/index.css | 1 - themes/10up-block-theme/assets/css/base/link.css | 11 ----------- 2 files changed, 12 deletions(-) delete mode 100644 themes/10up-block-theme/assets/css/base/link.css diff --git a/themes/10up-block-theme/assets/css/base/index.css b/themes/10up-block-theme/assets/css/base/index.css index 73134d0c..20121e0d 100644 --- a/themes/10up-block-theme/assets/css/base/index.css +++ b/themes/10up-block-theme/assets/css/base/index.css @@ -1,6 +1,5 @@ /* --- Base --- */ @import url("reset.css"); -@import url("link.css"); @import url("layout.css"); @import url("align.css"); diff --git a/themes/10up-block-theme/assets/css/base/link.css b/themes/10up-block-theme/assets/css/base/link.css deleted file mode 100644 index 252111b8..00000000 --- a/themes/10up-block-theme/assets/css/base/link.css +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Ensure that we are not overriding the editor styles of the - * WordPress Components. - * - * This is a workaround for: https://github.com/WordPress/gutenberg/issues/10178 - * - * using :where to prevent the specificity increase of using :not - */ -a:where(:not(.components-external-link, :has(> img:only-child), .wp-element-button)) { - -} From 39338d5008195d66b9296d680d3f13f6f1f37acc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 10:56:52 +0100 Subject: [PATCH 18/20] simplify theme.json --- .../styles/surface-primary.json | 2 +- .../styles/surface-secondary.json | 2 +- .../styles/surface-tertiary.json | 2 +- themes/10up-block-theme/theme.json | 228 +----------------- 4 files changed, 4 insertions(+), 230 deletions(-) diff --git a/themes/10up-block-theme/styles/surface-primary.json b/themes/10up-block-theme/styles/surface-primary.json index 4da5111a..e706b638 100644 --- a/themes/10up-block-theme/styles/surface-primary.json +++ b/themes/10up-block-theme/styles/surface-primary.json @@ -1,5 +1,5 @@ { - "$schema": "https://schemas.wp.org/wp/6.6/theme.json", + "$schema": "https://schemas.wp.org/wp/6.7/theme.json", "version": 3, "title": "Primary", "slug": "primary", diff --git a/themes/10up-block-theme/styles/surface-secondary.json b/themes/10up-block-theme/styles/surface-secondary.json index 7faee321..939837fe 100644 --- a/themes/10up-block-theme/styles/surface-secondary.json +++ b/themes/10up-block-theme/styles/surface-secondary.json @@ -1,5 +1,5 @@ { - "$schema": "https://schemas.wp.org/wp/6.6/theme.json", + "$schema": "https://schemas.wp.org/wp/6.7/theme.json", "version": 3, "title": "Secondary", "slug": "secondary", diff --git a/themes/10up-block-theme/styles/surface-tertiary.json b/themes/10up-block-theme/styles/surface-tertiary.json index bb7bcddf..d737e1c6 100644 --- a/themes/10up-block-theme/styles/surface-tertiary.json +++ b/themes/10up-block-theme/styles/surface-tertiary.json @@ -1,5 +1,5 @@ { - "$schema": "https://schemas.wp.org/wp/6.6/theme.json", + "$schema": "https://schemas.wp.org/wp/6.7/theme.json", "version": 3, "title": "Tertiary", "slug": "tertiary", diff --git a/themes/10up-block-theme/theme.json b/themes/10up-block-theme/theme.json index 26fb2bf7..d88cd907 100644 --- a/themes/10up-block-theme/theme.json +++ b/themes/10up-block-theme/theme.json @@ -5,238 +5,13 @@ "defaultDuotone": false, "defaultGradients": false, "defaultPalette": false, - "palette": [ - { - "color": "var(--wp--custom--color--text--primary)", - "name": "Text Primary", - "slug": "text-primary" - }, - { - "color": "var(--wp--custom--color--text--secondary)", - "name": "Text Secondary", - "slug": "text-secondary" - }, - { - "color": "var(--wp--custom--color--text--inverted)", - "name": "Text Inverted", - "slug": "text-inverted" - }, - { - "color": "var(--wp--custom--color--brand--900)", - "name": "Brand", - "slug": "brand" - }, - { - "color": "var(--wp--custom--color--brand--300)", - "name": "Brand Light", - "slug": "brand-light" - }, - { - "color": "var(--wp--custom--color--surface--primary)", - "name": "Surface Primary", - "slug": "surface-primary" - }, - { - "color": "var(--wp--custom--color--surface--secondary)", - "name": "Surface Secondary", - "slug": "surface-secondary" - }, - { - "color": "var(--wp--custom--color--surface--inverted)", - "name": "Surface Inverted", - "slug": "surface-inverted" - } - ] + "palette": [] }, "custom": { - "color": { - "border": { - "brand": "var(--wp--custom--color--brand--900)", - "disabled": "var(--wp--custom--color--neutrals--500)", - "error": "var(--wp--custom--color--feedback--error--900)", - "primary": "var(--wp--custom--color--neutrals--300)", - "secondary": "var(--wp--custom--color--neutrals--900)", - "success": "var(--wp--custom--color--feedback--success--500)", - "tertiary": "var(--wp--custom--color--neutrals--700)" - }, - "brand": { - "300": "var(--wp--custom--color--primary--300)", - "500": "var(--wp--custom--color--primary--500)", - "900": "var(--wp--custom--color--primary--900)" - }, - "neutrals": { - "transparent": "transparent", - "white": "#ffffff", - "100": "#F1F3F4", - "300": "#D5D7D8", - "700": "#5F6368", - "900": "#141414", - "black": "#000000" - }, - "primary": { - "300": "#F63456", - "500": "#E12243", - "900": "#B30826" - }, - "secondary": { - "300": "#ABFCF2", - "900": "#1FB4AF" - }, - "feedback": { - "error-900": "#E80A31", - "error-500": "#F51D43", - "success-900": "#00BA27", - "success-500": "#00AC30" - }, - "surface": { - "brand": "var(--wp--custom--color--brand--900)", - "brand-light": "var(--wp--custom--color--brand--300)", - "disabled": "var(--wp--custom--color--neutrals--500)", - "inverted": "var(--wp--custom--color--neutrals--900)", - "primary": "var(--wp--custom--color--neutrals--white)", - "secondary": "var(--wp--custom--color--neutrals--100)" - }, - "text": { - "brand": "var(--wp--custom--color--primary--900)", - "disabled": "var(--wp--custom--color--neutrals--500)", - "inverted": "var(--wp--custom--color--neutrals--white)", - "primary": "var(--wp--custom--color--neutrals--900)", - "secondary": "var(--wp--custom--color--neutrals--700)" - }, - "button": { - "text": { - "default": "var(--wp--custom--color--button--primary--text--default)", - "hover": "var(--wp--custom--color--button--primary--text--hover)", - "disabled": "var(--wp--custom--color--button--primary--text--disabled)" - }, - "background": { - "default": "var(--wp--custom--color--button--primary--background--default)", - "hover": "var(--wp--custom--color--button--primary--background--hover)", - "disabled": "var(--wp--custom--color--button--primary--background--disabled)" - }, - "border": { - "default": "var(--wp--custom--color--button--primary--border--default)", - "hover": "var(--wp--custom--color--button--primary--border--hover)", - "disabled": "var(--wp--custom--color--button--primary--border--disabled)" - }, - "icon": { - "default": "var(--wp--custom--color--button--primary--icon--default)", - "hover": "var(--wp--custom--color--button--primary--icon--hover)", - "disabled": "var(--wp--custom--color--button--primary--icon--disabled)" - }, - "primary": { - "text": { - "default": "var(--wp--custom--color--text--inverted)", - "hover": "var(--wp--custom--color--text--inverted)", - "disabled": "var(--wp--custom--color--text--disabled)" - }, - "background": { - "default": "var(--wp--custom--color--surface--brand)", - "hover": "var(--wp--custom--color--surface--inverted)", - "disabled": "var(--wp--custom--color--surface--disabled)" - }, - "border": { - "default": "var(--wp--custom--color--surface--brand)", - "hover": "var(--wp--custom--color--surface--inverted)", - "disabled": "var(--wp--custom--color--surface--disabled)" - }, - "icon": { - "default": "var(--wp--custom--color--button--text--default)", - "hover": "var(--wp--custom--color--button--text--hover)", - "disabled": "var(--wp--custom--color--button--text--disabled)" - } - }, - "secondary": { - "text": { - "default": "var(--wp--custom--color--text--inverted)", - "hover": "var(--wp--custom--color--text--inverted)", - "disabled": "var(--wp--custom--color--text--disabled)" - }, - "background": { - "default": "var(--wp--custom--color--surface--inverted)", - "hover": "var(--wp--custom--color--surface--inverted)", - "disabled": "var(--wp--custom--color--surface--disabled)" - }, - "border": { - "default": "var(--wp--custom--color--surface--inverted)", - "hover": "var(--wp--custom--color--surface--inverted)", - "disabled": "var(--wp--custom--color--surface--disabled)" - }, - "icon": { - "default": "var(--wp--custom--color--button--text--default)", - "hover": "var(--wp--custom--color--button--text--hover)", - "disabled": "var(--wp--custom--color--button--text--disabled)" - } - } - } - }, - "font": { - "lineHeight": { - "120": "1.2", - "140": "1.4", - "150": "1.5" - }, - "size": { - "body": { - "lg": "var(--wp--custom--font--size--21)", - "md": "var(--wp--custom--font--size--16)", - "sm": "var(--wp--custom--font--size--12)" - }, - "button": { - "lg": "var(--wp--custom--font--size--16)", - "sm": "var(--wp--custom--font--size--14)" - }, - "display": { - "lg": { - "fluid": "true", - "max": "var(--wp--custom--font--size--90)", - "min": "var(--wp--custom--font--size--58)" - }, - "md": { - "fluid": "true", - "max": "var(--wp--custom--font--size--67))", - "min": "var(--wp--custom--font--size--54)" - } - }, - "eyebrow": { - "lg": "var(--wp--custom--font--size--12)", - "sm": "var(--wp--custom--font--size--9)" - }, - "heading": { - "1": "var(--wp--custom--font--size--51)", - "2": "var(--wp--custom--font--size--38)", - "3": "var(--wp--custom--font--size--28)", - "4": "var(--wp--custom--font--size--21)", - "5": "var(--wp--custom--font--size--16)", - "6": "var(--wp--custom--font--size--14)" - }, - "subHead": { - "lg": "var(--wp--custom--font--size--28)", - "md": "var(--wp--custom--font--size--16)", - "sm": "var(--wp--custom--font--size--12)" - }, - "9": "0.5625rem", - "12": "0.75rem", - "14": "0.875rem", - "16": "1rem", - "21": "1.3125rem", - "28": "1.75rem", - "38": "2.375rem", - "51": "3.1875rem", - "54": "3.375rem", - "58": "3.625rem", - "67": "4.1875rem", - "72": "4.5rem", - "90": "5.625rem" - } - }, "full-viewport-width": "calc(100vw - var(--wp--custom--scrollbar-width, 0px))", "main-content-width-side-spacing": "calc((var(--wp--custom--full-viewport-width) - var(--wp--style--global--content-size)) / 2)", "main-wide-width-side-spacing": "calc((var(--wp--custom--full-viewport-width) - var(--wp--style--global--wide-size)) / 2)", "scrollbar-width": "0px", - "search-block-height": "var(--wp--preset--spacing--32-48, 3rem)", - "search-block-icon-only-button-width": "var(--wp--preset--spacing--32-48, 3rem)", - "search-block-padding-inline": "var(--wp--preset--spacing--16, 1rem)", "site-content-width": "calc(var(--wp--custom--full-viewport-width) - (2 * var(--wp--custom--site-outer-padding)))", "site-outer-padding": "max(var(--wp--preset--spacing--16, 1rem), env(safe-area-inset-left))", "spacing": { @@ -369,7 +144,6 @@ }, "typography": { "fontFamily": "var(--wp--preset--font-family--system-font)", - "fontSize": "var(--wp--preset--font-size--body)", "lineHeight": "1.5" } }, From 65e30b41016ff18b6a2eb715f5679f340b29c732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Thu, 2 Jan 2025 11:07:41 +0100 Subject: [PATCH 19/20] clean up --- themes/10up-block-theme/parts/footer.html | 12 +++++++----- themes/10up-block-theme/parts/header.html | 4 ++-- themes/10up-block-theme/patterns/.gitkeep | 0 themes/10up-block-theme/patterns/card.php | 4 ++-- themes/10up-block-theme/templates/404.html | 8 ++++---- themes/10up-block-theme/templates/index.html | 10 +++++----- themes/10up-block-theme/templates/single.html | 2 +- 7 files changed, 21 insertions(+), 19 deletions(-) delete mode 100644 themes/10up-block-theme/patterns/.gitkeep diff --git a/themes/10up-block-theme/parts/footer.html b/themes/10up-block-theme/parts/footer.html index b87a46c9..3dd405cf 100644 --- a/themes/10up-block-theme/parts/footer.html +++ b/themes/10up-block-theme/parts/footer.html @@ -1,5 +1,5 @@ -<!-- wp:group {"style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"bottom":"var:preset|spacing|40-64","top":"var:preset|spacing|40-64"}}},"backgroundColor":"surface-secondary","layout":{"type":"constrained"}} --> -<div class="wp-block-group has-surface-secondary-background-color has-background" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--40-64);padding-bottom:var(--wp--preset--spacing--40-64)"> +<!-- wp:group {"style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"bottom":"var:preset|spacing|40-64","top":"var:preset|spacing|40-64"}}},"layout":{"type":"constrained"}} --> +<div class="wp-block-group" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--40-64);padding-bottom:var(--wp--preset--spacing--40-64)"> <!-- wp:columns {"align":"wide","style":{"spacing":{"blockGap":{"top":"clamp(1.50rem, calc(1.43rem + 0.37vw), 1.69rem)","left":"150px"}}}} --> <div class="wp-block-columns alignwide"> @@ -76,14 +76,16 @@ </div> <!-- /wp:columns --> - <!-- wp:separator {"align":"wide","className":"is-style-default","style":{"spacing":{"margin":{"top":"var:preset|spacing|24"}},"color":{"background":"#e1e3e4"}},"separatorHeight":"1px"} --> - <hr class="wp-block-separator alignwide has-text-color has-alpha-channel-opacity has-background is-style-default" style="margin-top:var(--wp--preset--spacing--24);background-color:#e1e3e4;color:#e1e3e4" /> + <!-- wp:separator {"align":"wide","style":{"spacing":{"margin":{"top":"var:preset|spacing|24"}}}} --> + <hr class="wp-block-separator alignwide has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--24)"/> <!-- /wp:separator --> <!-- wp:group {"align":"wide","style":{"spacing":{"margin":{"top":"var:preset|spacing|24"}},"border":{"radius":"2px","top":{"width":"0px","style":"none"},"right":[],"bottom":[],"left":[]}},"layout":{"type":"flex","flexWrap":"nowrap","justifyContent":"space-between"}} --> <div class="wp-block-group alignwide" style="border-radius:2px;border-top-style:none;border-top-width:0px;margin-top:var(--wp--preset--spacing--24)"> - <!-- wp:tenup/copyright {"suffix":"10up Inc."} /--> + <!-- wp:paragraph --> + <p>© 10up Inc.</p> + <!-- /wp:paragraph --> <!-- wp:template-part {"slug":"site-footer-legal-navigation-area"} /--> </div> diff --git a/themes/10up-block-theme/parts/header.html b/themes/10up-block-theme/parts/header.html index c2eda986..1871aeb2 100644 --- a/themes/10up-block-theme/parts/header.html +++ b/themes/10up-block-theme/parts/header.html @@ -1,5 +1,5 @@ -<!-- wp:group {"style":{"border":{"bottom":{"color":"var:preset|color|surface-secondary","width":"1px"},"top":[],"right":[],"left":[]}},"layout":{"type":"constrained"}} --> -<div class="wp-block-group" style="border-bottom-color:var(--wp--preset--color--surface-secondary);border-bottom-width:1px"> +<!-- wp:group {"layout":{"type":"constrained"}} --> +<div class="wp-block-group"> <!-- wp:group {"align":"wide","className":"is-style-default","style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"top":"var:preset|spacing|24","bottom":"var:preset|spacing|24"}}},"layout":{"type":"flex","flexWrap":"nowrap","justifyContent":"space-between"}} --> <div class="wp-block-group alignwide is-style-default" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--24);padding-bottom:var(--wp--preset--spacing--24)"> diff --git a/themes/10up-block-theme/patterns/.gitkeep b/themes/10up-block-theme/patterns/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/themes/10up-block-theme/patterns/card.php b/themes/10up-block-theme/patterns/card.php index 6f3f8974..155c72b2 100644 --- a/themes/10up-block-theme/patterns/card.php +++ b/themes/10up-block-theme/patterns/card.php @@ -10,8 +10,8 @@ ?> -<!-- wp:group {"align":"wide","style":{"spacing":{"blockGap":"0"},"border":{"radius":"8px","width":"1px"}},"borderColor":"surface-secondary","layout":{"type":"flex","orientation":"vertical","justifyContent":"stretch","flexWrap":"nowrap"}} --> -<div class="wp-block-group alignwide has-border-color has-surface-secondary-border-color" style="border-width:1px;border-radius:8px"> +<!-- wp:group {"align":"wide","style":{"spacing":{"blockGap":"0"},"border":{"radius":"8px","width":"1px"}},"layout":{"type":"flex","orientation":"vertical","justifyContent":"stretch","flexWrap":"nowrap"}} --> +<div class="wp-block-group alignwide" style="border-width:1px;border-radius:8px"> <!-- wp:post-featured-image {"aspectRatio":"16/9","width":"100%","height":"","style":{"border":{"radius":{"topRight":"8px","bottomRight":"0px","topLeft":"8px","bottomLeft":"0px"}}},"displayFallback":true} /--> diff --git a/themes/10up-block-theme/templates/404.html b/themes/10up-block-theme/templates/404.html index 65a7165c..2801851b 100644 --- a/themes/10up-block-theme/templates/404.html +++ b/themes/10up-block-theme/templates/404.html @@ -1,10 +1,10 @@ <!-- wp:template-part {"slug":"header","tagName":"header"} /--> -<!-- wp:group {"tagName":"main","className":"is-style-default","style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"top":"var(--wp--preset--spacing--32-48)","bottom":"var(--wp--preset--spacing--32-48)"}},"elements":{"link":{"color":{"text":"var:preset|color|base"}}},"dimensions":{"minHeight":""}},"backgroundColor":"gray-000","layout":{"type":"constrained"}} --> -<main class="wp-block-group is-style-default has-gray-000-background-color has-background has-link-color" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"> +<!-- wp:group {"tagName":"main","className":"is-style-default","style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"top":"var(--wp--preset--spacing--32-48)","bottom":"var(--wp--preset--spacing--32-48)"}},"dimensions":{"minHeight":""}},"layout":{"type":"constrained"}} --> +<main class="wp-block-group is-style-default " style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"> - <!-- wp:group {"align":"wide","style":{"spacing":{"padding":{"top":"var(--wp--preset--spacing--40-72)","bottom":"var(--wp--preset--spacing--40-72)","right":"var(--wp--preset--spacing--32-40)","left":"var(--wp--preset--spacing--32-40)"}}},"backgroundColor":"base","layout":{"type":"constrained"}} --> - <div class="wp-block-group alignwide has-base-background-color has-background" style="padding-top:var(--wp--preset--spacing--40-72);padding-right:var(--wp--preset--spacing--32-40);padding-bottom:var(--wp--preset--spacing--40-72);padding-left:var(--wp--preset--spacing--32-40)"> + <!-- wp:group {"align":"wide","style":{"spacing":{"padding":{"top":"var(--wp--preset--spacing--40-72)","bottom":"var(--wp--preset--spacing--40-72)","right":"var(--wp--preset--spacing--32-40)","left":"var(--wp--preset--spacing--32-40)"}}},"layout":{"type":"constrained"}} --> + <div class="wp-block-group alignwide" style="padding-top:var(--wp--preset--spacing--40-72);padding-right:var(--wp--preset--spacing--32-40);padding-bottom:var(--wp--preset--spacing--40-72);padding-left:var(--wp--preset--spacing--32-40)"> <!-- wp:heading {"level":1,"style":{"spacing":{"margin":{"top":"0","right":"0","bottom":"0","left":"0"}}},"fontSize":"plus-7"} --> <h1 class="wp-block-heading has-plus-7-font-size" style="margin-top:0;margin-right:0;margin-bottom:0;margin-left:0">404</h1> diff --git a/themes/10up-block-theme/templates/index.html b/themes/10up-block-theme/templates/index.html index cc190ff4..5a928531 100644 --- a/themes/10up-block-theme/templates/index.html +++ b/themes/10up-block-theme/templates/index.html @@ -1,19 +1,19 @@ <!-- wp:template-part {"slug":"header","tagName":"header"} /--> -<!-- wp:group {"tagName":"main","className":"is-style-default","style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"top":"var(--wp--preset--spacing--32-48)","bottom":"var(--wp--preset--spacing--32-48)"}}},"backgroundColor":"gray-000","layout":{"type":"constrained"}} --> -<main class="wp-block-group is-style-default has-gray-000-background-color has-background" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"> +<!-- wp:group {"tagName":"main","className":"is-style-default","style":{"spacing":{"margin":{"top":"0","bottom":"0"},"padding":{"top":"var(--wp--preset--spacing--32-48)","bottom":"var(--wp--preset--spacing--32-48)"}}},"layout":{"type":"constrained"}} --> +<main class="wp-block-group" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--32-48);padding-bottom:var(--wp--preset--spacing--32-48)"> <!-- wp:query {"queryId":0,"query":{"perPage":9,"pages":0,"offset":0,"postType":"post","order":"desc","orderBy":"date","author":"","search":"","exclude":[],"sticky":"","inherit":true,"taxQuery":null,"parents":[]},"align":"wide","layout":{"type":"default"}} --> <div class="wp-block-query alignwide"> - <!-- wp:post-template {"style":{"elements":{"link":{"color":{"text":"var:preset|color|primary"}}}},"layout":{"type":"grid","columnCount":null,"minimumColumnWidth":"21rem"},"isEntireCardClickable":true} --> + <!-- wp:post-template {"layout":{"type":"grid","columnCount":null,"minimumColumnWidth":"21rem"},"isEntireCardClickable":true} --> <!-- wp:pattern {"slug":"tenup-theme/base-card"} /--> <!-- /wp:post-template --> - <!-- wp:group {"align":"wide","style":{"spacing":{"margin":{"top":"var(--wp--preset--spacing--60)"}},"elements":{"link":{"color":{"text":"var:preset|color|contrast"}}}},"textColor":"contrast","layout":{"type":"default"}} --> - <div class="wp-block-group alignwide has-contrast-color has-text-color has-link-color" style="margin-top:var(--wp--preset--spacing--60)"> + <!-- wp:group {"align":"wide","style":{"spacing":{"margin":{"top":"var(--wp--preset--spacing--60)"}}},"layout":{"type":"default"}} --> + <div class="wp-block-group alignwide" style="margin-top:var(--wp--preset--spacing--60)"> <!-- wp:query-pagination {"paginationArrow":"arrow","align":"wide","layout":{"type":"flex","justifyContent":"space-between"}} --> diff --git a/themes/10up-block-theme/templates/single.html b/themes/10up-block-theme/templates/single.html index 34219e19..e3a359bd 100644 --- a/themes/10up-block-theme/templates/single.html +++ b/themes/10up-block-theme/templates/single.html @@ -6,7 +6,7 @@ <!-- wp:group {"style":{"spacing":{"margin":{"top":"var(--wp--preset--spacing--32-40)"}}},"layout":{"type":"constrained"}} --> <div class="wp-block-group" style="margin-top:var(--wp--preset--spacing--32-40)"> - <!-- wp:post-terms {"term":"category","style":{"elements":{"link":{"color":{"text":"var:preset|color|primary"}}}},"textColor":"primary"} /--> + <!-- wp:post-terms {"term":"category"} /--> <!-- wp:post-title {"level":1} /--> <!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|8"}},"layout":{"type":"flex","flexWrap":"nowrap"}} --> From 145ba1767dc3d658690f91c4d82a8b575c03f185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Ka=CC=88gy?= <mail@fabian-kaegy.de> Date: Mon, 20 Jan 2025 10:09:03 +0100 Subject: [PATCH 20/20] fix theme name --- themes/10up-block-theme/style.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/themes/10up-block-theme/style.css b/themes/10up-block-theme/style.css index f9c8fdf0..1df49214 100755 --- a/themes/10up-block-theme/style.css +++ b/themes/10up-block-theme/style.css @@ -1,10 +1,10 @@ /** - * Theme Name: TENUP Block Theme + * Theme Name: 10up Block Theme * Theme URI: https://10up.com - * Description: A theme for the TENUP project. + * Description: Project description. * Author: 10up * Author URI: https://10up.com * Version: 1.0.0 * Tags: - * Text Domain: tenup-theme + * Text Domain: tenup-block-theme */