@goldencomm/create-baseline 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -79
- package/index.mjs +175 -283
- package/package.json +13 -30
- package/templates/ci/bitbucket-pipelines.yml +29 -0
- package/templates/code-connect/accordion-item.figma.ts +45 -0
- package/templates/code-connect/accordion.figma.ts +40 -0
- package/templates/code-connect/alert.figma.ts +378 -0
- package/templates/code-connect/avatar-badge.figma.ts +14 -0
- package/templates/code-connect/avatar-group-count.figma.ts +16 -0
- package/templates/code-connect/avatar-group.figma.ts +30 -0
- package/templates/code-connect/avatar.figma.ts +34 -0
- package/templates/code-connect/badge.figma.ts +383 -0
- package/templates/code-connect/breadcrumb-item.figma.ts +23 -0
- package/templates/code-connect/breadcrumb-separator.figma.ts +12 -0
- package/templates/code-connect/breadcrumb.figma.ts +32 -0
- package/templates/code-connect/button-group.figma.ts +28 -0
- package/templates/code-connect/button.figma.ts +408 -0
- package/templates/code-connect/card.figma.ts +74 -0
- package/templates/code-connect/carousel.figma.ts +27 -0
- package/templates/code-connect/checkbox.figma.ts +34 -0
- package/templates/code-connect/columns-1.figma.ts +43 -0
- package/templates/code-connect/columns-2.figma.ts +49 -0
- package/templates/code-connect/columns-3.figma.ts +45 -0
- package/templates/code-connect/columns-4.figma.ts +46 -0
- package/templates/code-connect/container.figma.ts +42 -0
- package/templates/code-connect/dialog.figma.ts +72 -0
- package/templates/code-connect/drawer.figma.ts +69 -0
- package/templates/code-connect/dropdown-menu-checkbox-item.figma.ts +19 -0
- package/templates/code-connect/dropdown-menu-item.figma.ts +25 -0
- package/templates/code-connect/dropdown-menu-label.figma.ts +16 -0
- package/templates/code-connect/dropdown-menu-radio-item.figma.ts +19 -0
- package/templates/code-connect/dropdown-menu-separator.figma.ts +12 -0
- package/templates/code-connect/dropdown-menu-sub-trigger.figma.ts +22 -0
- package/templates/code-connect/dropdown-menu.figma.ts +44 -0
- package/templates/code-connect/field-horizontal.figma.ts +73 -0
- package/templates/code-connect/field.figma.ts +68 -0
- package/templates/code-connect/hover-card.figma.ts +41 -0
- package/templates/code-connect/icon-button.figma.ts +382 -0
- package/templates/code-connect/input-group.figma.ts +51 -0
- package/templates/code-connect/input-otp.figma.ts +40 -0
- package/templates/code-connect/input.figma.ts +42 -0
- package/templates/code-connect/item-group.figma.ts +30 -0
- package/templates/code-connect/item.figma.ts +50 -0
- package/templates/code-connect/kbd.figma.ts +16 -0
- package/templates/code-connect/media.figma.ts +35 -0
- package/templates/code-connect/meter.figma.ts +31 -0
- package/templates/code-connect/native-select.figma.ts +36 -0
- package/templates/code-connect/navigation-menu-link.figma.ts +33 -0
- package/templates/code-connect/navigation-menu-trigger.figma.ts +28 -0
- package/templates/code-connect/navigation-menu.figma.ts +30 -0
- package/templates/code-connect/pagination-ellipsis.figma.ts +11 -0
- package/templates/code-connect/pagination-link.figma.ts +24 -0
- package/templates/code-connect/pagination-next.figma.ts +17 -0
- package/templates/code-connect/pagination-previous.figma.ts +17 -0
- package/templates/code-connect/pagination.figma.ts +33 -0
- package/templates/code-connect/panel.figma.ts +40 -0
- package/templates/code-connect/popover.figma.ts +58 -0
- package/templates/code-connect/progress.figma.ts +34 -0
- package/templates/code-connect/radio.figma.ts +29 -0
- package/templates/code-connect/section.figma.ts +42 -0
- package/templates/code-connect/select.figma.ts +30 -0
- package/templates/code-connect/sheet.figma.ts +70 -0
- package/templates/code-connect/sidebar-menu-button.figma.ts +36 -0
- package/templates/code-connect/sidebar.figma.ts +44 -0
- package/templates/code-connect/spinner.figma.ts +13 -0
- package/templates/code-connect/switch.figma.ts +32 -0
- package/templates/code-connect/table-cell.figma.ts +21 -0
- package/templates/code-connect/table.figma.ts +62 -0
- package/templates/code-connect/tabs-trigger.figma.ts +369 -0
- package/templates/code-connect/tabs.figma.ts +28 -0
- package/templates/code-connect/textarea.figma.ts +32 -0
- package/templates/code-connect/toggle-group.figma.ts +24 -0
- package/templates/code-connect/toggle.figma.ts +385 -0
- package/templates/code-connect/tooltip.figma.ts +29 -0
- package/templates/next/app/globals.css +13 -12
- package/templates/next/app/page.tsx +38 -26
- package/templates/next/public/placeholder.svg +1 -0
- package/templates/shopify/.gitattributes +1 -0
- package/templates/shopify/.shopifyignore +23 -0
- package/templates/shopify/.theme-check.yml +1 -0
- package/templates/shopify/CODE_OF_CONDUCT.md +132 -0
- package/templates/shopify/CONTRIBUTING.md +24 -0
- package/templates/shopify/LICENSE.md +9 -0
- package/templates/shopify/README.md +160 -0
- package/templates/shopify/assets/carousel.js +2 -0
- package/templates/shopify/assets/critical.css +117 -0
- package/templates/shopify/assets/icon-account.svg +6 -0
- package/templates/shopify/assets/icon-cart.svg +5 -0
- package/templates/shopify/assets/predictive-search.js +65 -0
- package/templates/shopify/assets/shoppy-x-ray.svg +1 -0
- package/templates/shopify/blocks/_accordion-item.liquid +44 -0
- package/templates/shopify/blocks/_card-footer.liquid +26 -0
- package/templates/shopify/blocks/_carousel-slide.liquid +21 -0
- package/templates/shopify/blocks/_column.liquid +30 -0
- package/templates/shopify/blocks/_dialog-footer.liquid +28 -0
- package/templates/shopify/blocks/_sheet-footer.liquid +28 -0
- package/templates/shopify/blocks/_tab.liquid +21 -0
- package/templates/shopify/blocks/accordion.liquid +40 -0
- package/templates/shopify/blocks/blog-posts.liquid +70 -0
- package/templates/shopify/blocks/button.figma.ts +359 -0
- package/templates/shopify/blocks/button.liquid +477 -0
- package/templates/shopify/blocks/card.liquid +73 -0
- package/templates/shopify/blocks/carousel.liquid +47 -0
- package/templates/shopify/blocks/columns.liquid +73 -0
- package/templates/shopify/blocks/contact-form.liquid +69 -0
- package/templates/shopify/blocks/container.liquid +29 -0
- package/templates/shopify/blocks/dialog.liquid +77 -0
- package/templates/shopify/blocks/group.liquid +105 -0
- package/templates/shopify/blocks/heading.liquid +57 -0
- package/templates/shopify/blocks/icon-button.figma.ts +358 -0
- package/templates/shopify/blocks/media.liquid +80 -0
- package/templates/shopify/blocks/navigation-menu.liquid +23 -0
- package/templates/shopify/blocks/panel.liquid +64 -0
- package/templates/shopify/blocks/popover.liquid +88 -0
- package/templates/shopify/blocks/section-heading.liquid +68 -0
- package/templates/shopify/blocks/sheet.liquid +90 -0
- package/templates/shopify/blocks/tabs.liquid +58 -0
- package/templates/shopify/blocks/text.liquid +59 -0
- package/templates/shopify/build-js.mjs +22 -0
- package/templates/shopify/config/settings_data.json +182 -0
- package/templates/shopify/config/settings_schema.json +365 -0
- package/templates/shopify/layout/password.liquid +19 -0
- package/templates/shopify/layout/theme.liquid +57 -0
- package/templates/shopify/locales/en.default.json +58 -0
- package/templates/shopify/locales/en.default.schema.json +303 -0
- package/templates/shopify/package-lock.json +521 -0
- package/templates/shopify/package.json +17 -0
- package/templates/shopify/sections/404.liquid +23 -0
- package/templates/shopify/sections/article.liquid +81 -0
- package/templates/shopify/sections/baseline-header.liquid +236 -0
- package/templates/shopify/sections/baseline-kitchen-sink.liquid +988 -0
- package/templates/shopify/sections/baseline-section.liquid +661 -0
- package/templates/shopify/sections/blog.liquid +36 -0
- package/templates/shopify/sections/cart.liquid +65 -0
- package/templates/shopify/sections/collection.liquid +54 -0
- package/templates/shopify/sections/collections.liquid +83 -0
- package/templates/shopify/sections/custom-section.liquid +60 -0
- package/templates/shopify/sections/footer-group.json +25 -0
- package/templates/shopify/sections/footer.liquid +57 -0
- package/templates/shopify/sections/header-group.json +22 -0
- package/templates/shopify/sections/page.liquid +18 -0
- package/templates/shopify/sections/password.liquid +36 -0
- package/templates/shopify/sections/product.liquid +60 -0
- package/templates/shopify/sections/search.liquid +73 -0
- package/templates/shopify/snippets/accordion-item.figma.ts +34 -0
- package/templates/shopify/snippets/accordion-item.liquid +36 -0
- package/templates/shopify/snippets/accordion.figma.ts +37 -0
- package/templates/shopify/snippets/accordion.liquid +169 -0
- package/templates/shopify/snippets/alert.figma.ts +31 -0
- package/templates/shopify/snippets/alert.liquid +104 -0
- package/templates/shopify/snippets/avatar-group.figma.ts +17 -0
- package/templates/shopify/snippets/avatar-group.liquid +66 -0
- package/templates/shopify/snippets/avatar.figma.ts +24 -0
- package/templates/shopify/snippets/avatar.liquid +143 -0
- package/templates/shopify/snippets/badge.figma.ts +355 -0
- package/templates/shopify/snippets/badge.liquid +111 -0
- package/templates/shopify/snippets/baseline-schemes.liquid +44 -0
- package/templates/shopify/snippets/baseline-tokens.liquid +712 -0
- package/templates/shopify/snippets/breadcrumb.figma.ts +12 -0
- package/templates/shopify/snippets/breadcrumb.liquid +124 -0
- package/templates/shopify/snippets/button-group.liquid +148 -0
- package/templates/shopify/snippets/button.liquid +144 -0
- package/templates/shopify/snippets/card.figma.ts +43 -0
- package/templates/shopify/snippets/card.liquid +196 -0
- package/templates/shopify/snippets/carousel-item.liquid +18 -0
- package/templates/shopify/snippets/carousel.figma.ts +28 -0
- package/templates/shopify/snippets/carousel.liquid +121 -0
- package/templates/shopify/snippets/checkbox.liquid +147 -0
- package/templates/shopify/snippets/container.liquid +52 -0
- package/templates/shopify/snippets/css-variables.liquid +18 -0
- package/templates/shopify/snippets/dialog.figma.ts +36 -0
- package/templates/shopify/snippets/dialog.liquid +217 -0
- package/templates/shopify/snippets/field-separator.liquid +68 -0
- package/templates/shopify/snippets/field.liquid +187 -0
- package/templates/shopify/snippets/icon.liquid +101 -0
- package/templates/shopify/snippets/image.liquid +64 -0
- package/templates/shopify/snippets/input-group.liquid +196 -0
- package/templates/shopify/snippets/input.liquid +126 -0
- package/templates/shopify/snippets/item-group.liquid +31 -0
- package/templates/shopify/snippets/item.figma.ts +40 -0
- package/templates/shopify/snippets/item.liquid +162 -0
- package/templates/shopify/snippets/media.figma.ts +33 -0
- package/templates/shopify/snippets/media.liquid +273 -0
- package/templates/shopify/snippets/meta-tags.liquid +105 -0
- package/templates/shopify/snippets/meter.figma.ts +24 -0
- package/templates/shopify/snippets/meter.liquid +118 -0
- package/templates/shopify/snippets/native-select.liquid +141 -0
- package/templates/shopify/snippets/navigation-menu-item.figma.ts +23 -0
- package/templates/shopify/snippets/navigation-menu-item.liquid +40 -0
- package/templates/shopify/snippets/navigation-menu-link.figma.ts +27 -0
- package/templates/shopify/snippets/navigation-menu-link.liquid +31 -0
- package/templates/shopify/snippets/navigation-menu.figma.ts +12 -0
- package/templates/shopify/snippets/navigation-menu.liquid +300 -0
- package/templates/shopify/snippets/pagination.figma.ts +13 -0
- package/templates/shopify/snippets/pagination.liquid +208 -0
- package/templates/shopify/snippets/popover.figma.ts +41 -0
- package/templates/shopify/snippets/popover.liquid +203 -0
- package/templates/shopify/snippets/progress.figma.ts +26 -0
- package/templates/shopify/snippets/progress.liquid +114 -0
- package/templates/shopify/snippets/radio.liquid +145 -0
- package/templates/shopify/snippets/sheet.figma.ts +37 -0
- package/templates/shopify/snippets/sheet.liquid +197 -0
- package/templates/shopify/snippets/sidebar-menu-item.liquid +34 -0
- package/templates/shopify/snippets/sidebar-menu-sub-link.liquid +17 -0
- package/templates/shopify/snippets/sidebar-menu.liquid +139 -0
- package/templates/shopify/snippets/spinner.liquid +42 -0
- package/templates/shopify/snippets/switch.liquid +180 -0
- package/templates/shopify/snippets/tab.figma.ts +353 -0
- package/templates/shopify/snippets/tab.liquid +33 -0
- package/templates/shopify/snippets/tabs.figma.ts +21 -0
- package/templates/shopify/snippets/tabs.liquid +260 -0
- package/templates/shopify/snippets/text-styles.liquid +45 -0
- package/templates/shopify/snippets/textarea.liquid +103 -0
- package/templates/shopify/snippets/toggle-group.figma.ts +30 -0
- package/templates/shopify/snippets/toggle-group.liquid +46 -0
- package/templates/shopify/snippets/toggle.figma.ts +357 -0
- package/templates/shopify/snippets/toggle.liquid +104 -0
- package/templates/shopify/snippets/typeset.liquid +498 -0
- package/templates/shopify/src/carousel.js +94 -0
- package/templates/shopify/templates/404.json +20 -0
- package/templates/shopify/templates/article.json +20 -0
- package/templates/shopify/templates/blog.json +20 -0
- package/templates/shopify/templates/cart.json +20 -0
- package/templates/shopify/templates/collection.json +20 -0
- package/templates/shopify/templates/gift_card.liquid +73 -0
- package/templates/shopify/templates/index.json +18 -0
- package/templates/shopify/templates/list-collections.json +20 -0
- package/templates/shopify/templates/page.json +20 -0
- package/templates/shopify/templates/password.json +21 -0
- package/templates/shopify/templates/product.json +20 -0
- package/templates/shopify/templates/search.json +20 -0
- package/templates/skills/baseline-client-tokens/SKILL.md +74 -0
- package/templates/wordpress/.ddev/commands/web/seed +258 -3
- package/templates/wordpress/.ddev/config.yaml +10 -7
- package/templates/wordpress/.ddev/seed/gravityforms-contact.json +1 -0
- package/templates/wordpress/README.md +37 -39
- package/templates/wordpress/auth.json.example +1 -1
- package/templates/wordpress/composer.json +88 -84
- package/templates/wordpress/theme/README.md +3 -0
- package/templates/wordpress/theme/acf-json/.gitkeep +0 -0
- package/templates/wordpress/theme/acf-json/group_baseline_alert.json +83 -0
- package/templates/wordpress/theme/acf-json/group_baseline_avatar.json +82 -0
- package/templates/wordpress/theme/acf-json/group_baseline_avatar_group.json +35 -0
- package/templates/wordpress/theme/acf-json/group_baseline_badge.json +93 -0
- package/templates/wordpress/theme/acf-json/group_baseline_carousel.json +21 -0
- package/templates/wordpress/theme/acf-json/group_baseline_carousel_slide.json +16 -0
- package/templates/wordpress/theme/acf-json/group_baseline_dialog.json +68 -0
- package/templates/wordpress/theme/acf-json/group_baseline_dialog_footer.json +23 -0
- package/templates/wordpress/theme/acf-json/group_baseline_item.json +101 -0
- package/templates/wordpress/theme/acf-json/group_baseline_item_group.json +26 -0
- package/templates/wordpress/theme/acf-json/group_baseline_sheet.json +104 -0
- package/templates/wordpress/theme/acf-json/group_baseline_sheet_footer.json +31 -0
- package/templates/wordpress/theme/assets/app.css +2 -0
- package/templates/wordpress/theme/assets/editor.css +2 -0
- package/templates/wordpress/theme/assets/images/placeholder.svg +1 -0
- package/templates/wordpress/theme/assets/js/carousel-editor.js +85 -0
- package/templates/wordpress/theme/assets/js/carousel.js +2 -0
- package/templates/wordpress/theme/assets/js/core-button-editor.js +243 -0
- package/templates/wordpress/theme/assets/js/core-layout-editor.js +144 -0
- package/templates/wordpress/theme/assets/js/core-navigation.js +11 -0
- package/templates/wordpress/theme/assets/js/media-editor.js +52 -0
- package/templates/wordpress/theme/assets/js/media.js +38 -0
- package/templates/wordpress/theme/assets/tokens.css +1030 -0
- package/templates/wordpress/theme/blocks/alert/alert.figma.ts +32 -0
- package/templates/wordpress/theme/blocks/alert/block.json +24 -0
- package/templates/wordpress/theme/blocks/alert/render.php +30 -0
- package/templates/wordpress/theme/blocks/avatar/block.json +24 -0
- package/templates/wordpress/theme/blocks/avatar/render.php +35 -0
- package/templates/wordpress/theme/blocks/avatar-group/avatar-group.figma.ts +16 -0
- package/templates/wordpress/theme/blocks/avatar-group/block.json +25 -0
- package/templates/wordpress/theme/blocks/avatar-group/render.php +27 -0
- package/templates/wordpress/theme/blocks/badge/badge.figma.ts +349 -0
- package/templates/wordpress/theme/blocks/badge/block.json +23 -0
- package/templates/wordpress/theme/blocks/badge/render.php +28 -0
- package/templates/wordpress/theme/blocks/carousel/block.json +25 -0
- package/templates/wordpress/theme/blocks/carousel/carousel.figma.ts +22 -0
- package/templates/wordpress/theme/blocks/carousel/render.php +54 -0
- package/templates/wordpress/theme/blocks/carousel-slide/block.json +24 -0
- package/templates/wordpress/theme/blocks/carousel-slide/render.php +13 -0
- package/templates/wordpress/theme/blocks/dialog/block.json +24 -0
- package/templates/wordpress/theme/blocks/dialog/dialog.figma.ts +36 -0
- package/templates/wordpress/theme/blocks/dialog/render.php +41 -0
- package/templates/wordpress/theme/blocks/dialog-footer/block.json +25 -0
- package/templates/wordpress/theme/blocks/dialog-footer/render.php +18 -0
- package/templates/wordpress/theme/blocks/item/block.json +25 -0
- package/templates/wordpress/theme/blocks/item/item.figma.ts +43 -0
- package/templates/wordpress/theme/blocks/item/render.php +38 -0
- package/templates/wordpress/theme/blocks/item-group/block.json +25 -0
- package/templates/wordpress/theme/blocks/item-group/item-group.figma.ts +28 -0
- package/templates/wordpress/theme/blocks/item-group/render.php +22 -0
- package/templates/wordpress/theme/blocks/sheet/block.json +24 -0
- package/templates/wordpress/theme/blocks/sheet/render.php +39 -0
- package/templates/wordpress/theme/blocks/sheet/sheet.figma.ts +38 -0
- package/templates/wordpress/theme/blocks/sheet-footer/block.json +25 -0
- package/templates/wordpress/theme/blocks/sheet-footer/render.php +18 -0
- package/templates/wordpress/theme/build-js.mjs +22 -0
- package/templates/wordpress/theme/code-connect/accordion-item.figma.ts +47 -0
- package/templates/wordpress/theme/code-connect/accordion.figma.ts +37 -0
- package/templates/wordpress/theme/code-connect/avatar.figma.ts +25 -0
- package/templates/wordpress/theme/code-connect/breadcrumb.figma.ts +12 -0
- package/templates/wordpress/theme/code-connect/button.figma.ts +360 -0
- package/templates/wordpress/theme/code-connect/card.figma.ts +45 -0
- package/templates/wordpress/theme/code-connect/icon-button.figma.ts +359 -0
- package/templates/wordpress/theme/code-connect/navigation-menu.figma.ts +20 -0
- package/templates/wordpress/theme/code-connect/pagination.figma.ts +17 -0
- package/templates/wordpress/theme/code-connect/popover.figma.ts +42 -0
- package/templates/wordpress/theme/code-connect/tabs.figma.ts +32 -0
- package/templates/wordpress/theme/code-connect/toggle-group.figma.ts +34 -0
- package/templates/wordpress/theme/code-connect/toggle.figma.ts +356 -0
- package/templates/wordpress/theme/composer.json +7 -0
- package/templates/wordpress/theme/footer.php +4 -0
- package/templates/wordpress/theme/functions.php +86 -0
- package/templates/wordpress/theme/header.php +17 -0
- package/templates/wordpress/theme/inc/acf.php +13 -0
- package/templates/wordpress/theme/inc/blocks.php +41 -0
- package/templates/wordpress/theme/inc/carousel.php +36 -0
- package/templates/wordpress/theme/inc/components/alert.php +83 -0
- package/templates/wordpress/theme/inc/components/avatar.php +111 -0
- package/templates/wordpress/theme/inc/components/badge.php +96 -0
- package/templates/wordpress/theme/inc/components/button.php +77 -0
- package/templates/wordpress/theme/inc/components/dialog.php +98 -0
- package/templates/wordpress/theme/inc/components/item.php +111 -0
- package/templates/wordpress/theme/inc/components/popover.php +125 -0
- package/templates/wordpress/theme/inc/components/sheet.php +88 -0
- package/templates/wordpress/theme/inc/components/toggle.php +127 -0
- package/templates/wordpress/theme/inc/core-button.php +96 -0
- package/templates/wordpress/theme/inc/core-card.php +30 -0
- package/templates/wordpress/theme/inc/core-layout.php +76 -0
- package/templates/wordpress/theme/inc/core-navigation.php +31 -0
- package/templates/wordpress/theme/inc/core-pagination.php +87 -0
- package/templates/wordpress/theme/inc/header.php +39 -0
- package/templates/wordpress/theme/inc/icons.generated.php +94 -0
- package/templates/wordpress/theme/inc/icons.php +70 -0
- package/templates/wordpress/theme/inc/looks.generated.php +18 -0
- package/templates/wordpress/theme/inc/media.php +183 -0
- package/templates/wordpress/theme/inc/sections.php +16 -0
- package/templates/wordpress/theme/index.php +24 -0
- package/templates/wordpress/theme/package-lock.json +1637 -0
- package/templates/wordpress/theme/package.json +23 -0
- package/templates/wordpress/theme/parts/header.html +23 -0
- package/templates/wordpress/theme/patterns/blog-card-grid.php +41 -0
- package/templates/wordpress/theme/patterns/card.php +46 -0
- package/templates/wordpress/theme/patterns/contact-centered.php +22 -0
- package/templates/wordpress/theme/patterns/cta-left.php +25 -0
- package/templates/wordpress/theme/patterns/faq-centered.php +36 -0
- package/templates/wordpress/theme/patterns/header-inline.php +33 -0
- package/templates/wordpress/theme/patterns/header-stacked.php +25 -0
- package/templates/wordpress/theme/patterns/hero-centered.php +28 -0
- package/templates/wordpress/theme/patterns/hero-split.php +41 -0
- package/templates/wordpress/theme/patterns/section.php +28 -0
- package/templates/wordpress/theme/src/app.css +45 -0
- package/templates/wordpress/theme/src/carousel.css +93 -0
- package/templates/wordpress/theme/src/carousel.js +94 -0
- package/templates/wordpress/theme/src/checkbox.css +102 -0
- package/templates/wordpress/theme/src/core-accordion.css +158 -0
- package/templates/wordpress/theme/src/core-avatar.css +68 -0
- package/templates/wordpress/theme/src/core-breadcrumbs.css +124 -0
- package/templates/wordpress/theme/src/core-button-editor.css +45 -0
- package/templates/wordpress/theme/src/core-button.css +155 -0
- package/templates/wordpress/theme/src/core-card.css +157 -0
- package/templates/wordpress/theme/src/core-layout.css +73 -0
- package/templates/wordpress/theme/src/core-navigation.css +290 -0
- package/templates/wordpress/theme/src/core-pagination.css +112 -0
- package/templates/wordpress/theme/src/core-table.css +88 -0
- package/templates/wordpress/theme/src/core-tabs.css +86 -0
- package/templates/wordpress/theme/src/dialog.css +29 -0
- package/templates/wordpress/theme/src/editor.css +65 -0
- package/templates/wordpress/theme/src/field.css +95 -0
- package/templates/wordpress/theme/src/fonts.css +3 -0
- package/templates/wordpress/theme/src/gravityforms.css +919 -0
- package/templates/wordpress/theme/src/header.css +80 -0
- package/templates/wordpress/theme/src/icons.generated.css +16 -0
- package/templates/wordpress/theme/src/input-group.css +105 -0
- package/templates/wordpress/theme/src/input.css +116 -0
- package/templates/wordpress/theme/src/item.css +7 -0
- package/templates/wordpress/theme/src/looks.generated.css +358 -0
- package/templates/wordpress/theme/src/media.css +160 -0
- package/templates/wordpress/theme/src/radio.css +88 -0
- package/templates/wordpress/theme/src/sections.css +80 -0
- package/templates/wordpress/theme/src/sheet.css +24 -0
- package/templates/wordpress/theme/src/switch.css +120 -0
- package/templates/wordpress/theme/src/text-styles.css +44 -0
- package/templates/wordpress/theme/src/textarea.css +61 -0
- package/templates/wordpress/theme/src/toggle-group.css +28 -0
- package/templates/wordpress/theme/src/typeset.css +510 -0
- package/templates/wordpress/theme/style.css +13 -0
- package/templates/wordpress/theme/theme.json +362 -0
- package/templates/wordpress/web/wp-config.php +38 -0
- package/templates/wordpress/wp-cli.yml +1 -0
- package/templates/next/.claude/skills/ai-elements/SKILL.md +0 -160
- package/templates/next/.claude/skills/ai-elements/references/agent.md +0 -134
- package/templates/next/.claude/skills/ai-elements/references/artifact.md +0 -84
- package/templates/next/.claude/skills/ai-elements/references/attachments.md +0 -190
- package/templates/next/.claude/skills/ai-elements/references/audio-player.md +0 -134
- package/templates/next/.claude/skills/ai-elements/references/canvas.md +0 -34
- package/templates/next/.claude/skills/ai-elements/references/chain-of-thought.md +0 -81
- package/templates/next/.claude/skills/ai-elements/references/checkpoint.md +0 -183
- package/templates/next/.claude/skills/ai-elements/references/code-block.md +0 -170
- package/templates/next/.claude/skills/ai-elements/references/commit.md +0 -177
- package/templates/next/.claude/skills/ai-elements/references/confirmation.md +0 -262
- package/templates/next/.claude/skills/ai-elements/references/connection.md +0 -34
- package/templates/next/.claude/skills/ai-elements/references/context.md +0 -126
- package/templates/next/.claude/skills/ai-elements/references/controls.md +0 -32
- package/templates/next/.claude/skills/ai-elements/references/conversation.md +0 -224
- package/templates/next/.claude/skills/ai-elements/references/edge.md +0 -52
- package/templates/next/.claude/skills/ai-elements/references/environment-variables.md +0 -102
- package/templates/next/.claude/skills/ai-elements/references/file-tree.md +0 -72
- package/templates/next/.claude/skills/ai-elements/references/image.md +0 -146
- package/templates/next/.claude/skills/ai-elements/references/inline-citation.md +0 -299
- package/templates/next/.claude/skills/ai-elements/references/jsx-preview.md +0 -104
- package/templates/next/.claude/skills/ai-elements/references/message.md +0 -237
- package/templates/next/.claude/skills/ai-elements/references/mic-selector.md +0 -189
- package/templates/next/.claude/skills/ai-elements/references/model-selector.md +0 -112
- package/templates/next/.claude/skills/ai-elements/references/node.md +0 -73
- package/templates/next/.claude/skills/ai-elements/references/open-in-chat.md +0 -67
- package/templates/next/.claude/skills/ai-elements/references/package-info.md +0 -95
- package/templates/next/.claude/skills/ai-elements/references/panel.md +0 -33
- package/templates/next/.claude/skills/ai-elements/references/persona.md +0 -166
- package/templates/next/.claude/skills/ai-elements/references/plan.md +0 -79
- package/templates/next/.claude/skills/ai-elements/references/prompt-input.md +0 -579
- package/templates/next/.claude/skills/ai-elements/references/queue.md +0 -172
- package/templates/next/.claude/skills/ai-elements/references/reasoning.md +0 -238
- package/templates/next/.claude/skills/ai-elements/references/sandbox.md +0 -129
- package/templates/next/.claude/skills/ai-elements/references/schema-display.md +0 -102
- package/templates/next/.claude/skills/ai-elements/references/shimmer.md +0 -48
- package/templates/next/.claude/skills/ai-elements/references/snippet.md +0 -64
- package/templates/next/.claude/skills/ai-elements/references/sources.md +0 -209
- package/templates/next/.claude/skills/ai-elements/references/speech-input.md +0 -163
- package/templates/next/.claude/skills/ai-elements/references/stack-trace.md +0 -224
- package/templates/next/.claude/skills/ai-elements/references/suggestion.md +0 -124
- package/templates/next/.claude/skills/ai-elements/references/task.md +0 -222
- package/templates/next/.claude/skills/ai-elements/references/terminal.md +0 -103
- package/templates/next/.claude/skills/ai-elements/references/test-results.md +0 -157
- package/templates/next/.claude/skills/ai-elements/references/tool.md +0 -285
- package/templates/next/.claude/skills/ai-elements/references/toolbar.md +0 -32
- package/templates/next/.claude/skills/ai-elements/references/transcription.md +0 -120
- package/templates/next/.claude/skills/ai-elements/references/voice-selector.md +0 -241
- package/templates/next/.claude/skills/ai-elements/references/web-preview.md +0 -200
- package/templates/next/.claude/skills/ai-elements/scripts/agent.tsx +0 -61
- package/templates/next/.claude/skills/ai-elements/scripts/artifact.tsx +0 -127
- package/templates/next/.claude/skills/ai-elements/scripts/attachments-inline.tsx +0 -128
- package/templates/next/.claude/skills/ai-elements/scripts/attachments-list.tsx +0 -95
- package/templates/next/.claude/skills/ai-elements/scripts/attachments.tsx +0 -85
- package/templates/next/.claude/skills/ai-elements/scripts/audio-player-remote.tsx +0 -35
- package/templates/next/.claude/skills/ai-elements/scripts/audio-player.tsx +0 -68
- package/templates/next/.claude/skills/ai-elements/scripts/chain-of-thought.tsx +0 -82
- package/templates/next/.claude/skills/ai-elements/scripts/checkpoint.tsx +0 -110
- package/templates/next/.claude/skills/ai-elements/scripts/code-block-dark.tsx +0 -46
- package/templates/next/.claude/skills/ai-elements/scripts/code-block.tsx +0 -120
- package/templates/next/.claude/skills/ai-elements/scripts/commit.tsx +0 -94
- package/templates/next/.claude/skills/ai-elements/scripts/confirmation-accepted.tsx +0 -40
- package/templates/next/.claude/skills/ai-elements/scripts/confirmation-rejected.tsx +0 -40
- package/templates/next/.claude/skills/ai-elements/scripts/confirmation-request.tsx +0 -54
- package/templates/next/.claude/skills/ai-elements/scripts/confirmation.tsx +0 -55
- package/templates/next/.claude/skills/ai-elements/scripts/context.tsx +0 -45
- package/templates/next/.claude/skills/ai-elements/scripts/conversation.tsx +0 -177
- package/templates/next/.claude/skills/ai-elements/scripts/environment-variables.tsx +0 -62
- package/templates/next/.claude/skills/ai-elements/scripts/file-tree-basic.tsx +0 -18
- package/templates/next/.claude/skills/ai-elements/scripts/file-tree-expanded.tsx +0 -21
- package/templates/next/.claude/skills/ai-elements/scripts/file-tree-selection.tsx +0 -24
- package/templates/next/.claude/skills/ai-elements/scripts/file-tree.tsx +0 -42
- package/templates/next/.claude/skills/ai-elements/scripts/image.tsx +0 -20
- package/templates/next/.claude/skills/ai-elements/scripts/inline-citation.tsx +0 -97
- package/templates/next/.claude/skills/ai-elements/scripts/jsx-preview.tsx +0 -104
- package/templates/next/.claude/skills/ai-elements/scripts/message.tsx +0 -365
- package/templates/next/.claude/skills/ai-elements/scripts/mic-selector.tsx +0 -49
- package/templates/next/.claude/skills/ai-elements/scripts/model-selector.tsx +0 -365
- package/templates/next/.claude/skills/ai-elements/scripts/open-in-chat.tsx +0 -33
- package/templates/next/.claude/skills/ai-elements/scripts/package-info.tsx +0 -51
- package/templates/next/.claude/skills/ai-elements/scripts/persona-command.tsx +0 -110
- package/templates/next/.claude/skills/ai-elements/scripts/persona-glint.tsx +0 -110
- package/templates/next/.claude/skills/ai-elements/scripts/persona-halo.tsx +0 -110
- package/templates/next/.claude/skills/ai-elements/scripts/persona-mana.tsx +0 -110
- package/templates/next/.claude/skills/ai-elements/scripts/persona-obsidian.tsx +0 -110
- package/templates/next/.claude/skills/ai-elements/scripts/persona-opal.tsx +0 -110
- package/templates/next/.claude/skills/ai-elements/scripts/plan.tsx +0 -65
- package/templates/next/.claude/skills/ai-elements/scripts/prompt-input-cursor.tsx +0 -502
- package/templates/next/.claude/skills/ai-elements/scripts/prompt-input-tooltip.tsx +0 -44
- package/templates/next/.claude/skills/ai-elements/scripts/prompt-input.tsx +0 -267
- package/templates/next/.claude/skills/ai-elements/scripts/queue-prompt-input.tsx +0 -394
- package/templates/next/.claude/skills/ai-elements/scripts/queue.tsx +0 -295
- package/templates/next/.claude/skills/ai-elements/scripts/reasoning.tsx +0 -71
- package/templates/next/.claude/skills/ai-elements/scripts/sandbox.tsx +0 -178
- package/templates/next/.claude/skills/ai-elements/scripts/schema-display-basic.tsx +0 -9
- package/templates/next/.claude/skills/ai-elements/scripts/schema-display-body.tsx +0 -20
- package/templates/next/.claude/skills/ai-elements/scripts/schema-display-nested.tsx +0 -23
- package/templates/next/.claude/skills/ai-elements/scripts/schema-display-params.tsx +0 -16
- package/templates/next/.claude/skills/ai-elements/scripts/schema-display.tsx +0 -110
- package/templates/next/.claude/skills/ai-elements/scripts/shimmer-duration.tsx +0 -31
- package/templates/next/.claude/skills/ai-elements/scripts/shimmer-elements.tsx +0 -43
- package/templates/next/.claude/skills/ai-elements/scripts/shimmer.tsx +0 -17
- package/templates/next/.claude/skills/ai-elements/scripts/snippet-plain.tsx +0 -19
- package/templates/next/.claude/skills/ai-elements/scripts/snippet.tsx +0 -25
- package/templates/next/.claude/skills/ai-elements/scripts/sources-custom.tsx +0 -39
- package/templates/next/.claude/skills/ai-elements/scripts/sources.tsx +0 -32
- package/templates/next/.claude/skills/ai-elements/scripts/speech-input.tsx +0 -84
- package/templates/next/.claude/skills/ai-elements/scripts/stack-trace-collapsed.tsx +0 -39
- package/templates/next/.claude/skills/ai-elements/scripts/stack-trace-no-internal.tsx +0 -41
- package/templates/next/.claude/skills/ai-elements/scripts/stack-trace.tsx +0 -58
- package/templates/next/.claude/skills/ai-elements/scripts/suggestion-input.tsx +0 -144
- package/templates/next/.claude/skills/ai-elements/scripts/suggestion.tsx +0 -32
- package/templates/next/.claude/skills/ai-elements/scripts/task.tsx +0 -59
- package/templates/next/.claude/skills/ai-elements/scripts/terminal-basic.tsx +0 -7
- package/templates/next/.claude/skills/ai-elements/scripts/terminal-clear.tsx +0 -19
- package/templates/next/.claude/skills/ai-elements/scripts/terminal-streaming.tsx +0 -38
- package/templates/next/.claude/skills/ai-elements/scripts/terminal.tsx +0 -82
- package/templates/next/.claude/skills/ai-elements/scripts/test-results-basic.tsx +0 -27
- package/templates/next/.claude/skills/ai-elements/scripts/test-results-errors.tsx +0 -51
- package/templates/next/.claude/skills/ai-elements/scripts/test-results-suites.tsx +0 -40
- package/templates/next/.claude/skills/ai-elements/scripts/test-results.tsx +0 -102
- package/templates/next/.claude/skills/ai-elements/scripts/tool-input-available.tsx +0 -31
- package/templates/next/.claude/skills/ai-elements/scripts/tool-input-streaming.tsx +0 -30
- package/templates/next/.claude/skills/ai-elements/scripts/tool-output-available.tsx +0 -80
- package/templates/next/.claude/skills/ai-elements/scripts/tool-output-error.tsx +0 -44
- package/templates/next/.claude/skills/ai-elements/scripts/tool.tsx +0 -222
- package/templates/next/.claude/skills/ai-elements/scripts/transcription.tsx +0 -290
- package/templates/next/.claude/skills/ai-elements/scripts/voice-selector.tsx +0 -245
- package/templates/next/.claude/skills/ai-elements/scripts/web-preview.tsx +0 -115
- package/templates/next/.claude/skills/ai-sdk/SKILL.md +0 -78
- package/templates/next/.claude/skills/frontend-design/LICENSE.txt +0 -177
- package/templates/next/.claude/skills/frontend-design/SKILL.md +0 -55
- package/templates/next/.claude/skills/gc-implement-figma-page/SKILL.md +0 -93
- package/templates/next/.claude/skills/migrate-ai-sdk-v6-to-v7/SKILL.md +0 -108
- package/templates/next/.claude/skills/vercel-composition-patterns/AGENTS.md +0 -946
- package/templates/next/.claude/skills/vercel-composition-patterns/README.md +0 -60
- package/templates/next/.claude/skills/vercel-composition-patterns/SKILL.md +0 -89
- package/templates/next/.claude/skills/vercel-composition-patterns/metadata.json +0 -11
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/_sections.md +0 -29
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/_template.md +0 -24
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +0 -100
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/architecture-compound-components.md +0 -112
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +0 -87
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +0 -100
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +0 -42
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/state-context-interface.md +0 -191
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +0 -113
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/state-lift-state.md +0 -125
- package/templates/next/.claude/skills/vercel-react-best-practices/AGENTS.md +0 -3810
- package/templates/next/.claude/skills/vercel-react-best-practices/README.md +0 -123
- package/templates/next/.claude/skills/vercel-react-best-practices/SKILL.md +0 -149
- package/templates/next/.claude/skills/vercel-react-best-practices/metadata.json +0 -15
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/_sections.md +0 -46
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/_template.md +0 -28
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md +0 -56
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -55
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-init-once.md +0 -42
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -39
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -38
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +0 -37
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -82
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -51
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-parallel.md +0 -28
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -99
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md +0 -63
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -60
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -31
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -49
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -35
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -50
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -74
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -71
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -48
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -56
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -107
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -80
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -28
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -70
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -32
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -50
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +0 -60
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -45
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -37
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -49
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -82
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-request-idle-callback.md +0 -105
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -24
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -57
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -26
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -40
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -38
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -46
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +0 -85
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +0 -68
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -28
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +0 -75
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -39
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -45
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -29
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -74
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -58
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -44
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +0 -82
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +0 -64
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -40
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +0 -59
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -73
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -96
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -41
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -76
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -65
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +0 -149
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md +0 -50
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -83
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +0 -34
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-serialization.md +0 -38
- package/templates/next/.claude/skills/web-design-guidelines/SKILL.md +0 -39
- package/templates/next/CLAUDE.md +0 -42
- package/templates/next/README.md +0 -30
- package/templates/next/_gitignore +0 -4
- package/templates/next/app/layout.tsx +0 -44
- package/templates/next/globals.d.ts +0 -8
- package/templates/next/next.config.mjs +0 -6
- package/templates/next/package.json +0 -38
- package/templates/next/postcss.config.mjs +0 -5
- package/templates/next/skills-lock.json +0 -47
- package/templates/next/tsconfig.json +0 -36
- package/templates/shopify-theme/.claude/skills/gc-shopify-block/SKILL.md +0 -44
- package/templates/shopify-theme/.claude/skills/shopify-dev/SKILL.md +0 -51
- package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/log_skill_use.mjs +0 -205
- package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/search_docs.mjs +0 -272
- package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/track-telemetry.ps1 +0 -361
- package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/track-telemetry.sh +0 -527
- package/templates/shopify-theme/.claude/skills/shopify-liquid/SKILL.md +0 -343
- package/templates/shopify-theme/.claude/skills/shopify-liquid/blocks/hero-slide.liquid +0 -342
- package/templates/shopify-theme/.claude/skills/shopify-liquid/config/settings_schema.json +0 -1
- package/templates/shopify-theme/.claude/skills/shopify-liquid/featured-collection.liquid +0 -457
- package/templates/shopify-theme/.claude/skills/shopify-liquid/locales/en.default.json +0 -10
- package/templates/shopify-theme/.claude/skills/shopify-liquid/locales/en.default.schema.json +0 -103
- package/templates/shopify-theme/.claude/skills/shopify-liquid/package.json +0 -10
- package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/search_docs.mjs +0 -759
- package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/track-telemetry.ps1 +0 -361
- package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/track-telemetry.sh +0 -527
- package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/validate.mjs +0 -654
- package/templates/shopify-theme/.claude/skills/shopify-liquid/sections/hero-banner.liquid +0 -329
- package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/SKILL.md +0 -165
- package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/scripts/log_skill_use.mjs +0 -205
- package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/scripts/track-telemetry.ps1 +0 -361
- package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/scripts/track-telemetry.sh +0 -527
- package/templates/shopify-theme/.shopifyignore +0 -9
- package/templates/shopify-theme/CLAUDE.md +0 -51
- package/templates/shopify-theme/README.md +0 -92
- package/templates/shopify-theme/assets/baseline.css +0 -8390
- package/templates/shopify-theme/assets/swiper-element-bundle.min.js +0 -14
- package/templates/shopify-theme/blocks/_accordion.liquid +0 -59
- package/templates/shopify-theme/blocks/_carousel-slide.liquid +0 -24
- package/templates/shopify-theme/blocks/_modal-body.liquid +0 -18
- package/templates/shopify-theme/blocks/_modal-footer.liquid +0 -36
- package/templates/shopify-theme/blocks/_modal-header.liquid +0 -19
- package/templates/shopify-theme/blocks/_modal-media.liquid +0 -37
- package/templates/shopify-theme/blocks/accordion-group.liquid +0 -53
- package/templates/shopify-theme/blocks/alert.liquid +0 -92
- package/templates/shopify-theme/blocks/avatar-group.liquid +0 -51
- package/templates/shopify-theme/blocks/avatar.liquid +0 -56
- package/templates/shopify-theme/blocks/badge.liquid +0 -33
- package/templates/shopify-theme/blocks/breadcrumb.liquid +0 -45
- package/templates/shopify-theme/blocks/button.liquid +0 -51
- package/templates/shopify-theme/blocks/buttons.liquid +0 -41
- package/templates/shopify-theme/blocks/card.liquid +0 -67
- package/templates/shopify-theme/blocks/carousel.liquid +0 -55
- package/templates/shopify-theme/blocks/column.liquid +0 -33
- package/templates/shopify-theme/blocks/image.liquid +0 -37
- package/templates/shopify-theme/blocks/modal.liquid +0 -52
- package/templates/shopify-theme/blocks/popover.liquid +0 -24
- package/templates/shopify-theme/blocks/skeleton.liquid +0 -22
- package/templates/shopify-theme/blocks/spinner.liquid +0 -22
- package/templates/shopify-theme/blocks/split.liquid +0 -39
- package/templates/shopify-theme/blocks/tab.liquid +0 -19
- package/templates/shopify-theme/blocks/tabs.liquid +0 -78
- package/templates/shopify-theme/blocks/tags.liquid +0 -55
- package/templates/shopify-theme/blocks/text.liquid +0 -55
- package/templates/shopify-theme/blocks/tooltip.liquid +0 -50
- package/templates/shopify-theme/blocks/typography.liquid +0 -90
- package/templates/shopify-theme/config/settings_data.json +0 -4
- package/templates/shopify-theme/config/settings_schema.json +0 -10
- package/templates/shopify-theme/layout/theme.liquid +0 -21
- package/templates/shopify-theme/locales/en.default.json +0 -5
- package/templates/shopify-theme/locales/en.default.schema.json +0 -131
- package/templates/shopify-theme/package.json +0 -21
- package/templates/shopify-theme/scripts/sync-tokens.mjs +0 -32
- package/templates/shopify-theme/sections/baseline-components.liquid +0 -81
- package/templates/shopify-theme/skills-lock.json +0 -23
- package/templates/shopify-theme/snippets/lucide.liquid +0 -34
- package/templates/shopify-theme/snippets/pagination.liquid +0 -44
- package/templates/shopify-theme/templates/collection.json +0 -13
- package/templates/shopify-theme/templates/gift_card.liquid +0 -5
- package/templates/shopify-theme/templates/index.json +0 -135
- package/templates/shopify-theme/templates/list-collections.json +0 -13
- package/templates/shopify-theme/templates/product.json +0 -13
- package/templates/wordpress/.claude/CLAUDE.md +0 -37
- package/templates/wordpress/.claude/skills/wp-block-development/SKILL.md +0 -174
- package/templates/wordpress/.claude/skills/wp-block-development/references/attributes-and-serialization.md +0 -22
- package/templates/wordpress/.claude/skills/wp-block-development/references/block-json.md +0 -49
- package/templates/wordpress/.claude/skills/wp-block-development/references/creating-new-blocks.md +0 -46
- package/templates/wordpress/.claude/skills/wp-block-development/references/debugging.md +0 -36
- package/templates/wordpress/.claude/skills/wp-block-development/references/deprecations.md +0 -24
- package/templates/wordpress/.claude/skills/wp-block-development/references/dynamic-rendering.md +0 -23
- package/templates/wordpress/.claude/skills/wp-block-development/references/inner-blocks.md +0 -25
- package/templates/wordpress/.claude/skills/wp-block-development/references/registration.md +0 -30
- package/templates/wordpress/.claude/skills/wp-block-development/references/supports-and-wrappers.md +0 -18
- package/templates/wordpress/.claude/skills/wp-block-development/references/tooling-and-testing.md +0 -21
- package/templates/wordpress/.claude/skills/wp-block-development/scripts/list_blocks.mjs +0 -121
- package/templates/wordpress/.claude/skills/wp-block-themes/SKILL.md +0 -116
- package/templates/wordpress/.claude/skills/wp-block-themes/references/creating-new-block-theme.md +0 -37
- package/templates/wordpress/.claude/skills/wp-block-themes/references/debugging.md +0 -24
- package/templates/wordpress/.claude/skills/wp-block-themes/references/patterns.md +0 -18
- package/templates/wordpress/.claude/skills/wp-block-themes/references/style-variations.md +0 -14
- package/templates/wordpress/.claude/skills/wp-block-themes/references/templates-and-parts.md +0 -16
- package/templates/wordpress/.claude/skills/wp-block-themes/references/theme-json.md +0 -59
- package/templates/wordpress/.claude/skills/wp-block-themes/scripts/detect_block_themes.mjs +0 -117
- package/templates/wordpress/.claude/skills/wp-performance/SKILL.md +0 -146
- package/templates/wordpress/.claude/skills/wp-performance/references/autoload-options.md +0 -24
- package/templates/wordpress/.claude/skills/wp-performance/references/cron.md +0 -20
- package/templates/wordpress/.claude/skills/wp-performance/references/database.md +0 -20
- package/templates/wordpress/.claude/skills/wp-performance/references/http-api.md +0 -15
- package/templates/wordpress/.claude/skills/wp-performance/references/measurement.md +0 -21
- package/templates/wordpress/.claude/skills/wp-performance/references/object-cache.md +0 -24
- package/templates/wordpress/.claude/skills/wp-performance/references/query-monitor-headless.md +0 -38
- package/templates/wordpress/.claude/skills/wp-performance/references/server-timing.md +0 -22
- package/templates/wordpress/.claude/skills/wp-performance/references/wp-cli-doctor.md +0 -24
- package/templates/wordpress/.claude/skills/wp-performance/references/wp-cli-profile.md +0 -32
- package/templates/wordpress/.claude/skills/wp-performance/scripts/perf_inspect.mjs +0 -128
- package/templates/wordpress/.claude/skills/wp-plugin-development/SKILL.md +0 -112
- package/templates/wordpress/.claude/skills/wp-plugin-development/references/data-and-cron.md +0 -19
- package/templates/wordpress/.claude/skills/wp-plugin-development/references/debugging.md +0 -19
- package/templates/wordpress/.claude/skills/wp-plugin-development/references/lifecycle.md +0 -33
- package/templates/wordpress/.claude/skills/wp-plugin-development/references/security.md +0 -29
- package/templates/wordpress/.claude/skills/wp-plugin-development/references/settings-api.md +0 -22
- package/templates/wordpress/.claude/skills/wp-plugin-development/references/structure.md +0 -16
- package/templates/wordpress/.claude/skills/wp-plugin-development/scripts/detect_plugins.mjs +0 -122
- package/templates/wordpress/.claude/skills/wp-rest-api/SKILL.md +0 -114
- package/templates/wordpress/.claude/skills/wp-rest-api/references/authentication.md +0 -18
- package/templates/wordpress/.claude/skills/wp-rest-api/references/custom-content-types.md +0 -20
- package/templates/wordpress/.claude/skills/wp-rest-api/references/discovery-and-params.md +0 -20
- package/templates/wordpress/.claude/skills/wp-rest-api/references/responses-and-fields.md +0 -30
- package/templates/wordpress/.claude/skills/wp-rest-api/references/routes-and-endpoints.md +0 -36
- package/templates/wordpress/.claude/skills/wp-rest-api/references/schema.md +0 -22
- package/templates/wordpress/.ddev/docker-compose.packages.yaml +0 -14
- package/templates/wordpress/.ddev/docker-compose.redis.yaml +0 -11
- package/templates/wordpress/.env.example +0 -33
- package/templates/wordpress/CLAUDE.md +0 -34
- package/templates/wordpress/_gitignore +0 -33
- package/templates/wordpress/composer.lock +0 -1594
- package/templates/wordpress/package.json +0 -13
- package/templates/wordpress/scripts/seed.sh +0 -64
- package/templates/wordpress/skills-lock.json +0 -35
- package/templates/wordpress/wp-config.php +0 -89
- package/templates/wordpress/wp-content/index.php +0 -2
- package/templates/wordpress/wp-content/mu-plugins/baseline-bootstrap.php +0 -26
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* Baseline carousel (src/carousel.js) bundled with embla-carousel 8.6.0 and embla-carousel-autoplay 8.6.0. Generated: do not edit. */
|
|
2
|
+
(()=>{function Tt(t){return typeof t=="number"}function vt(t){return typeof t=="string"}function gt(t){return typeof t=="boolean"}function Vt(t){return Object.prototype.toString.call(t)==="[object Object]"}function F(t){return Math.abs(t)}function At(t){return Math.sign(t)}function at(t,n){return F(t-n)}function nn(t,n){if(t===0||n===0||F(t)<=F(n))return 0;let e=at(F(t),F(n));return F(e/t)}function en(t){return Math.round(t*100)/100}function lt(t){return ft(t).map(Number)}function Q(t){return t[pt(t)]}function pt(t){return Math.max(0,t.length-1)}function Dt(t,n){return n===pt(t)}function zt(t,n=0){return Array.from(Array(t),(e,r)=>n+r)}function ft(t){return Object.keys(t)}function Gt(t,n){return[t,n].reduce((e,r)=>(ft(r).forEach(u=>{let s=e[u],o=r[u],c=Vt(s)&&Vt(o);e[u]=c?Gt(s,o):o}),e),{})}function It(t,n){return typeof n.MouseEvent<"u"&&t instanceof n.MouseEvent}function on(t,n){let e={start:r,center:u,end:s};function r(){return 0}function u(i){return s(i)/2}function s(i){return n-i}function o(i,a){return vt(t)?e[t](i):t(n,i,a)}return{measure:o}}function dt(){let t=[];function n(u,s,o,c={passive:!0}){let i;if("addEventListener"in u)u.addEventListener(s,o,c),i=()=>u.removeEventListener(s,o,c);else{let a=u;a.addListener(o),i=()=>a.removeListener(o)}return t.push(i),r}function e(){t=t.filter(u=>u())}let r={add:n,clear:e};return r}function rn(t,n,e,r){let u=dt(),s=1e3/60,o=null,c=0,i=0;function a(){u.add(t,"visibilitychange",()=>{t.hidden&&l()})}function h(){y(),u.clear()}function p(g){if(!i)return;o||(o=g,e(),e());let f=g-o;for(o=g,c+=f;c>=s;)e(),c-=s;let S=c/s;r(S),i&&(i=n.requestAnimationFrame(p))}function m(){i||(i=n.requestAnimationFrame(p))}function y(){n.cancelAnimationFrame(i),o=null,c=0,i=0}function l(){o=null,c=0}return{init:a,destroy:h,start:m,stop:y,update:e,render:r}}function sn(t,n){let e=n==="rtl",r=t==="y",u=r?"y":"x",s=r?"x":"y",o=!r&&e?-1:1,c=h(),i=p();function a(l){let{height:d,width:g}=l;return r?d:g}function h(){return r?"top":e?"right":"left"}function p(){return r?"bottom":e?"left":"right"}function m(l){return l*o}return{scroll:u,cross:s,startEdge:c,endEdge:i,measureSize:a,direction:m}}function ot(t=0,n=0){let e=F(t-n);function r(a){return a<t}function u(a){return a>n}function s(a){return r(a)||u(a)}function o(a){return s(a)?r(a)?t:n:a}function c(a){return e?a-e*Math.ceil((a-n)/e):a}return{length:e,max:n,min:t,constrain:o,reachedAny:s,reachedMax:u,reachedMin:r,removeOffset:c}}function Ht(t,n,e){let{constrain:r}=ot(0,t),u=t+1,s=o(n);function o(m){return e?F((u+m)%u):r(m)}function c(){return s}function i(m){return s=o(m),p}function a(m){return h().set(c()+m)}function h(){return Ht(t,c(),e)}let p={get:c,set:i,add:a,clone:h};return p}function cn(t,n,e,r,u,s,o,c,i,a,h,p,m,y,l,d,g,f,S){let{cross:x,direction:v}=t,D=["INPUT","SELECT","TEXTAREA"],I={passive:!1},E=dt(),L=dt(),T=ot(50,225).constrain(y.measure(20)),P={mouse:300,touch:400},A={mouse:500,touch:600},C=l?43:25,R=!1,O=0,k=0,G=!1,H=!1,U=!1,$=!1;function K(b){if(!S)return;function w(V){(gt(S)||S(b,V))&&it(V)}let N=n;E.add(N,"dragstart",V=>V.preventDefault(),I).add(N,"touchmove",()=>{},I).add(N,"touchend",()=>{}).add(N,"touchstart",w).add(N,"mousedown",w).add(N,"touchcancel",B).add(N,"contextmenu",B).add(N,"click",Z,!0)}function j(){E.clear(),L.clear()}function _(){let b=$?e:n;L.add(b,"touchmove",z,I).add(b,"touchend",B).add(b,"mousemove",z,I).add(b,"mouseup",B)}function J(b){let w=b.nodeName||"";return D.includes(w)}function Y(){return(l?A:P)[$?"mouse":"touch"]}function st(b,w){let N=p.add(At(b)*-1),V=h.byDistance(b,!l).distance;return l||F(b)<T?V:g&&w?V*.5:h.byIndex(N.get(),0).distance}function it(b){let w=It(b,r);$=w,U=l&&w&&!b.buttons&&R,R=at(u.get(),o.get())>=2,!(w&&b.button!==0)&&(J(b.target)||(G=!0,s.pointerDown(b),a.useFriction(0).useDuration(0),u.set(o),_(),O=s.readPoint(b),k=s.readPoint(b,x),m.emit("pointerDown")))}function z(b){if(!It(b,r)&&b.touches.length>=2)return B(b);let N=s.readPoint(b),V=s.readPoint(b,x),X=at(N,O),W=at(V,k);if(!H&&!$&&(!b.cancelable||(H=X>W,!H)))return B(b);let nt=s.pointerMove(b);X>d&&(U=!0),a.useFriction(.3).useDuration(.75),c.start(),u.add(v(nt)),b.preventDefault()}function B(b){let N=h.byDistance(0,!1).index!==p.get(),V=s.pointerUp(b)*Y(),X=st(v(V),N),W=nn(V,X),nt=C-10*W,tt=f+W/50;H=!1,G=!1,L.clear(),a.useDuration(nt).useFriction(tt),i.distance(X,!l),$=!1,m.emit("pointerUp")}function Z(b){U&&(b.stopPropagation(),b.preventDefault(),U=!1)}function q(){return G}return{init:K,destroy:j,pointerDown:q}}function un(t,n){let r,u;function s(p){return p.timeStamp}function o(p,m){let l=`client${(m||t.scroll)==="x"?"X":"Y"}`;return(It(p,n)?p:p.touches[0])[l]}function c(p){return r=p,u=p,o(p)}function i(p){let m=o(p)-o(u),y=s(p)-s(r)>170;return u=p,y&&(r=p),m}function a(p){if(!r||!u)return 0;let m=o(u)-o(r),y=s(p)-s(r),l=s(p)-s(u)>170,d=m/y;return y&&!l&&F(d)>.1?d:0}return{pointerDown:c,pointerMove:i,pointerUp:a,readPoint:o}}function an(){function t(e){let{offsetTop:r,offsetLeft:u,offsetWidth:s,offsetHeight:o}=e;return{top:r,right:u+s,bottom:r+o,left:u,width:s,height:o}}return{measure:t}}function ln(t){function n(r){return t*(r/100)}return{measure:n}}function fn(t,n,e,r,u,s,o){let c=[t].concat(r),i,a,h=[],p=!1;function m(g){return u.measureSize(o.measure(g))}function y(g){if(!s)return;a=m(t),h=r.map(m);function f(S){for(let x of S){if(p)return;let v=x.target===t,D=r.indexOf(x.target),I=v?a:h[D],E=m(v?t:r[D]);if(F(E-I)>=.5){g.reInit(),n.emit("resize");break}}}i=new ResizeObserver(S=>{(gt(s)||s(g,S))&&f(S)}),e.requestAnimationFrame(()=>{c.forEach(S=>i.observe(S))})}function l(){p=!0,i&&i.disconnect()}return{init:y,destroy:l}}function dn(t,n,e,r,u,s){let o=0,c=0,i=u,a=s,h=t.get(),p=0;function m(){let I=r.get()-t.get(),E=!i,L=0;return E?(o=0,e.set(r),t.set(r),L=I):(e.set(t),o+=I/i,o*=a,h+=o,t.add(o),L=h-p),c=At(L),p=h,D}function y(){let I=r.get()-n.get();return F(I)<.001}function l(){return i}function d(){return c}function g(){return o}function f(){return x(u)}function S(){return v(s)}function x(I){return i=I,D}function v(I){return a=I,D}let D={direction:d,duration:l,velocity:g,seek:m,settled:y,useBaseFriction:S,useBaseDuration:f,useFriction:v,useDuration:x};return D}function pn(t,n,e,r,u){let s=u.measure(10),o=u.measure(50),c=ot(.1,.99),i=!1;function a(){return!(i||!t.reachedAny(e.get())||!t.reachedAny(n.get()))}function h(y){if(!a())return;let l=t.reachedMin(n.get())?"min":"max",d=F(t[l]-n.get()),g=e.get()-n.get(),f=c.constrain(d/o);e.subtract(g*f),!y&&F(g)<s&&(e.set(t.constrain(e.get())),r.useDuration(25).useBaseFriction())}function p(y){i=!y}return{shouldConstrain:a,constrain:h,toggleActive:p}}function mn(t,n,e,r,u){let s=ot(-n+t,0),o=p(),c=h(),i=m();function a(l,d){return at(l,d)<=1}function h(){let l=o[0],d=Q(o),g=o.lastIndexOf(l),f=o.indexOf(d)+1;return ot(g,f)}function p(){return e.map((l,d)=>{let{min:g,max:f}=s,S=s.constrain(l),x=!d,v=Dt(e,d);return x?f:v||a(g,S)?g:a(f,S)?f:S}).map(l=>parseFloat(l.toFixed(3)))}function m(){if(n<=t+u)return[s.max];if(r==="keepSnaps")return o;let{min:l,max:d}=c;return o.slice(l,d)}return{snapsContained:i,scrollContainLimit:c}}function gn(t,n,e){let r=n[0],u=e?r-t:Q(n);return{limit:ot(u,r)}}function hn(t,n,e,r){let s=n.min+.1,o=n.max+.1,{reachedMin:c,reachedMax:i}=ot(s,o);function a(m){return m===1?i(e.get()):m===-1?c(e.get()):!1}function h(m){if(!a(m))return;let y=t*(m*-1);r.forEach(l=>l.add(y))}return{loop:h}}function Sn(t){let{max:n,length:e}=t;function r(s){let o=s-n;return e?o/-e:0}return{get:r}}function yn(t,n,e,r,u){let{startEdge:s,endEdge:o}=t,{groupSlides:c}=u,i=p().map(n.measure),a=m(),h=y();function p(){return c(r).map(d=>Q(d)[o]-d[0][s]).map(F)}function m(){return r.map(d=>e[s]-d[s]).map(d=>-F(d))}function y(){return c(a).map(d=>d[0]).map((d,g)=>d+i[g])}return{snaps:a,snapsAligned:h}}function bn(t,n,e,r,u,s){let{groupSlides:o}=u,{min:c,max:i}=r,a=h();function h(){let m=o(s),y=!t||n==="keepSnaps";return e.length===1?[s]:y?m:m.slice(c,i).map((l,d,g)=>{let f=!d,S=Dt(g,d);if(f){let x=Q(g[0])+1;return zt(x)}if(S){let x=pt(s)-Q(g)[0]+1;return zt(x,Q(g)[0])}return l})}return{slideRegistry:a}}function xn(t,n,e,r,u){let{reachedAny:s,removeOffset:o,constrain:c}=r;function i(l){return l.concat().sort((d,g)=>F(d)-F(g))[0]}function a(l){let d=t?o(l):c(l),g=n.map((S,x)=>({diff:h(S-d,0),index:x})).sort((S,x)=>F(S.diff)-F(x.diff)),{index:f}=g[0];return{index:f,distance:d}}function h(l,d){let g=[l,l+e,l-e];if(!t)return l;if(!d)return i(g);let f=g.filter(S=>At(S)===d);return f.length?i(f):Q(g)-e}function p(l,d){let g=n[l]-u.get(),f=h(g,d);return{index:l,distance:f}}function m(l,d){let g=u.get()+l,{index:f,distance:S}=a(g),x=!t&&s(g);if(!d||x)return{index:f,distance:l};let v=n[f]-S,D=l+h(v,0);return{index:f,distance:D}}return{byDistance:m,byIndex:p,shortcut:h}}function En(t,n,e,r,u,s,o){function c(p){let m=p.distance,y=p.index!==n.get();s.add(m),m&&(r.duration()?t.start():(t.update(),t.render(1),t.update())),y&&(e.set(n.get()),n.set(p.index),o.emit("select"))}function i(p,m){let y=u.byDistance(p,m);c(y)}function a(p,m){let y=n.clone().set(p),l=u.byIndex(y.get(),m);c(l)}return{distance:i,index:a}}function Ln(t,n,e,r,u,s,o,c){let i={passive:!0,capture:!0},a=0;function h(y){if(!c)return;function l(d){if(new Date().getTime()-a>10)return;o.emit("slideFocusStart"),t.scrollLeft=0;let S=e.findIndex(x=>x.includes(d));Tt(S)&&(u.useDuration(0),r.index(S,0),o.emit("slideFocus"))}s.add(document,"keydown",p,!1),n.forEach((d,g)=>{s.add(d,"focus",f=>{(gt(c)||c(y,f))&&l(g)},i)})}function p(y){y.code==="Tab"&&(a=new Date().getTime())}return{init:h}}function ut(t){let n=t;function e(){return n}function r(i){n=o(i)}function u(i){n+=o(i)}function s(i){n-=o(i)}function o(i){return Tt(i)?i:i.get()}return{get:e,set:r,add:u,subtract:s}}function jt(t,n){let e=t.scroll==="x"?o:c,r=n.style,u=null,s=!1;function o(m){return`translate3d(${m}px,0px,0px)`}function c(m){return`translate3d(0px,${m}px,0px)`}function i(m){if(s)return;let y=en(t.direction(m));y!==u&&(r.transform=e(y),u=y)}function a(m){s=!m}function h(){s||(r.transform="",n.getAttribute("style")||n.removeAttribute("style"))}return{clear:h,to:i,toggleActive:a}}function vn(t,n,e,r,u,s,o,c,i){let h=lt(u),p=lt(u).reverse(),m=f().concat(S());function y(E,L){return E.reduce((T,P)=>T-u[P],L)}function l(E,L){return E.reduce((T,P)=>y(T,L)>0?T.concat([P]):T,[])}function d(E){return s.map((L,T)=>({start:L-r[T]+.5+E,end:L+n-.5+E}))}function g(E,L,T){let P=d(L);return E.map(A=>{let C=T?0:-e,R=T?e:0,O=T?"end":"start",k=P[A][O];return{index:A,loopPoint:k,slideLocation:ut(-1),translate:jt(t,i[A]),target:()=>c.get()>k?C:R}})}function f(){let E=o[0],L=l(p,E);return g(L,e,!1)}function S(){let E=n-o[0]-1,L=l(h,E);return g(L,-e,!0)}function x(){return m.every(({index:E})=>{let L=h.filter(T=>T!==E);return y(L,n)<=.1})}function v(){m.forEach(E=>{let{target:L,translate:T,slideLocation:P}=E,A=L();A!==P.get()&&(T.to(A),P.set(A))})}function D(){m.forEach(E=>E.translate.clear())}return{canLoop:x,clear:D,loop:v,loopPoints:m}}function In(t,n,e){let r,u=!1;function s(i){if(!e)return;function a(h){for(let p of h)if(p.type==="childList"){i.reInit(),n.emit("slidesChanged");break}}r=new MutationObserver(h=>{u||(gt(e)||e(i,h))&&a(h)}),r.observe(t,{childList:!0})}function o(){r&&r.disconnect(),u=!0}return{init:s,destroy:o}}function Tn(t,n,e,r){let u={},s=null,o=null,c,i=!1;function a(){c=new IntersectionObserver(l=>{i||(l.forEach(d=>{let g=n.indexOf(d.target);u[g]=d}),s=null,o=null,e.emit("slidesInView"))},{root:t.parentElement,threshold:r}),n.forEach(l=>c.observe(l))}function h(){c&&c.disconnect(),i=!0}function p(l){return ft(u).reduce((d,g)=>{let f=parseInt(g),{isIntersecting:S}=u[f];return(l&&S||!l&&!S)&&d.push(f),d},[])}function m(l=!0){if(l&&s)return s;if(!l&&o)return o;let d=p(l);return l&&(s=d),l||(o=d),d}return{init:a,destroy:h,get:m}}function An(t,n,e,r,u,s){let{measureSize:o,startEdge:c,endEdge:i}=t,a=e[0]&&u,h=l(),p=d(),m=e.map(o),y=g();function l(){if(!a)return 0;let S=e[0];return F(n[c]-S[c])}function d(){if(!a)return 0;let S=s.getComputedStyle(Q(r));return parseFloat(S.getPropertyValue(`margin-${i}`))}function g(){return e.map((S,x,v)=>{let D=!x,I=Dt(v,x);return D?m[x]+h:I?m[x]+p:v[x+1][c]-S[c]}).map(F)}return{slideSizes:m,slideSizesWithGaps:y,startGap:h,endGap:p}}function Dn(t,n,e,r,u,s,o,c,i){let{startEdge:a,endEdge:h,direction:p}=t,m=Tt(e);function y(f,S){return lt(f).filter(x=>x%S===0).map(x=>f.slice(x,x+S))}function l(f){return f.length?lt(f).reduce((S,x,v)=>{let D=Q(S)||0,I=D===0,E=x===pt(f),L=u[a]-s[D][a],T=u[a]-s[x][h],P=!r&&I?p(o):0,A=!r&&E?p(c):0,C=F(T-A-(L+P));return v&&C>n+i&&S.push(x),E&&S.push(f.length),S},[]).map((S,x,v)=>{let D=Math.max(v[x-1]||0);return f.slice(D,S)}):[]}function d(f){return m?y(f,e):l(f)}return{groupSlides:d}}function On(t,n,e,r,u,s,o){let{align:c,axis:i,direction:a,startIndex:h,loop:p,duration:m,dragFree:y,dragThreshold:l,inViewThreshold:d,slidesToScroll:g,skipSnaps:f,containScroll:S,watchResize:x,watchSlides:v,watchDrag:D,watchFocus:I}=s,E=2,L=an(),T=L.measure(n),P=e.map(L.measure),A=sn(i,a),C=A.measureSize(T),R=ln(C),O=on(c,C),k=!p&&!!S,G=p||!!S,{slideSizes:H,slideSizesWithGaps:U,startGap:$,endGap:K}=An(A,T,P,e,G,u),j=Dn(A,C,g,p,T,P,$,K,E),{snaps:_,snapsAligned:J}=yn(A,O,T,P,j),Y=-Q(_)+Q(U),{snapsContained:st,scrollContainLimit:it}=mn(C,Y,J,S,E),z=k?st:J,{limit:B}=gn(Y,z,p),Z=Ht(pt(z),h,p),q=Z.clone(),M=lt(e),b=({dragHandler:rt,scrollBody:Et,scrollBounds:Lt,options:{loop:mt}})=>{mt||Lt.constrain(rt.pointerDown()),Et.seek()},w=({scrollBody:rt,translate:Et,location:Lt,offsetLocation:mt,previousLocation:Kt,scrollLooper:Xt,slideLooper:_t,dragHandler:Jt,animation:Yt,eventHandler:Ft,scrollBounds:Zt,options:{loop:Pt}},Nt)=>{let Ct=rt.settled(),Wt=!Zt.shouldConstrain(),kt=Pt?Ct:Ct&&Wt,Bt=kt&&!Jt.pointerDown();Bt&&Yt.stop();let tn=Lt.get()*Nt+Kt.get()*(1-Nt);mt.set(tn),Pt&&(Xt.loop(rt.direction()),_t.loop()),Et.to(mt.get()),Bt&&Ft.emit("settle"),kt||Ft.emit("scroll")},N=rn(r,u,()=>b(xt),rt=>w(xt,rt)),V=.68,X=z[Z.get()],W=ut(X),nt=ut(X),tt=ut(X),et=ut(X),ct=dn(W,tt,nt,et,m,V),yt=xn(p,z,Y,B,et),bt=En(N,Z,q,ct,yt,et,o),Ot=Sn(B),wt=dt(),$t=Tn(n,e,o,d),{slideRegistry:Mt}=bn(k,S,z,it,j,M),Qt=Ln(t,e,Mt,bt,ct,wt,o,I),xt={ownerDocument:r,ownerWindow:u,eventHandler:o,containerRect:T,slideRects:P,animation:N,axis:A,dragHandler:cn(A,t,r,u,et,un(A,u),W,N,bt,ct,yt,Z,o,R,y,l,f,V,D),eventStore:wt,percentOfView:R,index:Z,indexPrevious:q,limit:B,location:W,offsetLocation:tt,previousLocation:nt,options:s,resizeHandler:fn(n,o,u,e,A,x,L),scrollBody:ct,scrollBounds:pn(B,tt,et,ct,R),scrollLooper:hn(Y,B,tt,[W,tt,nt,et]),scrollProgress:Ot,scrollSnapList:z.map(Ot.get),scrollSnaps:z,scrollTarget:yt,scrollTo:bt,slideLooper:vn(A,C,Y,H,U,_,z,tt,e),slideFocus:Qt,slidesHandler:In(n,o,v),slidesInView:$t,slideIndexes:M,slideRegistry:Mt,slidesToScroll:j,target:et,translate:jt(A,n)};return xt}function wn(){let t={},n;function e(a){n=a}function r(a){return t[a]||[]}function u(a){return r(a).forEach(h=>h(n,a)),i}function s(a,h){return t[a]=r(a).concat([h]),i}function o(a,h){return t[a]=r(a).filter(p=>p!==h),i}function c(){t={}}let i={init:e,emit:u,off:o,on:s,clear:c};return i}var Mn={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0,watchFocus:!0};function Fn(t){function n(s,o){return Gt(s,o||{})}function e(s){let o=s.breakpoints||{},c=ft(o).filter(i=>t.matchMedia(i).matches).map(i=>o[i]).reduce((i,a)=>n(i,a),{});return n(s,c)}function r(s){return s.map(o=>ft(o.breakpoints||{})).reduce((o,c)=>o.concat(c),[]).map(t.matchMedia)}return{mergeOptions:n,optionsAtMedia:e,optionsMediaQueries:r}}function Pn(t){let n=[];function e(s,o){return n=o.filter(({options:c})=>t.optionsAtMedia(c).active!==!1),n.forEach(c=>c.init(s,t)),o.reduce((c,i)=>Object.assign(c,{[i.name]:i}),{})}function r(){n=n.filter(s=>s.destroy())}return{init:e,destroy:r}}function ht(t,n,e){let r=t.ownerDocument,u=r.defaultView,s=Fn(u),o=Pn(s),c=dt(),i=wn(),{mergeOptions:a,optionsAtMedia:h,optionsMediaQueries:p}=s,{on:m,off:y,emit:l}=i,d=A,g=!1,f,S=a(Mn,ht.globalOptions),x=a(S),v=[],D,I,E;function L(){let{container:M,slides:b}=x;I=(vt(M)?t.querySelector(M):M)||t.children[0];let N=vt(b)?I.querySelectorAll(b):b;E=[].slice.call(N||I.children)}function T(M){let b=On(t,I,E,r,u,M,i);if(M.loop&&!b.slideLooper.canLoop()){let w=Object.assign({},M,{loop:!1});return T(w)}return b}function P(M,b){g||(S=a(S,M),x=h(S),v=b||v,L(),f=T(x),p([S,...v.map(({options:w})=>w)]).forEach(w=>c.add(w,"change",A)),x.active&&(f.translate.to(f.location.get()),f.animation.init(),f.slidesInView.init(),f.slideFocus.init(q),f.eventHandler.init(q),f.resizeHandler.init(q),f.slidesHandler.init(q),f.options.loop&&f.slideLooper.loop(),I.offsetParent&&E.length&&f.dragHandler.init(q),D=o.init(q,v)))}function A(M,b){let w=j();C(),P(a({startIndex:w},M),b),i.emit("reInit")}function C(){f.dragHandler.destroy(),f.eventStore.clear(),f.translate.clear(),f.slideLooper.clear(),f.resizeHandler.destroy(),f.slidesHandler.destroy(),f.slidesInView.destroy(),f.animation.destroy(),o.destroy(),c.clear()}function R(){g||(g=!0,c.clear(),C(),i.emit("destroy"),i.clear())}function O(M,b,w){!x.active||g||(f.scrollBody.useBaseFriction().useDuration(b===!0?0:x.duration),f.scrollTo.index(M,w||0))}function k(M){let b=f.index.add(1).get();O(b,M,-1)}function G(M){let b=f.index.add(-1).get();O(b,M,1)}function H(){return f.index.add(1).get()!==j()}function U(){return f.index.add(-1).get()!==j()}function $(){return f.scrollSnapList}function K(){return f.scrollProgress.get(f.offsetLocation.get())}function j(){return f.index.get()}function _(){return f.indexPrevious.get()}function J(){return f.slidesInView.get()}function Y(){return f.slidesInView.get(!1)}function st(){return D}function it(){return f}function z(){return t}function B(){return I}function Z(){return E}let q={canScrollNext:H,canScrollPrev:U,containerNode:B,internalEngine:it,destroy:R,off:y,on:m,emit:l,plugins:st,previousScrollSnap:_,reInit:d,rootNode:z,scrollNext:k,scrollPrev:G,scrollProgress:K,scrollSnapList:$,scrollTo:O,selectedScrollSnap:j,slideNodes:Z,slidesInView:J,slidesNotInView:Y};return P(n,e),setTimeout(()=>i.emit("init"),0),q}ht.globalOptions=void 0;var Nn={active:!0,breakpoints:{},delay:4e3,jump:!1,playOnInit:!0,stopOnFocusIn:!0,stopOnInteraction:!0,stopOnMouseEnter:!1,stopOnLastSnap:!1,rootNode:null};function Cn(t,n){let e=t.scrollSnapList();return typeof n=="number"?e.map(()=>n):n(e,t)}function kn(t,n){let e=t.rootNode();return n&&n(e)||e}function St(t={}){let n,e,r,u,s=null,o=0,c=!1,i=!1,a=!1,h=!1;function p(O,k){e=O;let{mergeOptions:G,optionsAtMedia:H}=k,U=G(Nn,St.globalOptions),$=G(U,t);if(n=H($),e.scrollSnapList().length<=1)return;h=n.jump,r=!1,u=Cn(e,n.delay);let{eventStore:K,ownerDocument:j}=e.internalEngine(),_=!!e.internalEngine().options.watchDrag,J=kn(e,n.rootNode);K.add(j,"visibilitychange",f),_&&e.on("pointerDown",x),_&&!n.stopOnInteraction&&e.on("pointerUp",v),n.stopOnMouseEnter&&K.add(J,"mouseenter",D),n.stopOnMouseEnter&&!n.stopOnInteraction&&K.add(J,"mouseleave",I),n.stopOnFocusIn&&e.on("slideFocusStart",g),n.stopOnFocusIn&&!n.stopOnInteraction&&K.add(e.containerNode(),"focusout",d),n.playOnInit&&d()}function m(){e.off("pointerDown",x).off("pointerUp",v).off("slideFocusStart",g),g(),r=!0,c=!1}function y(){let{ownerWindow:O}=e.internalEngine();O.clearTimeout(o),o=O.setTimeout(A,u[e.selectedScrollSnap()]),s=new Date().getTime(),e.emit("autoplay:timerset")}function l(){let{ownerWindow:O}=e.internalEngine();O.clearTimeout(o),o=0,s=null,e.emit("autoplay:timerstopped")}function d(){if(!r){if(S()){a=!0;return}c||e.emit("autoplay:play"),y(),c=!0}}function g(){r||(c&&e.emit("autoplay:stop"),l(),c=!1)}function f(){if(S())return a=c,g();a&&d()}function S(){let{ownerDocument:O}=e.internalEngine();return O.visibilityState==="hidden"}function x(){i||g()}function v(){i||d()}function D(){i=!0,g()}function I(){i=!1,d()}function E(O){typeof O<"u"&&(h=O),d()}function L(){c&&g()}function T(){c&&d()}function P(){return c}function A(){let{index:O}=e.internalEngine(),k=O.clone().add(1).get(),G=e.scrollSnapList().length-1,H=n.stopOnLastSnap&&k===G;if(e.canScrollNext()?e.scrollNext(h):e.scrollTo(0,h),e.emit("autoplay:select"),H)return g();d()}function C(){if(!s)return null;let O=u[e.selectedScrollSnap()],k=new Date().getTime()-s;return O-k}return{name:"autoplay",options:t,init:p,destroy:m,play:E,stop:L,reset:T,isPlaying:P,timeUntilNext:C}}St.globalOptions=void 0;var qt=new WeakSet;function Ut(t){if(qt.has(t))return;let n=t.querySelector("[data-slot=carousel-content]");if(!n)return;qt.add(t);let e={};try{e=JSON.parse(t.getAttribute("data-options")||"{}")}catch{}e.axis=t.getAttribute("data-orientation")==="vertical"?"y":"x";let r=n.getAttribute("data-track"),u=r&&n.querySelector(r);u&&(e.container=u);let s=[],o=Number(t.getAttribute("data-autoplay"));o>0&&s.push(St({delay:o,stopOnMouseEnter:!0,stopOnFocusIn:!0,stopOnInteraction:!0}));let c=ht(n,e,s),i=t.querySelector("[data-slot=carousel-previous], [data-carousel-previous]"),a=t.querySelector("[data-slot=carousel-next], [data-carousel-next]"),h=t.querySelector("[data-slot=carousel-dots]"),p=h&&h.getAttribute("data-dot-class");i?.addEventListener("click",()=>c.scrollPrev()),a?.addEventListener("click",()=>c.scrollNext());let m=()=>{h&&h.replaceChildren(...c.scrollSnapList().map((l,d)=>{let g=document.createElement("button");return g.type="button",g.setAttribute("data-slot","carousel-dot"),g.setAttribute("aria-label",`Go to slide ${d+1}`),p&&(g.className=p),g.addEventListener("click",()=>c.scrollTo(d)),g}))},y=()=>{i&&(i.disabled=!c.canScrollPrev()),a&&(a.disabled=!c.canScrollNext()),h&&[...h.children].forEach((l,d)=>{d===c.selectedScrollSnap()?l.setAttribute("aria-current","true"):l.removeAttribute("aria-current")})};c.on("init",()=>{m(),y()}),c.on("reInit",()=>{m(),y()}),c.on("select",y),m(),y(),t.addEventListener("keydown",l=>{l.key==="ArrowLeft"?(l.preventDefault(),c.scrollPrev()):l.key==="ArrowRight"&&(l.preventDefault(),c.scrollNext())},!0)}function Rt(t){t.querySelectorAll?.("[data-slot=carousel]").forEach(Ut)}if(!window.baselineCarousel){window.baselineCarousel=!0;let t=()=>{Rt(document),new MutationObserver(n=>{for(let e of n)for(let r of e.addedNodes)r instanceof Element&&(r.matches("[data-slot=carousel]")&&Ut(r),Rt(r))}).observe(document.documentElement,{childList:!0,subtree:!0})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}})();
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Baseline core/button editor integration (ADR-0018, icons ADR-0020). Plain JS on the WordPress globals; no bundler.
|
|
3
|
+
* Only what cannot be done in PHP or theme.json lives here:
|
|
4
|
+
* - the Size control, first item of the Dimensions panel (Styles tab), bound to `baselineSize`;
|
|
5
|
+
* - the Icon panel (Settings tab): a searchable grid of the registered `baseline` collection (inlined by PHP as
|
|
6
|
+
* window.baselineIcons), icon position and icon-only toggles, bound to `baselineIcon*`;
|
|
7
|
+
* - the editor-side wrapper classes (is-size-*, has-icon, has-icon-end, is-icon-only) and a `--baseline-icon`
|
|
8
|
+
* data-URI so editor CSS can paint the icon as a mask pseudo-element without touching RichText content.
|
|
9
|
+
* Block styles are registered in inc/core-button.php; token panels are switched off in theme.json `settings.blocks`.
|
|
10
|
+
*/
|
|
11
|
+
(function (wp) {
|
|
12
|
+
'use strict';
|
|
13
|
+
var __ = wp.i18n.__;
|
|
14
|
+
var el = wp.element.createElement;
|
|
15
|
+
var Fragment = wp.element.Fragment;
|
|
16
|
+
var RawHTML = wp.element.RawHTML;
|
|
17
|
+
var useState = wp.element.useState;
|
|
18
|
+
var addFilter = wp.hooks.addFilter;
|
|
19
|
+
var createHigherOrderComponent = wp.compose.createHigherOrderComponent;
|
|
20
|
+
var InspectorControls = wp.blockEditor.InspectorControls;
|
|
21
|
+
var c = wp.components;
|
|
22
|
+
var SelectControl = c.SelectControl;
|
|
23
|
+
var ToolsPanelItem = c.__experimentalToolsPanelItem;
|
|
24
|
+
var PanelBody = c.PanelBody;
|
|
25
|
+
var SearchControl = c.SearchControl;
|
|
26
|
+
var ToggleControl = c.ToggleControl;
|
|
27
|
+
var TextControl = c.TextControl;
|
|
28
|
+
var Button = c.Button;
|
|
29
|
+
var ToggleGroupControl = c.__experimentalToggleGroupControl;
|
|
30
|
+
var ToggleGroupControlOption = c.__experimentalToggleGroupControlOption;
|
|
31
|
+
|
|
32
|
+
var BUTTON = 'core/button';
|
|
33
|
+
var DEFAULT_SIZE = 'md';
|
|
34
|
+
var SIZES = [
|
|
35
|
+
{ label: 'XS', value: 'xs' },
|
|
36
|
+
{ label: 'SM', value: 'sm' },
|
|
37
|
+
{ label: 'MD', value: 'md' },
|
|
38
|
+
{ label: 'LG', value: 'lg' },
|
|
39
|
+
];
|
|
40
|
+
var ICONS = Array.isArray(window.baselineIcons) ? window.baselineIcons : [];
|
|
41
|
+
function findIcon(name) {
|
|
42
|
+
for (var i = 0; i < ICONS.length; i++) {
|
|
43
|
+
if (ICONS[i].name === name) {
|
|
44
|
+
return ICONS[i];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* ---- Size: an item of the Dimensions panel (mounted before BlockEdit so it is the first row) ---- */
|
|
51
|
+
function sizeItem(props) {
|
|
52
|
+
var size = props.attributes.baselineSize || DEFAULT_SIZE;
|
|
53
|
+
var reset = function () {
|
|
54
|
+
props.setAttributes({ baselineSize: DEFAULT_SIZE });
|
|
55
|
+
};
|
|
56
|
+
return el(
|
|
57
|
+
InspectorControls,
|
|
58
|
+
{ group: 'dimensions' },
|
|
59
|
+
el(
|
|
60
|
+
ToolsPanelItem,
|
|
61
|
+
{
|
|
62
|
+
label: __('Size', 'baseline'),
|
|
63
|
+
panelId: props.clientId,
|
|
64
|
+
isShownByDefault: true,
|
|
65
|
+
hasValue: function () {
|
|
66
|
+
return size !== DEFAULT_SIZE;
|
|
67
|
+
},
|
|
68
|
+
onDeselect: reset,
|
|
69
|
+
},
|
|
70
|
+
el(SelectControl, {
|
|
71
|
+
label: __('Size', 'baseline'),
|
|
72
|
+
value: size,
|
|
73
|
+
options: SIZES,
|
|
74
|
+
onChange: function (value) {
|
|
75
|
+
props.setAttributes({ baselineSize: value });
|
|
76
|
+
},
|
|
77
|
+
__nextHasNoMarginBottom: true,
|
|
78
|
+
__next40pxDefaultSize: true,
|
|
79
|
+
})
|
|
80
|
+
)
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* ---- Icon: Settings tab panel with a searchable grid of the registered collection ---- */
|
|
85
|
+
function IconPanel(props) {
|
|
86
|
+
var attrs = props.attributes;
|
|
87
|
+
var current = findIcon(attrs.baselineIcon || '');
|
|
88
|
+
var search = useState('');
|
|
89
|
+
var query = search[0].toLowerCase();
|
|
90
|
+
var matches = ICONS.filter(function (i) {
|
|
91
|
+
return !query || i.name.indexOf(query) !== -1 || i.label.toLowerCase().indexOf(query) !== -1;
|
|
92
|
+
});
|
|
93
|
+
var positionControl = ToggleGroupControl
|
|
94
|
+
? el(
|
|
95
|
+
ToggleGroupControl,
|
|
96
|
+
{
|
|
97
|
+
label: __('Position', 'baseline'),
|
|
98
|
+
value: attrs.baselineIconPosition || 'start',
|
|
99
|
+
isBlock: true,
|
|
100
|
+
onChange: function (v) {
|
|
101
|
+
props.setAttributes({ baselineIconPosition: v });
|
|
102
|
+
},
|
|
103
|
+
__nextHasNoMarginBottom: true,
|
|
104
|
+
__next40pxDefaultSize: true,
|
|
105
|
+
},
|
|
106
|
+
el(ToggleGroupControlOption, { value: 'start', label: __('Before text', 'baseline') }),
|
|
107
|
+
el(ToggleGroupControlOption, { value: 'end', label: __('After text', 'baseline') })
|
|
108
|
+
)
|
|
109
|
+
: el(SelectControl, {
|
|
110
|
+
label: __('Position', 'baseline'),
|
|
111
|
+
value: attrs.baselineIconPosition || 'start',
|
|
112
|
+
options: [
|
|
113
|
+
{ value: 'start', label: __('Before text', 'baseline') },
|
|
114
|
+
{ value: 'end', label: __('After text', 'baseline') },
|
|
115
|
+
],
|
|
116
|
+
onChange: function (v) {
|
|
117
|
+
props.setAttributes({ baselineIconPosition: v });
|
|
118
|
+
},
|
|
119
|
+
__nextHasNoMarginBottom: true,
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
return el(
|
|
123
|
+
PanelBody,
|
|
124
|
+
{ title: __('Icon', 'baseline'), initialOpen: !!current },
|
|
125
|
+
current
|
|
126
|
+
? el(
|
|
127
|
+
'div',
|
|
128
|
+
{ className: 'baseline-icon-current' },
|
|
129
|
+
el(RawHTML, { className: 'baseline-icon-current__glyph' }, current.svg),
|
|
130
|
+
el('span', { className: 'baseline-icon-current__label' }, current.label),
|
|
131
|
+
el(
|
|
132
|
+
Button,
|
|
133
|
+
{
|
|
134
|
+
variant: 'tertiary',
|
|
135
|
+
isDestructive: true,
|
|
136
|
+
size: 'compact',
|
|
137
|
+
onClick: function () {
|
|
138
|
+
props.setAttributes({ baselineIcon: '', baselineIconOnly: false });
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
__('Remove', 'baseline')
|
|
142
|
+
)
|
|
143
|
+
)
|
|
144
|
+
: null,
|
|
145
|
+
el(SearchControl, {
|
|
146
|
+
label: __('Search icons', 'baseline'),
|
|
147
|
+
value: search[0],
|
|
148
|
+
onChange: search[1],
|
|
149
|
+
__nextHasNoMarginBottom: true,
|
|
150
|
+
}),
|
|
151
|
+
el(
|
|
152
|
+
'div',
|
|
153
|
+
{ className: 'baseline-icon-grid', role: 'listbox', 'aria-label': __('Baseline icons', 'baseline') },
|
|
154
|
+
matches.map(function (i) {
|
|
155
|
+
var selected = current && current.name === i.name;
|
|
156
|
+
return el(
|
|
157
|
+
'button',
|
|
158
|
+
{
|
|
159
|
+
key: i.name,
|
|
160
|
+
type: 'button',
|
|
161
|
+
role: 'option',
|
|
162
|
+
'aria-selected': selected ? 'true' : 'false',
|
|
163
|
+
title: i.label,
|
|
164
|
+
className: 'baseline-icon-grid__item' + (selected ? ' is-selected' : ''),
|
|
165
|
+
onClick: function () {
|
|
166
|
+
props.setAttributes({ baselineIcon: i.name });
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
el(RawHTML, null, i.svg)
|
|
170
|
+
);
|
|
171
|
+
})
|
|
172
|
+
),
|
|
173
|
+
current ? positionControl : null,
|
|
174
|
+
current
|
|
175
|
+
? el(ToggleControl, {
|
|
176
|
+
label: __('Icon only (text becomes the accessible name)', 'baseline'),
|
|
177
|
+
checked: !!attrs.baselineIconOnly,
|
|
178
|
+
onChange: function (v) {
|
|
179
|
+
props.setAttributes({ baselineIconOnly: !!v });
|
|
180
|
+
},
|
|
181
|
+
__nextHasNoMarginBottom: true,
|
|
182
|
+
})
|
|
183
|
+
: null,
|
|
184
|
+
current && attrs.baselineIconOnly
|
|
185
|
+
? el(TextControl, {
|
|
186
|
+
label: __('Accessible label', 'baseline'),
|
|
187
|
+
help: __('Read by screen readers; hidden visually.', 'baseline'),
|
|
188
|
+
value: attrs.text ? String(attrs.text).replace(/<[^>]+>/g, '') : '',
|
|
189
|
+
onChange: function (v) {
|
|
190
|
+
props.setAttributes({ text: v });
|
|
191
|
+
},
|
|
192
|
+
__nextHasNoMarginBottom: true,
|
|
193
|
+
__next40pxDefaultSize: true,
|
|
194
|
+
})
|
|
195
|
+
: null
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
addFilter(
|
|
200
|
+
'editor.BlockEdit',
|
|
201
|
+
'baseline/core-button-controls',
|
|
202
|
+
createHigherOrderComponent(function (BlockEdit) {
|
|
203
|
+
return function (props) {
|
|
204
|
+
if (props.name !== BUTTON) {
|
|
205
|
+
return el(BlockEdit, props);
|
|
206
|
+
}
|
|
207
|
+
return el(Fragment, null, sizeItem(props), el(BlockEdit, props), el(InspectorControls, null, el(IconPanel, props)));
|
|
208
|
+
};
|
|
209
|
+
}, 'withBaselineButtonControls')
|
|
210
|
+
);
|
|
211
|
+
|
|
212
|
+
/* ---- Canvas: mirror the render-time classes; expose the icon as a mask image for editor CSS ---- */
|
|
213
|
+
addFilter(
|
|
214
|
+
'editor.BlockListBlock',
|
|
215
|
+
'baseline/core-button-classes',
|
|
216
|
+
createHigherOrderComponent(function (BlockListBlock) {
|
|
217
|
+
return function (props) {
|
|
218
|
+
if (props.name !== BUTTON) {
|
|
219
|
+
return el(BlockListBlock, props);
|
|
220
|
+
}
|
|
221
|
+
var a = props.attributes;
|
|
222
|
+
var classes = ['is-size-' + (a.baselineSize || DEFAULT_SIZE)];
|
|
223
|
+
var style = {};
|
|
224
|
+
var icon = findIcon(a.baselineIcon || '');
|
|
225
|
+
if (icon) {
|
|
226
|
+
classes.push('has-icon');
|
|
227
|
+
if (a.baselineIconPosition === 'end') {
|
|
228
|
+
classes.push('has-icon-end');
|
|
229
|
+
}
|
|
230
|
+
if (a.baselineIconOnly) {
|
|
231
|
+
classes.push('is-icon-only');
|
|
232
|
+
}
|
|
233
|
+
style['--baseline-icon'] = 'url("data:image/svg+xml,' + encodeURIComponent(icon.svg) + '")';
|
|
234
|
+
}
|
|
235
|
+
var wrapperProps = Object.assign({}, props.wrapperProps, {
|
|
236
|
+
style: Object.assign({}, props.wrapperProps && props.wrapperProps.style, style),
|
|
237
|
+
});
|
|
238
|
+
var className = (props.className ? props.className + ' ' : '') + classes.join(' ');
|
|
239
|
+
return el(BlockListBlock, Object.assign({}, props, { className: className, wrapperProps: wrapperProps }));
|
|
240
|
+
};
|
|
241
|
+
}, 'withBaselineButtonClasses')
|
|
242
|
+
);
|
|
243
|
+
})(window.wp);
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Baseline layout editor integration (B5; specs: components/section, columns). Plain JS on the WordPress globals; no
|
|
3
|
+
* bundler. Only what PHP and theme.json cannot do (inc/core-layout.php registers the attributes and renders them):
|
|
4
|
+
* - Scheme and Surface selects for core/group (the Section's colour scheme and Figma Surface mode), shown on the canvas
|
|
5
|
+
* as data-scheme and has-surface-<mode>;
|
|
6
|
+
* - an "Invert order when stacked" toggle for core/columns, shown on the canvas as is-inverted-on-mobile;
|
|
7
|
+
* - the two Figma ratios core/columns has no variation for (40 / 60 and 60 / 40).
|
|
8
|
+
*/
|
|
9
|
+
(function (wp) {
|
|
10
|
+
'use strict';
|
|
11
|
+
var __ = wp.i18n.__;
|
|
12
|
+
var el = wp.element.createElement;
|
|
13
|
+
var Fragment = wp.element.Fragment;
|
|
14
|
+
var addFilter = wp.hooks.addFilter;
|
|
15
|
+
var createHigherOrderComponent = wp.compose.createHigherOrderComponent;
|
|
16
|
+
var InspectorControls = wp.blockEditor.InspectorControls;
|
|
17
|
+
var PanelBody = wp.components.PanelBody;
|
|
18
|
+
var SelectControl = wp.components.SelectControl;
|
|
19
|
+
var ToggleControl = wp.components.ToggleControl;
|
|
20
|
+
|
|
21
|
+
var SCHEMES = [
|
|
22
|
+
{ label: __('Inherit', 'baseline'), value: '' },
|
|
23
|
+
{ label: 'Scheme 1', value: 'scheme-1' },
|
|
24
|
+
{ label: 'Scheme 2', value: 'scheme-2' },
|
|
25
|
+
{ label: 'Error', value: 'error' },
|
|
26
|
+
{ label: 'Success', value: 'success' },
|
|
27
|
+
{ label: 'Warning', value: 'warning' },
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
var SURFACES = [
|
|
31
|
+
{ label: __('Background', 'baseline'), value: '' },
|
|
32
|
+
{ label: __('Muted', 'baseline'), value: 'muted' },
|
|
33
|
+
{ label: __('Card', 'baseline'), value: 'card' },
|
|
34
|
+
{ label: __('Primary', 'baseline'), value: 'primary' },
|
|
35
|
+
{ label: __('Secondary', 'baseline'), value: 'secondary' },
|
|
36
|
+
{ label: __('Accent', 'baseline'), value: 'accent' },
|
|
37
|
+
{ label: __('Inverse', 'baseline'), value: 'inverse' },
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
var withControls = createHigherOrderComponent(function (BlockEdit) {
|
|
41
|
+
return function (props) {
|
|
42
|
+
if (props.name === 'core/group') {
|
|
43
|
+
return el(
|
|
44
|
+
Fragment,
|
|
45
|
+
null,
|
|
46
|
+
el(BlockEdit, props),
|
|
47
|
+
el(
|
|
48
|
+
InspectorControls,
|
|
49
|
+
null,
|
|
50
|
+
el(
|
|
51
|
+
PanelBody,
|
|
52
|
+
{ title: __('Scheme', 'baseline'), initialOpen: true },
|
|
53
|
+
el(SelectControl, {
|
|
54
|
+
label: __('Colour scheme', 'baseline'),
|
|
55
|
+
help: __('Paints this group (a Section) and everything in it in the chosen scheme.', 'baseline'),
|
|
56
|
+
value: props.attributes.baselineScheme || '',
|
|
57
|
+
options: SCHEMES,
|
|
58
|
+
onChange: function (value) {
|
|
59
|
+
props.setAttributes({ baselineScheme: value });
|
|
60
|
+
},
|
|
61
|
+
__nextHasNoMarginBottom: true,
|
|
62
|
+
__next40pxDefaultSize: true,
|
|
63
|
+
}),
|
|
64
|
+
el(SelectControl, {
|
|
65
|
+
label: __('Surface', 'baseline'),
|
|
66
|
+
help: __('The fill and text pair within the scheme, e.g. Muted for an announcement bar.', 'baseline'),
|
|
67
|
+
value: props.attributes.baselineSurface || '',
|
|
68
|
+
options: SURFACES,
|
|
69
|
+
onChange: function (value) {
|
|
70
|
+
props.setAttributes({ baselineSurface: value });
|
|
71
|
+
},
|
|
72
|
+
__nextHasNoMarginBottom: true,
|
|
73
|
+
__next40pxDefaultSize: true,
|
|
74
|
+
})
|
|
75
|
+
)
|
|
76
|
+
)
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
if (props.name === 'core/columns') {
|
|
80
|
+
return el(
|
|
81
|
+
Fragment,
|
|
82
|
+
null,
|
|
83
|
+
el(BlockEdit, props),
|
|
84
|
+
el(
|
|
85
|
+
InspectorControls,
|
|
86
|
+
null,
|
|
87
|
+
el(
|
|
88
|
+
PanelBody,
|
|
89
|
+
{ title: __('Stacking', 'baseline'), initialOpen: true },
|
|
90
|
+
el(ToggleControl, {
|
|
91
|
+
label: __('Invert order when stacked', 'baseline'),
|
|
92
|
+
help: __('On mobile the last column shows first, e.g. an image on the right sits above the text.', 'baseline'),
|
|
93
|
+
checked: !!props.attributes.baselineInvertOrder,
|
|
94
|
+
onChange: function (value) {
|
|
95
|
+
props.setAttributes({ baselineInvertOrder: value });
|
|
96
|
+
},
|
|
97
|
+
__nextHasNoMarginBottom: true,
|
|
98
|
+
})
|
|
99
|
+
)
|
|
100
|
+
)
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
return el(BlockEdit, props);
|
|
104
|
+
};
|
|
105
|
+
}, 'withBaselineLayoutControls');
|
|
106
|
+
addFilter('editor.BlockEdit', 'baseline/layout-controls', withControls);
|
|
107
|
+
|
|
108
|
+
// The canvas mirrors the render filters, so the editor shows the scheme and the inverted stacking.
|
|
109
|
+
var withCanvasAttrs = createHigherOrderComponent(function (BlockListBlock) {
|
|
110
|
+
return function (props) {
|
|
111
|
+
var a = props.attributes || {};
|
|
112
|
+
if (props.name === 'core/group' && (a.baselineScheme || a.baselineSurface)) {
|
|
113
|
+
var wrapperProps = a.baselineScheme ? Object.assign({}, props.wrapperProps, { 'data-scheme': a.baselineScheme }) : props.wrapperProps;
|
|
114
|
+
var className = a.baselineSurface ? [props.className, 'has-surface-' + a.baselineSurface].filter(Boolean).join(' ') : props.className;
|
|
115
|
+
return el(BlockListBlock, Object.assign({}, props, { wrapperProps: wrapperProps, className: className }));
|
|
116
|
+
}
|
|
117
|
+
if (props.name === 'core/columns' && a.baselineInvertOrder) {
|
|
118
|
+
return el(BlockListBlock, Object.assign({}, props, { className: [props.className, 'is-inverted-on-mobile'].filter(Boolean).join(' ') }));
|
|
119
|
+
}
|
|
120
|
+
return el(BlockListBlock, props);
|
|
121
|
+
};
|
|
122
|
+
}, 'withBaselineLayoutCanvas');
|
|
123
|
+
addFilter('editor.BlockListBlock', 'baseline/layout-canvas', withCanvasAttrs);
|
|
124
|
+
|
|
125
|
+
wp.domReady(function () {
|
|
126
|
+
var col = function (width) {
|
|
127
|
+
return ['core/column', { width: width }];
|
|
128
|
+
};
|
|
129
|
+
wp.blocks.registerBlockVariation('core/columns', {
|
|
130
|
+
name: 'baseline-two-fifths-three-fifths',
|
|
131
|
+
title: __('40 / 60', 'baseline'),
|
|
132
|
+
description: __('Two columns; the second is wider (Figma 2:3).', 'baseline'),
|
|
133
|
+
innerBlocks: [col('40%'), col('60%')],
|
|
134
|
+
scope: ['block'],
|
|
135
|
+
});
|
|
136
|
+
wp.blocks.registerBlockVariation('core/columns', {
|
|
137
|
+
name: 'baseline-three-fifths-two-fifths',
|
|
138
|
+
title: __('60 / 40', 'baseline'),
|
|
139
|
+
description: __('Two columns; the first is wider (Figma 3:2).', 'baseline'),
|
|
140
|
+
innerBlocks: [col('60%'), col('40%')],
|
|
141
|
+
scope: ['block'],
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
})(window.wp);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// core/navigation's mobile menu as the Sidebar's Sheet (src/core-navigation.css; spec: components/sidebar/spec.md): a
|
|
2
|
+
// click on the dimmed page beside the panel closes it, as a Sheet's does. That area is the overlay's own ::before, and
|
|
3
|
+
// core gives the overlay tabindex="-1", so the click keeps focus inside and core's focusout never closes it. This
|
|
4
|
+
// presses core's close button, so core's Interactivity store stays the owner of the state.
|
|
5
|
+
document.addEventListener("click", (event) => {
|
|
6
|
+
const panel = event.target;
|
|
7
|
+
if (!(panel instanceof Element) || !panel.matches(".wp-block-navigation__responsive-container.is-menu-open")) return;
|
|
8
|
+
const box = panel.getBoundingClientRect();
|
|
9
|
+
if (event.clientX >= box.left && event.clientX <= box.right) return; // the panel's own padding
|
|
10
|
+
panel.querySelector(".wp-block-navigation__responsive-container-close")?.click();
|
|
11
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Baseline Media editor integration (spec: components/media/spec.md, ADR-0018). Plain JS on the WordPress globals; no
|
|
3
|
+
* bundler. One toggle in the Settings tab of core/video and core/embed, bound to the server-registered attribute
|
|
4
|
+
* `baselinePlayback` (inc/media.php): "Open in a dialog" plays the video in a Baseline Dialog instead of in place.
|
|
5
|
+
* Saved markup never changes; the facade and the dialog are rendered at request time.
|
|
6
|
+
*/
|
|
7
|
+
(function (wp) {
|
|
8
|
+
'use strict';
|
|
9
|
+
var __ = wp.i18n.__;
|
|
10
|
+
var el = wp.element.createElement;
|
|
11
|
+
var Fragment = wp.element.Fragment;
|
|
12
|
+
var InspectorControls = wp.blockEditor.InspectorControls;
|
|
13
|
+
var PanelBody = wp.components.PanelBody;
|
|
14
|
+
var ToggleControl = wp.components.ToggleControl;
|
|
15
|
+
|
|
16
|
+
var BLOCKS = ['core/video', 'core/embed'];
|
|
17
|
+
|
|
18
|
+
wp.hooks.addFilter(
|
|
19
|
+
'editor.BlockEdit',
|
|
20
|
+
'baseline/media-playback',
|
|
21
|
+
wp.compose.createHigherOrderComponent(function (BlockEdit) {
|
|
22
|
+
return function (props) {
|
|
23
|
+
if (BLOCKS.indexOf(props.name) < 0) {
|
|
24
|
+
return el(BlockEdit, props);
|
|
25
|
+
}
|
|
26
|
+
var dialog = props.attributes.baselinePlayback === 'dialog';
|
|
27
|
+
return el(
|
|
28
|
+
Fragment,
|
|
29
|
+
null,
|
|
30
|
+
el(BlockEdit, props),
|
|
31
|
+
el(
|
|
32
|
+
InspectorControls,
|
|
33
|
+
null,
|
|
34
|
+
el(
|
|
35
|
+
PanelBody,
|
|
36
|
+
{ title: __('Playback', 'baseline'), initialOpen: true },
|
|
37
|
+
el(ToggleControl, {
|
|
38
|
+
label: __('Open in a dialog', 'baseline'),
|
|
39
|
+
help: __('The play button opens the video in a dialog; closing it stops the video. Needs a poster (core/video) or a YouTube or Vimeo link (embed).', 'baseline'),
|
|
40
|
+
checked: dialog,
|
|
41
|
+
onChange: function (on) {
|
|
42
|
+
props.setAttributes({ baselinePlayback: on ? 'dialog' : 'inline' });
|
|
43
|
+
},
|
|
44
|
+
__nextHasNoMarginBottom: true,
|
|
45
|
+
})
|
|
46
|
+
)
|
|
47
|
+
)
|
|
48
|
+
);
|
|
49
|
+
};
|
|
50
|
+
}, 'withBaselineMediaPlayback')
|
|
51
|
+
);
|
|
52
|
+
})(window.wp);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* Baseline Media facade (spec: components/media/spec.md; markup from inc/media.php). The play button is a link to the
|
|
2
|
+
video; with this script the click instead puts the frame's inert <template> player to work. Nothing of the video loads
|
|
3
|
+
before that. No dependencies; delegated, so facades added later work too.
|
|
4
|
+
- inline playback: the player replaces the play button over the poster and takes focus;
|
|
5
|
+
- dialog playback (the button carries data-bl-media-dialog): the lightbox <dialog> opens first, then the player goes in,
|
|
6
|
+
so showModal() leaves focus on the close button (focus inside a cross-origin iframe would keep Escape from closing
|
|
7
|
+
it). Closing the dialog removes the player, which stops every source the same way. */
|
|
8
|
+
document.addEventListener("click", (event) => {
|
|
9
|
+
const button = event.target instanceof Element ? event.target.closest("[data-bl-media-play]") : null;
|
|
10
|
+
if (!button) return;
|
|
11
|
+
const frame = button.closest(".bl-media__frame");
|
|
12
|
+
const template = frame && frame.querySelector("template[data-bl-media-player]");
|
|
13
|
+
if (!template) return;
|
|
14
|
+
event.preventDefault();
|
|
15
|
+
const player = template.content.firstElementChild.cloneNode(true);
|
|
16
|
+
player.setAttribute("tabindex", "-1");
|
|
17
|
+
|
|
18
|
+
const dialogId = button.getAttribute("data-bl-media-dialog");
|
|
19
|
+
const dialog = dialogId ? document.getElementById(dialogId) : null;
|
|
20
|
+
if (dialog) {
|
|
21
|
+
const slot = dialog.querySelector("[data-slot=media-dialog-frame]");
|
|
22
|
+
dialog.showModal();
|
|
23
|
+
slot.replaceChildren(player);
|
|
24
|
+
if (!dialog.dataset.blMediaBound) {
|
|
25
|
+
dialog.dataset.blMediaBound = "1";
|
|
26
|
+
dialog.addEventListener("close", () => slot.replaceChildren());
|
|
27
|
+
// the lightbox fills the viewport, so a click outside the video is a click on the <dialog> itself
|
|
28
|
+
dialog.addEventListener("click", (e) => {
|
|
29
|
+
if (e.target === dialog) dialog.close();
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
frame.querySelector(".bl-media__play").replaceWith(player);
|
|
36
|
+
template.remove();
|
|
37
|
+
player.focus();
|
|
38
|
+
});
|