Changeset 3801491
- Timestamp:
- 11/14/2026 07:28:39 AM (less than one hour ago)
- Location:
- noah-shop-builder-for-woocommerce
- Files:
-
- 801 added
- 17 edited
-
tags/2.1.1 (added)
-
tags/2.1.1/build (added)
-
tags/2.1.1/build/admin (added)
-
tags/2.1.1/build/admin-dashboard.asset.php (added)
-
tags/2.1.1/build/admin-dashboard.js (added)
-
tags/2.1.1/build/admin/swatches-rtl.css (added)
-
tags/2.1.1/build/admin/swatches.asset.php (added)
-
tags/2.1.1/build/admin/swatches.css (added)
-
tags/2.1.1/build/admin/swatches.js (added)
-
tags/2.1.1/build/blocks (added)
-
tags/2.1.1/build/blocks-manifest.php (added)
-
tags/2.1.1/build/blocks/account-content (added)
-
tags/2.1.1/build/blocks/account-content/block.json (added)
-
tags/2.1.1/build/blocks/account-content/index.asset.php (added)
-
tags/2.1.1/build/blocks/account-content/index.js (added)
-
tags/2.1.1/build/blocks/account-content/render.php (added)
-
tags/2.1.1/build/blocks/account-content/style-index-rtl.css (added)
-
tags/2.1.1/build/blocks/account-content/style-index.css (added)
-
tags/2.1.1/build/blocks/account-navigation (added)
-
tags/2.1.1/build/blocks/account-navigation/block.json (added)
-
tags/2.1.1/build/blocks/account-navigation/index.asset.php (added)
-
tags/2.1.1/build/blocks/account-navigation/index.js (added)
-
tags/2.1.1/build/blocks/account-navigation/render.php (added)
-
tags/2.1.1/build/blocks/account-navigation/style-index-rtl.css (added)
-
tags/2.1.1/build/blocks/account-navigation/style-index.css (added)
-
tags/2.1.1/build/blocks/add-to-cart (added)
-
tags/2.1.1/build/blocks/add-to-cart/block.json (added)
-
tags/2.1.1/build/blocks/add-to-cart/index.asset.php (added)
-
tags/2.1.1/build/blocks/add-to-cart/index.js (added)
-
tags/2.1.1/build/blocks/add-to-cart/render.php (added)
-
tags/2.1.1/build/blocks/add-to-cart/style-index-rtl.css (added)
-
tags/2.1.1/build/blocks/add-to-cart/style-index.css (added)
-
tags/2.1.1/build/blocks/add-to-cart/view.asset.php (added)
-
tags/2.1.1/build/blocks/add-to-cart/view.js (added)
-
tags/2.1.1/build/blocks/archive-description (added)
-
tags/2.1.1/build/blocks/archive-description/block.json (added)
-
tags/2.1.1/build/blocks/archive-description/render.php (added)
-
tags/2.1.1/build/blocks/archive-pagination (added)
-
tags/2.1.1/build/blocks/archive-pagination/block.json (added)
-
tags/2.1.1/build/blocks/archive-pagination/render.php (added)
-
tags/2.1.1/build/blocks/archive-products (added)
-
tags/2.1.1/build/blocks/archive-products/block.json (added)
-
tags/2.1.1/build/blocks/archive-products/render.php (added)
-
tags/2.1.1/build/blocks/archive-result-count (added)
-
tags/2.1.1/build/blocks/archive-result-count/block.json (added)
-
tags/2.1.1/build/blocks/archive-result-count/render.php (added)
-
tags/2.1.1/build/blocks/archive-title (added)
-
tags/2.1.1/build/blocks/archive-title/block.json (added)
-
tags/2.1.1/build/blocks/archive-title/render.php (added)
-
tags/2.1.1/build/blocks/breadcrumbs (added)
-
tags/2.1.1/build/blocks/breadcrumbs/block.json (added)
-
tags/2.1.1/build/blocks/breadcrumbs/render.php (added)
-
tags/2.1.1/build/blocks/cart-table (added)
-
tags/2.1.1/build/blocks/cart-table/block.json (added)
-
tags/2.1.1/build/blocks/cart-table/render.php (added)
-
tags/2.1.1/build/blocks/cart-table/view.asset.php (added)
-
tags/2.1.1/build/blocks/cart-table/view.js (added)
-
tags/2.1.1/build/blocks/cart-totals (added)
-
tags/2.1.1/build/blocks/cart-totals/block.json (added)
-
tags/2.1.1/build/blocks/cart-totals/render.php (added)
-
tags/2.1.1/build/blocks/checkout-additional (added)
-
tags/2.1.1/build/blocks/checkout-additional/block.json (added)
-
tags/2.1.1/build/blocks/checkout-additional/render.php (added)
-
tags/2.1.1/build/blocks/checkout-billing (added)
-
tags/2.1.1/build/blocks/checkout-billing/block.json (added)
-
tags/2.1.1/build/blocks/checkout-billing/render.php (added)
-
tags/2.1.1/build/blocks/checkout-coupon (added)
-
tags/2.1.1/build/blocks/checkout-coupon/block.json (added)
-
tags/2.1.1/build/blocks/checkout-coupon/render.php (added)
-
tags/2.1.1/build/blocks/checkout-form (added)
-
tags/2.1.1/build/blocks/checkout-form/block.json (added)
-
tags/2.1.1/build/blocks/checkout-form/render.php (added)
-
tags/2.1.1/build/blocks/checkout-login (added)
-
tags/2.1.1/build/blocks/checkout-login/block.json (added)
-
tags/2.1.1/build/blocks/checkout-login/render.php (added)
-
tags/2.1.1/build/blocks/checkout-order-notes (added)
-
tags/2.1.1/build/blocks/checkout-order-notes/block.json (added)
-
tags/2.1.1/build/blocks/checkout-order-notes/render.php (added)
-
tags/2.1.1/build/blocks/checkout-order-review (added)
-
tags/2.1.1/build/blocks/checkout-order-review/block.json (added)
-
tags/2.1.1/build/blocks/checkout-order-review/render.php (added)
-
tags/2.1.1/build/blocks/checkout-payment (added)
-
tags/2.1.1/build/blocks/checkout-payment/block.json (added)
-
tags/2.1.1/build/blocks/checkout-payment/render.php (added)
-
tags/2.1.1/build/blocks/checkout-shipping (added)
-
tags/2.1.1/build/blocks/checkout-shipping-methods (added)
-
tags/2.1.1/build/blocks/checkout-shipping-methods/block.json (added)
-
tags/2.1.1/build/blocks/checkout-shipping-methods/render.php (added)
-
tags/2.1.1/build/blocks/checkout-shipping/block.json (added)
-
tags/2.1.1/build/blocks/checkout-shipping/render.php (added)
-
tags/2.1.1/build/blocks/cross-sells (added)
-
tags/2.1.1/build/blocks/cross-sells/block.json (added)
-
tags/2.1.1/build/blocks/cross-sells/render.php (added)
-
tags/2.1.1/build/blocks/empty-cart-message (added)
-
tags/2.1.1/build/blocks/empty-cart-message/block.json (added)
-
tags/2.1.1/build/blocks/empty-cart-message/render.php (added)
-
tags/2.1.1/build/blocks/order-by (added)
-
tags/2.1.1/build/blocks/order-by/block.json (added)
-
tags/2.1.1/build/blocks/order-by/render.php (added)
-
tags/2.1.1/build/blocks/order-details (added)
-
tags/2.1.1/build/blocks/order-details/block.json (added)
-
tags/2.1.1/build/blocks/order-details/render.php (added)
-
tags/2.1.1/build/blocks/order-overview (added)
-
tags/2.1.1/build/blocks/order-overview/block.json (added)
-
tags/2.1.1/build/blocks/order-overview/render.php (added)
-
tags/2.1.1/build/blocks/order-received-message (added)
-
tags/2.1.1/build/blocks/order-received-message/block.json (added)
-
tags/2.1.1/build/blocks/order-received-message/render.php (added)
-
tags/2.1.1/build/blocks/product-additional-information (added)
-
tags/2.1.1/build/blocks/product-additional-information/block.json (added)
-
tags/2.1.1/build/blocks/product-additional-information/render.php (added)
-
tags/2.1.1/build/blocks/product-categories (added)
-
tags/2.1.1/build/blocks/product-categories/block.json (added)
-
tags/2.1.1/build/blocks/product-categories/render.php (added)
-
tags/2.1.1/build/blocks/product-description (added)
-
tags/2.1.1/build/blocks/product-description/block.json (added)
-
tags/2.1.1/build/blocks/product-description/render.php (added)
-
tags/2.1.1/build/blocks/product-excerpt (added)
-
tags/2.1.1/build/blocks/product-excerpt/block.json (added)
-
tags/2.1.1/build/blocks/product-excerpt/render.php (added)
-
tags/2.1.1/build/blocks/product-image (added)
-
tags/2.1.1/build/blocks/product-image/block.json (added)
-
tags/2.1.1/build/blocks/product-image/index.asset.php (added)
-
tags/2.1.1/build/blocks/product-image/index.js (added)
-
tags/2.1.1/build/blocks/product-image/render.php (added)
-
tags/2.1.1/build/blocks/product-image/style-index-rtl.css (added)
-
tags/2.1.1/build/blocks/product-image/style-index.css (added)
-
tags/2.1.1/build/blocks/product-meta (added)
-
tags/2.1.1/build/blocks/product-meta/block.json (added)
-
tags/2.1.1/build/blocks/product-meta/index.asset.php (added)
-
tags/2.1.1/build/blocks/product-meta/index.js (added)
-
tags/2.1.1/build/blocks/product-meta/render.php (added)
-
tags/2.1.1/build/blocks/product-meta/style-index-rtl.css (added)
-
tags/2.1.1/build/blocks/product-meta/style-index.css (added)
-
tags/2.1.1/build/blocks/product-price (added)
-
tags/2.1.1/build/blocks/product-price/block.json (added)
-
tags/2.1.1/build/blocks/product-price/index.asset.php (added)
-
tags/2.1.1/build/blocks/product-price/index.js (added)
-
tags/2.1.1/build/blocks/product-price/render.php (added)
-
tags/2.1.1/build/blocks/product-price/style-index-rtl.css (added)
-
tags/2.1.1/build/blocks/product-price/style-index.css (added)
-
tags/2.1.1/build/blocks/product-rating (added)
-
tags/2.1.1/build/blocks/product-rating/block.json (added)
-
tags/2.1.1/build/blocks/product-rating/index.asset.php (added)
-
tags/2.1.1/build/blocks/product-rating/index.js (added)
-
tags/2.1.1/build/blocks/product-rating/render.php (added)
-
tags/2.1.1/build/blocks/product-rating/style-index-rtl.css (added)
-
tags/2.1.1/build/blocks/product-rating/style-index.css (added)
-
tags/2.1.1/build/blocks/product-review (added)
-
tags/2.1.1/build/blocks/product-review/block.json (added)
-
tags/2.1.1/build/blocks/product-review/render.php (added)
-
tags/2.1.1/build/blocks/product-share (added)
-
tags/2.1.1/build/blocks/product-share/block.json (added)
-
tags/2.1.1/build/blocks/product-share/index.asset.php (added)
-
tags/2.1.1/build/blocks/product-share/index.js (added)
-
tags/2.1.1/build/blocks/product-share/render.php (added)
-
tags/2.1.1/build/blocks/product-share/style-index-rtl.css (added)
-
tags/2.1.1/build/blocks/product-share/style-index.css (added)
-
tags/2.1.1/build/blocks/product-share/view.asset.php (added)
-
tags/2.1.1/build/blocks/product-share/view.js (added)
-
tags/2.1.1/build/blocks/product-sku (added)
-
tags/2.1.1/build/blocks/product-sku/block.json (added)
-
tags/2.1.1/build/blocks/product-sku/render.php (added)
-
tags/2.1.1/build/blocks/product-stock (added)
-
tags/2.1.1/build/blocks/product-stock/block.json (added)
-
tags/2.1.1/build/blocks/product-stock/render.php (added)
-
tags/2.1.1/build/blocks/product-tabs (added)
-
tags/2.1.1/build/blocks/product-tabs/block.json (added)
-
tags/2.1.1/build/blocks/product-tabs/index.asset.php (added)
-
tags/2.1.1/build/blocks/product-tabs/index.js (added)
-
tags/2.1.1/build/blocks/product-tabs/render.php (added)
-
tags/2.1.1/build/blocks/product-tabs/style-index-rtl.css (added)
-
tags/2.1.1/build/blocks/product-tabs/style-index.css (added)
-
tags/2.1.1/build/blocks/product-tabs/view.asset.php (added)
-
tags/2.1.1/build/blocks/product-tabs/view.js (added)
-
tags/2.1.1/build/blocks/product-tags (added)
-
tags/2.1.1/build/blocks/product-tags/block.json (added)
-
tags/2.1.1/build/blocks/product-tags/render.php (added)
-
tags/2.1.1/build/blocks/product-title (added)
-
tags/2.1.1/build/blocks/product-title/block.json (added)
-
tags/2.1.1/build/blocks/product-title/index.asset.php (added)
-
tags/2.1.1/build/blocks/product-title/index.js (added)
-
tags/2.1.1/build/blocks/product-title/render.php (added)
-
tags/2.1.1/build/blocks/product-title/style-index-rtl.css (added)
-
tags/2.1.1/build/blocks/product-title/style-index.css (added)
-
tags/2.1.1/build/blocks/products (added)
-
tags/2.1.1/build/blocks/products/block.json (added)
-
tags/2.1.1/build/blocks/products/render.php (added)
-
tags/2.1.1/build/blocks/related-products (added)
-
tags/2.1.1/build/blocks/related-products/block.json (added)
-
tags/2.1.1/build/blocks/related-products/render.php (added)
-
tags/2.1.1/build/blocks/return-to-shop (added)
-
tags/2.1.1/build/blocks/return-to-shop/block.json (added)
-
tags/2.1.1/build/blocks/return-to-shop/index.asset.php (added)
-
tags/2.1.1/build/blocks/return-to-shop/index.js (added)
-
tags/2.1.1/build/blocks/return-to-shop/render.php (added)
-
tags/2.1.1/build/blocks/return-to-shop/style-index-rtl.css (added)
-
tags/2.1.1/build/blocks/return-to-shop/style-index.css (added)
-
tags/2.1.1/build/blocks/store-notices (added)
-
tags/2.1.1/build/blocks/store-notices/block.json (added)
-
tags/2.1.1/build/blocks/store-notices/render.php (added)
-
tags/2.1.1/build/blocks/template-content (added)
-
tags/2.1.1/build/blocks/template-content/block.json (added)
-
tags/2.1.1/build/blocks/template-content/render.php (added)
-
tags/2.1.1/build/blocks/upsells (added)
-
tags/2.1.1/build/blocks/upsells/block.json (added)
-
tags/2.1.1/build/blocks/upsells/render.php (added)
-
tags/2.1.1/build/blocks/wishlist-button (added)
-
tags/2.1.1/build/blocks/wishlist-button/block.json (added)
-
tags/2.1.1/build/blocks/wishlist-button/render.php (added)
-
tags/2.1.1/build/blocks/wishlist-counter (added)
-
tags/2.1.1/build/blocks/wishlist-counter/block.json (added)
-
tags/2.1.1/build/blocks/wishlist-counter/render.php (added)
-
tags/2.1.1/build/blocks/wishlist-table (added)
-
tags/2.1.1/build/blocks/wishlist-table/block.json (added)
-
tags/2.1.1/build/blocks/wishlist-table/render.php (added)
-
tags/2.1.1/build/common (added)
-
tags/2.1.1/build/common/index.asset.php (added)
-
tags/2.1.1/build/common/index.js (added)
-
tags/2.1.1/build/common/style-index-rtl.css (added)
-
tags/2.1.1/build/common/style-index.css (added)
-
tags/2.1.1/build/editor (added)
-
tags/2.1.1/build/editor/index-rtl.css (added)
-
tags/2.1.1/build/editor/index.asset.php (added)
-
tags/2.1.1/build/editor/index.css (added)
-
tags/2.1.1/build/editor/index.js (added)
-
tags/2.1.1/build/frontend (added)
-
tags/2.1.1/build/frontend/cart.asset.php (added)
-
tags/2.1.1/build/frontend/cart.js (added)
-
tags/2.1.1/build/frontend/quick-view (added)
-
tags/2.1.1/build/frontend/quick-view.asset.php (added)
-
tags/2.1.1/build/frontend/quick-view.js (added)
-
tags/2.1.1/build/frontend/quick-view/index.asset.php (added)
-
tags/2.1.1/build/frontend/quick-view/index.js (added)
-
tags/2.1.1/build/frontend/quick-view/style-index-rtl.css (added)
-
tags/2.1.1/build/frontend/quick-view/style-index.css (added)
-
tags/2.1.1/build/frontend/swatches-rtl.css (added)
-
tags/2.1.1/build/frontend/swatches.asset.php (added)
-
tags/2.1.1/build/frontend/swatches.css (added)
-
tags/2.1.1/build/frontend/swatches.js (added)
-
tags/2.1.1/build/frontend/wc-bridge.asset.php (added)
-
tags/2.1.1/build/frontend/wc-bridge.js (added)
-
tags/2.1.1/build/frontend/wishlist (added)
-
tags/2.1.1/build/frontend/wishlist.asset.php (added)
-
tags/2.1.1/build/frontend/wishlist.js (added)
-
tags/2.1.1/build/frontend/wishlist/index.asset.php (added)
-
tags/2.1.1/build/frontend/wishlist/index.js (added)
-
tags/2.1.1/build/frontend/wishlist/style-index-rtl.css (added)
-
tags/2.1.1/build/frontend/wishlist/style-index.css (added)
-
tags/2.1.1/build/style-admin-dashboard-rtl.css (added)
-
tags/2.1.1/build/style-admin-dashboard.css (added)
-
tags/2.1.1/build/template-editor (added)
-
tags/2.1.1/build/template-editor/index-rtl.css (added)
-
tags/2.1.1/build/template-editor/index.asset.php (added)
-
tags/2.1.1/build/template-editor/index.css (added)
-
tags/2.1.1/build/template-editor/index.js (added)
-
tags/2.1.1/composer.json (added)
-
tags/2.1.1/includes (added)
-
tags/2.1.1/includes/Admin (added)
-
tags/2.1.1/includes/Admin/Admin.php (added)
-
tags/2.1.1/includes/Admin/PluginLinks.php (added)
-
tags/2.1.1/includes/Admin/ProCatalog.php (added)
-
tags/2.1.1/includes/Assets (added)
-
tags/2.1.1/includes/Assets/DynamicCss.php (added)
-
tags/2.1.1/includes/Assets/Manager.php (added)
-
tags/2.1.1/includes/Assets/WcBridge.php (added)
-
tags/2.1.1/includes/Assets/WooScripts.php (added)
-
tags/2.1.1/includes/Blocks (added)
-
tags/2.1.1/includes/Blocks/AccountBlocks.php (added)
-
tags/2.1.1/includes/Blocks/ArchiveInfo.php (added)
-
tags/2.1.1/includes/Blocks/ArchiveProducts.php (added)
-
tags/2.1.1/includes/Blocks/ArchiveQuery.php (added)
-
tags/2.1.1/includes/Blocks/CardActions.php (added)
-
tags/2.1.1/includes/Blocks/CartTable.php (added)
-
tags/2.1.1/includes/Blocks/CartTotals.php (added)
-
tags/2.1.1/includes/Blocks/Categories.php (added)
-
tags/2.1.1/includes/Blocks/CheckoutAddress.php (added)
-
tags/2.1.1/includes/Blocks/CheckoutCouponLogin.php (added)
-
tags/2.1.1/includes/Blocks/CheckoutForm.php (added)
-
tags/2.1.1/includes/Blocks/CheckoutOrderFields.php (added)
-
tags/2.1.1/includes/Blocks/CheckoutOrderReview.php (added)
-
tags/2.1.1/includes/Blocks/CheckoutPayment.php (added)
-
tags/2.1.1/includes/Blocks/CheckoutShippingMethods.php (added)
-
tags/2.1.1/includes/Blocks/OrderBlocks.php (added)
-
tags/2.1.1/includes/Blocks/ProductCard.php (added)
-
tags/2.1.1/includes/Blocks/ProductQuery.php (added)
-
tags/2.1.1/includes/Blocks/ProductTabs.php (added)
-
tags/2.1.1/includes/Blocks/Registrar.php (added)
-
tags/2.1.1/includes/Blocks/Render.php (added)
-
tags/2.1.1/includes/Blocks/Terms.php (added)
-
tags/2.1.1/includes/Config (added)
-
tags/2.1.1/includes/Config/BlockList.php (added)
-
tags/2.1.1/includes/Config/ModuleList.php (added)
-
tags/2.1.1/includes/Config/TemplateTypes.php (added)
-
tags/2.1.1/includes/Context (added)
-
tags/2.1.1/includes/Context/PreviewCart.php (added)
-
tags/2.1.1/includes/Context/PreviewData.php (added)
-
tags/2.1.1/includes/Context/PreviewSession.php (added)
-
tags/2.1.1/includes/Context/Resolver.php (added)
-
tags/2.1.1/includes/Core (added)
-
tags/2.1.1/includes/Core/API.php (added)
-
tags/2.1.1/includes/Core/ConfigList.php (added)
-
tags/2.1.1/includes/Core/Lifecycle.php (added)
-
tags/2.1.1/includes/Core/Migrations.php (added)
-
tags/2.1.1/includes/Core/Settings.php (added)
-
tags/2.1.1/includes/Modules (added)
-
tags/2.1.1/includes/Modules/AbstractModule.php (added)
-
tags/2.1.1/includes/Modules/Loader.php (added)
-
tags/2.1.1/includes/Modules/QuickView (added)
-
tags/2.1.1/includes/Modules/QuickView/QuickViewModule.php (added)
-
tags/2.1.1/includes/Modules/Swatches (added)
-
tags/2.1.1/includes/Modules/Swatches/AdminFields.php (added)
-
tags/2.1.1/includes/Modules/Swatches/Renderer.php (added)
-
tags/2.1.1/includes/Modules/Swatches/SwatchData.php (added)
-
tags/2.1.1/includes/Modules/Swatches/SwatchesModule.php (added)
-
tags/2.1.1/includes/Modules/Wishlist (added)
-
tags/2.1.1/includes/Modules/Wishlist/AccountStore.php (added)
-
tags/2.1.1/includes/Modules/Wishlist/MetaStore.php (added)
-
tags/2.1.1/includes/Modules/Wishlist/Privacy.php (added)
-
tags/2.1.1/includes/Modules/Wishlist/Storage.php (added)
-
tags/2.1.1/includes/Modules/Wishlist/WishlistModule.php (added)
-
tags/2.1.1/includes/Modules/Wishlist/WishlistTable.php (added)
-
tags/2.1.1/includes/Plugin.php (added)
-
tags/2.1.1/includes/REST (added)
-
tags/2.1.1/includes/REST/QuickViewController.php (added)
-
tags/2.1.1/includes/REST/TemplatePostsController.php (added)
-
tags/2.1.1/includes/REST/TemplatesController.php (added)
-
tags/2.1.1/includes/REST/WishlistController.php (added)
-
tags/2.1.1/includes/Templates (added)
-
tags/2.1.1/includes/Templates/Conditions.php (added)
-
tags/2.1.1/includes/Templates/Engine.php (added)
-
tags/2.1.1/includes/Templates/Patterns.php (added)
-
tags/2.1.1/includes/Templates/PostType.php (added)
-
tags/2.1.1/includes/Templates/Preview.php (added)
-
tags/2.1.1/includes/Templates/Renderers (added)
-
tags/2.1.1/includes/Templates/Renderers/BlockThemeRenderer.php (added)
-
tags/2.1.1/includes/Templates/Renderers/ClassicThemeRenderer.php (added)
-
tags/2.1.1/includes/Templates/Types (added)
-
tags/2.1.1/includes/Templates/Types/Archive.php (added)
-
tags/2.1.1/includes/Templates/Types/Cart.php (added)
-
tags/2.1.1/includes/Templates/Types/Checkout.php (added)
-
tags/2.1.1/includes/Templates/Types/MyAccount.php (added)
-
tags/2.1.1/includes/Templates/Types/OrderReceived.php (added)
-
tags/2.1.1/includes/Templates/Types/QuickView.php (added)
-
tags/2.1.1/includes/Templates/Types/Shop.php (added)
-
tags/2.1.1/includes/Templates/Types/SingleProduct.php (added)
-
tags/2.1.1/includes/Traits (added)
-
tags/2.1.1/includes/Traits/Singleton.php (added)
-
tags/2.1.1/languages (added)
-
tags/2.1.1/languages/noah-shop-builder-for-woocommerce.pot (added)
-
tags/2.1.1/noah-shop-builder-for-woocommerce.php (added)
-
tags/2.1.1/package.json (added)
-
tags/2.1.1/patterns (added)
-
tags/2.1.1/patterns/account-classic.php (added)
-
tags/2.1.1/patterns/archive-grid.php (added)
-
tags/2.1.1/patterns/archive-sidebar.php (added)
-
tags/2.1.1/patterns/cart-standard.php (added)
-
tags/2.1.1/patterns/cart-trust.php (added)
-
tags/2.1.1/patterns/checkout-reassure.php (added)
-
tags/2.1.1/patterns/checkout-standard.php (added)
-
tags/2.1.1/patterns/empty-cart-best-sellers.php (added)
-
tags/2.1.1/patterns/empty-cart-new.php (added)
-
tags/2.1.1/patterns/order-thank-you.php (added)
-
tags/2.1.1/patterns/parts (added)
-
tags/2.1.1/patterns/parts/cart.php (added)
-
tags/2.1.1/patterns/parts/checkout.php (added)
-
tags/2.1.1/patterns/parts/product-grid.php (added)
-
tags/2.1.1/patterns/quick-view-compact.php (added)
-
tags/2.1.1/patterns/quick-view-split.php (added)
-
tags/2.1.1/patterns/shop-grid.php (added)
-
tags/2.1.1/patterns/single-page.php (added)
-
tags/2.1.1/readme.txt (added)
-
tags/2.1.1/src (added)
-
tags/2.1.1/src/admin (added)
-
tags/2.1.1/src/admin/blocks (added)
-
tags/2.1.1/src/admin/blocks/index.js (added)
-
tags/2.1.1/src/admin/dashboard (added)
-
tags/2.1.1/src/admin/dashboard/Dashboard.js (added)
-
tags/2.1.1/src/admin/dashboard/components (added)
-
tags/2.1.1/src/admin/dashboard/components/Badges.js (added)
-
tags/2.1.1/src/admin/dashboard/components/Header.js (added)
-
tags/2.1.1/src/admin/dashboard/components/ProLock.js (added)
-
tags/2.1.1/src/admin/dashboard/components/Snackbars.js (added)
-
tags/2.1.1/src/admin/dashboard/components/indicator.js (added)
-
tags/2.1.1/src/admin/dashboard/components/test (added)
-
tags/2.1.1/src/admin/dashboard/components/test/indicator.js (added)
-
tags/2.1.1/src/admin/dashboard/index.js (added)
-
tags/2.1.1/src/admin/dashboard/style.scss (added)
-
tags/2.1.1/src/admin/modules (added)
-
tags/2.1.1/src/admin/modules/index.js (added)
-
tags/2.1.1/src/admin/settings (added)
-
tags/2.1.1/src/admin/settings/index.js (added)
-
tags/2.1.1/src/admin/store (added)
-
tags/2.1.1/src/admin/store/index.js (added)
-
tags/2.1.1/src/admin/store/test (added)
-
tags/2.1.1/src/admin/store/test/index.js (added)
-
tags/2.1.1/src/admin/swatches (added)
-
tags/2.1.1/src/admin/swatches/index.js (added)
-
tags/2.1.1/src/admin/swatches/index.scss (added)
-
tags/2.1.1/src/admin/templates (added)
-
tags/2.1.1/src/admin/templates/NewTemplateModal.js (added)
-
tags/2.1.1/src/admin/templates/PreviewModal.js (added)
-
tags/2.1.1/src/admin/templates/Wireframe.js (added)
-
tags/2.1.1/src/admin/templates/index.js (added)
-
tags/2.1.1/src/admin/templates/style.scss (added)
-
tags/2.1.1/src/admin/templates/test (added)
-
tags/2.1.1/src/admin/templates/test/utils.js (added)
-
tags/2.1.1/src/admin/templates/types.js (added)
-
tags/2.1.1/src/admin/templates/utils.js (added)
-
tags/2.1.1/src/admin/welcome (added)
-
tags/2.1.1/src/admin/welcome/index.js (added)
-
tags/2.1.1/src/blocks (added)
-
tags/2.1.1/src/blocks/account-content (added)
-
tags/2.1.1/src/blocks/account-content/block.json (added)
-
tags/2.1.1/src/blocks/account-content/edit.js (added)
-
tags/2.1.1/src/blocks/account-content/index.js (added)
-
tags/2.1.1/src/blocks/account-content/render.php (added)
-
tags/2.1.1/src/blocks/account-content/style.js (added)
-
tags/2.1.1/src/blocks/account-content/style.scss (added)
-
tags/2.1.1/src/blocks/account-navigation (added)
-
tags/2.1.1/src/blocks/account-navigation/block.json (added)
-
tags/2.1.1/src/blocks/account-navigation/edit.js (added)
-
tags/2.1.1/src/blocks/account-navigation/index.js (added)
-
tags/2.1.1/src/blocks/account-navigation/render.php (added)
-
tags/2.1.1/src/blocks/account-navigation/style.js (added)
-
tags/2.1.1/src/blocks/account-navigation/style.scss (added)
-
tags/2.1.1/src/blocks/add-to-cart (added)
-
tags/2.1.1/src/blocks/add-to-cart/block.json (added)
-
tags/2.1.1/src/blocks/add-to-cart/edit.js (added)
-
tags/2.1.1/src/blocks/add-to-cart/index.js (added)
-
tags/2.1.1/src/blocks/add-to-cart/render.php (added)
-
tags/2.1.1/src/blocks/add-to-cart/style.js (added)
-
tags/2.1.1/src/blocks/add-to-cart/style.scss (added)
-
tags/2.1.1/src/blocks/add-to-cart/view.js (added)
-
tags/2.1.1/src/blocks/archive-description (added)
-
tags/2.1.1/src/blocks/archive-description/block.json (added)
-
tags/2.1.1/src/blocks/archive-description/edit.js (added)
-
tags/2.1.1/src/blocks/archive-description/index.js (added)
-
tags/2.1.1/src/blocks/archive-description/render.php (added)
-
tags/2.1.1/src/blocks/archive-pagination (added)
-
tags/2.1.1/src/blocks/archive-pagination/block.json (added)
-
tags/2.1.1/src/blocks/archive-pagination/edit.js (added)
-
tags/2.1.1/src/blocks/archive-pagination/index.js (added)
-
tags/2.1.1/src/blocks/archive-pagination/render.php (added)
-
tags/2.1.1/src/blocks/archive-products (added)
-
tags/2.1.1/src/blocks/archive-products/block.json (added)
-
tags/2.1.1/src/blocks/archive-products/edit.js (added)
-
tags/2.1.1/src/blocks/archive-products/index.js (added)
-
tags/2.1.1/src/blocks/archive-products/render.php (added)
-
tags/2.1.1/src/blocks/archive-result-count (added)
-
tags/2.1.1/src/blocks/archive-result-count/block.json (added)
-
tags/2.1.1/src/blocks/archive-result-count/edit.js (added)
-
tags/2.1.1/src/blocks/archive-result-count/index.js (added)
-
tags/2.1.1/src/blocks/archive-result-count/render.php (added)
-
tags/2.1.1/src/blocks/archive-title (added)
-
tags/2.1.1/src/blocks/archive-title/block.json (added)
-
tags/2.1.1/src/blocks/archive-title/edit.js (added)
-
tags/2.1.1/src/blocks/archive-title/index.js (added)
-
tags/2.1.1/src/blocks/archive-title/render.php (added)
-
tags/2.1.1/src/blocks/breadcrumbs (added)
-
tags/2.1.1/src/blocks/breadcrumbs/block.json (added)
-
tags/2.1.1/src/blocks/breadcrumbs/edit.js (added)
-
tags/2.1.1/src/blocks/breadcrumbs/index.js (added)
-
tags/2.1.1/src/blocks/breadcrumbs/render.php (added)
-
tags/2.1.1/src/blocks/cart-table (added)
-
tags/2.1.1/src/blocks/cart-table/block.json (added)
-
tags/2.1.1/src/blocks/cart-table/edit.js (added)
-
tags/2.1.1/src/blocks/cart-table/index.js (added)
-
tags/2.1.1/src/blocks/cart-table/render.php (added)
-
tags/2.1.1/src/blocks/cart-table/view.js (added)
-
tags/2.1.1/src/blocks/cart-totals (added)
-
tags/2.1.1/src/blocks/cart-totals/block.json (added)
-
tags/2.1.1/src/blocks/cart-totals/edit.js (added)
-
tags/2.1.1/src/blocks/cart-totals/index.js (added)
-
tags/2.1.1/src/blocks/cart-totals/render.php (added)
-
tags/2.1.1/src/blocks/checkout-additional (added)
-
tags/2.1.1/src/blocks/checkout-additional/block.json (added)
-
tags/2.1.1/src/blocks/checkout-additional/edit.js (added)
-
tags/2.1.1/src/blocks/checkout-additional/index.js (added)
-
tags/2.1.1/src/blocks/checkout-additional/render.php (added)
-
tags/2.1.1/src/blocks/checkout-billing (added)
-
tags/2.1.1/src/blocks/checkout-billing/block.json (added)
-
tags/2.1.1/src/blocks/checkout-billing/edit.js (added)
-
tags/2.1.1/src/blocks/checkout-billing/index.js (added)
-
tags/2.1.1/src/blocks/checkout-billing/render.php (added)
-
tags/2.1.1/src/blocks/checkout-coupon (added)
-
tags/2.1.1/src/blocks/checkout-coupon/block.json (added)
-
tags/2.1.1/src/blocks/checkout-coupon/edit.js (added)
-
tags/2.1.1/src/blocks/checkout-coupon/index.js (added)
-
tags/2.1.1/src/blocks/checkout-coupon/render.php (added)
-
tags/2.1.1/src/blocks/checkout-form (added)
-
tags/2.1.1/src/blocks/checkout-form/block.json (added)
-
tags/2.1.1/src/blocks/checkout-form/edit.js (added)
-
tags/2.1.1/src/blocks/checkout-form/index.js (added)
-
tags/2.1.1/src/blocks/checkout-form/render.php (added)
-
tags/2.1.1/src/blocks/checkout-form/rules.js (added)
-
tags/2.1.1/src/blocks/checkout-form/save.js (added)
-
tags/2.1.1/src/blocks/checkout-form/test (added)
-
tags/2.1.1/src/blocks/checkout-form/test/rules.js (added)
-
tags/2.1.1/src/blocks/checkout-login (added)
-
tags/2.1.1/src/blocks/checkout-login/block.json (added)
-
tags/2.1.1/src/blocks/checkout-login/edit.js (added)
-
tags/2.1.1/src/blocks/checkout-login/index.js (added)
-
tags/2.1.1/src/blocks/checkout-login/render.php (added)
-
tags/2.1.1/src/blocks/checkout-order-notes (added)
-
tags/2.1.1/src/blocks/checkout-order-notes/block.json (added)
-
tags/2.1.1/src/blocks/checkout-order-notes/edit.js (added)
-
tags/2.1.1/src/blocks/checkout-order-notes/index.js (added)
-
tags/2.1.1/src/blocks/checkout-order-notes/render.php (added)
-
tags/2.1.1/src/blocks/checkout-order-review (added)
-
tags/2.1.1/src/blocks/checkout-order-review/block.json (added)
-
tags/2.1.1/src/blocks/checkout-order-review/edit.js (added)
-
tags/2.1.1/src/blocks/checkout-order-review/index.js (added)
-
tags/2.1.1/src/blocks/checkout-order-review/render.php (added)
-
tags/2.1.1/src/blocks/checkout-payment (added)
-
tags/2.1.1/src/blocks/checkout-payment/block.json (added)
-
tags/2.1.1/src/blocks/checkout-payment/edit.js (added)
-
tags/2.1.1/src/blocks/checkout-payment/index.js (added)
-
tags/2.1.1/src/blocks/checkout-payment/render.php (added)
-
tags/2.1.1/src/blocks/checkout-shipping (added)
-
tags/2.1.1/src/blocks/checkout-shipping-methods (added)
-
tags/2.1.1/src/blocks/checkout-shipping-methods/block.json (added)
-
tags/2.1.1/src/blocks/checkout-shipping-methods/edit.js (added)
-
tags/2.1.1/src/blocks/checkout-shipping-methods/index.js (added)
-
tags/2.1.1/src/blocks/checkout-shipping-methods/render.php (added)
-
tags/2.1.1/src/blocks/checkout-shipping/block.json (added)
-
tags/2.1.1/src/blocks/checkout-shipping/edit.js (added)
-
tags/2.1.1/src/blocks/checkout-shipping/index.js (added)
-
tags/2.1.1/src/blocks/checkout-shipping/render.php (added)
-
tags/2.1.1/src/blocks/cross-sells (added)
-
tags/2.1.1/src/blocks/cross-sells/block.json (added)
-
tags/2.1.1/src/blocks/cross-sells/edit.js (added)
-
tags/2.1.1/src/blocks/cross-sells/index.js (added)
-
tags/2.1.1/src/blocks/cross-sells/render.php (added)
-
tags/2.1.1/src/blocks/empty-cart-message (added)
-
tags/2.1.1/src/blocks/empty-cart-message/block.json (added)
-
tags/2.1.1/src/blocks/empty-cart-message/edit.js (added)
-
tags/2.1.1/src/blocks/empty-cart-message/index.js (added)
-
tags/2.1.1/src/blocks/empty-cart-message/render.php (added)
-
tags/2.1.1/src/blocks/order-by (added)
-
tags/2.1.1/src/blocks/order-by/block.json (added)
-
tags/2.1.1/src/blocks/order-by/edit.js (added)
-
tags/2.1.1/src/blocks/order-by/index.js (added)
-
tags/2.1.1/src/blocks/order-by/render.php (added)
-
tags/2.1.1/src/blocks/order-details (added)
-
tags/2.1.1/src/blocks/order-details/block.json (added)
-
tags/2.1.1/src/blocks/order-details/edit.js (added)
-
tags/2.1.1/src/blocks/order-details/index.js (added)
-
tags/2.1.1/src/blocks/order-details/render.php (added)
-
tags/2.1.1/src/blocks/order-overview (added)
-
tags/2.1.1/src/blocks/order-overview/block.json (added)
-
tags/2.1.1/src/blocks/order-overview/edit.js (added)
-
tags/2.1.1/src/blocks/order-overview/index.js (added)
-
tags/2.1.1/src/blocks/order-overview/render.php (added)
-
tags/2.1.1/src/blocks/order-received-message (added)
-
tags/2.1.1/src/blocks/order-received-message/block.json (added)
-
tags/2.1.1/src/blocks/order-received-message/edit.js (added)
-
tags/2.1.1/src/blocks/order-received-message/index.js (added)
-
tags/2.1.1/src/blocks/order-received-message/render.php (added)
-
tags/2.1.1/src/blocks/product-additional-information (added)
-
tags/2.1.1/src/blocks/product-additional-information/block.json (added)
-
tags/2.1.1/src/blocks/product-additional-information/edit.js (added)
-
tags/2.1.1/src/blocks/product-additional-information/index.js (added)
-
tags/2.1.1/src/blocks/product-additional-information/render.php (added)
-
tags/2.1.1/src/blocks/product-categories (added)
-
tags/2.1.1/src/blocks/product-categories/block.json (added)
-
tags/2.1.1/src/blocks/product-categories/edit.js (added)
-
tags/2.1.1/src/blocks/product-categories/index.js (added)
-
tags/2.1.1/src/blocks/product-categories/render.php (added)
-
tags/2.1.1/src/blocks/product-description (added)
-
tags/2.1.1/src/blocks/product-description/block.json (added)
-
tags/2.1.1/src/blocks/product-description/edit.js (added)
-
tags/2.1.1/src/blocks/product-description/index.js (added)
-
tags/2.1.1/src/blocks/product-description/render.php (added)
-
tags/2.1.1/src/blocks/product-excerpt (added)
-
tags/2.1.1/src/blocks/product-excerpt/block.json (added)
-
tags/2.1.1/src/blocks/product-excerpt/edit.js (added)
-
tags/2.1.1/src/blocks/product-excerpt/index.js (added)
-
tags/2.1.1/src/blocks/product-excerpt/render.php (added)
-
tags/2.1.1/src/blocks/product-image (added)
-
tags/2.1.1/src/blocks/product-image/block.json (added)
-
tags/2.1.1/src/blocks/product-image/edit.js (added)
-
tags/2.1.1/src/blocks/product-image/editor.scss (added)
-
tags/2.1.1/src/blocks/product-image/index.js (added)
-
tags/2.1.1/src/blocks/product-image/render.php (added)
-
tags/2.1.1/src/blocks/product-image/style.js (added)
-
tags/2.1.1/src/blocks/product-image/style.scss (added)
-
tags/2.1.1/src/blocks/product-meta (added)
-
tags/2.1.1/src/blocks/product-meta/block.json (added)
-
tags/2.1.1/src/blocks/product-meta/edit.js (added)
-
tags/2.1.1/src/blocks/product-meta/index.js (added)
-
tags/2.1.1/src/blocks/product-meta/render.php (added)
-
tags/2.1.1/src/blocks/product-meta/style.js (added)
-
tags/2.1.1/src/blocks/product-meta/style.scss (added)
-
tags/2.1.1/src/blocks/product-price (added)
-
tags/2.1.1/src/blocks/product-price/block.json (added)
-
tags/2.1.1/src/blocks/product-price/edit.js (added)
-
tags/2.1.1/src/blocks/product-price/editor.scss (added)
-
tags/2.1.1/src/blocks/product-price/index.js (added)
-
tags/2.1.1/src/blocks/product-price/render.php (added)
-
tags/2.1.1/src/blocks/product-price/style.js (added)
-
tags/2.1.1/src/blocks/product-price/style.scss (added)
-
tags/2.1.1/src/blocks/product-rating (added)
-
tags/2.1.1/src/blocks/product-rating/block.json (added)
-
tags/2.1.1/src/blocks/product-rating/edit.js (added)
-
tags/2.1.1/src/blocks/product-rating/index.js (added)
-
tags/2.1.1/src/blocks/product-rating/render.php (added)
-
tags/2.1.1/src/blocks/product-rating/style.js (added)
-
tags/2.1.1/src/blocks/product-rating/style.scss (added)
-
tags/2.1.1/src/blocks/product-review (added)
-
tags/2.1.1/src/blocks/product-review/block.json (added)
-
tags/2.1.1/src/blocks/product-review/edit.js (added)
-
tags/2.1.1/src/blocks/product-review/index.js (added)
-
tags/2.1.1/src/blocks/product-review/render.php (added)
-
tags/2.1.1/src/blocks/product-share (added)
-
tags/2.1.1/src/blocks/product-share/block.json (added)
-
tags/2.1.1/src/blocks/product-share/edit.js (added)
-
tags/2.1.1/src/blocks/product-share/index.js (added)
-
tags/2.1.1/src/blocks/product-share/render.php (added)
-
tags/2.1.1/src/blocks/product-share/style.js (added)
-
tags/2.1.1/src/blocks/product-share/style.scss (added)
-
tags/2.1.1/src/blocks/product-share/view.js (added)
-
tags/2.1.1/src/blocks/product-sku (added)
-
tags/2.1.1/src/blocks/product-sku/block.json (added)
-
tags/2.1.1/src/blocks/product-sku/edit.js (added)
-
tags/2.1.1/src/blocks/product-sku/index.js (added)
-
tags/2.1.1/src/blocks/product-sku/render.php (added)
-
tags/2.1.1/src/blocks/product-stock (added)
-
tags/2.1.1/src/blocks/product-stock/block.json (added)
-
tags/2.1.1/src/blocks/product-stock/edit.js (added)
-
tags/2.1.1/src/blocks/product-stock/index.js (added)
-
tags/2.1.1/src/blocks/product-stock/render.php (added)
-
tags/2.1.1/src/blocks/product-tabs (added)
-
tags/2.1.1/src/blocks/product-tabs/block.json (added)
-
tags/2.1.1/src/blocks/product-tabs/edit.js (added)
-
tags/2.1.1/src/blocks/product-tabs/index.js (added)
-
tags/2.1.1/src/blocks/product-tabs/render.php (added)
-
tags/2.1.1/src/blocks/product-tabs/style.js (added)
-
tags/2.1.1/src/blocks/product-tabs/style.scss (added)
-
tags/2.1.1/src/blocks/product-tabs/view.js (added)
-
tags/2.1.1/src/blocks/product-tags (added)
-
tags/2.1.1/src/blocks/product-tags/block.json (added)
-
tags/2.1.1/src/blocks/product-tags/edit.js (added)
-
tags/2.1.1/src/blocks/product-tags/index.js (added)
-
tags/2.1.1/src/blocks/product-tags/render.php (added)
-
tags/2.1.1/src/blocks/product-title (added)
-
tags/2.1.1/src/blocks/product-title/block.json (added)
-
tags/2.1.1/src/blocks/product-title/edit.js (added)
-
tags/2.1.1/src/blocks/product-title/editor.scss (added)
-
tags/2.1.1/src/blocks/product-title/index.js (added)
-
tags/2.1.1/src/blocks/product-title/render.php (added)
-
tags/2.1.1/src/blocks/product-title/style.js (added)
-
tags/2.1.1/src/blocks/product-title/style.scss (added)
-
tags/2.1.1/src/blocks/products (added)
-
tags/2.1.1/src/blocks/products/block.json (added)
-
tags/2.1.1/src/blocks/products/edit.js (added)
-
tags/2.1.1/src/blocks/products/index.js (added)
-
tags/2.1.1/src/blocks/products/render.php (added)
-
tags/2.1.1/src/blocks/related-products (added)
-
tags/2.1.1/src/blocks/related-products/block.json (added)
-
tags/2.1.1/src/blocks/related-products/edit.js (added)
-
tags/2.1.1/src/blocks/related-products/index.js (added)
-
tags/2.1.1/src/blocks/related-products/render.php (added)
-
tags/2.1.1/src/blocks/return-to-shop (added)
-
tags/2.1.1/src/blocks/return-to-shop/block.json (added)
-
tags/2.1.1/src/blocks/return-to-shop/edit.js (added)
-
tags/2.1.1/src/blocks/return-to-shop/index.js (added)
-
tags/2.1.1/src/blocks/return-to-shop/render.php (added)
-
tags/2.1.1/src/blocks/return-to-shop/style.js (added)
-
tags/2.1.1/src/blocks/return-to-shop/style.scss (added)
-
tags/2.1.1/src/blocks/store-notices (added)
-
tags/2.1.1/src/blocks/store-notices/block.json (added)
-
tags/2.1.1/src/blocks/store-notices/edit.js (added)
-
tags/2.1.1/src/blocks/store-notices/index.js (added)
-
tags/2.1.1/src/blocks/store-notices/render.php (added)
-
tags/2.1.1/src/blocks/template-content (added)
-
tags/2.1.1/src/blocks/template-content/block.json (added)
-
tags/2.1.1/src/blocks/template-content/render.php (added)
-
tags/2.1.1/src/blocks/upsells (added)
-
tags/2.1.1/src/blocks/upsells/block.json (added)
-
tags/2.1.1/src/blocks/upsells/edit.js (added)
-
tags/2.1.1/src/blocks/upsells/index.js (added)
-
tags/2.1.1/src/blocks/upsells/render.php (added)
-
tags/2.1.1/src/blocks/wishlist-button (added)
-
tags/2.1.1/src/blocks/wishlist-button/block.json (added)
-
tags/2.1.1/src/blocks/wishlist-button/edit.js (added)
-
tags/2.1.1/src/blocks/wishlist-button/index.js (added)
-
tags/2.1.1/src/blocks/wishlist-button/render.php (added)
-
tags/2.1.1/src/blocks/wishlist-counter (added)
-
tags/2.1.1/src/blocks/wishlist-counter/block.json (added)
-
tags/2.1.1/src/blocks/wishlist-counter/edit.js (added)
-
tags/2.1.1/src/blocks/wishlist-counter/index.js (added)
-
tags/2.1.1/src/blocks/wishlist-counter/render.php (added)
-
tags/2.1.1/src/blocks/wishlist-table (added)
-
tags/2.1.1/src/blocks/wishlist-table/block.json (added)
-
tags/2.1.1/src/blocks/wishlist-table/edit.js (added)
-
tags/2.1.1/src/blocks/wishlist-table/index.js (added)
-
tags/2.1.1/src/blocks/wishlist-table/render.php (added)
-
tags/2.1.1/src/editor (added)
-
tags/2.1.1/src/editor/blocks.js (added)
-
tags/2.1.1/src/editor/components (added)
-
tags/2.1.1/src/editor/components/card-controls.js (added)
-
tags/2.1.1/src/editor/components/error-boundary.js (added)
-
tags/2.1.1/src/editor/components/index.js (added)
-
tags/2.1.1/src/editor/components/placeholder.js (added)
-
tags/2.1.1/src/editor/components/preview-product-picker.js (added)
-
tags/2.1.1/src/editor/components/product-list-edit.js (added)
-
tags/2.1.1/src/editor/components/responsive-control.js (added)
-
tags/2.1.1/src/editor/components/server-block.js (added)
-
tags/2.1.1/src/editor/components/server-preview.js (added)
-
tags/2.1.1/src/editor/components/terms-edit.js (added)
-
tags/2.1.1/src/editor/css (added)
-
tags/2.1.1/src/editor/css/index.js (added)
-
tags/2.1.1/src/editor/css/test (added)
-
tags/2.1.1/src/editor/css/test/index.js (added)
-
tags/2.1.1/src/editor/editor.scss (added)
-
tags/2.1.1/src/editor/hooks (added)
-
tags/2.1.1/src/editor/hooks/index.js (added)
-
tags/2.1.1/src/editor/index.js (added)
-
tags/2.1.1/src/editor/register.js (added)
-
tags/2.1.1/src/editor/test (added)
-
tags/2.1.1/src/editor/test/register.js (added)
-
tags/2.1.1/src/frontend (added)
-
tags/2.1.1/src/frontend/cart (added)
-
tags/2.1.1/src/frontend/cart/index.js (added)
-
tags/2.1.1/src/frontend/cart/notices.js (added)
-
tags/2.1.1/src/frontend/cart/test (added)
-
tags/2.1.1/src/frontend/cart/test/notices.js (added)
-
tags/2.1.1/src/frontend/quick-view (added)
-
tags/2.1.1/src/frontend/quick-view/dom.js (added)
-
tags/2.1.1/src/frontend/quick-view/index.js (added)
-
tags/2.1.1/src/frontend/quick-view/style.js (added)
-
tags/2.1.1/src/frontend/quick-view/style.scss (added)
-
tags/2.1.1/src/frontend/quick-view/test (added)
-
tags/2.1.1/src/frontend/quick-view/test/dom.js (added)
-
tags/2.1.1/src/frontend/quick-view/test/woo.js (added)
-
tags/2.1.1/src/frontend/quick-view/woo.js (added)
-
tags/2.1.1/src/frontend/swatches (added)
-
tags/2.1.1/src/frontend/swatches/helpers.js (added)
-
tags/2.1.1/src/frontend/swatches/index.js (added)
-
tags/2.1.1/src/frontend/swatches/index.scss (added)
-
tags/2.1.1/src/frontend/swatches/test (added)
-
tags/2.1.1/src/frontend/swatches/test/helpers.js (added)
-
tags/2.1.1/src/frontend/wc-bridge (added)
-
tags/2.1.1/src/frontend/wc-bridge/index.js (added)
-
tags/2.1.1/src/frontend/wishlist (added)
-
tags/2.1.1/src/frontend/wishlist/index.js (added)
-
tags/2.1.1/src/frontend/wishlist/list.js (added)
-
tags/2.1.1/src/frontend/wishlist/queue.js (added)
-
tags/2.1.1/src/frontend/wishlist/style.js (added)
-
tags/2.1.1/src/frontend/wishlist/style.scss (added)
-
tags/2.1.1/src/frontend/wishlist/test (added)
-
tags/2.1.1/src/frontend/wishlist/test/list.js (added)
-
tags/2.1.1/src/frontend/wishlist/test/queue.js (added)
-
tags/2.1.1/src/shared (added)
-
tags/2.1.1/src/shared/common (added)
-
tags/2.1.1/src/shared/common/index.js (added)
-
tags/2.1.1/src/shared/common/style.scss (added)
-
tags/2.1.1/src/shared/quantity-stepper.js (added)
-
tags/2.1.1/src/shared/scss (added)
-
tags/2.1.1/src/shared/scss/_breakpoints.scss (added)
-
tags/2.1.1/src/shared/scss/_mixins.scss (added)
-
tags/2.1.1/src/shared/scss/_quantity.scss (added)
-
tags/2.1.1/src/template-editor (added)
-
tags/2.1.1/src/template-editor/conditions-panel.js (added)
-
tags/2.1.1/src/template-editor/conditions.js (added)
-
tags/2.1.1/src/template-editor/data.js (added)
-
tags/2.1.1/src/template-editor/editor.scss (added)
-
tags/2.1.1/src/template-editor/endpoints-field.js (added)
-
tags/2.1.1/src/template-editor/ids-field.js (added)
-
tags/2.1.1/src/template-editor/index.js (added)
-
tags/2.1.1/src/template-editor/keep-woo-blocks.js (added)
-
tags/2.1.1/src/template-editor/quick-view-allowed.js (added)
-
tags/2.1.1/src/template-editor/quick-view-blocks.js (added)
-
tags/2.1.1/src/template-editor/settings-panel.js (added)
-
tags/2.1.1/src/template-editor/test (added)
-
tags/2.1.1/src/template-editor/test/conditions.js (added)
-
tags/2.1.1/src/template-editor/test/quick-view-blocks.js (added)
-
tags/2.1.1/templates (added)
-
tags/2.1.1/templates/canvas-full.php (added)
-
tags/2.1.1/templates/canvas-theme.php (added)
-
tags/2.1.1/templates/checkout (added)
-
tags/2.1.1/templates/checkout/shipping-summary.php (added)
-
tags/2.1.1/templates/order (added)
-
tags/2.1.1/templates/order/nothing.php (added)
-
tags/2.1.1/uninstall.php (added)
-
tags/2.1.1/vendor (added)
-
tags/2.1.1/vendor/autoload.php (added)
-
tags/2.1.1/vendor/composer (added)
-
tags/2.1.1/vendor/composer/ClassLoader.php (added)
-
tags/2.1.1/vendor/composer/InstalledVersions.php (added)
-
tags/2.1.1/vendor/composer/LICENSE (added)
-
tags/2.1.1/vendor/composer/autoload_classmap.php (added)
-
tags/2.1.1/vendor/composer/autoload_namespaces.php (added)
-
tags/2.1.1/vendor/composer/autoload_psr4.php (added)
-
tags/2.1.1/vendor/composer/autoload_real.php (added)
-
tags/2.1.1/vendor/composer/autoload_static.php (added)
-
tags/2.1.1/vendor/composer/installed.php (added)
-
tags/2.1.1/vendor/composer/platform_check.php (added)
-
trunk/build/admin-dashboard.asset.php (modified) (1 diff)
-
trunk/build/admin-dashboard.js (modified) (1 diff)
-
trunk/build/style-admin-dashboard-rtl.css (modified) (1 diff)
-
trunk/build/style-admin-dashboard.css (modified) (1 diff)
-
trunk/includes/Admin/Admin.php (modified) (1 diff)
-
trunk/includes/Admin/ProCatalog.php (added)
-
trunk/includes/Config/BlockList.php (modified) (2 diffs)
-
trunk/includes/Core/API.php (modified) (3 diffs)
-
trunk/languages/noah-shop-builder-for-woocommerce.pot (modified) (15 diffs)
-
trunk/noah-shop-builder-for-woocommerce.php (modified) (2 diffs)
-
trunk/package.json (modified) (1 diff)
-
trunk/readme.txt (modified) (14 diffs)
-
trunk/src/admin/blocks/index.js (modified) (3 diffs)
-
trunk/src/admin/dashboard/components/ProLock.js (added)
-
trunk/src/admin/dashboard/style.scss (modified) (2 diffs)
-
trunk/src/admin/modules/index.js (modified) (4 diffs)
-
trunk/vendor/composer/autoload_classmap.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_real.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_static.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
noah-shop-builder-for-woocommerce/trunk/build/admin-dashboard.asset.php
r3800774 r3801491 14 14 'wp-url' 15 15 ), 16 'version' => ' ccf97b25415a9e6abc1c'16 'version' => 'de7d8beeb7b0879ae6af' 17 17 ); -
noah-shop-builder-for-woocommerce/trunk/build/admin-dashboard.js
r3800774 r3801491 1 (()=>{"use strict";var e={659(e,o,s){const t=window.wp.element,r=window.wp.url,a=window.wp.i18n,n=window.wp.components,l=window.wp.data,i=window.wp.apiFetch;var c=s.n(i);const d=window.wp.notices,h="noah_shop_builder_blocks_list",m="noah_shop_builder_modules_list",u="noah_shop_builder_module_settings",p="noah_shop_builder_settings",g={blocks:{},loadError:null,modules:{},modulesLoadError:null,pendingSaves:0,settings:{},settingsLoadError:null},_={getBlocks:e=>e.blocks,getLoadError:e=>e.loadError,isSaving:e=>e.pendingSaves>0,getStatuses(e){const o={};for(const s of Object.values(e.blocks))s.required||(o[s.slug]=s.status);return o},getSettings:e=>e.settings,getSettingsLoadError:e=>e.settingsLoadError,getModules:e=>e.modules,getModulesLoadError:e=>e.modulesLoadError,getModuleStatuses(e){const o={};for(const s of Object.values(e.modules))o[s.slug]=s.status;return o}};let w=Promise.resolve();function v(e,o,s,t,r){const n=e.dispatch(d.store);o({type:"SAVE_START"});const l=w.then(async()=>{try{const e=await c()({path:"/wp/v2/settings",method:"POST",data:s()});return t(e),n.createSuccessNotice((0,a.__)("Settings saved.","noah-shop-builder-for-woocommerce"),{type:"snackbar",id:"noah-shop-builder-saved"}),!0}catch(e){return r(),n.createErrorNotice(e?.message||(0,a.__)("Settings could not be saved. Please try again.","noah-shop-builder-for-woocommerce"),{type:"snackbar",id:"noah-shop-builder-save-error"}),!1}finally{o({type:"SAVE_END"})}});return w=l,l}const x={receiveBlocks:e=>({type:"RECEIVE_BLOCKS",blocks:e}),receiveLoadError:e=>({type:"RECEIVE_LOAD_ERROR",message:e}),setStatuses:e=>({type:"SET_STATUSES",statuses:e}),toggleBlock:(e,o)=>({dispatch:s})=>s.updateStatuses({[e]:o?"active":"inactive"}),setAllBlocks:e=>({dispatch:o,select:s})=>{const t={};for(const o of Object.keys(s.getStatuses()))t[o]=e?"active":"inactive";return o.updateStatuses(t)},updateStatuses:e=>({dispatch:o,select:s,registry:t})=>{const r=s.getStatuses(),a={};for(const o of Object.keys(e))a[o]=r[o];return o.setStatuses(e),v(t,o,()=>({[h]:s.getStatuses()}),()=>{},()=>o.setStatuses(a))},receiveSettings:e=>({type:"RECEIVE_SETTINGS",settings:e}),receiveSettingsLoadError:e=>({type:"RECEIVE_SETTINGS_LOAD_ERROR",message:e}),saveSetting:(e,o)=>({dispatch:s,select:t,registry:r})=>{const a=t.getSettings()[e];return s.receiveSettings({[e]:o}),v(r,s,()=>({[p]:{[e]:o}}),e=>s.receiveSettings(e?.[p]||{}),()=>s.receiveSettings({[e]:a}))},receiveModules:e=>({type:"RECEIVE_MODULES",modules:e}),receiveModulesLoadError:e=>({type:"RECEIVE_MODULES_LOAD_ERROR",message:e}),toggleModule:(e,o)=>({dispatch:s,select:t,registry:r})=>{const a=t.getModules()[e]?.status;return s({type:"SET_MODULE",slug:e,changes:{status:o?"active":"inactive"}}),v(r,s,()=>({[m]:t.getModuleStatuses()}),()=>{},()=>s({type:"SET_MODULE",slug:e,changes:{status:a}}))},saveModuleSettings:(e,o)=>({dispatch:s,registry:t})=>v(t,s,()=>({[u]:{[e]:o}}),t=>s({type:"SET_MODULE",slug:e,changes:{settings:{...o,...t?.[u]?.[e]}}}),()=>{})},b={getBlocks:()=>async({dispatch:e})=>{try{const o=await c()({path:"/noah-shop-builder/v1/blocks"});e.receiveBlocks(o?.blocks||{})}catch(o){e.receiveLoadError(o?.message||(0,a.__)("Error loading blocks. Please reload the page.","noah-shop-builder-for-woocommerce"))}},getSettings:()=>async({dispatch:e})=>{try{const o=await c()({path:`/wp/v2/settings?_fields=${p}`});e.receiveSettings(o?.[p]||{})}catch(o){e.receiveSettingsLoadError(o?.message||(0,a.__)("Error loading settings. Please reload the page.","noah-shop-builder-for-woocommerce"))}},getModules:()=>async({dispatch:e})=>{try{const o=await c()({path:"/noah-shop-builder/v1/modules"});e.receiveModules(o?.modules||{})}catch(o){e.receiveModulesLoadError(o?.message||(0,a.__)("Error loading modules. Please reload the page.","noah-shop-builder-for-woocommerce"))}}},f=(0,l.createReduxStore)("noah-shop-builder/dashboard",{reducer:function(e=g,o){switch(o.type){case"RECEIVE_BLOCKS":return{...e,blocks:o.blocks,loadError:null};case"RECEIVE_LOAD_ERROR":return{...e,loadError:o.message};case"SET_STATUSES":{const s={...e.blocks};for(const[e,t]of Object.entries(o.statuses))s[e]&&!s[e].required&&(s[e]={...s[e],status:t});return{...e,blocks:s}}case"RECEIVE_MODULES":return{...e,modules:o.modules,modulesLoadError:null};case"RECEIVE_MODULES_LOAD_ERROR":return{...e,modulesLoadError:o.message};case"SET_MODULE":return e.modules[o.slug]?{...e,modules:{...e.modules,[o.slug]:{...e.modules[o.slug],...o.changes}}}:e;case"RECEIVE_SETTINGS":return{...e,settings:{...e.settings,...o.settings},settingsLoadError:null};case"RECEIVE_SETTINGS_LOAD_ERROR":return{...e,settingsLoadError:o.message};case"SAVE_START":return{...e,pendingSaves:e.pendingSaves+1};case"SAVE_END":return{...e,pendingSaves:Math.max(0,e.pendingSaves-1)}}return e},selectors:_,actions:x,resolvers:b});(0,l.register)(f);const j=window.ReactJSXRuntime;function y({badges:e}){return Array.isArray(e)&&0!==e.length?(0,j.jsx)("span",{className:"noah-badges",children:e.map(e=>(0,j.jsx)("span",{className:`badge badge-${e}`,children:e},e))}):null}const S={"noah-single":(0,a.__)("Single Product","noah-shop-builder-for-woocommerce"),"noah-archive":(0,a.__)("Shop & Archive","noah-shop-builder-for-woocommerce"),"noah-cart":(0,a.__)("Cart","noah-shop-builder-for-woocommerce"),"noah-checkout":(0,a.__)("Checkout","noah-shop-builder-for-woocommerce"),"noah-account":(0,a.__)("My Account","noah-shop-builder-for-woocommerce"),"noah-modules":(0,a.__)("Modules","noah-shop-builder-for-woocommerce")},k=window.wp.htmlEntities,N=window.wp.hooks,C=window.wp.primitives,E=(0,j.jsx)(C.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,j.jsx)(C.Path,{d:"M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z"})}),V=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M11.776 4.454a.25.25 0 01.448 0l2.069 4.192a.25.25 0 00.188.137l4.626.672a.25.25 0 01.139.426l-3.348 3.263a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.362.263l-4.138-2.175a.25.25 0 00-.232 0l-4.138 2.175a.25.25 0 01-.363-.263l.79-4.607a.25.25 0 00-.071-.222L4.754 9.881a.25.25 0 01.139-.426l4.626-.672a.25.25 0 00.188-.137l2.069-4.192z"})}),M=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M7.1 5.7 8 6.9c.4-.3.9-.6 1.5-.8l-.6-1.4c-.7.3-1.3.6-1.8 1ZM4.6 8.9l1.4.6c.2-.5.5-1 .8-1.5l-1.2-.9c-.4.6-.8 1.2-1 1.8Zm14.8 0c-.3-.7-.6-1.3-1-1.8l-1.2.9c.3.4.6.9.8 1.5l1.4-.6ZM7.1 18.3c.6.4 1.2.8 1.8 1l.6-1.4c-.5-.2-1-.5-1.5-.8l-.9 1.2ZM5.5 12v-.9h-.7l-.7-.2v2l1.5-.2v-.9Zm-.7 3h-.2c.3.7.6 1.3 1 1.9l1.2-.9c-.3-.4-.6-.9-.8-1.5l-1.2.5Zm9.7 3 .5 1.2v.2c.7-.3 1.3-.6 1.9-1l-.9-1.2c-.4.3-.9.6-1.5.8Zm-2.5.5h-.9l-.2 1.3v.2h2l-.2-1.5h-.9Zm7.9-7.5-1.5.2V13h.7l.7.2v-2ZM18 14.5c-.2.5-.5 1-.8 1.5l1.2.9c.4-.6.8-1.2 1-1.8h-.2l-1.2-.6ZM11 4.1l.2 1.5H13V4.2h-1.9ZM14.5 6c.5.2 1 .5 1.5.8l.9-1.2c-.6-.4-1.2-.8-1.8-1L14.5 6Z"})}),B=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2Zm.5 2v6.2h-6.8V4.4h6.2c.3 0 .5.2.5.5ZM5 4.5h6.2v6.8H4.4V5.1c0-.3.2-.5.5-.5ZM4.5 19v-6.2h6.8v6.8H5.1c-.3 0-.5-.2-.5-.5Zm14.5.5h-6.2v-6.8h6.8v6.2c0 .3-.2.5-.5.5Z"})}),L=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z"})}),z={seen:E,starFilled:V,swatch:M,table:B},R=[{slug:"wishlist",icon:V,title:(0,a.__)("Wishlist","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Shoppers save products from cards and product pages to a wishlist. Works for guests and logged-in customers, with a wishlist page block.","noah-shop-builder-for-woocommerce")},{slug:"variation-swatches",icon:M,title:(0,a.__)("Variation Swatches","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Replace variation dropdowns on product pages with color, image and label swatches that work with the keyboard.","noah-shop-builder-for-woocommerce")}];function T({common:e,value:o,onChange:s}){const[l,i]=(0,t.useState)(null);(0,t.useEffect)(()=>{let e=!0;return c()({path:(0,r.addQueryArgs)("/wp/v2/pages",{status:"publish",per_page:100,orderby:"title",order:"asc",_fields:"id,title"})}).catch(()=>[]).then(o=>e&&i(o)),()=>{e=!1}},[]);const d=[{value:"0",label:(0,a.__)("— None —","noah-shop-builder-for-woocommerce")},...(l??[]).map(e=>({value:String(e.id),label:e.title?.rendered?(0,k.decodeEntities)(e.title.rendered):(0,a.sprintf)(/* translators: %d: page ID */ /* translators: %d: page ID */ 2 (0,a.__)("#%d (no title)","noah-shop-builder-for-woocommerce"),e.id)}))];return(0,j.jsx)(n.SelectControl,{...e,__next40pxDefaultSize:!0,value:String(o||0),options:d,disabled:null===l,onChange:e=>s(parseInt(e,10)||0)})}function A({field:e,value:o,onChange:s}){const t={__nextHasNoMarginBottom:!0,label:e.badge?.length?(0,j.jsxs)(j.Fragment,{children:[e.label," ",(0,j.jsx)(y,{badges:e.badge})]}):e.label,help:e.help};return"page"===e.control&&"integer"===e.type?(0,j.jsx)(T,{common:t,value:o,onChange:s}):"boolean"===e.type?(0,j.jsx)(n.ToggleControl,{...t,checked:!!o,onChange:s}):e.options?(0,j.jsx)(n.SelectControl,{...t,__next40pxDefaultSize:!0,value:o,options:e.options,onChange:s}):"integer"===e.type?(0,j.jsx)(n.TextControl,{...t,__next40pxDefaultSize:!0,type:"number",min:e.minimum,max:e.maximum,value:o,onChange:e=>s(""===e?"":parseInt(e,10))}):(0,j.jsx)(n.TextControl,{...t,__next40pxDefaultSize:!0,value:o,onChange:s})}function D({module:e,onClose:o}){const[s,r]=(0,t.useState)(e.settings||{}),[i,c]=(0,t.useState)(!1),{saveModuleSettings:d}=(0,l.useDispatch)(f);return(0,j.jsx)(n.Modal,{title:(0,a.sprintf)(/* translators: %s: module name. */ /* translators: %s: module name. */ 3 (0,a.__)("%s settings","noah-shop-builder-for-woocommerce"),e.title),onRequestClose:o,className:"noah-module-settings",children:(0,j.jsxs)("form",{onSubmit:async t=>{t.preventDefault(),c(!0);const r=await d(e.slug,s);c(!1),r&&o()},children:[(0,j.jsx)("div",{className:"noah-module-settings__fields",children:e.fields.map(e=>(0,j.jsx)(A,{field:e,value:s[e.key]??e.default,onChange:o=>r({...s,[e.key]:o})},e.key))}),(0,j.jsxs)("div",{className:"noah-module-settings__actions",children:[(0,j.jsx)(n.Button,{variant:"tertiary",onClick:o,children:(0,a.__)("Cancel","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"primary",type:"submit",isBusy:i,disabled:i,children:(0,a.__)("Save","noah-shop-builder-for-woocommerce")})]})]})})}const H=window.wp.coreData,P=(0,j.jsx)(C.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,j.jsx)(C.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z"})}),O=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z"})}),Z=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})}),G=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5 4.5h11a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5ZM3 5a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm17 3v10.75c0 .69-.56 1.25-1.25 1.25H6v1.5h12.75a2.75 2.75 0 0 0 2.75-2.75V8H20Z"})}),I=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 5.5A2.25 2.25 0 0 0 9.878 7h4.244A2.251 2.251 0 0 0 12 5.5ZM12 4a3.751 3.751 0 0 0-3.675 3H5v1.5h1.27l.818 8.997a2.75 2.75 0 0 0 2.739 2.501h4.347a2.75 2.75 0 0 0 2.738-2.5L17.73 8.5H19V7h-3.325A3.751 3.751 0 0 0 12 4Zm4.224 4.5H7.776l.806 8.861a1.25 1.25 0 0 0 1.245 1.137h4.347a1.25 1.25 0 0 0 1.245-1.137l.805-8.861Z"})}),F=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z"})}),W=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})}),q=(0,j.jsxs)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,j.jsx)(C.Path,{d:"M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z"}),(0,j.jsx)(C.Path,{d:"M17 4H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2ZM7 5.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5Z"})]}),U=(0,j.jsx)(C.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,j.jsx)(C.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M11.934 7.406a1 1 0 0 0 .914.594H19a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5.764a.5.5 0 0 1 .447.276l.723 1.63Zm1.064-1.216a.5.5 0 0 0 .462.31H19a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.764a2 2 0 0 1 1.789 1.106l.445 1.084ZM8.5 10.5h7V12h-7v-1.5Zm7 3.5h-7v1.5h7V14Z"})}),Q=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{fillRule:"evenodd",d:"M19.75 11H21V8.667L19.875 4H4.125L3 8.667V11h1.25v8.75h15.5V11zm-1.5 0H5.75v7.25H10V13h4v5.25h4.25V11zm-5.5-5.5h2.067l.486 3.24.028.76H12.75v-4zm-3.567 0h2.067v4H8.669l.028-.76.486-3.24zm7.615 3.1l-.464-3.1h2.36l.806 3.345V9.5h-2.668l-.034-.9zM7.666 5.5h-2.36L4.5 8.845V9.5h2.668l.034-.9.464-3.1z",clipRule:"evenodd"})}),$=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M3 6.75C3 5.784 3.784 5 4.75 5H15V7.313l.05.027 5.056 2.73.394.212v3.468a1.75 1.75 0 01-1.75 1.75h-.012a2.5 2.5 0 11-4.975 0H9.737a2.5 2.5 0 11-4.975 0H3V6.75zM13.5 14V6.5H4.75a.25.25 0 00-.25.25V14h.965a2.493 2.493 0 011.785-.75c.7 0 1.332.287 1.785.75H13.5zm4.535 0h.715a.25.25 0 00.25-.25v-2.573l-4-2.16v4.568a2.487 2.487 0 011.25-.335c.7 0 1.332.287 1.785.75zM6.282 15.5a1.002 1.002 0 00.968 1.25 1 1 0 10-.968-1.25zm9 0a1 1 0 101.937.498 1 1 0 00-1.938-.498z"})}),K=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z"})}),X=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{fillRule:"evenodd",d:"M5.5 9.5v-2h13v2h-13zm0 3v4h13v-4h-13zM4 7a1 1 0 011-1h14a1 1 0 011 1v10a1 1 0 01-1 1H5a1 1 0 01-1-1V7z",clipRule:"evenodd"})}),J=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{fillRule:"evenodd",d:"M16.83 6.342l.602.3.625-.25.443-.176v12.569l-.443-.178-.625-.25-.603.301-1.444.723-2.41-.804-.475-.158-.474.158-2.41.803-1.445-.722-.603-.3-.625.25-.443.177V6.215l.443.178.625.25.603-.301 1.444-.722 2.41.803.475.158.474-.158 2.41-.803 1.445.722zM20 4l-1.5.6-1 .4-2-1-3 1-3-1-2 1-1-.4L5 4v17l1.5-.6 1-.4 2 1 3-1 3 1 2-1 1 .4 1.5.6V4zm-3.5 6.25v-1.5h-8v1.5h8zm0 3v-1.5h-8v1.5h8zm-8 3v-1.5h8v1.5h-8z",clipRule:"evenodd"})}),Y=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"})}),ee=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"})}),oe={single:{icon:q,description:(0,a.__)("The page of one product: gallery, price, add to cart and details.","noah-shop-builder-for-woocommerce")},archive:{icon:U,description:(0,a.__)("Product category and tag pages.","noah-shop-builder-for-woocommerce")},shop:{icon:Q,description:(0,a.__)("The main shop page that lists your products.","noah-shop-builder-for-woocommerce")},quick_view:{icon:E,description:(0,a.__)("The popup shown when a shopper previews a product from a list.","noah-shop-builder-for-woocommerce")},cart:{icon:$,description:(0,a.__)("The cart page with the items a shopper is about to buy.","noah-shop-builder-for-woocommerce")},empty_cart:{icon:K,description:(0,a.__)("What shoppers see when their cart is empty.","noah-shop-builder-for-woocommerce")},checkout:{icon:X,description:(0,a.__)("Billing, shipping and payment steps.","noah-shop-builder-for-woocommerce")},order_received:{icon:J,description:(0,a.__)("The thank-you page after an order is placed.","noah-shop-builder-for-woocommerce")},my_account:{icon:Y,description:(0,a.__)("Customer dashboard, orders, addresses and account details.","noah-shop-builder-for-woocommerce")}};function se(e){return oe[e]||{icon:ee,description:""}}const te=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M20.5 16h-.7V8c0-1.1-.9-2-2-2H6.2c-1.1 0-2 .9-2 2v8h-.7c-.8 0-1.5.7-1.5 1.5h20c0-.8-.7-1.5-1.5-1.5zM5.7 8c0-.3.2-.5.5-.5h11.6c.3 0 .5.2.5.5v7.6H5.7V8z"})}),re=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M17 4H7c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H7c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12zm-7.5-.5h4V16h-4v1.5z"})}),ae=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z"})}),ne=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M19.5 4.5h-7V6h4.44l-5.97 5.97 1.06 1.06L18 7.06v4.44h1.5v-7Zm-13 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3H17v3a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h3V5.5h-3Z"})}),le=[{slug:"desktop",label:(0,a.__)("Desktop","noah-shop-builder-for-woocommerce"),icon:te,width:"100%"},{slug:"tablet",label:(0,a.__)("Tablet","noah-shop-builder-for-woocommerce"),icon:re,width:"768px"},{slug:"mobile",label:(0,a.__)("Mobile","noah-shop-builder-for-woocommerce"),icon:ae,width:"375px"}],ie=function({url:e,title:o,onClose:s,action:r}){const[l,i]=(0,t.useState)("desktop"),[c,d]=(0,t.useState)(!0),h=le.find(e=>e.slug===l).width;return(0,j.jsx)(n.Modal,{className:"noah-preview-modal",title:o,onRequestClose:s,isFullScreen:!0,headerActions:(0,j.jsxs)("div",{className:"noah-preview-modal__actions",children:[(0,j.jsx)("div",{className:"noah-segmented",role:"group","aria-label":(0,a.__)("Preview size","noah-shop-builder-for-woocommerce"),children:le.map(e=>(0,j.jsx)(n.Button,{icon:e.icon,label:e.label,size:"compact","aria-pressed":l===e.slug,className:l===e.slug?"is-selected":"",onClick:()=>i(e.slug)},e.slug))}),(0,j.jsx)(n.Button,{icon:ne,label:(0,a.__)("Open in new tab","noah-shop-builder-for-woocommerce"),href:e,target:"_blank",rel:"noopener noreferrer",size:"compact"}),r]}),children:(0,j.jsxs)("div",{className:"noah-preview-modal__stage",children:[c&&(0,j.jsxs)("div",{className:"noah-preview-modal__loading",children:[(0,j.jsx)(n.Spinner,{}),(0,j.jsx)("p",{children:(0,a.__)("Loading preview…","noah-shop-builder-for-woocommerce")})]}),(0,j.jsx)("iframe",{title:o,src:e,style:{width:h},className:c?"is-loading":"",onLoad:()=>d(!1)})]})})},ce={img:"noah-wireframe__image",head:"noah-wireframe__heading",line:"noah-wireframe__line",accent:"noah-wireframe__accent",box:"noah-wireframe__box",dashed:"noah-wireframe__dashed"},de=(e,o,s,t,r)=>{const a=(s-5*(r-1))/r;return Array.from({length:r},(s,r)=>["img",e+r*(a+5),o,a,t])},he=(e,o,s,t)=>Array.from({length:t},(t,r)=>["box",e,o+11*r,s,7]),me={blank:[["dashed",8,8,144,84]],split:[["img",10,10,66,80],["head",86,14,56,7],["line",86,27,30,4],["line",86,37,22,4],["line",86,48,64,4],["line",86,56,58,4],["accent",86,68,40,10]],feature:[["img",10,10,84,62],["head",102,12,48,7],["line",102,25,26,4],["line",102,35,20,4],["line",102,45,48,4],["accent",102,45,30,4],["accent",102,56,48,10],...de(10,78,140,14,4)],stacked:[["img",50,8,60,44],["head",56,58,48,6],["line",66,69,28,4],["line",58,77,44,4],["accent",58,84,44,9]],grid:[["line",10,8,40,3],["head",10,15,60,7],["line",10,27,30,4],["box",120,25,30,7],...de(10,38,140,24,3),...de(10,66,140,24,3)],hero:[["head",50,10,60,8],["line",40,23,80,4],["line",30,32,100,4],["line",50,39,60,4],...de(10,50,140,19,4),...de(10,73,140,19,4)],sidebar:[["head",10,10,30,6],["line",10,22,28,4],["line",10,30,24,4],["line",10,38,30,4],["line",10,46,22,4],["head",50,10,50,7],...de(50,24,100,30,3),...de(50,58,100,30,3)],cart:[["head",10,10,50,8],["img",10,26,14,14],["line",30,30,50,4],["img",10,46,14,14],["line",30,50,44,4],["img",10,66,14,14],["line",30,70,54,4],["box",104,26,46,50],["line",110,34,34,4],["line",110,44,28,4],["accent",110,60,34,9]],"cart-trust":[["head",55,6,50,7],...de(10,18,140,12,3),["img",10,38,12,12],["line",27,42,50,4],["img",10,56,12,12],["line",27,60,44,4],["box",104,38,46,46],["line",110,46,34,4],["accent",110,70,34,8]],message:[["head",35,8,90,8],["line",45,21,70,4],["accent",62,31,36,9],["line",72,47,16,3],["head",60,55,40,5],...de(10,65,140,26,4)],"message-split":[["head",10,30,46,8],["line",10,43,40,4],["line",10,51,34,4],["accent",10,61,34,9],...de(66,10,84,38,2),...de(66,52,84,38,2)],checkout:[["head",10,8,40,7],...he(10,22,84,5),["accent",10,80,84,10],["box",104,22,46,58],["img",110,28,10,10],["line",124,31,20,4],["line",110,46,34,4],["line",110,56,28,4]],"checkout-trust":[["head",50,5,60,6],["line",45,14,70,3],...he(35,21,90,4),["box",35,64,90,14],["accent",35,81,90,6],["line",35,92,40,3],["line",85,92,40,3]],order:[["head",10,8,80,8],["box",10,22,140,12],["head",10,40,30,5],["line",10,50,140,4],["line",10,58,140,4],["box",10,68,66,24],["box",84,68,66,24]],thanks:[["accent",72,8,16,16],["head",50,30,60,8],["line",40,43,80,4],["box",35,53,90,22],["accent",60,82,40,9]],account:[["head",10,8,50,8],["line",10,26,30,4],["line",10,34,26,4],["line",10,42,30,4],["line",10,50,22,4],["line",10,58,28,4],["line",50,26,100,4],["line",50,34,90,4],["box",50,46,100,40]],"account-help":[["head",10,8,50,8],["line",10,26,22,4],["line",10,34,18,4],["line",10,42,22,4],["box",38,24,66,62],["box",112,24,38,44],["head",117,30,26,5],["line",117,40,28,3],["accent",117,54,28,8]]},ue=[["head",10,12,70,8],["line",10,28,140,4],["line",10,36,132,4],["line",10,44,120,4],["img",10,56,140,34]],pe=function({layout:e}){const o=me[e]||ue;return(0,j.jsxs)("svg",{className:"noah-wireframe",viewBox:"0 0 160 100","aria-hidden":"true",focusable:"false",children:[o.map(([e,o,s,t,r],a)=>(0,j.jsx)("rect",{className:ce[e],x:o,y:s,width:t,height:r,rx:"line"===e?2:3},a)),"blank"===e&&(0,j.jsx)("path",{className:"noah-wireframe__accent-stroke",d:"M80 40v20M70 50h20"})]})},ge="noah_template",_e="_noah_template_type",we="_noah_conditions",ve="publish";function xe(e){return e.meta?.[_e]||"single"}function be(e){const o=e.meta?.[we];return Array.isArray(o)?o:[]}function fe(e){return e.status===ve}function je(e){return e.title?.raw??e.title?.rendered??""}function ye(e){const o=e.filter(e=>"exclude"!==e.type),s=e.length-o.length;return 0===o.length?{kind:"none",include:0,exclude:s}:0===s&&1===o.length&&"all"===o[0].rule?{kind:"all",include:1,exclude:0}:{kind:"custom",include:o.length,exclude:s}}function Se(e){return e.map(e=>["exclude"===e.type?"exclude":"include",e.rule,[...e.ids||[]].sort((e,o)=>e-o).join(","),[...e.slugs||[]].sort().join(",")].join(":")).sort().join("|")}const ke="blank";function Ne({label:e,value:o,options:s,onChange:t}){return(0,j.jsxs)("fieldset",{className:"noah-templates-modal__field",children:[(0,j.jsx)("legend",{children:e}),(0,j.jsx)("div",{className:"noah-option-cards",role:"radiogroup",children:s.map(e=>(0,j.jsxs)("button",{type:"button",role:"radio","aria-checked":o===e.value,className:"noah-option-card "+(o===e.value?"is-selected":""),onClick:()=>t(e.value),children:[(0,j.jsx)("span",{className:"noah-option-card__radio"}),(0,j.jsxs)("span",{children:[(0,j.jsx)("strong",{children:e.title}),(0,j.jsx)("span",{children:e.description})]})]},e.value))})]})}function Ce({type:e,onSelect:o}){const[s,r]=(0,t.useState)(null),l=[{slug:ke,title:(0,a.__)("Blank","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Start from an empty canvas and add Noah blocks yourself.","noah-shop-builder-for-woocommerce"),layout:"blank",content:""},...e.starters];return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)("div",{className:"noah-design-grid",children:l.map(e=>(0,j.jsxs)("div",{className:"noah-design-card",children:[(0,j.jsxs)("button",{type:"button",className:"noah-design-card__select",onClick:()=>o(e),children:[(0,j.jsx)("span",{className:"noah-design-card__preview",children:(0,j.jsx)(pe,{layout:e.layout})}),(0,j.jsxs)("span",{className:"noah-design-card__body",children:[(0,j.jsxs)("strong",{children:[e.title," ",(0,j.jsx)(y,{badges:e.badge})]}),e.description&&(0,j.jsx)("span",{children:e.description}),e.blocks&&(0,j.jsx)("span",{className:`noah-design-card__blocks is-${e.blocks}`,children:"noah"===e.blocks?(0,a.__)("Noah blocks","noah-shop-builder-for-woocommerce"):(0,a.__)("WooCommerce blocks","noah-shop-builder-for-woocommerce")})]})]}),e.preview_url&&(0,j.jsx)(n.Button,{className:"noah-design-card__preview-button",variant:"secondary",size:"compact",icon:E,onClick:()=>r(e),children:(0,a.__)("Preview","noah-shop-builder-for-woocommerce")})]},e.slug))}),s&&(0,j.jsx)(ie,{url:s.preview_url,title:s.title,onClose:()=>r(null),action:(0,j.jsx)(n.Button,{variant:"primary",size:"compact",onClick:()=>o(s),children:(0,a.__)("Use this design","noah-shop-builder-for-woocommerce")})})]})}const Ee=function({types:e,onClose:o}){const[s,i]=(0,t.useState)(null),[c,d]=(0,t.useState)(null),[h,m]=(0,t.useState)(""),[u,p]=(0,t.useState)("all"),[g,_]=(0,t.useState)(ve),[w,v]=(0,t.useState)(!1),[x,b]=(0,t.useState)(null),{saveEntityRecord:f}=(0,l.useDispatch)(H.store),y=e=>e?.starters?.length>0,S=()=>{y(s)&&c||i(null),d(null)};let k=1;s&&(k=c?3:2);const N=y(s)||!s?[1,2,3]:[1,3],C={1:(0,a.__)("What do you want to design?","noah-shop-builder-for-woocommerce"),2:(0,a.__)("Choose a starting design","noah-shop-builder-for-woocommerce"),3:(0,a.__)("Set up your template","noah-shop-builder-for-woocommerce")};return(0,j.jsxs)(n.Modal,{className:"noah-templates-modal",title:C[k],onRequestClose:w?()=>{}:o,size:"large",children:[(0,j.jsx)("div",{className:"noah-templates-modal__steps","aria-hidden":"true",children:N.map(e=>(0,j.jsx)("span",{className:k>=e?"is-active":""},e))}),2===k&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)("div",{className:"noah-templates-modal__subheader",children:[(0,j.jsx)(n.Button,{variant:"tertiary",icon:W,onClick:S,children:(0,a.__)("Back","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{className:"noah-templates-modal__intro",children:(0,a.sprintf)(/* translators: %s: template type, e.g. "Single Product". */ /* translators: %s: template type, e.g. "Single Product". */ 4 (0,a.__)("Pick a ready-made %s layout or start blank. Preview any design on your store first; you can change everything in the editor.","noah-shop-builder-for-woocommerce"),s.label)})]}),(0,j.jsx)(Ce,{type:s,onSelect:d})]}),1===k&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)("p",{className:"noah-templates-modal__intro",children:(0,a.__)("Choose the store page this template replaces.","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("div",{className:"noah-type-grid",children:e.map(e=>{const o=se(e.slug);return(0,j.jsxs)("button",{type:"button",className:"noah-type-card",onClick:()=>{return i(o=e),d(y(o)?null:{slug:ke,content:""}),void m((0,a.sprintf)(/* translators: %s: template type, e.g. "Single Product". */ /* translators: %s: template type, e.g. "Single Product". */ 1 (()=>{"use strict";var e={232(e,o,s){const t=window.wp.element,r=window.wp.url,a=window.wp.i18n,n=window.wp.components,l=window.wp.data,i=window.wp.apiFetch;var c=s.n(i);const d=window.wp.notices,h="noah_shop_builder_blocks_list",u="noah_shop_builder_modules_list",m="noah_shop_builder_module_settings",p="noah_shop_builder_settings",g={blocks:{},loadError:null,modules:{},modulesLoadError:null,pendingSaves:0,settings:{},settingsLoadError:null},_={getBlocks:e=>e.blocks,getLoadError:e=>e.loadError,isSaving:e=>e.pendingSaves>0,getStatuses(e){const o={};for(const s of Object.values(e.blocks))s.required||(o[s.slug]=s.status);return o},getSettings:e=>e.settings,getSettingsLoadError:e=>e.settingsLoadError,getModules:e=>e.modules,getModulesLoadError:e=>e.modulesLoadError,getModuleStatuses(e){const o={};for(const s of Object.values(e.modules))o[s.slug]=s.status;return o}};let w=Promise.resolve();function x(e,o,s,t,r){const n=e.dispatch(d.store);o({type:"SAVE_START"});const l=w.then(async()=>{try{const e=await c()({path:"/wp/v2/settings",method:"POST",data:s()});return t(e),n.createSuccessNotice((0,a.__)("Settings saved.","noah-shop-builder-for-woocommerce"),{type:"snackbar",id:"noah-shop-builder-saved"}),!0}catch(e){return r(),n.createErrorNotice(e?.message||(0,a.__)("Settings could not be saved. Please try again.","noah-shop-builder-for-woocommerce"),{type:"snackbar",id:"noah-shop-builder-save-error"}),!1}finally{o({type:"SAVE_END"})}});return w=l,l}const v={receiveBlocks:e=>({type:"RECEIVE_BLOCKS",blocks:e}),receiveLoadError:e=>({type:"RECEIVE_LOAD_ERROR",message:e}),setStatuses:e=>({type:"SET_STATUSES",statuses:e}),toggleBlock:(e,o)=>({dispatch:s})=>s.updateStatuses({[e]:o?"active":"inactive"}),setAllBlocks:e=>({dispatch:o,select:s})=>{const t={};for(const o of Object.keys(s.getStatuses()))t[o]=e?"active":"inactive";return o.updateStatuses(t)},updateStatuses:e=>({dispatch:o,select:s,registry:t})=>{const r=s.getStatuses(),a={};for(const o of Object.keys(e))a[o]=r[o];return o.setStatuses(e),x(t,o,()=>({[h]:s.getStatuses()}),()=>{},()=>o.setStatuses(a))},receiveSettings:e=>({type:"RECEIVE_SETTINGS",settings:e}),receiveSettingsLoadError:e=>({type:"RECEIVE_SETTINGS_LOAD_ERROR",message:e}),saveSetting:(e,o)=>({dispatch:s,select:t,registry:r})=>{const a=t.getSettings()[e];return s.receiveSettings({[e]:o}),x(r,s,()=>({[p]:{[e]:o}}),e=>s.receiveSettings(e?.[p]||{}),()=>s.receiveSettings({[e]:a}))},receiveModules:e=>({type:"RECEIVE_MODULES",modules:e}),receiveModulesLoadError:e=>({type:"RECEIVE_MODULES_LOAD_ERROR",message:e}),toggleModule:(e,o)=>({dispatch:s,select:t,registry:r})=>{const a=t.getModules()[e]?.status;return s({type:"SET_MODULE",slug:e,changes:{status:o?"active":"inactive"}}),x(r,s,()=>({[u]:t.getModuleStatuses()}),()=>{},()=>s({type:"SET_MODULE",slug:e,changes:{status:a}}))},saveModuleSettings:(e,o)=>({dispatch:s,registry:t})=>x(t,s,()=>({[m]:{[e]:o}}),t=>s({type:"SET_MODULE",slug:e,changes:{settings:{...o,...t?.[m]?.[e]}}}),()=>{})},b={getBlocks:()=>async({dispatch:e})=>{try{const o=await c()({path:"/noah-shop-builder/v1/blocks"});e.receiveBlocks(o?.blocks||{})}catch(o){e.receiveLoadError(o?.message||(0,a.__)("Error loading blocks. Please reload the page.","noah-shop-builder-for-woocommerce"))}},getSettings:()=>async({dispatch:e})=>{try{const o=await c()({path:`/wp/v2/settings?_fields=${p}`});e.receiveSettings(o?.[p]||{})}catch(o){e.receiveSettingsLoadError(o?.message||(0,a.__)("Error loading settings. Please reload the page.","noah-shop-builder-for-woocommerce"))}},getModules:()=>async({dispatch:e})=>{try{const o=await c()({path:"/noah-shop-builder/v1/modules"});e.receiveModules(o?.modules||{})}catch(o){e.receiveModulesLoadError(o?.message||(0,a.__)("Error loading modules. Please reload the page.","noah-shop-builder-for-woocommerce"))}}},f=(0,l.createReduxStore)("noah-shop-builder/dashboard",{reducer:function(e=g,o){switch(o.type){case"RECEIVE_BLOCKS":return{...e,blocks:o.blocks,loadError:null};case"RECEIVE_LOAD_ERROR":return{...e,loadError:o.message};case"SET_STATUSES":{const s={...e.blocks};for(const[e,t]of Object.entries(o.statuses))s[e]&&!s[e].required&&(s[e]={...s[e],status:t});return{...e,blocks:s}}case"RECEIVE_MODULES":return{...e,modules:o.modules,modulesLoadError:null};case"RECEIVE_MODULES_LOAD_ERROR":return{...e,modulesLoadError:o.message};case"SET_MODULE":return e.modules[o.slug]?{...e,modules:{...e.modules,[o.slug]:{...e.modules[o.slug],...o.changes}}}:e;case"RECEIVE_SETTINGS":return{...e,settings:{...e.settings,...o.settings},settingsLoadError:null};case"RECEIVE_SETTINGS_LOAD_ERROR":return{...e,settingsLoadError:o.message};case"SAVE_START":return{...e,pendingSaves:e.pendingSaves+1};case"SAVE_END":return{...e,pendingSaves:Math.max(0,e.pendingSaves-1)}}return e},selectors:_,actions:v,resolvers:b});(0,l.register)(f);const j=window.ReactJSXRuntime;function y({badges:e}){return Array.isArray(e)&&0!==e.length?(0,j.jsx)("span",{className:"noah-badges",children:e.map(e=>(0,j.jsx)("span",{className:`badge badge-${e}`,children:e},e))}):null}const S=(0,t.forwardRef)(({icon:e,size:o=24,...s},r)=>(0,t.cloneElement)(e,{width:o,height:o,...s,ref:r})),k=window.wp.primitives,N=(0,j.jsx)(k.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,j.jsx)(k.Path,{d:"M17 10h-1.2V7c0-2.1-1.7-3.8-3.8-3.8-2.1 0-3.8 1.7-3.8 3.8v3H7c-.6 0-1 .4-1 1v8c0 .6.4 1 1 1h10c.6 0 1-.4 1-1v-8c0-.6-.4-1-1-1zm-2.8 0H9.8V7c0-1.2 1-2.2 2.2-2.2s2.2 1 2.2 2.2v3z"})}),C={url:"",blocks:[],modules:[],features:{}};function E(){const e=window.noahShopBuilderProCatalog;return e&&"object"==typeof e?{url:e.url||"",blocks:Array.isArray(e.blocks)?e.blocks:[],modules:Array.isArray(e.modules)?e.modules:[],features:e.features&&"object"==typeof e.features?e.features:{}}:C}function V(){return(0,j.jsx)("span",{className:"noah-badges",children:(0,j.jsxs)("span",{className:"badge badge-locked",children:[(0,j.jsx)(S,{icon:N,size:12}),(0,a.__)("Pro","noah-shop-builder-for-woocommerce")]})})}function M({url:e,title:o,label:s,variant:t="button"}){return e?(0,j.jsxs)("a",{className:`noah-upgrade-link is-${t}`,href:e,target:"_blank",rel:"noopener noreferrer",children:[(0,j.jsx)(S,{icon:N,size:16}),s||(0,a.__)("Upgrade","noah-shop-builder-for-woocommerce"),(0,j.jsx)("span",{className:"screen-reader-text",children:(0,a.sprintf)(/* translators: %s: name of a Pro block, module or setting. */ /* translators: %s: name of a Pro block, module or setting. */ 2 (0,a.__)("to unlock %s (opens in a new tab)","noah-shop-builder-for-woocommerce"),o)})]}):null}const B={"noah-single":(0,a.__)("Single Product","noah-shop-builder-for-woocommerce"),"noah-archive":(0,a.__)("Shop & Archive","noah-shop-builder-for-woocommerce"),"noah-cart":(0,a.__)("Cart","noah-shop-builder-for-woocommerce"),"noah-checkout":(0,a.__)("Checkout","noah-shop-builder-for-woocommerce"),"noah-account":(0,a.__)("My Account","noah-shop-builder-for-woocommerce"),"noah-modules":(0,a.__)("Modules","noah-shop-builder-for-woocommerce")},L=window.wp.htmlEntities,z=window.wp.hooks,R=(0,j.jsx)(k.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,j.jsx)(k.Path,{d:"M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z"})}),T=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M11.776 4.454a.25.25 0 01.448 0l2.069 4.192a.25.25 0 00.188.137l4.626.672a.25.25 0 01.139.426l-3.348 3.263a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.362.263l-4.138-2.175a.25.25 0 00-.232 0l-4.138 2.175a.25.25 0 01-.363-.263l.79-4.607a.25.25 0 00-.071-.222L4.754 9.881a.25.25 0 01.139-.426l4.626-.672a.25.25 0 00.188-.137l2.069-4.192z"})}),A=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M7.1 5.7 8 6.9c.4-.3.9-.6 1.5-.8l-.6-1.4c-.7.3-1.3.6-1.8 1ZM4.6 8.9l1.4.6c.2-.5.5-1 .8-1.5l-1.2-.9c-.4.6-.8 1.2-1 1.8Zm14.8 0c-.3-.7-.6-1.3-1-1.8l-1.2.9c.3.4.6.9.8 1.5l1.4-.6ZM7.1 18.3c.6.4 1.2.8 1.8 1l.6-1.4c-.5-.2-1-.5-1.5-.8l-.9 1.2ZM5.5 12v-.9h-.7l-.7-.2v2l1.5-.2v-.9Zm-.7 3h-.2c.3.7.6 1.3 1 1.9l1.2-.9c-.3-.4-.6-.9-.8-1.5l-1.2.5Zm9.7 3 .5 1.2v.2c.7-.3 1.3-.6 1.9-1l-.9-1.2c-.4.3-.9.6-1.5.8Zm-2.5.5h-.9l-.2 1.3v.2h2l-.2-1.5h-.9Zm7.9-7.5-1.5.2V13h.7l.7.2v-2ZM18 14.5c-.2.5-.5 1-.8 1.5l1.2.9c.4-.6.8-1.2 1-1.8h-.2l-1.2-.6ZM11 4.1l.2 1.5H13V4.2h-1.9ZM14.5 6c.5.2 1 .5 1.5.8l.9-1.2c-.6-.4-1.2-.8-1.8-1L14.5 6Z"})}),D=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2Zm.5 2v6.2h-6.8V4.4h6.2c.3 0 .5.2.5.5ZM5 4.5h6.2v6.8H4.4V5.1c0-.3.2-.5.5-.5ZM4.5 19v-6.2h6.8v6.8H5.1c-.3 0-.5-.2-.5-.5Zm14.5.5h-6.2v-6.8h6.8v6.2c0 .3-.2.5-.5.5Z"})}),P=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z"})}),H={seen:R,starFilled:T,swatch:A,table:D},O=[{slug:"wishlist",icon:T,title:(0,a.__)("Wishlist","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Shoppers save products from cards and product pages to a wishlist. Works for guests and logged-in customers, with a wishlist page block.","noah-shop-builder-for-woocommerce")},{slug:"variation-swatches",icon:A,title:(0,a.__)("Variation Swatches","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Replace variation dropdowns on product pages with color, image and label swatches that work with the keyboard.","noah-shop-builder-for-woocommerce")}];function Z({common:e,value:o,onChange:s}){const[l,i]=(0,t.useState)(null);(0,t.useEffect)(()=>{let e=!0;return c()({path:(0,r.addQueryArgs)("/wp/v2/pages",{status:"publish",per_page:100,orderby:"title",order:"asc",_fields:"id,title"})}).catch(()=>[]).then(o=>e&&i(o)),()=>{e=!1}},[]);const d=[{value:"0",label:(0,a.__)("— None —","noah-shop-builder-for-woocommerce")},...(l??[]).map(e=>({value:String(e.id),label:e.title?.rendered?(0,L.decodeEntities)(e.title.rendered):(0,a.sprintf)(/* translators: %d: page ID */ /* translators: %d: page ID */ 3 (0,a.__)("#%d (no title)","noah-shop-builder-for-woocommerce"),e.id)}))];return(0,j.jsx)(n.SelectControl,{...e,__next40pxDefaultSize:!0,value:String(o||0),options:d,disabled:null===l,onChange:e=>s(parseInt(e,10)||0)})}function G({field:e,value:o,onChange:s}){const t={__nextHasNoMarginBottom:!0,label:e.badge?.length?(0,j.jsxs)(j.Fragment,{children:[e.label," ",(0,j.jsx)(y,{badges:e.badge})]}):e.label,help:e.help};return"page"===e.control&&"integer"===e.type?(0,j.jsx)(Z,{common:t,value:o,onChange:s}):"boolean"===e.type?(0,j.jsx)(n.ToggleControl,{...t,checked:!!o,onChange:s}):e.options?(0,j.jsx)(n.SelectControl,{...t,__next40pxDefaultSize:!0,value:o,options:e.options,onChange:s}):"integer"===e.type?(0,j.jsx)(n.TextControl,{...t,__next40pxDefaultSize:!0,type:"number",min:e.minimum,max:e.maximum,value:o,onChange:e=>s(""===e?"":parseInt(e,10))}):(0,j.jsx)(n.TextControl,{...t,__next40pxDefaultSize:!0,value:o,onChange:s})}function I({module:e,onClose:o}){const[s,r]=(0,t.useState)(e.settings||{}),[i,c]=(0,t.useState)(!1),{saveModuleSettings:d}=(0,l.useDispatch)(f);return(0,j.jsx)(n.Modal,{title:(0,a.sprintf)(/* translators: %s: module name. */ /* translators: %s: module name. */ 4 (0,a.__)("%s settings","noah-shop-builder-for-woocommerce"),e.title),onRequestClose:o,className:"noah-module-settings",children:(0,j.jsxs)("form",{onSubmit:async t=>{t.preventDefault(),c(!0);const r=await d(e.slug,s);c(!1),r&&o()},children:[(0,j.jsx)("div",{className:"noah-module-settings__fields",children:e.fields.map(e=>(0,j.jsx)(G,{field:e,value:s[e.key]??e.default,onChange:o=>r({...s,[e.key]:o})},e.key))}),(0,j.jsxs)("div",{className:"noah-module-settings__actions",children:[(0,j.jsx)(n.Button,{variant:"tertiary",onClick:o,children:(0,a.__)("Cancel","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"primary",type:"submit",isBusy:i,disabled:i,children:(0,a.__)("Save","noah-shop-builder-for-woocommerce")})]})]})})}const F=window.wp.coreData,W=(0,j.jsx)(k.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,j.jsx)(k.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z"})}),U=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z"})}),q=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})}),Q=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5 4.5h11a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5ZM3 5a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm17 3v10.75c0 .69-.56 1.25-1.25 1.25H6v1.5h12.75a2.75 2.75 0 0 0 2.75-2.75V8H20Z"})}),$=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 5.5A2.25 2.25 0 0 0 9.878 7h4.244A2.251 2.251 0 0 0 12 5.5ZM12 4a3.751 3.751 0 0 0-3.675 3H5v1.5h1.27l.818 8.997a2.75 2.75 0 0 0 2.739 2.501h4.347a2.75 2.75 0 0 0 2.738-2.5L17.73 8.5H19V7h-3.325A3.751 3.751 0 0 0 12 4Zm4.224 4.5H7.776l.806 8.861a1.25 1.25 0 0 0 1.245 1.137h4.347a1.25 1.25 0 0 0 1.245-1.137l.805-8.861Z"})}),K=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z"})}),X=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})}),J=(0,j.jsxs)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,j.jsx)(k.Path,{d:"M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z"}),(0,j.jsx)(k.Path,{d:"M17 4H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2ZM7 5.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5Z"})]}),Y=(0,j.jsx)(k.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,j.jsx)(k.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M11.934 7.406a1 1 0 0 0 .914.594H19a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5.764a.5.5 0 0 1 .447.276l.723 1.63Zm1.064-1.216a.5.5 0 0 0 .462.31H19a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.764a2 2 0 0 1 1.789 1.106l.445 1.084ZM8.5 10.5h7V12h-7v-1.5Zm7 3.5h-7v1.5h7V14Z"})}),ee=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{fillRule:"evenodd",d:"M19.75 11H21V8.667L19.875 4H4.125L3 8.667V11h1.25v8.75h15.5V11zm-1.5 0H5.75v7.25H10V13h4v5.25h4.25V11zm-5.5-5.5h2.067l.486 3.24.028.76H12.75v-4zm-3.567 0h2.067v4H8.669l.028-.76.486-3.24zm7.615 3.1l-.464-3.1h2.36l.806 3.345V9.5h-2.668l-.034-.9zM7.666 5.5h-2.36L4.5 8.845V9.5h2.668l.034-.9.464-3.1z",clipRule:"evenodd"})}),oe=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M3 6.75C3 5.784 3.784 5 4.75 5H15V7.313l.05.027 5.056 2.73.394.212v3.468a1.75 1.75 0 01-1.75 1.75h-.012a2.5 2.5 0 11-4.975 0H9.737a2.5 2.5 0 11-4.975 0H3V6.75zM13.5 14V6.5H4.75a.25.25 0 00-.25.25V14h.965a2.493 2.493 0 011.785-.75c.7 0 1.332.287 1.785.75H13.5zm4.535 0h.715a.25.25 0 00.25-.25v-2.573l-4-2.16v4.568a2.487 2.487 0 011.25-.335c.7 0 1.332.287 1.785.75zM6.282 15.5a1.002 1.002 0 00.968 1.25 1 1 0 10-.968-1.25zm9 0a1 1 0 101.937.498 1 1 0 00-1.938-.498z"})}),se=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z"})}),te=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{fillRule:"evenodd",d:"M5.5 9.5v-2h13v2h-13zm0 3v4h13v-4h-13zM4 7a1 1 0 011-1h14a1 1 0 011 1v10a1 1 0 01-1 1H5a1 1 0 01-1-1V7z",clipRule:"evenodd"})}),re=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{fillRule:"evenodd",d:"M16.83 6.342l.602.3.625-.25.443-.176v12.569l-.443-.178-.625-.25-.603.301-1.444.723-2.41-.804-.475-.158-.474.158-2.41.803-1.445-.722-.603-.3-.625.25-.443.177V6.215l.443.178.625.25.603-.301 1.444-.722 2.41.803.475.158.474-.158 2.41-.803 1.445.722zM20 4l-1.5.6-1 .4-2-1-3 1-3-1-2 1-1-.4L5 4v17l1.5-.6 1-.4 2 1 3-1 3 1 2-1 1 .4 1.5.6V4zm-3.5 6.25v-1.5h-8v1.5h8zm0 3v-1.5h-8v1.5h8zm-8 3v-1.5h8v1.5h-8z",clipRule:"evenodd"})}),ae=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"})}),ne=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"})}),le={single:{icon:J,description:(0,a.__)("The page of one product: gallery, price, add to cart and details.","noah-shop-builder-for-woocommerce")},archive:{icon:Y,description:(0,a.__)("Product category and tag pages.","noah-shop-builder-for-woocommerce")},shop:{icon:ee,description:(0,a.__)("The main shop page that lists your products.","noah-shop-builder-for-woocommerce")},quick_view:{icon:R,description:(0,a.__)("The popup shown when a shopper previews a product from a list.","noah-shop-builder-for-woocommerce")},cart:{icon:oe,description:(0,a.__)("The cart page with the items a shopper is about to buy.","noah-shop-builder-for-woocommerce")},empty_cart:{icon:se,description:(0,a.__)("What shoppers see when their cart is empty.","noah-shop-builder-for-woocommerce")},checkout:{icon:te,description:(0,a.__)("Billing, shipping and payment steps.","noah-shop-builder-for-woocommerce")},order_received:{icon:re,description:(0,a.__)("The thank-you page after an order is placed.","noah-shop-builder-for-woocommerce")},my_account:{icon:ae,description:(0,a.__)("Customer dashboard, orders, addresses and account details.","noah-shop-builder-for-woocommerce")}};function ie(e){return le[e]||{icon:ne,description:""}}const ce=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M20.5 16h-.7V8c0-1.1-.9-2-2-2H6.2c-1.1 0-2 .9-2 2v8h-.7c-.8 0-1.5.7-1.5 1.5h20c0-.8-.7-1.5-1.5-1.5zM5.7 8c0-.3.2-.5.5-.5h11.6c.3 0 .5.2.5.5v7.6H5.7V8z"})}),de=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M17 4H7c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H7c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12zm-7.5-.5h4V16h-4v1.5z"})}),he=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z"})}),ue=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M19.5 4.5h-7V6h4.44l-5.97 5.97 1.06 1.06L18 7.06v4.44h1.5v-7Zm-13 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3H17v3a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h3V5.5h-3Z"})}),me=[{slug:"desktop",label:(0,a.__)("Desktop","noah-shop-builder-for-woocommerce"),icon:ce,width:"100%"},{slug:"tablet",label:(0,a.__)("Tablet","noah-shop-builder-for-woocommerce"),icon:de,width:"768px"},{slug:"mobile",label:(0,a.__)("Mobile","noah-shop-builder-for-woocommerce"),icon:he,width:"375px"}],pe=function({url:e,title:o,onClose:s,action:r}){const[l,i]=(0,t.useState)("desktop"),[c,d]=(0,t.useState)(!0),h=me.find(e=>e.slug===l).width;return(0,j.jsx)(n.Modal,{className:"noah-preview-modal",title:o,onRequestClose:s,isFullScreen:!0,headerActions:(0,j.jsxs)("div",{className:"noah-preview-modal__actions",children:[(0,j.jsx)("div",{className:"noah-segmented",role:"group","aria-label":(0,a.__)("Preview size","noah-shop-builder-for-woocommerce"),children:me.map(e=>(0,j.jsx)(n.Button,{icon:e.icon,label:e.label,size:"compact","aria-pressed":l===e.slug,className:l===e.slug?"is-selected":"",onClick:()=>i(e.slug)},e.slug))}),(0,j.jsx)(n.Button,{icon:ue,label:(0,a.__)("Open in new tab","noah-shop-builder-for-woocommerce"),href:e,target:"_blank",rel:"noopener noreferrer",size:"compact"}),r]}),children:(0,j.jsxs)("div",{className:"noah-preview-modal__stage",children:[c&&(0,j.jsxs)("div",{className:"noah-preview-modal__loading",children:[(0,j.jsx)(n.Spinner,{}),(0,j.jsx)("p",{children:(0,a.__)("Loading preview…","noah-shop-builder-for-woocommerce")})]}),(0,j.jsx)("iframe",{title:o,src:e,style:{width:h},className:c?"is-loading":"",onLoad:()=>d(!1)})]})})},ge={img:"noah-wireframe__image",head:"noah-wireframe__heading",line:"noah-wireframe__line",accent:"noah-wireframe__accent",box:"noah-wireframe__box",dashed:"noah-wireframe__dashed"},_e=(e,o,s,t,r)=>{const a=(s-5*(r-1))/r;return Array.from({length:r},(s,r)=>["img",e+r*(a+5),o,a,t])},we=(e,o,s,t)=>Array.from({length:t},(t,r)=>["box",e,o+11*r,s,7]),xe={blank:[["dashed",8,8,144,84]],split:[["img",10,10,66,80],["head",86,14,56,7],["line",86,27,30,4],["line",86,37,22,4],["line",86,48,64,4],["line",86,56,58,4],["accent",86,68,40,10]],feature:[["img",10,10,84,62],["head",102,12,48,7],["line",102,25,26,4],["line",102,35,20,4],["line",102,45,48,4],["accent",102,45,30,4],["accent",102,56,48,10],..._e(10,78,140,14,4)],stacked:[["img",50,8,60,44],["head",56,58,48,6],["line",66,69,28,4],["line",58,77,44,4],["accent",58,84,44,9]],grid:[["line",10,8,40,3],["head",10,15,60,7],["line",10,27,30,4],["box",120,25,30,7],..._e(10,38,140,24,3),..._e(10,66,140,24,3)],hero:[["head",50,10,60,8],["line",40,23,80,4],["line",30,32,100,4],["line",50,39,60,4],..._e(10,50,140,19,4),..._e(10,73,140,19,4)],sidebar:[["head",10,10,30,6],["line",10,22,28,4],["line",10,30,24,4],["line",10,38,30,4],["line",10,46,22,4],["head",50,10,50,7],..._e(50,24,100,30,3),..._e(50,58,100,30,3)],cart:[["head",10,10,50,8],["img",10,26,14,14],["line",30,30,50,4],["img",10,46,14,14],["line",30,50,44,4],["img",10,66,14,14],["line",30,70,54,4],["box",104,26,46,50],["line",110,34,34,4],["line",110,44,28,4],["accent",110,60,34,9]],"cart-trust":[["head",55,6,50,7],..._e(10,18,140,12,3),["img",10,38,12,12],["line",27,42,50,4],["img",10,56,12,12],["line",27,60,44,4],["box",104,38,46,46],["line",110,46,34,4],["accent",110,70,34,8]],message:[["head",35,8,90,8],["line",45,21,70,4],["accent",62,31,36,9],["line",72,47,16,3],["head",60,55,40,5],..._e(10,65,140,26,4)],"message-split":[["head",10,30,46,8],["line",10,43,40,4],["line",10,51,34,4],["accent",10,61,34,9],..._e(66,10,84,38,2),..._e(66,52,84,38,2)],checkout:[["head",10,8,40,7],...we(10,22,84,5),["accent",10,80,84,10],["box",104,22,46,58],["img",110,28,10,10],["line",124,31,20,4],["line",110,46,34,4],["line",110,56,28,4]],"checkout-trust":[["head",50,5,60,6],["line",45,14,70,3],...we(35,21,90,4),["box",35,64,90,14],["accent",35,81,90,6],["line",35,92,40,3],["line",85,92,40,3]],order:[["head",10,8,80,8],["box",10,22,140,12],["head",10,40,30,5],["line",10,50,140,4],["line",10,58,140,4],["box",10,68,66,24],["box",84,68,66,24]],thanks:[["accent",72,8,16,16],["head",50,30,60,8],["line",40,43,80,4],["box",35,53,90,22],["accent",60,82,40,9]],account:[["head",10,8,50,8],["line",10,26,30,4],["line",10,34,26,4],["line",10,42,30,4],["line",10,50,22,4],["line",10,58,28,4],["line",50,26,100,4],["line",50,34,90,4],["box",50,46,100,40]],"account-help":[["head",10,8,50,8],["line",10,26,22,4],["line",10,34,18,4],["line",10,42,22,4],["box",38,24,66,62],["box",112,24,38,44],["head",117,30,26,5],["line",117,40,28,3],["accent",117,54,28,8]]},ve=[["head",10,12,70,8],["line",10,28,140,4],["line",10,36,132,4],["line",10,44,120,4],["img",10,56,140,34]],be=function({layout:e}){const o=xe[e]||ve;return(0,j.jsxs)("svg",{className:"noah-wireframe",viewBox:"0 0 160 100","aria-hidden":"true",focusable:"false",children:[o.map(([e,o,s,t,r],a)=>(0,j.jsx)("rect",{className:ge[e],x:o,y:s,width:t,height:r,rx:"line"===e?2:3},a)),"blank"===e&&(0,j.jsx)("path",{className:"noah-wireframe__accent-stroke",d:"M80 40v20M70 50h20"})]})},fe="noah_template",je="_noah_template_type",ye="_noah_conditions",Se="publish";function ke(e){return e.meta?.[je]||"single"}function Ne(e){const o=e.meta?.[ye];return Array.isArray(o)?o:[]}function Ce(e){return e.status===Se}function Ee(e){return e.title?.raw??e.title?.rendered??""}function Ve(e){const o=e.filter(e=>"exclude"!==e.type),s=e.length-o.length;return 0===o.length?{kind:"none",include:0,exclude:s}:0===s&&1===o.length&&"all"===o[0].rule?{kind:"all",include:1,exclude:0}:{kind:"custom",include:o.length,exclude:s}}function Me(e){return e.map(e=>["exclude"===e.type?"exclude":"include",e.rule,[...e.ids||[]].sort((e,o)=>e-o).join(","),[...e.slugs||[]].sort().join(",")].join(":")).sort().join("|")}const Be="blank";function Le({label:e,value:o,options:s,onChange:t}){return(0,j.jsxs)("fieldset",{className:"noah-templates-modal__field",children:[(0,j.jsx)("legend",{children:e}),(0,j.jsx)("div",{className:"noah-option-cards",role:"radiogroup",children:s.map(e=>(0,j.jsxs)("button",{type:"button",role:"radio","aria-checked":o===e.value,className:"noah-option-card "+(o===e.value?"is-selected":""),onClick:()=>t(e.value),children:[(0,j.jsx)("span",{className:"noah-option-card__radio"}),(0,j.jsxs)("span",{children:[(0,j.jsx)("strong",{children:e.title}),(0,j.jsx)("span",{children:e.description})]})]},e.value))})]})}function ze({type:e,onSelect:o}){const[s,r]=(0,t.useState)(null),l=[{slug:Be,title:(0,a.__)("Blank","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Start from an empty canvas and add Noah blocks yourself.","noah-shop-builder-for-woocommerce"),layout:"blank",content:""},...e.starters];return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)("div",{className:"noah-design-grid",children:l.map(e=>(0,j.jsxs)("div",{className:"noah-design-card",children:[(0,j.jsxs)("button",{type:"button",className:"noah-design-card__select",onClick:()=>o(e),children:[(0,j.jsx)("span",{className:"noah-design-card__preview",children:(0,j.jsx)(be,{layout:e.layout})}),(0,j.jsxs)("span",{className:"noah-design-card__body",children:[(0,j.jsxs)("strong",{children:[e.title," ",(0,j.jsx)(y,{badges:e.badge})]}),e.description&&(0,j.jsx)("span",{children:e.description}),e.blocks&&(0,j.jsx)("span",{className:`noah-design-card__blocks is-${e.blocks}`,children:"noah"===e.blocks?(0,a.__)("Noah blocks","noah-shop-builder-for-woocommerce"):(0,a.__)("WooCommerce blocks","noah-shop-builder-for-woocommerce")})]})]}),e.preview_url&&(0,j.jsx)(n.Button,{className:"noah-design-card__preview-button",variant:"secondary",size:"compact",icon:R,onClick:()=>r(e),children:(0,a.__)("Preview","noah-shop-builder-for-woocommerce")})]},e.slug))}),s&&(0,j.jsx)(pe,{url:s.preview_url,title:s.title,onClose:()=>r(null),action:(0,j.jsx)(n.Button,{variant:"primary",size:"compact",onClick:()=>o(s),children:(0,a.__)("Use this design","noah-shop-builder-for-woocommerce")})})]})}const Re=function({types:e,onClose:o}){const[s,i]=(0,t.useState)(null),[c,d]=(0,t.useState)(null),[h,u]=(0,t.useState)(""),[m,p]=(0,t.useState)("all"),[g,_]=(0,t.useState)(Se),[w,x]=(0,t.useState)(!1),[v,b]=(0,t.useState)(null),{saveEntityRecord:f}=(0,l.useDispatch)(F.store),y=e=>e?.starters?.length>0,S=()=>{y(s)&&c||i(null),d(null)};let k=1;s&&(k=c?3:2);const N=y(s)||!s?[1,2,3]:[1,3],C={1:(0,a.__)("What do you want to design?","noah-shop-builder-for-woocommerce"),2:(0,a.__)("Choose a starting design","noah-shop-builder-for-woocommerce"),3:(0,a.__)("Set up your template","noah-shop-builder-for-woocommerce")};return(0,j.jsxs)(n.Modal,{className:"noah-templates-modal",title:C[k],onRequestClose:w?()=>{}:o,size:"large",children:[(0,j.jsx)("div",{className:"noah-templates-modal__steps","aria-hidden":"true",children:N.map(e=>(0,j.jsx)("span",{className:k>=e?"is-active":""},e))}),2===k&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)("div",{className:"noah-templates-modal__subheader",children:[(0,j.jsx)(n.Button,{variant:"tertiary",icon:X,onClick:S,children:(0,a.__)("Back","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{className:"noah-templates-modal__intro",children:(0,a.sprintf)(/* translators: %s: template type, e.g. "Single Product". */ /* translators: %s: template type, e.g. "Single Product". */ 5 (0,a.__)("Pick a ready-made %s layout or start blank. Preview any design on your store first; you can change everything in the editor.","noah-shop-builder-for-woocommerce"),s.label)})]}),(0,j.jsx)(ze,{type:s,onSelect:d})]}),1===k&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)("p",{className:"noah-templates-modal__intro",children:(0,a.__)("Choose the store page this template replaces.","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("div",{className:"noah-type-grid",children:e.map(e=>{const o=ie(e.slug);return(0,j.jsxs)("button",{type:"button",className:"noah-type-card",onClick:()=>{return i(o=e),d(y(o)?null:{slug:Be,content:""}),void u((0,a.sprintf)(/* translators: %s: template type, e.g. "Single Product". */ /* translators: %s: template type, e.g. "Single Product". */ 5 6 (0,a.__)("%s Template","noah-shop-builder-for-woocommerce"),o.label));var o},children:[(0,j.jsx)("span",{className:"noah-type-card__icon",children:(0,j.jsx)(n.Icon,{icon:o.icon,size:28})}),(0,j.jsx)("strong",{children:e.label}),o.description&&(0,j.jsx)("span",{className:"noah-type-card__description",children:o.description}),y(e)&&(0,j.jsx)("span",{className:"noah-type-card__starters",children:(0,a.sprintf)(/* translators: %d: number of starter designs. */ /* translators: %d: number of starter designs. */ 6 (0,a._n)("%d starter design","%d starter designs",e.starters.length,"noah-shop-builder-for-woocommerce"),e.starters.length)})]},e.slug)})})]}),3===k&&(0,j.jsxs)("form",{onSubmit:async e=>{e.preventDefault(), v(!0),b(null);try{const e=await f("postType",ge,{title:h.trim()||s.label,content:c.content,status:g,meta:{[_e]:s.slug,[we]:"all"===u?[{type:"include",rule:"all",ids:[]}]:[]}},{throwOnError:!0});window.location.href=(0,r.addQueryArgs)("post.php",{post:e.id,action:"edit"})}catch(e){b(e?.message||(0,a.__)("The template could not be created.","noah-shop-builder-for-woocommerce")),v(!1)}},className:"noah-templates-modal__form",children:[(0,j.jsxs)("div",{className:"noah-selected-type",children:[(0,j.jsx)("span",{className:"noah-type-card__icon",children:(0,j.jsx)(n.Icon,{icon:se(s.slug).icon,size:24})}),(0,j.jsxs)("div",{children:[(0,j.jsx)("strong",{children:s.label}),(0,j.jsx)("span",{children:c.slug===ke?(0,a.__)("Blank design","noah-shop-builder-for-woocommerce"):(0,a.sprintf)(/* translators: %s: starter design name. */ /* translators: %s: starter design name. */7 (0,a.__)("Starting design: %s","noah-shop-builder-for-woocommerce"),c.title)})]})]}), x&&(0,j.jsx)(n.Notice,{status:"error",isDismissible:!1,children:x}),(0,j.jsx)(n.TextControl,{__next40pxDefaultSize:!0,__nextHasNoMarginBottom:!0,label:(0,a.__)("Template name","noah-shop-builder-for-woocommerce"),help:(0,a.__)("Only you see this name. It helps you find the template later.","noah-shop-builder-for-woocommerce"),value:h,onChange:m,autoFocus:!0}),(0,j.jsx)(Ne,{label:(0,a.__)("Where should it show?","noah-shop-builder-for-woocommerce"),value:u,onChange:p,options:[{value:"all",title:(0,a.__)("Entire store","noah-shop-builder-for-woocommerce"),description:(0,a.sprintf)(/* translators: %s: template type, e.g. "Single Product". */ /* translators: %s: template type, e.g. "Single Product". */8 (0,a.__)("Use it on every %s page.","noah-shop-builder-for-woocommerce"),s.label)},{value:"none",title:(0,a.__)("Not yet","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Save it without display rules and choose pages later.","noah-shop-builder-for-woocommerce")}]}),(0,j.jsx)( Ne,{label:(0,a.__)("Status","noah-shop-builder-for-woocommerce"),value:g,onChange:_,options:[{value:ve,title:(0,a.__)("Active","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Live on your store as soon as it matches a page.","noah-shop-builder-for-woocommerce")},{value:"draft",title:(0,a.__)("Inactive","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Hidden from shoppers. Turn it on when it’s ready.","noah-shop-builder-for-woocommerce")}]}),(0,j.jsxs)("div",{className:"noah-templates-modal__footer has-back",children:[(0,j.jsx)(n.Button,{variant:"tertiary",icon:W,onClick:S,disabled:w,children:(0,a.__)("Back","noah-shop-builder-for-woocommerce")}),(0,j.jsxs)("div",{className:"noah-templates-modal__footer-end",children:[(0,j.jsx)(n.Button,{variant:"tertiary",onClick:o,disabled:w,children:(0,a.__)("Cancel","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"primary",type:"submit",isBusy:w,disabled:w,children:(0,a.__)("Create and edit","noah-shop-builder-for-woocommerce")})]})]})]})]})},Ve={per_page:-1,status:[ve,"draft"].join(","),context:"edit",orderby:"modified",order:"desc"},Me={all:(0,a.__)("All","noah-shop-builder-for-woocommerce"),active:(0,a.__)("Active","noah-shop-builder-for-woocommerce"),inactive:(0,a.__)("Inactive","noah-shop-builder-for-woocommerce")},Be=e=>(0,r.addQueryArgs)("post.php",{post:e,action:"edit"});function Le(e){if("none"===e.kind)return(0,a.__)("Not shown anywhere","noah-shop-builder-for-woocommerce");if("all"===e.kind)return(0,a.__)("Entire store","noah-shop-builder-for-woocommerce");const o=(0,a.sprintf)(/* translators: %d: number of include rules. */ /* translators: %d: number of include rules. */7 (0,a._n)("%d starter design","%d starter designs",e.starters.length,"noah-shop-builder-for-woocommerce"),e.starters.length)})]},e.slug)})})]}),3===k&&(0,j.jsxs)("form",{onSubmit:async e=>{e.preventDefault(),x(!0),b(null);try{const e=await f("postType",fe,{title:h.trim()||s.label,content:c.content,status:g,meta:{[je]:s.slug,[ye]:"all"===m?[{type:"include",rule:"all",ids:[]}]:[]}},{throwOnError:!0});window.location.href=(0,r.addQueryArgs)("post.php",{post:e.id,action:"edit"})}catch(e){b(e?.message||(0,a.__)("The template could not be created.","noah-shop-builder-for-woocommerce")),x(!1)}},className:"noah-templates-modal__form",children:[(0,j.jsxs)("div",{className:"noah-selected-type",children:[(0,j.jsx)("span",{className:"noah-type-card__icon",children:(0,j.jsx)(n.Icon,{icon:ie(s.slug).icon,size:24})}),(0,j.jsxs)("div",{children:[(0,j.jsx)("strong",{children:s.label}),(0,j.jsx)("span",{children:c.slug===Be?(0,a.__)("Blank design","noah-shop-builder-for-woocommerce"):(0,a.sprintf)(/* translators: %s: starter design name. */ /* translators: %s: starter design name. */ 8 (0,a.__)("Starting design: %s","noah-shop-builder-for-woocommerce"),c.title)})]})]}),v&&(0,j.jsx)(n.Notice,{status:"error",isDismissible:!1,children:v}),(0,j.jsx)(n.TextControl,{__next40pxDefaultSize:!0,__nextHasNoMarginBottom:!0,label:(0,a.__)("Template name","noah-shop-builder-for-woocommerce"),help:(0,a.__)("Only you see this name. It helps you find the template later.","noah-shop-builder-for-woocommerce"),value:h,onChange:u,autoFocus:!0}),(0,j.jsx)(Le,{label:(0,a.__)("Where should it show?","noah-shop-builder-for-woocommerce"),value:m,onChange:p,options:[{value:"all",title:(0,a.__)("Entire store","noah-shop-builder-for-woocommerce"),description:(0,a.sprintf)(/* translators: %s: template type, e.g. "Single Product". */ /* translators: %s: template type, e.g. "Single Product". */ 9 (0,a.__)("Use it on every %s page.","noah-shop-builder-for-woocommerce"),s.label)},{value:"none",title:(0,a.__)("Not yet","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Save it without display rules and choose pages later.","noah-shop-builder-for-woocommerce")}]}),(0,j.jsx)(Le,{label:(0,a.__)("Status","noah-shop-builder-for-woocommerce"),value:g,onChange:_,options:[{value:Se,title:(0,a.__)("Active","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Live on your store as soon as it matches a page.","noah-shop-builder-for-woocommerce")},{value:"draft",title:(0,a.__)("Inactive","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Hidden from shoppers. Turn it on when it’s ready.","noah-shop-builder-for-woocommerce")}]}),(0,j.jsxs)("div",{className:"noah-templates-modal__footer has-back",children:[(0,j.jsx)(n.Button,{variant:"tertiary",icon:X,onClick:S,disabled:w,children:(0,a.__)("Back","noah-shop-builder-for-woocommerce")}),(0,j.jsxs)("div",{className:"noah-templates-modal__footer-end",children:[(0,j.jsx)(n.Button,{variant:"tertiary",onClick:o,disabled:w,children:(0,a.__)("Cancel","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"primary",type:"submit",isBusy:w,disabled:w,children:(0,a.__)("Create and edit","noah-shop-builder-for-woocommerce")})]})]})]})]})},Te={per_page:-1,status:[Se,"draft"].join(","),context:"edit",orderby:"modified",order:"desc"},Ae={all:(0,a.__)("All","noah-shop-builder-for-woocommerce"),active:(0,a.__)("Active","noah-shop-builder-for-woocommerce"),inactive:(0,a.__)("Inactive","noah-shop-builder-for-woocommerce")},De=e=>(0,r.addQueryArgs)("post.php",{post:e,action:"edit"});function Pe(e){if("none"===e.kind)return(0,a.__)("Not shown anywhere","noah-shop-builder-for-woocommerce");if("all"===e.kind)return(0,a.__)("Entire store","noah-shop-builder-for-woocommerce");const o=(0,a.sprintf)(/* translators: %d: number of include rules. */ /* translators: %d: number of include rules. */ 9 10 (0,a._n)("%d rule","%d rules",e.include,"noah-shop-builder-for-woocommerce"),e.include);return e.exclude?(0,a.sprintf)(/* translators: 1: e.g. "2 rules", 2: number of exclusions. */ /* translators: 1: e.g. "2 rules", 2: number of exclusions. */ 10 (0,a._n)("%1$s, %2$d exclusion","%1$s, %2$d exclusions",e.exclude,"noah-shop-builder-for-woocommerce"),o,e.exclude):o}function ze(e){const o=new Date(e);return Number.isNaN(o.getTime())?"":o.toLocaleDateString(document.documentElement.lang||void 0,{dateStyle:"medium"})}function Re({types:e,list:o,value:s,onChange:t}){const r=o.reduce((e,o)=>{const s=xe(o);return e[s]=(e[s]||0)+1,e},{}),n=[{slug:"all",label:(0,a.__)("All templates","noah-shop-builder-for-woocommerce"),count:o.length},...e.filter(e=>r[e.slug]).map(e=>({...e,count:r[e.slug]}))];return(0,j.jsx)("div",{className:"noah-type-filter",role:"tablist","aria-label":(0,a.__)("Template type","noah-shop-builder-for-woocommerce"),children:n.map(e=>(0,j.jsxs)("button",{type:"button",role:"tab","aria-selected":s===e.slug,className:s===e.slug?"is-selected":"",onClick:()=>t(e.slug),children:[e.label,(0,j.jsx)("span",{className:"noah-type-filter__count",children:e.count})]},e.slug))})}function Te({template:e,typeLabel:o,conflicts:s,active:t,isBusy:r,onToggle:l,onPreview:i,onDuplicate:c,onDelete:d,refresh:h}){const m=(0,N.applyFilters)("noahShopBuilder.templates.rowActions",[],{template:e,refresh:h}),u=xe(e),p=ye(be(e)),g=je(e)||(0,a.__)("(no title)","noah-shop-builder-for-woocommerce"),_=`noah-template-status-${e.id}`;return(0,j.jsxs)("div",{className:"noah-template-row "+(t?"":"is-inactive"),role:"row",children:[(0,j.jsxs)("div",{className:"noah-template-row__main",role:"cell",children:[(0,j.jsx)("span",{className:"noah-template-row__icon",children:(0,j.jsx)(n.Icon,{icon:se(u).icon,size:22})}),(0,j.jsxs)("div",{children:[(0,j.jsx)("a",{className:"noah-template-row__title",href:Be(e.id),children:g}),(0,j.jsxs)("div",{className:"noah-template-row__meta",children:[(0,j.jsx)("span",{className:"noah-pill",children:o}),(0,j.jsx)("span",{children:(0,a.sprintf)(/* translators: %s: date. */ /* translators: %s: date. */ 11 (0,a.__)("Edited %s","noah-shop-builder-for-woocommerce"),ze(e.modified))})]})]})]}),(0,j.jsxs)("div",{className:"noah-template-row__display",role:"cell",children:[(0,j.jsx)("span",{className:`noah-display noah-display--${p.kind}`,children:Le(p)}),t&&s.length>0&&(0,j.jsx)(n.Tooltip,{text:(0,a.sprintf)(/* translators: %s: comma-separated template names. */ /* translators: %s: comma-separated template names. */ 12 (0,a.__)("Same pages and priority as %s. Only the most recently edited one is used.","noah-shop-builder-for-woocommerce"),s.join(", ")),children:(0,j.jsxs)("span",{className:"noah-badge noah-badge--warning",tabIndex:0,children:[(0,j.jsx)(n.Icon,{icon:P,size:16}),(0,a.__)("Conflict","noah-shop-builder-for-woocommerce")]})})]}),(0,j.jsxs)("div",{className:"noah-template-row__status",role:"cell",children:[(0,j.jsx)(n.FormToggle,{id:_,checked:t,disabled:r,onChange:()=>l(!t)}),(0,j.jsx)("label",{htmlFor:_,children:t?(0,a.__)("Active","noah-shop-builder-for-woocommerce"):(0,a.__)("Inactive","noah-shop-builder-for-woocommerce")})]}),(0,j.jsxs)("div",{className:"noah-template-row__actions",role:"cell",children:[(0,j.jsx)(n.Button,{variant:"secondary",size:"compact",icon:O,href:Be(e.id),children:(0,a.__)("Edit","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.DropdownMenu,{icon:Z,label:(0,a.__)("More actions","noah-shop-builder-for-woocommerce"),toggleProps:{size:"compact",disabled:r},popoverProps:{placement:"bottom-end"},children:({onClose:o})=>(0,j.jsxs)(n.MenuGroup,{children:[e.noah_preview_url&&(0,j.jsx)(n.MenuItem,{icon:E,onClick:()=>{o(),i()},children:(0,a.__)("Preview","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.MenuItem,{icon:G,onClick:()=>{o(),c()},children:(0,a.__)("Duplicate","noah-shop-builder-for-woocommerce")}),m.map(s=>(0,j.jsx)(n.MenuItem,{icon:s.icon,onClick:()=>{o(),s.onClick(e)},children:s.label},s.key)),(0,j.jsx)(n.MenuItem,{icon:I,isDestructive:!0,onClick:()=>{o(),d()},children:(0,a.__)("Delete","noah-shop-builder-for-woocommerce")})]})})]})]})}function Ae({onCreate:e}){const o=[{title:(0,a.__)("Pick a page","noah-shop-builder-for-woocommerce"),text:(0,a.__)("Product, shop, cart, checkout and more.","noah-shop-builder-for-woocommerce")},{title:(0,a.__)("Design it with blocks","noah-shop-builder-for-woocommerce"),text:(0,a.__)("Drag in Noah blocks in the editor you know.","noah-shop-builder-for-woocommerce")},{title:(0,a.__)("Turn it on","noah-shop-builder-for-woocommerce"),text:(0,a.__)("Active templates replace the WooCommerce page.","noah-shop-builder-for-woocommerce")}];return(0,j.jsxs)("div",{className:"noah-templates-empty",children:[(0,j.jsx)("h2",{children:(0,a.__)("Design your first store template","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Templates let you redesign WooCommerce pages without touching your theme.","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("ol",{className:"noah-templates-empty__steps",children:o.map((e,o)=>(0,j.jsxs)("li",{children:[(0,j.jsx)("span",{className:"noah-templates-empty__number",children:o+1}),(0,j.jsx)("strong",{children:e.title}),(0,j.jsx)("span",{children:e.text})]},e.title))}),(0,j.jsx)(n.Button,{variant:"primary",icon:F,onClick:e,__next40pxDefaultSize:!0,children:(0,a.__)("Create template","noah-shop-builder-for-woocommerce")})]})}const De=[{slug:"single_product",icon:q,title:(0,a.__)("Single Product","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Design product pages with title, gallery, price, add to cart, tabs, reviews, related products and more.","noah-shop-builder-for-woocommerce")},{slug:"archive",icon:U,title:(0,a.__)("Shop & Archive","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Build the shop page, category and tag archives and search results with product grids, filters, sorting and pagination.","noah-shop-builder-for-woocommerce")},{slug:"cart",icon:Q,title:(0,a.__)("Cart & Empty Cart","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Lay out the cart page, and a separate page for when the cart is empty.","noah-shop-builder-for-woocommerce")},{slug:"checkout",icon:X,title:(0,a.__)("Checkout","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Arrange billing, shipping, order review and payment your way, while WooCommerce still runs the checkout.","noah-shop-builder-for-woocommerce")},{slug:"quick_view",icon:E,title:(0,a.__)("Quick View","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Design the popup that opens from the “Quick view” button on product cards.","noah-shop-builder-for-woocommerce")}],He=[{title:(0,a.__)("Create a template","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Pick a template type and start from a ready-made starter design or a blank page.","noah-shop-builder-for-woocommerce")},{title:(0,a.__)("Design it with blocks","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Arrange Noah blocks in the block editor and preview the result with a real product.","noah-shop-builder-for-woocommerce")},{title:(0,a.__)("Choose where it shows","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Show the template on all pages of its type, or only on chosen products and categories, then publish.","noah-shop-builder-for-woocommerce")}],Pe=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z"})}),Oe=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{d:"m3 5c0-1.10457.89543-2 2-2h13.5c1.1046 0 2 .89543 2 2v13.5c0 1.1046-.8954 2-2 2h-13.5c-1.10457 0-2-.8954-2-2zm2-.5h6v6.5h-6.5v-6c0-.27614.22386-.5.5-.5zm-.5 8v6c0 .2761.22386.5.5.5h6v-6.5zm8 0v6.5h6c.2761 0 .5-.2239.5-.5v-6zm0-8v6.5h6.5v-6c0-.27614-.2239-.5-.5-.5z",fillRule:"evenodd",clipRule:"evenodd"})}),Ze=(0,j.jsxs)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,j.jsx)(C.Path,{d:"M14.5 5.5h-7V7h7V5.5ZM7.5 9h7v1.5h-7V9Zm7 3.5h-7V14h7v-1.5Z"}),(0,j.jsx)(C.Path,{d:"M16 2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2ZM6 3.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V4a.5.5 0 0 1 .5-.5Z"}),(0,j.jsx)(C.Path,{d:"M20 8v11c0 .69-.31 1-.999 1H6v1.5h13.001c1.52 0 2.499-.982 2.499-2.5V8H20Z"})]}),Ge=(0,j.jsx)(C.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(C.Path,{fillRule:"evenodd",d:"M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z",clipRule:"evenodd"})});function Ie(e,o){const s=window.getComputedStyle(o);if("rtl"!==s.direction)return e.offsetLeft-o.offsetLeft;const t=o.offsetParent.clientWidth-parseFloat(s.right||0);return e.offsetLeft+e.offsetWidth-t}const Fe={welcome:{label:(0,a.__)("Welcome","noah-shop-builder-for-woocommerce"),icon:Pe},block:{label:(0,a.__)("Blocks","noah-shop-builder-for-woocommerce"),icon:Oe},module:{label:(0,a.__)("Modules","noah-shop-builder-for-woocommerce"),icon:ee},templates:{label:(0,a.__)("Templates","noah-shop-builder-for-woocommerce"),icon:Ze},settings:{label:(0,a.__)("Settings","noah-shop-builder-for-woocommerce"),icon:Ge}},We=function({links:e,currentPage:o,setCurrentPage:s}){const[r,a]=(0,t.useState)({left:0,width:0}),l=(0,t.useRef)(null),i=(0,t.useRef)(null),c=(0,t.useRef)({}),d=Object.keys(e).map(e=>({page:e,label:Fe[e]?.label||e,icon:Fe[e]?.icon}));return(0,t.useEffect)(()=>{const e=l.current,s=()=>{const e=c.current[o],s=i.current;e&&s&&a({left:Ie(e,s),width:e.offsetWidth})};if(s(),!e||void 0===window.ResizeObserver)return;const t=new window.ResizeObserver(s);t.observe(e);for(const e of Object.values(c.current))e&&t.observe(e);return()=>t.disconnect()},[o]),(0,j.jsx)("header",{className:"noah-shop-builder-dashboard-header",children:(0,j.jsx)("div",{className:"noah-shop-builder-header-container",children:(0,j.jsxs)("nav",{className:"noah-shop-builder-dashboard-nav",ref:l,children:[(0,j.jsx)("div",{className:"nav-indicator",ref:i,style:{transform:`translateX(${r.left}px)`,width:`${r.width}px`}}),d.map(e=>(0,j.jsxs)("button",{ref:o=>c.current[e.page]=o,className:"nav-button "+(o===e.page?"active":""),onClick:o=>{o.preventDefault(),s(e.page)},type:"button",children:[e.icon&&(0,j.jsx)(n.Icon,{icon:e.icon,size:20}),(0,j.jsx)("span",{children:e.label})]},e.page))]})})})},qe=function(){const e=(0,l.useSelect)(e=>e(d.store).getNotices(),[]),{removeNotice:o}=(0,l.useDispatch)(d.store);return(0,j.jsx)(n.SnackbarList,{className:"noah-shop-builder-snackbars",notices:e.filter(e=>"snackbar"===e.type),onRemove:o})},Ue={welcome:function({onPageChange:e}){return(0,j.jsxs)("div",{className:"noah-shop-builder-welcome",children:[(0,j.jsxs)("div",{className:"section welcome-hero",children:[(0,j.jsx)("h1",{children:(0,a.__)("Welcome to Noah Shop Builder","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Design your WooCommerce product pages, shop, archives, cart and checkout in the block editor. No coding needed, and your theme stays in charge of the rest of the site.","noah-shop-builder-for-woocommerce")}),(0,j.jsxs)("div",{className:"button-group",children:[(0,j.jsx)(n.Button,{variant:"primary",onClick:()=>e("templates",{new:1}),children:(0,a.__)("Create a template","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"secondary",onClick:()=>e("templates"),children:(0,a.__)("View templates","noah-shop-builder-for-woocommerce")})]})]}),(0,j.jsxs)("div",{className:"section",children:[(0,j.jsx)("h2",{children:(0,a.__)("Get started","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("ol",{className:"welcome-steps",children:He.map(e=>(0,j.jsxs)("li",{children:[(0,j.jsx)("h3",{children:e.title}),(0,j.jsx)("p",{children:e.description})]},e.title))})]}),(0,j.jsxs)("div",{className:"section",children:[(0,j.jsx)("h2",{children:(0,a.__)("What you can build","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("div",{className:"welcome-cards",children:De.map(e=>(0,j.jsxs)("div",{className:"welcome-card",children:[(0,j.jsx)("span",{className:"welcome-card-icon",children:(0,j.jsx)(n.Icon,{icon:e.icon,size:24})}),(0,j.jsx)("h3",{children:e.title}),(0,j.jsx)("p",{children:e.description})]},e.slug))})]}),(0,j.jsxs)("div",{className:"welcome-columns",children:[(0,j.jsxs)("div",{className:"section",children:[(0,j.jsx)("h2",{children:(0,a.__)("Blocks","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Turn off the blocks you don’t use to keep the inserter tidy. Turned-off blocks load nothing on your store.","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"secondary",onClick:()=>e("block"),children:(0,a.__)("Manage blocks","noah-shop-builder-for-woocommerce")})]}),(0,j.jsxs)("div",{className:"section",children:[(0,j.jsx)("h2",{children:(0,a.__)("Modules","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Add Quick View, a wishlist and variation swatches to your store. Each module stays off until you turn it on, and has its own settings.","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"secondary",onClick:()=>e("module"),children:(0,a.__)("Manage modules","noah-shop-builder-for-woocommerce")})]}),(0,j.jsxs)("div",{className:"section",children:[(0,j.jsx)("h2",{children:(0,a.__)("Coming next","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Templates for the My Account and order received pages.","noah-shop-builder-for-woocommerce")})]})]})]})},block:function(){const{blocks:e,loadError:o,isLoaded:s}=(0,l.useSelect)(e=>{const o=e(f);return{blocks:o.getBlocks(),loadError:o.getLoadError(),isLoaded:o.hasFinishedResolution("getBlocks")}},[]),{toggleBlock:r,setAllBlocks:i}=(0,l.useDispatch)(f);if(!s)return(0,j.jsx)("div",{className:"section",children:(0,j.jsxs)("div",{style:{textAlign:"center",padding:"50px"},children:[(0,j.jsx)(n.Spinner,{}),(0,j.jsx)("p",{children:(0,a.__)("Loading blocks…","noah-shop-builder-for-woocommerce")})]})});const c=Object.values(e).filter(e=>!e.required),d=c.length>0&&c.every(e=>"active"===e.status),h=Object.values(e).reduce((e,o)=>{const s=o.category?.[0]||"other";return e[s]||(e[s]=[]),e[s].push(o),e},{});return(0,j.jsx)(t.Fragment,{children:(0,j.jsxs)("div",{className:"section noah-shop-builder-blocks",children:[o&&(0,j.jsx)(n.Notice,{status:"error",isDismissible:!1,children:o}),(0,j.jsxs)("div",{className:"blocks-header",children:[(0,j.jsxs)("div",{children:[(0,j.jsx)("h1",{children:(0,a.__)("Disable/Enable Blocks","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Turn blocks on or off. Changes are saved automatically.","noah-shop-builder-for-woocommerce")})]}),(0,j.jsx)("div",{className:"header-actions",children:(0,j.jsx)("div",{className:"bulk-toggle",children:(0,j.jsx)(n.ToggleControl,{__nextHasNoMarginBottom:!0,label:(0,a.__)("Enable all","noah-shop-builder-for-woocommerce"),checked:d,disabled:0===c.length,onChange:i})})})]}),Object.keys(h).map(e=>(0,j.jsxs)("div",{className:"blocks-category",children:[(0,j.jsx)("h2",{children:S[e]||e}),(0,j.jsx)("div",{className:"blocks-grid",children:h[e].map(e=>(0,j.jsxs)("div",{className:"block-card",children:[(0,j.jsxs)("div",{className:"block-info",children:[(0,j.jsx)("h3",{children:e.title}),(0,j.jsx)(y,{badges:e.badge})]}),(0,j.jsx)(n.ToggleControl,{__nextHasNoMarginBottom:!0,label:(0,j.jsx)("span",{className:"screen-reader-text",children:e.title}),help:e.required?(0,a.__)("Required","noah-shop-builder-for-woocommerce"):void 0,checked:"active"===e.status,disabled:e.required,onChange:o=>r(e.slug,o)})]},e.slug))})]},e))]})})},module:function({onPageChange:e}){const[o,s]=(0,t.useState)(null),{modules:r,loadError:i,isLoaded:c}=(0,l.useSelect)(e=>{const o=e(f);return{modules:o.getModules(),loadError:o.getModulesLoadError(),isLoaded:o.hasFinishedResolution("getModules")}},[]),{toggleModule:d}=(0,l.useDispatch)(f),h=(0,N.applyFilters)("noahShopBuilder.modules",R),m=Array.isArray(h)?h:R,u=Object.values(r),p=m.filter(e=>!r[e.slug]),g=e=>m.find(o=>o.slug===e.slug)?.icon||z[e.icon]||L,_=o?r[o]:null;return c?(0,j.jsxs)("div",{className:"section noah-shop-builder-modules",children:[(0,j.jsx)("h1",{children:(0,a.__)("Modules","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Modules add shopping features across your store. Turn each one on or off here; a module that is off loads no code at all.","noah-shop-builder-for-woocommerce")}),i&&(0,j.jsx)(n.Notice,{status:"error",isDismissible:!1,children:i}),u.length>0&&(0,j.jsx)("div",{className:"modules-grid",children:u.map(e=>{const o="active"===e.status;return(0,j.jsxs)("div",{className:"module-card"+(o?" is-active":""),children:[(0,j.jsxs)("div",{className:"module-card-header",children:[(0,j.jsx)("span",{className:"module-icon",children:(0,j.jsx)(n.Icon,{icon:g(e),size:24})}),(0,j.jsx)(n.ToggleControl,{__nextHasNoMarginBottom:!0,label:(0,j.jsx)("span",{className:"screen-reader-text",children:e.title}),checked:o,onChange:o=>d(e.slug,o)})]}),(0,j.jsxs)("h3",{children:[e.title," ",(0,j.jsx)(y,{badges:e.badge})]}),(0,j.jsx)("p",{children:e.description}),o&&e.fields.length>0&&(0,j.jsx)(n.Button,{variant:"secondary",size:"compact",className:"module-card-settings",onClick:()=>s(e.slug),children:(0,a.__)("Settings","noah-shop-builder-for-woocommerce")})]},e.slug)})}),p.length>0&&(0,j.jsxs)(j.Fragment,{children:[u.length>0&&(0,j.jsx)("h2",{children:(0,a.__)("Coming soon","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("div",{className:"modules-grid",children:p.map(e=>(0,j.jsxs)("div",{className:"module-card",children:[(0,j.jsxs)("div",{className:"module-card-header",children:[(0,j.jsx)("span",{className:"module-icon",children:(0,j.jsx)(n.Icon,{icon:e.icon,size:24})}),(0,j.jsx)("span",{className:"badge badge-upcoming",children:(0,a.__)("Upcoming","noah-shop-builder-for-woocommerce")})]}),(0,j.jsxs)("h3",{children:[e.title," ",(0,j.jsx)(y,{badges:e.badge})]}),(0,j.jsx)("p",{children:e.description})]},e.slug))})]}),0===u.length&&(0,j.jsxs)("div",{className:"modules-note",children:[(0,j.jsx)("p",{children:(0,a.__)("These modules are in development and will arrive in a future update. Until then, build your store pages with templates and blocks.","noah-shop-builder-for-woocommerce")}),(0,j.jsxs)("div",{className:"button-group",children:[(0,j.jsx)(n.Button,{variant:"primary",onClick:()=>e("templates"),children:(0,a.__)("Go to Templates","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"secondary",onClick:()=>e("block"),children:(0,a.__)("Go to Blocks","noah-shop-builder-for-woocommerce")})]})]}),_&&(0,j.jsx)(D,{module:_,onClose:()=>s(null)})]}):(0,j.jsx)("div",{className:"section",children:(0,j.jsxs)("div",{style:{textAlign:"center",padding:"50px"},children:[(0,j.jsx)(n.Spinner,{}),(0,j.jsx)("p",{children:(0,a.__)("Loading modules…","noah-shop-builder-for-woocommerce")})]})})},templates:function(){const[e,o]=(0,t.useState)(null),[s,i]=(0,t.useState)(null),[h,m]=(0,t.useState)(!1),[u,p]=(0,t.useState)("all"),[g,_]=(0,t.useState)("all"),[w,v]=(0,t.useState)(""),[x,b]=(0,t.useState)({}),[f,y]=(0,t.useState)(null),[S,k]=(0,t.useState)(null),[C,E]=(0,t.useState)(!1),V=(0,t.useRef)(null),{templates:M,loadError:B}=(0,l.useSelect)(e=>{const o=e(H.store);return{templates:o.getEntityRecords("postType",ge,Ve),loadError:o.getResolutionError?.("getEntityRecords",["postType",ge,Ve])}},[]),{saveEntityRecord:L,deleteEntityRecord:z,invalidateResolution:R}=(0,l.useDispatch)(H.store),T=()=>R("getEntityRecords",["postType",ge,Ve]),{createSuccessNotice:A,createErrorNotice:D}=(0,l.useDispatch)(d.store);M&&(V.current=M);const P=M||V.current;(0,t.useEffect)(()=>{c()({path:"/noah-shop-builder/v1/template-types"}).then(o).catch(e=>i(e?.message||(0,a.__)("Template types could not be loaded.","noah-shop-builder-for-woocommerce")))},[]),(0,t.useEffect)(()=>{(0,r.getQueryArg)(window.location.href,"new")&&(m(!0),window.history.replaceState(window.history.state,"",(0,r.removeQueryArgs)(window.location.href,"new")))},[]);const O=(0,t.useMemo)(()=>Object.fromEntries((e||[]).map(e=>[e.slug,e.label])),[e]),Z=(0,t.useMemo)(()=>function(e){const o=new Map;for(const s of e){const e=be(s);if(!fe(s)||"none"===ye(e).kind)continue;const t=[xe(s),Number(s.meta?._noah_priority)||0,Se(e)].join("#");o.has(t)||o.set(t,[]),o.get(t).push(s.id)}const s=new Map;for(const e of o.values())if(!(e.length<2))for(const o of e)s.set(o,e.filter(e=>e!==o));return s}(P||[]),[P]),G=(0,t.useMemo)(()=>Object.fromEntries((P||[]).map(e=>[e.id,je(e)])),[P]),I=e=>A(e,{type:"snackbar"}),W=(e,o)=>D(e?.message||o,{type:"snackbar"}),q=!P||!e,U=P?function(e,{type:o,status:s,search:t}){const r=t.trim().toLowerCase();return e.filter(e=>("all"===o||xe(e)===o)&&("all"===s||fe(e)===("active"===s))&&(!r||je(e).toLowerCase().includes(r)))}(P,{type:u,status:g,search:w}):[],Q=B?.message||s;return(0,j.jsxs)("div",{className:"section noah-templates",children:[(0,j.jsxs)("div",{className:"noah-templates__header",children:[(0,j.jsxs)("div",{children:[(0,j.jsx)("h1",{children:(0,a.__)("Templates","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Design your product, shop, cart and checkout pages. Active templates replace the matching WooCommerce page.","noah-shop-builder-for-woocommerce")})]}),(0,j.jsxs)("div",{className:"noah-templates__header-actions",children:[P&&(0,N.applyFilters)("noahShopBuilder.templates.headerActions",[],{templates:P,refresh:T}),P&&P.length>0&&(0,j.jsx)(n.Button,{variant:"primary",icon:F,onClick:()=>m(!0),disabled:!e,__next40pxDefaultSize:!0,children:(0,a.__)("Add New Template","noah-shop-builder-for-woocommerce")})]})]}),Q&&(0,j.jsx)(n.Notice,{status:"error",isDismissible:!1,children:Q}),q&&!Q&&(0,j.jsxs)("div",{className:"noah-templates__loading",children:[(0,j.jsx)(n.Spinner,{}),(0,j.jsx)("p",{children:(0,a.__)("Loading templates…","noah-shop-builder-for-woocommerce")})]}),!q&&0===P.length&&(0,j.jsx)(Ae,{onCreate:()=>m(!0)}),!q&&P.length>0&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)("div",{className:"noah-templates__toolbar",children:[(0,j.jsx)(Re,{types:e,list:P,value:u,onChange:p}),(0,j.jsxs)("div",{className:"noah-templates__toolbar-end",children:[(0,j.jsx)("div",{className:"noah-segmented",role:"group","aria-label":(0,a.__)("Status","noah-shop-builder-for-woocommerce"),children:Object.entries(Me).map(([e,o])=>(0,j.jsx)("button",{type:"button","aria-pressed":g===e,className:g===e?"is-selected":"",onClick:()=>_(e),children:o},e))}),(0,j.jsx)(n.SearchControl,{__nextHasNoMarginBottom:!0,label:(0,a.__)("Search templates","noah-shop-builder-for-woocommerce"),placeholder:(0,a.__)("Search templates","noah-shop-builder-for-woocommerce"),value:w,onChange:v})]})]}),(0,j.jsxs)("div",{className:"noah-templates__table",role:"table",children:[(0,j.jsxs)("div",{className:"noah-templates__head",role:"row",children:[(0,j.jsx)("span",{role:"columnheader",children:(0,a.__)("Template","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("span",{role:"columnheader",children:(0,a.__)("Shows on","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("span",{role:"columnheader",children:(0,a.__)("Status","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("span",{role:"columnheader",className:"screen-reader-text",children:(0,a.__)("Actions","noah-shop-builder-for-woocommerce")})]}),U.map(e=>(0,j.jsx)(Te,{template:e,typeLabel:O[xe(e)]||xe(e),conflicts:(Z.get(e.id)||[]).map(e=>`“${G[e]}”`),active:x[e.id]??fe(e),isBusy:e.id in x,onToggle:o=>(async(e,o)=>{b(s=>({...s,[e.id]:o}));try{await L("postType",ge,{id:e.id,status:o?ve:"draft"},{throwOnError:!0}),I(o?(0,a.__)("Template activated.","noah-shop-builder-for-woocommerce"):(0,a.__)("Template deactivated.","noah-shop-builder-for-woocommerce"))}catch(e){W(e,(0,a.__)("The status could not be saved.","noah-shop-builder-for-woocommerce"))}finally{b(({[e.id]:o,...s})=>s)}})(e,o),onPreview:()=>k(e),onDuplicate:()=>(async e=>{b(o=>({...o,[e.id]:fe(e)}));try{await L("postType",ge,{title:(0,a.sprintf)(/* translators: %s: template name. */ /* translators: %s: template name. */ 13 (0,a.__)("%s (Copy)","noah-shop-builder-for-woocommerce"),je(e)),content:e.content?.raw??"",status:"draft",meta:e.meta},{throwOnError:!0}),I((0,a.__)("Template duplicated as inactive.","noah-shop-builder-for-woocommerce"))}catch(e){W(e,(0,a.__)("The template could not be duplicated.","noah-shop-builder-for-woocommerce"))}finally{b(({[e.id]:o,...s})=>s)}})(e),onDelete:()=>y(e),refresh:T},e.id)),0===U.length&&(0,j.jsxs)("div",{className:"noah-templates__no-results",children:[(0,j.jsx)("p",{children:(0,a.__)("No templates match these filters.","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"link",onClick:()=>{p("all"),_("all"),v("")},children:(0,a.__)("Clear filters","noah-shop-builder-for-woocommerce")})]})]})]}),S&&(0,j.jsx)(ie,{url:S.noah_preview_url,title:je(S)||(0,a.__)("(no title)","noah-shop-builder-for-woocommerce"),onClose:()=>k(null),action:(0,j.jsx)(n.Button,{variant:"primary",size:"compact",href:Be(S.id),children:(0,a.__)("Edit","noah-shop-builder-for-woocommerce")})}),h&&e&&(0,j.jsx)(Ee,{types:e,onClose:()=>m(!1)}),f&&(0,j.jsxs)(n.Modal,{title:(0,a.__)("Delete template?","noah-shop-builder-for-woocommerce"),onRequestClose:()=>!C&&y(null),size:"small",children:[(0,j.jsx)("p",{children:(0,a.sprintf)(/* translators: %s: template name. */ /* translators: %s: template name. */ 14 (0,a.__)("“%s” will be deleted permanently. Pages that use it go back to their default design.","noah-shop-builder-for-woocommerce"),je(f))}),(0,j.jsxs)("div",{className:"noah-templates-modal__footer",children:[(0,j.jsx)(n.Button,{variant:"tertiary",onClick:()=>y(null),disabled:C,children:(0,a.__)("Cancel","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"primary",isDestructive:!0,isBusy:C,disabled:C,onClick:async()=>{E(!0);try{await z("postType",ge,f.id,{force:!0},{throwOnError:!0}),I((0,a.__)("Template deleted.","noah-shop-builder-for-woocommerce")),y(null)}catch(e){W(e,(0,a.__)("The template could not be deleted.","noah-shop-builder-for-woocommerce"))}finally{E(!1)}},children:(0,a.__)("Delete","noah-shop-builder-for-woocommerce")})]})]})]})},settings:function(){const{settings:e,loadError:o,isLoaded:s}=(0,l.useSelect)(e=>{const o=e(f);return{settings:o.getSettings(),loadError:o.getSettingsLoadError(),isLoaded:o.hasFinishedResolution("getSettings")}},[]),{saveSetting:t}=(0,l.useDispatch)(f);return s?(0,j.jsxs)("div",{className:"section noah-shop-builder-settings",children:[o&&(0,j.jsx)(n.Notice,{status:"error",isDismissible:!1,children:o}),(0,j.jsx)("h1",{children:(0,a.__)("Settings","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Changes are saved automatically.","noah-shop-builder-for-woocommerce")}),(0,j.jsxs)("div",{className:"settings-group",children:[(0,j.jsx)("h2",{children:(0,a.__)("Data","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("div",{className:"settings-card",children:(0,j.jsx)(n.ToggleControl,{__nextHasNoMarginBottom:!0,label:(0,a.__)("Delete all data when the plugin is deleted","noah-shop-builder-for-woocommerce"),help:(0,a.__)("When you delete Noah Shop Builder on the Plugins screen, its templates, settings, swatch settings and saved wishlists are removed for good. Deactivating the plugin never removes data. Add-ons that use this setting remove their own data too.","noah-shop-builder-for-woocommerce"),checked:!!e.delete_data,disabled:!!o,onChange:e=>t("delete_data",e)})})]})]}):(0,j.jsx)("div",{className:"section",children:(0,j.jsxs)("div",{style:{textAlign:"center",padding:"50px"},children:[(0,j.jsx)(n.Spinner,{}),(0,j.jsx)("p",{children:(0,a.__)("Loading settings…","noah-shop-builder-for-woocommerce")})]})})}},Qe=function(){const e=()=>{const e=(0,r.getQueryArgs)(window.location.search).subpage||window.location.hash?.slice(1)||"welcome";return Ue[e]?e:"welcome"},[o,s]=(0,t.useState)(e()),a=(e,o={})=>{const t=(0,r.addQueryArgs)(window.location.pathname,{page:"noah-shop-builder",subpage:e,...o});window.history.pushState({},"",t),s(e),n(e)},n=e=>{const o=document.querySelectorAll("#toplevel_page_noah-shop-builder ul li");for(const s of o){const o=s.querySelector("a"),t=!!o&&(0,r.getQueryArg)(o.href,"subpage")===e;s.classList.toggle("current",t),o&&(o.classList.toggle("current",t),t?o.setAttribute("aria-current","page"):o.removeAttribute("aria-current"))}};(0,t.useEffect)(()=>{n(o);const t=()=>{const o=e();s(o),n(o)};window.addEventListener("popstate",t);const l=document.querySelectorAll("#toplevel_page_noah-shop-builder ul li a"),i=e=>{const o=e.currentTarget.href,s=(0,r.getQueryArg)(o,"subpage");"noah-shop-builder"===(0,r.getQueryArg)(o,"page")&&Ue[s]&&(e.preventDefault(),a(s))};for(const e of l)e.addEventListener("click",i);return()=>{window.removeEventListener("popstate",t);for(const e of l)e.removeEventListener("click",i)}},[o]);const l=Ue[o]||Ue.welcome;return(0,j.jsxs)(t.Fragment,{children:[(0,j.jsx)(We,{links:Ue,currentPage:o,setCurrentPage:a}),(0,j.jsx)("div",{className:"noah-shop-builder-wrapper",children:(0,j.jsx)(l,{onPageChange:a})}),(0,j.jsx)(qe,{})]})},$e=document.getElementById("noah-shop-builder-admin-dashboard");$e&&(0,t.createRoot)($e).render((0,j.jsx)(Qe,{}))}};const o={};function s(t){const r=o[t];if(void 0!==r)return r.exports;const a=o[t]={exports:{}};return e[t](a,a.exports,s),a.exports}s.m=e,(()=>{const e=[];s.O=(o,t,r)=>{if(!t){for(var a=0;a<e.length;a++){let[t,r]=e[a],l=!0;for(var n=0;n<t.length;n++)s.O.j(t[n])?t.splice(n--,1):l=!1;if(l){e.splice(a--,1);const s=r();void 0!==s&&(o=s)}}return o}e.push([t,r])}})(),s.n=e=>{const o=e&&e.__esModule?()=>e.default:()=>e;return s.d(o,{a:o}),o},s.d=(e,o)=>{for(var t in o)s.o(o,t)&&!s.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},s.o=(e,o)=>Object.hasOwn(e,o),(()=>{const e={7:0,868:0};s.O.j=o=>0===e[o];const o=(o,t)=>{let[r,a,n]=t;var l,i,c=0;if(r.some(o=>0!==e[o])){for(l in a)s.o(a,l)&&(s.m[l]=a[l]);if(n)var d=n(s)}for(o&&o(t);c<r.length;c++)i=r[c],s.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return s.O(d)},t=globalThis.webpackChunknoah_shop_builder_for_woocommerce||=[];t.forEach(o.bind(null,0)),t.push=o.bind(null,t.push.bind(t))})();let t=s.O(void 0,[868],()=>s(659));t=s.O(t)})(); 11 (0,a._n)("%1$s, %2$d exclusion","%1$s, %2$d exclusions",e.exclude,"noah-shop-builder-for-woocommerce"),o,e.exclude):o}function He(e){const o=new Date(e);return Number.isNaN(o.getTime())?"":o.toLocaleDateString(document.documentElement.lang||void 0,{dateStyle:"medium"})}function Oe({types:e,list:o,value:s,onChange:t}){const r=o.reduce((e,o)=>{const s=ke(o);return e[s]=(e[s]||0)+1,e},{}),n=[{slug:"all",label:(0,a.__)("All templates","noah-shop-builder-for-woocommerce"),count:o.length},...e.filter(e=>r[e.slug]).map(e=>({...e,count:r[e.slug]}))];return(0,j.jsx)("div",{className:"noah-type-filter",role:"tablist","aria-label":(0,a.__)("Template type","noah-shop-builder-for-woocommerce"),children:n.map(e=>(0,j.jsxs)("button",{type:"button",role:"tab","aria-selected":s===e.slug,className:s===e.slug?"is-selected":"",onClick:()=>t(e.slug),children:[e.label,(0,j.jsx)("span",{className:"noah-type-filter__count",children:e.count})]},e.slug))})}function Ze({template:e,typeLabel:o,conflicts:s,active:t,isBusy:r,onToggle:l,onPreview:i,onDuplicate:c,onDelete:d,refresh:h}){const u=(0,z.applyFilters)("noahShopBuilder.templates.rowActions",[],{template:e,refresh:h}),m=ke(e),p=Ve(Ne(e)),g=Ee(e)||(0,a.__)("(no title)","noah-shop-builder-for-woocommerce"),_=`noah-template-status-${e.id}`;return(0,j.jsxs)("div",{className:"noah-template-row "+(t?"":"is-inactive"),role:"row",children:[(0,j.jsxs)("div",{className:"noah-template-row__main",role:"cell",children:[(0,j.jsx)("span",{className:"noah-template-row__icon",children:(0,j.jsx)(n.Icon,{icon:ie(m).icon,size:22})}),(0,j.jsxs)("div",{children:[(0,j.jsx)("a",{className:"noah-template-row__title",href:De(e.id),children:g}),(0,j.jsxs)("div",{className:"noah-template-row__meta",children:[(0,j.jsx)("span",{className:"noah-pill",children:o}),(0,j.jsx)("span",{children:(0,a.sprintf)(/* translators: %s: date. */ /* translators: %s: date. */ 12 (0,a.__)("Edited %s","noah-shop-builder-for-woocommerce"),He(e.modified))})]})]})]}),(0,j.jsxs)("div",{className:"noah-template-row__display",role:"cell",children:[(0,j.jsx)("span",{className:`noah-display noah-display--${p.kind}`,children:Pe(p)}),t&&s.length>0&&(0,j.jsx)(n.Tooltip,{text:(0,a.sprintf)(/* translators: %s: comma-separated template names. */ /* translators: %s: comma-separated template names. */ 13 (0,a.__)("Same pages and priority as %s. Only the most recently edited one is used.","noah-shop-builder-for-woocommerce"),s.join(", ")),children:(0,j.jsxs)("span",{className:"noah-badge noah-badge--warning",tabIndex:0,children:[(0,j.jsx)(n.Icon,{icon:W,size:16}),(0,a.__)("Conflict","noah-shop-builder-for-woocommerce")]})})]}),(0,j.jsxs)("div",{className:"noah-template-row__status",role:"cell",children:[(0,j.jsx)(n.FormToggle,{id:_,checked:t,disabled:r,onChange:()=>l(!t)}),(0,j.jsx)("label",{htmlFor:_,children:t?(0,a.__)("Active","noah-shop-builder-for-woocommerce"):(0,a.__)("Inactive","noah-shop-builder-for-woocommerce")})]}),(0,j.jsxs)("div",{className:"noah-template-row__actions",role:"cell",children:[(0,j.jsx)(n.Button,{variant:"secondary",size:"compact",icon:U,href:De(e.id),children:(0,a.__)("Edit","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.DropdownMenu,{icon:q,label:(0,a.__)("More actions","noah-shop-builder-for-woocommerce"),toggleProps:{size:"compact",disabled:r},popoverProps:{placement:"bottom-end"},children:({onClose:o})=>(0,j.jsxs)(n.MenuGroup,{children:[e.noah_preview_url&&(0,j.jsx)(n.MenuItem,{icon:R,onClick:()=>{o(),i()},children:(0,a.__)("Preview","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.MenuItem,{icon:Q,onClick:()=>{o(),c()},children:(0,a.__)("Duplicate","noah-shop-builder-for-woocommerce")}),u.map(s=>(0,j.jsx)(n.MenuItem,{icon:s.icon,onClick:()=>{o(),s.onClick(e)},children:s.label},s.key)),(0,j.jsx)(n.MenuItem,{icon:$,isDestructive:!0,onClick:()=>{o(),d()},children:(0,a.__)("Delete","noah-shop-builder-for-woocommerce")})]})})]})]})}function Ge({onCreate:e}){const o=[{title:(0,a.__)("Pick a page","noah-shop-builder-for-woocommerce"),text:(0,a.__)("Product, shop, cart, checkout and more.","noah-shop-builder-for-woocommerce")},{title:(0,a.__)("Design it with blocks","noah-shop-builder-for-woocommerce"),text:(0,a.__)("Drag in Noah blocks in the editor you know.","noah-shop-builder-for-woocommerce")},{title:(0,a.__)("Turn it on","noah-shop-builder-for-woocommerce"),text:(0,a.__)("Active templates replace the WooCommerce page.","noah-shop-builder-for-woocommerce")}];return(0,j.jsxs)("div",{className:"noah-templates-empty",children:[(0,j.jsx)("h2",{children:(0,a.__)("Design your first store template","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Templates let you redesign WooCommerce pages without touching your theme.","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("ol",{className:"noah-templates-empty__steps",children:o.map((e,o)=>(0,j.jsxs)("li",{children:[(0,j.jsx)("span",{className:"noah-templates-empty__number",children:o+1}),(0,j.jsx)("strong",{children:e.title}),(0,j.jsx)("span",{children:e.text})]},e.title))}),(0,j.jsx)(n.Button,{variant:"primary",icon:K,onClick:e,__next40pxDefaultSize:!0,children:(0,a.__)("Create template","noah-shop-builder-for-woocommerce")})]})}const Ie=[{slug:"single_product",icon:J,title:(0,a.__)("Single Product","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Design product pages with title, gallery, price, add to cart, tabs, reviews, related products and more.","noah-shop-builder-for-woocommerce")},{slug:"archive",icon:Y,title:(0,a.__)("Shop & Archive","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Build the shop page, category and tag archives and search results with product grids, filters, sorting and pagination.","noah-shop-builder-for-woocommerce")},{slug:"cart",icon:ee,title:(0,a.__)("Cart & Empty Cart","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Lay out the cart page, and a separate page for when the cart is empty.","noah-shop-builder-for-woocommerce")},{slug:"checkout",icon:te,title:(0,a.__)("Checkout","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Arrange billing, shipping, order review and payment your way, while WooCommerce still runs the checkout.","noah-shop-builder-for-woocommerce")},{slug:"quick_view",icon:R,title:(0,a.__)("Quick View","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Design the popup that opens from the “Quick view” button on product cards.","noah-shop-builder-for-woocommerce")}],Fe=[{title:(0,a.__)("Create a template","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Pick a template type and start from a ready-made starter design or a blank page.","noah-shop-builder-for-woocommerce")},{title:(0,a.__)("Design it with blocks","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Arrange Noah blocks in the block editor and preview the result with a real product.","noah-shop-builder-for-woocommerce")},{title:(0,a.__)("Choose where it shows","noah-shop-builder-for-woocommerce"),description:(0,a.__)("Show the template on all pages of its type, or only on chosen products and categories, then publish.","noah-shop-builder-for-woocommerce")}],We=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z"})}),Ue=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{d:"m3 5c0-1.10457.89543-2 2-2h13.5c1.1046 0 2 .89543 2 2v13.5c0 1.1046-.8954 2-2 2h-13.5c-1.10457 0-2-.8954-2-2zm2-.5h6v6.5h-6.5v-6c0-.27614.22386-.5.5-.5zm-.5 8v6c0 .2761.22386.5.5.5h6v-6.5zm8 0v6.5h6c.2761 0 .5-.2239.5-.5v-6zm0-8v6.5h6.5v-6c0-.27614-.2239-.5-.5-.5z",fillRule:"evenodd",clipRule:"evenodd"})}),qe=(0,j.jsxs)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,j.jsx)(k.Path,{d:"M14.5 5.5h-7V7h7V5.5ZM7.5 9h7v1.5h-7V9Zm7 3.5h-7V14h7v-1.5Z"}),(0,j.jsx)(k.Path,{d:"M16 2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2ZM6 3.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V4a.5.5 0 0 1 .5-.5Z"}),(0,j.jsx)(k.Path,{d:"M20 8v11c0 .69-.31 1-.999 1H6v1.5h13.001c1.52 0 2.499-.982 2.499-2.5V8H20Z"})]}),Qe=(0,j.jsx)(k.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,j.jsx)(k.Path,{fillRule:"evenodd",d:"M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z",clipRule:"evenodd"})});function $e(e,o){const s=window.getComputedStyle(o);if("rtl"!==s.direction)return e.offsetLeft-o.offsetLeft;const t=o.offsetParent.clientWidth-parseFloat(s.right||0);return e.offsetLeft+e.offsetWidth-t}const Ke={welcome:{label:(0,a.__)("Welcome","noah-shop-builder-for-woocommerce"),icon:We},block:{label:(0,a.__)("Blocks","noah-shop-builder-for-woocommerce"),icon:Ue},module:{label:(0,a.__)("Modules","noah-shop-builder-for-woocommerce"),icon:ne},templates:{label:(0,a.__)("Templates","noah-shop-builder-for-woocommerce"),icon:qe},settings:{label:(0,a.__)("Settings","noah-shop-builder-for-woocommerce"),icon:Qe}},Xe=function({links:e,currentPage:o,setCurrentPage:s}){const[r,a]=(0,t.useState)({left:0,width:0}),l=(0,t.useRef)(null),i=(0,t.useRef)(null),c=(0,t.useRef)({}),d=Object.keys(e).map(e=>({page:e,label:Ke[e]?.label||e,icon:Ke[e]?.icon}));return(0,t.useEffect)(()=>{const e=l.current,s=()=>{const e=c.current[o],s=i.current;e&&s&&a({left:$e(e,s),width:e.offsetWidth})};if(s(),!e||void 0===window.ResizeObserver)return;const t=new window.ResizeObserver(s);t.observe(e);for(const e of Object.values(c.current))e&&t.observe(e);return()=>t.disconnect()},[o]),(0,j.jsx)("header",{className:"noah-shop-builder-dashboard-header",children:(0,j.jsx)("div",{className:"noah-shop-builder-header-container",children:(0,j.jsxs)("nav",{className:"noah-shop-builder-dashboard-nav",ref:l,children:[(0,j.jsx)("div",{className:"nav-indicator",ref:i,style:{transform:`translateX(${r.left}px)`,width:`${r.width}px`}}),d.map(e=>(0,j.jsxs)("button",{ref:o=>c.current[e.page]=o,className:"nav-button "+(o===e.page?"active":""),onClick:o=>{o.preventDefault(),s(e.page)},type:"button",children:[e.icon&&(0,j.jsx)(n.Icon,{icon:e.icon,size:20}),(0,j.jsx)("span",{children:e.label})]},e.page))]})})})},Je=function(){const e=(0,l.useSelect)(e=>e(d.store).getNotices(),[]),{removeNotice:o}=(0,l.useDispatch)(d.store);return(0,j.jsx)(n.SnackbarList,{className:"noah-shop-builder-snackbars",notices:e.filter(e=>"snackbar"===e.type),onRemove:o})},Ye={welcome:function({onPageChange:e}){return(0,j.jsxs)("div",{className:"noah-shop-builder-welcome",children:[(0,j.jsxs)("div",{className:"section welcome-hero",children:[(0,j.jsx)("h1",{children:(0,a.__)("Welcome to Noah Shop Builder","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Design your WooCommerce product pages, shop, archives, cart and checkout in the block editor. No coding needed, and your theme stays in charge of the rest of the site.","noah-shop-builder-for-woocommerce")}),(0,j.jsxs)("div",{className:"button-group",children:[(0,j.jsx)(n.Button,{variant:"primary",onClick:()=>e("templates",{new:1}),children:(0,a.__)("Create a template","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"secondary",onClick:()=>e("templates"),children:(0,a.__)("View templates","noah-shop-builder-for-woocommerce")})]})]}),(0,j.jsxs)("div",{className:"section",children:[(0,j.jsx)("h2",{children:(0,a.__)("Get started","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("ol",{className:"welcome-steps",children:Fe.map(e=>(0,j.jsxs)("li",{children:[(0,j.jsx)("h3",{children:e.title}),(0,j.jsx)("p",{children:e.description})]},e.title))})]}),(0,j.jsxs)("div",{className:"section",children:[(0,j.jsx)("h2",{children:(0,a.__)("What you can build","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("div",{className:"welcome-cards",children:Ie.map(e=>(0,j.jsxs)("div",{className:"welcome-card",children:[(0,j.jsx)("span",{className:"welcome-card-icon",children:(0,j.jsx)(n.Icon,{icon:e.icon,size:24})}),(0,j.jsx)("h3",{children:e.title}),(0,j.jsx)("p",{children:e.description})]},e.slug))})]}),(0,j.jsxs)("div",{className:"welcome-columns",children:[(0,j.jsxs)("div",{className:"section",children:[(0,j.jsx)("h2",{children:(0,a.__)("Blocks","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Turn off the blocks you don’t use to keep the inserter tidy. Turned-off blocks load nothing on your store.","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"secondary",onClick:()=>e("block"),children:(0,a.__)("Manage blocks","noah-shop-builder-for-woocommerce")})]}),(0,j.jsxs)("div",{className:"section",children:[(0,j.jsx)("h2",{children:(0,a.__)("Modules","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Add Quick View, a wishlist and variation swatches to your store. Each module stays off until you turn it on, and has its own settings.","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"secondary",onClick:()=>e("module"),children:(0,a.__)("Manage modules","noah-shop-builder-for-woocommerce")})]}),(0,j.jsxs)("div",{className:"section",children:[(0,j.jsx)("h2",{children:(0,a.__)("Coming next","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Templates for the My Account and order received pages.","noah-shop-builder-for-woocommerce")})]})]})]})},block:function(){const{blocks:e,loadError:o,isLoaded:s}=(0,l.useSelect)(e=>{const o=e(f);return{blocks:o.getBlocks(),loadError:o.getLoadError(),isLoaded:o.hasFinishedResolution("getBlocks")}},[]),{toggleBlock:r,setAllBlocks:i}=(0,l.useDispatch)(f);if(!s)return(0,j.jsx)("div",{className:"section",children:(0,j.jsxs)("div",{style:{textAlign:"center",padding:"50px"},children:[(0,j.jsx)(n.Spinner,{}),(0,j.jsx)("p",{children:(0,a.__)("Loading blocks…","noah-shop-builder-for-woocommerce")})]})});const c=Object.values(e).filter(e=>!e.required),d=c.length>0&&c.every(e=>"active"===e.status),h=Object.values(e).reduce((e,o)=>{const s=o.category?.[0]||"other";return e[s]||(e[s]=[]),e[s].push(o),e},{}),u=E();for(const o of u.blocks){if(e[o.slug])continue;const s=o.category||"other";h[s]||(h[s]=[]),h[s].push({...o,locked:!0})}return(0,j.jsx)(t.Fragment,{children:(0,j.jsxs)("div",{className:"section noah-shop-builder-blocks",children:[o&&(0,j.jsx)(n.Notice,{status:"error",isDismissible:!1,children:o}),(0,j.jsxs)("div",{className:"blocks-header",children:[(0,j.jsxs)("div",{children:[(0,j.jsx)("h1",{children:(0,a.__)("Disable/Enable Blocks","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Turn blocks on or off. Changes are saved automatically.","noah-shop-builder-for-woocommerce")})]}),(0,j.jsx)("div",{className:"header-actions",children:(0,j.jsx)("div",{className:"bulk-toggle",children:(0,j.jsx)(n.ToggleControl,{__nextHasNoMarginBottom:!0,label:(0,a.__)("Enable all","noah-shop-builder-for-woocommerce"),checked:d,disabled:0===c.length,onChange:i})})})]}),Object.keys(h).map(e=>(0,j.jsxs)("div",{className:"blocks-category",children:[(0,j.jsx)("h2",{children:B[e]||e}),(0,j.jsx)("div",{className:"blocks-grid",children:h[e].map(e=>(0,j.jsxs)("div",{className:"block-card"+(e.locked?" is-locked":""),children:[(0,j.jsxs)("div",{className:"block-info",children:[(0,j.jsx)("h3",{children:e.title}),e.locked?(0,j.jsx)(V,{}):(0,j.jsx)(y,{badges:e.badge}),e.doc&&(0,j.jsxs)("a",{className:"block-doc-link",href:e.doc,target:"_blank",rel:"noopener noreferrer",children:[(0,a.__)("Documentation","noah-shop-builder-for-woocommerce"),(0,j.jsx)("span",{className:"screen-reader-text",children:(0,a.sprintf)(/* translators: %s: block title. */ /* translators: %s: block title. */ 14 (0,a.__)("for %s (opens in a new tab)","noah-shop-builder-for-woocommerce"),e.title)})]})]}),e.locked?(0,j.jsx)(M,{url:u.url,title:e.title}):(0,j.jsx)(n.ToggleControl,{__nextHasNoMarginBottom:!0,label:(0,j.jsx)("span",{className:"screen-reader-text",children:e.title}),help:e.required?(0,a.__)("Required","noah-shop-builder-for-woocommerce"):void 0,checked:"active"===e.status,disabled:e.required,onChange:o=>r(e.slug,o)})]},e.slug))})]},e))]})})},module:function({onPageChange:e}){const[o,s]=(0,t.useState)(null),{modules:r,loadError:i,isLoaded:c}=(0,l.useSelect)(e=>{const o=e(f);return{modules:o.getModules(),loadError:o.getModulesLoadError(),isLoaded:o.hasFinishedResolution("getModules")}},[]),{toggleModule:d}=(0,l.useDispatch)(f),h=(0,z.applyFilters)("noahShopBuilder.modules",O),u=Array.isArray(h)?h:O,m=Object.values(r),p=E(),g=p.modules.filter(e=>!r[e.slug]),_=u.filter(e=>!r[e.slug]&&!g.some(o=>o.slug===e.slug)),w=e=>(p.features[e.slug]||[]).filter(o=>!e.fields.some(e=>e.key===o.key)),x=e=>u.find(o=>o.slug===e.slug)?.icon||H[e.icon]||P,v=o?r[o]:null;return c?(0,j.jsxs)("div",{className:"section noah-shop-builder-modules",children:[(0,j.jsx)("h1",{children:(0,a.__)("Modules","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Modules add shopping features across your store. Turn each one on or off here; a module that is off loads no code at all.","noah-shop-builder-for-woocommerce")}),i&&(0,j.jsx)(n.Notice,{status:"error",isDismissible:!1,children:i}),(m.length>0||g.length>0)&&(0,j.jsxs)("div",{className:"modules-grid",children:[m.map(e=>{const o="active"===e.status;return(0,j.jsxs)("div",{className:"module-card"+(o?" is-active":""),children:[(0,j.jsxs)("div",{className:"module-card-header",children:[(0,j.jsx)("span",{className:"module-icon",children:(0,j.jsx)(n.Icon,{icon:x(e),size:24})}),(0,j.jsx)(n.ToggleControl,{__nextHasNoMarginBottom:!0,label:(0,j.jsx)("span",{className:"screen-reader-text",children:e.title}),checked:o,onChange:o=>d(e.slug,o)})]}),(0,j.jsxs)("h3",{children:[e.title," ",(0,j.jsx)(y,{badges:e.badge})]}),(0,j.jsx)("p",{children:e.description}),o&&e.fields.length>0&&(0,j.jsx)(n.Button,{variant:"secondary",size:"compact",className:"module-card-settings",onClick:()=>s(e.slug),children:(0,a.__)("Settings","noah-shop-builder-for-woocommerce")}),w(e).length>0&&(0,j.jsxs)("div",{className:"module-card-locked",children:[(0,j.jsx)("ul",{children:w(e).map(e=>(0,j.jsxs)("li",{children:[(0,j.jsx)(n.Icon,{icon:N,size:14}),e.label]},e.key))}),(0,j.jsx)(M,{url:p.url,title:w(e).map(e=>e.label).join(", "),label:(0,a.__)("Unlock with Pro","noah-shop-builder-for-woocommerce"),variant:"text"})]})]},e.slug)}),g.map(e=>(0,j.jsxs)("div",{className:"module-card is-locked",children:[(0,j.jsxs)("div",{className:"module-card-header",children:[(0,j.jsx)("span",{className:"module-icon",children:(0,j.jsx)(n.Icon,{icon:H[e.icon]||P,size:24})}),(0,j.jsx)(M,{url:p.url,title:e.title})]}),(0,j.jsxs)("h3",{children:[e.title," ",(0,j.jsx)(V,{})]}),(0,j.jsx)("p",{children:e.description})]},e.slug))]}),_.length>0&&(0,j.jsxs)(j.Fragment,{children:[m.length>0&&(0,j.jsx)("h2",{children:(0,a.__)("Coming soon","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("div",{className:"modules-grid",children:_.map(e=>(0,j.jsxs)("div",{className:"module-card",children:[(0,j.jsxs)("div",{className:"module-card-header",children:[(0,j.jsx)("span",{className:"module-icon",children:(0,j.jsx)(n.Icon,{icon:e.icon,size:24})}),(0,j.jsx)("span",{className:"badge badge-upcoming",children:(0,a.__)("Upcoming","noah-shop-builder-for-woocommerce")})]}),(0,j.jsxs)("h3",{children:[e.title," ",(0,j.jsx)(y,{badges:e.badge})]}),(0,j.jsx)("p",{children:e.description})]},e.slug))})]}),0===m.length&&(0,j.jsxs)("div",{className:"modules-note",children:[(0,j.jsx)("p",{children:(0,a.__)("These modules are in development and will arrive in a future update. Until then, build your store pages with templates and blocks.","noah-shop-builder-for-woocommerce")}),(0,j.jsxs)("div",{className:"button-group",children:[(0,j.jsx)(n.Button,{variant:"primary",onClick:()=>e("templates"),children:(0,a.__)("Go to Templates","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"secondary",onClick:()=>e("block"),children:(0,a.__)("Go to Blocks","noah-shop-builder-for-woocommerce")})]})]}),v&&(0,j.jsx)(I,{module:v,onClose:()=>s(null)})]}):(0,j.jsx)("div",{className:"section",children:(0,j.jsxs)("div",{style:{textAlign:"center",padding:"50px"},children:[(0,j.jsx)(n.Spinner,{}),(0,j.jsx)("p",{children:(0,a.__)("Loading modules…","noah-shop-builder-for-woocommerce")})]})})},templates:function(){const[e,o]=(0,t.useState)(null),[s,i]=(0,t.useState)(null),[h,u]=(0,t.useState)(!1),[m,p]=(0,t.useState)("all"),[g,_]=(0,t.useState)("all"),[w,x]=(0,t.useState)(""),[v,b]=(0,t.useState)({}),[f,y]=(0,t.useState)(null),[S,k]=(0,t.useState)(null),[N,C]=(0,t.useState)(!1),E=(0,t.useRef)(null),{templates:V,loadError:M}=(0,l.useSelect)(e=>{const o=e(F.store);return{templates:o.getEntityRecords("postType",fe,Te),loadError:o.getResolutionError?.("getEntityRecords",["postType",fe,Te])}},[]),{saveEntityRecord:B,deleteEntityRecord:L,invalidateResolution:R}=(0,l.useDispatch)(F.store),T=()=>R("getEntityRecords",["postType",fe,Te]),{createSuccessNotice:A,createErrorNotice:D}=(0,l.useDispatch)(d.store);V&&(E.current=V);const P=V||E.current;(0,t.useEffect)(()=>{c()({path:"/noah-shop-builder/v1/template-types"}).then(o).catch(e=>i(e?.message||(0,a.__)("Template types could not be loaded.","noah-shop-builder-for-woocommerce")))},[]),(0,t.useEffect)(()=>{(0,r.getQueryArg)(window.location.href,"new")&&(u(!0),window.history.replaceState(window.history.state,"",(0,r.removeQueryArgs)(window.location.href,"new")))},[]);const H=(0,t.useMemo)(()=>Object.fromEntries((e||[]).map(e=>[e.slug,e.label])),[e]),O=(0,t.useMemo)(()=>function(e){const o=new Map;for(const s of e){const e=Ne(s);if(!Ce(s)||"none"===Ve(e).kind)continue;const t=[ke(s),Number(s.meta?._noah_priority)||0,Me(e)].join("#");o.has(t)||o.set(t,[]),o.get(t).push(s.id)}const s=new Map;for(const e of o.values())if(!(e.length<2))for(const o of e)s.set(o,e.filter(e=>e!==o));return s}(P||[]),[P]),Z=(0,t.useMemo)(()=>Object.fromEntries((P||[]).map(e=>[e.id,Ee(e)])),[P]),G=e=>A(e,{type:"snackbar"}),I=(e,o)=>D(e?.message||o,{type:"snackbar"}),W=!P||!e,U=P?function(e,{type:o,status:s,search:t}){const r=t.trim().toLowerCase();return e.filter(e=>("all"===o||ke(e)===o)&&("all"===s||Ce(e)===("active"===s))&&(!r||Ee(e).toLowerCase().includes(r)))}(P,{type:m,status:g,search:w}):[],q=M?.message||s;return(0,j.jsxs)("div",{className:"section noah-templates",children:[(0,j.jsxs)("div",{className:"noah-templates__header",children:[(0,j.jsxs)("div",{children:[(0,j.jsx)("h1",{children:(0,a.__)("Templates","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Design your product, shop, cart and checkout pages. Active templates replace the matching WooCommerce page.","noah-shop-builder-for-woocommerce")})]}),(0,j.jsxs)("div",{className:"noah-templates__header-actions",children:[P&&(0,z.applyFilters)("noahShopBuilder.templates.headerActions",[],{templates:P,refresh:T}),P&&P.length>0&&(0,j.jsx)(n.Button,{variant:"primary",icon:K,onClick:()=>u(!0),disabled:!e,__next40pxDefaultSize:!0,children:(0,a.__)("Add New Template","noah-shop-builder-for-woocommerce")})]})]}),q&&(0,j.jsx)(n.Notice,{status:"error",isDismissible:!1,children:q}),W&&!q&&(0,j.jsxs)("div",{className:"noah-templates__loading",children:[(0,j.jsx)(n.Spinner,{}),(0,j.jsx)("p",{children:(0,a.__)("Loading templates…","noah-shop-builder-for-woocommerce")})]}),!W&&0===P.length&&(0,j.jsx)(Ge,{onCreate:()=>u(!0)}),!W&&P.length>0&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)("div",{className:"noah-templates__toolbar",children:[(0,j.jsx)(Oe,{types:e,list:P,value:m,onChange:p}),(0,j.jsxs)("div",{className:"noah-templates__toolbar-end",children:[(0,j.jsx)("div",{className:"noah-segmented",role:"group","aria-label":(0,a.__)("Status","noah-shop-builder-for-woocommerce"),children:Object.entries(Ae).map(([e,o])=>(0,j.jsx)("button",{type:"button","aria-pressed":g===e,className:g===e?"is-selected":"",onClick:()=>_(e),children:o},e))}),(0,j.jsx)(n.SearchControl,{__nextHasNoMarginBottom:!0,label:(0,a.__)("Search templates","noah-shop-builder-for-woocommerce"),placeholder:(0,a.__)("Search templates","noah-shop-builder-for-woocommerce"),value:w,onChange:x})]})]}),(0,j.jsxs)("div",{className:"noah-templates__table",role:"table",children:[(0,j.jsxs)("div",{className:"noah-templates__head",role:"row",children:[(0,j.jsx)("span",{role:"columnheader",children:(0,a.__)("Template","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("span",{role:"columnheader",children:(0,a.__)("Shows on","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("span",{role:"columnheader",children:(0,a.__)("Status","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("span",{role:"columnheader",className:"screen-reader-text",children:(0,a.__)("Actions","noah-shop-builder-for-woocommerce")})]}),U.map(e=>(0,j.jsx)(Ze,{template:e,typeLabel:H[ke(e)]||ke(e),conflicts:(O.get(e.id)||[]).map(e=>`“${Z[e]}”`),active:v[e.id]??Ce(e),isBusy:e.id in v,onToggle:o=>(async(e,o)=>{b(s=>({...s,[e.id]:o}));try{await B("postType",fe,{id:e.id,status:o?Se:"draft"},{throwOnError:!0}),G(o?(0,a.__)("Template activated.","noah-shop-builder-for-woocommerce"):(0,a.__)("Template deactivated.","noah-shop-builder-for-woocommerce"))}catch(e){I(e,(0,a.__)("The status could not be saved.","noah-shop-builder-for-woocommerce"))}finally{b(({[e.id]:o,...s})=>s)}})(e,o),onPreview:()=>k(e),onDuplicate:()=>(async e=>{b(o=>({...o,[e.id]:Ce(e)}));try{await B("postType",fe,{title:(0,a.sprintf)(/* translators: %s: template name. */ /* translators: %s: template name. */ 15 (0,a.__)("%s (Copy)","noah-shop-builder-for-woocommerce"),Ee(e)),content:e.content?.raw??"",status:"draft",meta:e.meta},{throwOnError:!0}),G((0,a.__)("Template duplicated as inactive.","noah-shop-builder-for-woocommerce"))}catch(e){I(e,(0,a.__)("The template could not be duplicated.","noah-shop-builder-for-woocommerce"))}finally{b(({[e.id]:o,...s})=>s)}})(e),onDelete:()=>y(e),refresh:T},e.id)),0===U.length&&(0,j.jsxs)("div",{className:"noah-templates__no-results",children:[(0,j.jsx)("p",{children:(0,a.__)("No templates match these filters.","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"link",onClick:()=>{p("all"),_("all"),x("")},children:(0,a.__)("Clear filters","noah-shop-builder-for-woocommerce")})]})]})]}),S&&(0,j.jsx)(pe,{url:S.noah_preview_url,title:Ee(S)||(0,a.__)("(no title)","noah-shop-builder-for-woocommerce"),onClose:()=>k(null),action:(0,j.jsx)(n.Button,{variant:"primary",size:"compact",href:De(S.id),children:(0,a.__)("Edit","noah-shop-builder-for-woocommerce")})}),h&&e&&(0,j.jsx)(Re,{types:e,onClose:()=>u(!1)}),f&&(0,j.jsxs)(n.Modal,{title:(0,a.__)("Delete template?","noah-shop-builder-for-woocommerce"),onRequestClose:()=>!N&&y(null),size:"small",children:[(0,j.jsx)("p",{children:(0,a.sprintf)(/* translators: %s: template name. */ /* translators: %s: template name. */ 16 (0,a.__)("“%s” will be deleted permanently. Pages that use it go back to their default design.","noah-shop-builder-for-woocommerce"),Ee(f))}),(0,j.jsxs)("div",{className:"noah-templates-modal__footer",children:[(0,j.jsx)(n.Button,{variant:"tertiary",onClick:()=>y(null),disabled:N,children:(0,a.__)("Cancel","noah-shop-builder-for-woocommerce")}),(0,j.jsx)(n.Button,{variant:"primary",isDestructive:!0,isBusy:N,disabled:N,onClick:async()=>{C(!0);try{await L("postType",fe,f.id,{force:!0},{throwOnError:!0}),G((0,a.__)("Template deleted.","noah-shop-builder-for-woocommerce")),y(null)}catch(e){I(e,(0,a.__)("The template could not be deleted.","noah-shop-builder-for-woocommerce"))}finally{C(!1)}},children:(0,a.__)("Delete","noah-shop-builder-for-woocommerce")})]})]})]})},settings:function(){const{settings:e,loadError:o,isLoaded:s}=(0,l.useSelect)(e=>{const o=e(f);return{settings:o.getSettings(),loadError:o.getSettingsLoadError(),isLoaded:o.hasFinishedResolution("getSettings")}},[]),{saveSetting:t}=(0,l.useDispatch)(f);return s?(0,j.jsxs)("div",{className:"section noah-shop-builder-settings",children:[o&&(0,j.jsx)(n.Notice,{status:"error",isDismissible:!1,children:o}),(0,j.jsx)("h1",{children:(0,a.__)("Settings","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("p",{children:(0,a.__)("Changes are saved automatically.","noah-shop-builder-for-woocommerce")}),(0,j.jsxs)("div",{className:"settings-group",children:[(0,j.jsx)("h2",{children:(0,a.__)("Data","noah-shop-builder-for-woocommerce")}),(0,j.jsx)("div",{className:"settings-card",children:(0,j.jsx)(n.ToggleControl,{__nextHasNoMarginBottom:!0,label:(0,a.__)("Delete all data when the plugin is deleted","noah-shop-builder-for-woocommerce"),help:(0,a.__)("When you delete Noah Shop Builder on the Plugins screen, its templates, settings, swatch settings and saved wishlists are removed for good. Deactivating the plugin never removes data. Add-ons that use this setting remove their own data too.","noah-shop-builder-for-woocommerce"),checked:!!e.delete_data,disabled:!!o,onChange:e=>t("delete_data",e)})})]})]}):(0,j.jsx)("div",{className:"section",children:(0,j.jsxs)("div",{style:{textAlign:"center",padding:"50px"},children:[(0,j.jsx)(n.Spinner,{}),(0,j.jsx)("p",{children:(0,a.__)("Loading settings…","noah-shop-builder-for-woocommerce")})]})})}},eo=function(){const e=()=>{const e=(0,r.getQueryArgs)(window.location.search).subpage||window.location.hash?.slice(1)||"welcome";return Ye[e]?e:"welcome"},[o,s]=(0,t.useState)(e()),a=(e,o={})=>{const t=(0,r.addQueryArgs)(window.location.pathname,{page:"noah-shop-builder",subpage:e,...o});window.history.pushState({},"",t),s(e),n(e)},n=e=>{const o=document.querySelectorAll("#toplevel_page_noah-shop-builder ul li");for(const s of o){const o=s.querySelector("a"),t=!!o&&(0,r.getQueryArg)(o.href,"subpage")===e;s.classList.toggle("current",t),o&&(o.classList.toggle("current",t),t?o.setAttribute("aria-current","page"):o.removeAttribute("aria-current"))}};(0,t.useEffect)(()=>{n(o);const t=()=>{const o=e();s(o),n(o)};window.addEventListener("popstate",t);const l=document.querySelectorAll("#toplevel_page_noah-shop-builder ul li a"),i=e=>{const o=e.currentTarget.href,s=(0,r.getQueryArg)(o,"subpage");"noah-shop-builder"===(0,r.getQueryArg)(o,"page")&&Ye[s]&&(e.preventDefault(),a(s))};for(const e of l)e.addEventListener("click",i);return()=>{window.removeEventListener("popstate",t);for(const e of l)e.removeEventListener("click",i)}},[o]);const l=Ye[o]||Ye.welcome;return(0,j.jsxs)(t.Fragment,{children:[(0,j.jsx)(Xe,{links:Ye,currentPage:o,setCurrentPage:a}),(0,j.jsx)("div",{className:"noah-shop-builder-wrapper",children:(0,j.jsx)(l,{onPageChange:a})}),(0,j.jsx)(Je,{})]})},oo=document.getElementById("noah-shop-builder-admin-dashboard");oo&&(0,t.createRoot)(oo).render((0,j.jsx)(eo,{}))}};const o={};function s(t){const r=o[t];if(void 0!==r)return r.exports;const a=o[t]={exports:{}};return e[t](a,a.exports,s),a.exports}s.m=e,(()=>{const e=[];s.O=(o,t,r)=>{if(!t){for(var a=0;a<e.length;a++){let[t,r]=e[a],l=!0;for(var n=0;n<t.length;n++)s.O.j(t[n])?t.splice(n--,1):l=!1;if(l){e.splice(a--,1);const s=r();void 0!==s&&(o=s)}}return o}e.push([t,r])}})(),s.n=e=>{const o=e&&e.__esModule?()=>e.default:()=>e;return s.d(o,{a:o}),o},s.d=(e,o)=>{for(var t in o)s.o(o,t)&&!s.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},s.o=(e,o)=>Object.hasOwn(e,o),(()=>{const e={7:0,868:0};s.O.j=o=>0===e[o];const o=(o,t)=>{let[r,a,n]=t;var l,i,c=0;if(r.some(o=>0!==e[o])){for(l in a)s.o(a,l)&&(s.m[l]=a[l]);if(n)var d=n(s)}for(o&&o(t);c<r.length;c++)i=r[c],s.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return s.O(d)},t=globalThis.webpackChunknoah_shop_builder_for_woocommerce||=[];t.forEach(o.bind(null,0)),t.push=o.bind(null,t.push.bind(t))})();let t=s.O(void 0,[868],()=>s(232));t=s.O(t)})(); -
noah-shop-builder-for-woocommerce/trunk/build/style-admin-dashboard-rtl.css
r3800774 r3801491 1 1 .noah-templates__header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:24px}.noah-templates__header h1{margin:0 0 6px}.noah-templates__header p{margin:0;max-width:640px}.noah-templates__header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.noah-templates__header-actions:empty{display:none}.noah-templates__loading{padding:50px;text-align:center}.noah-templates__toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:16px}.noah-templates__toolbar-end{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.noah-templates__toolbar-end .components-search-control{min-width:220px}.noah-templates__table{border:1px solid #e2e4e7;border-radius:12px;overflow:hidden}.noah-templates .noah-template-row,.noah-templates__head{align-items:center;display:grid;gap:16px;grid-template-columns:minmax(240px,2.2fr) minmax(160px,1.4fr) 130px 150px;padding:14px 20px}.noah-templates__head{background:#f9fafb;border-bottom:1px solid #e2e4e7;color:#6b7280;font-size:12px;font-weight:600;letter-spacing:.04em;padding-block:10px;text-transform:uppercase}.noah-templates__no-results{padding:40px 20px;text-align:center}.noah-templates__no-results p{margin:0 0 8px}.noah-template-row{border-bottom:1px solid #e2e4e7;transition:background .15s ease}.noah-template-row:last-child{border-bottom:0}.noah-template-row:hover{background:#fafaff}.noah-template-row__main{align-items:center;display:flex;gap:14px;min-width:0}.noah-template-row__main>div{min-width:0}.noah-template-row__icon{align-items:center;background:#eef2ff;border-radius:10px;color:#4f46e5;display:inline-flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.noah-template-row__icon svg{fill:currentcolor}.noah-template-row__title{color:#1d2327;display:block;font-size:14px;font-weight:600;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.noah-template-row__title:focus,.noah-template-row__title:hover{color:#4f46e5}.noah-template-row__meta{align-items:center;color:#6b7280;display:flex;font-size:12px;gap:8px;margin-top:4px}.noah-template-row__display{flex-wrap:wrap}.noah-template-row__display,.noah-template-row__status{align-items:center;display:flex;gap:8px}.noah-template-row__status label{color:#1d2327;cursor:pointer;font-size:13px}.noah-template-row__actions{align-items:center;display:flex;gap:4px;justify-content:flex-end}.noah-template-row.is-inactive .noah-template-row__icon{background:#f3f4f6;color:#6b7280}.noah-template-row.is-inactive .noah-template-row__status label{color:#6b7280}.noah-pill{background:#f3f4f6;border-radius:999px;color:#374151;display:inline-block;font-weight:500;padding:2px 8px}.noah-display{color:#1d2327;font-size:13px}.noah-display:before{background:#10b981;border-radius:50%;content:"";display:inline-block;height:8px;margin-inline-end:8px;width:8px}.noah-display--custom:before{background:#4f46e5}.noah-display--none{color:#6b7280}.noah-display--none:before{background:#d1d5db}.noah-badge{align-items:center;border-radius:999px;cursor:help;display:inline-flex;font-size:12px;font-weight:500;gap:4px;padding:2px 4px 2px 8px}.noah-badge svg{fill:currentcolor}.noah-badge--warning{background:#fef3c7;color:#92400e}.noah-type-filter{display:flex;flex-wrap:wrap;gap:6px}.noah-type-filter button{align-items:center;background:#fff;border:1px solid #e2e4e7;border-radius:999px;color:#374151;cursor:pointer;display:inline-flex;font-size:13px;gap:6px;padding:6px 12px;transition:all .15s ease}.noah-type-filter button:hover{border-color:#4f46e5;color:#4f46e5}.noah-type-filter button:focus-visible{outline:2px solid #4f46e5;outline-offset:1px}.noah-type-filter button.is-selected{background:#4f46e5;border-color:#4f46e5;color:#fff}.noah-type-filter button.is-selected .noah-type-filter__count{background:hsla(0,0%,100%,.2);color:#fff}.noah-type-filter__count{background:#f3f4f6;border-radius:999px;color:#6b7280;font-size:11px;line-height:18px;min-width:18px;padding:0 6px;text-align:center}.noah-segmented{background:#f3f4f6;border-radius:8px;display:inline-flex;padding:3px}.noah-segmented button{background:transparent;border:0;border-radius:6px;color:#6b7280;cursor:pointer;font-size:13px;padding:6px 12px}.noah-segmented button:focus-visible{outline:2px solid #4f46e5}.noah-segmented button.is-selected{background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08);color:#1d2327}.noah-templates-empty{padding:40px 20px 20px;text-align:center}.noah-templates-empty h2{color:#1d2327;font-size:20px;margin:0 0 8px}.noah-templates-empty__steps{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));list-style:none;margin:24px auto 28px;max-width:760px;padding:0}.noah-templates-empty__steps li{align-items:center;border:1px dashed #e2e4e7;border-radius:12px;color:#6b7280;display:flex;flex-direction:column;font-size:13px;gap:6px;margin:0;padding:20px 16px}.noah-templates-empty__steps li strong{color:#1d2327;font-size:14px}.noah-templates-empty__number{align-items:center;background:linear-gradient(-135deg,#667eea,#764ba2);border-radius:50%;color:#fff;display:inline-flex;font-weight:600;height:28px;justify-content:center;width:28px}.noah-templates-modal__steps{display:flex;gap:6px;margin:-8px 0 16px}.noah-templates-modal__steps span{background:#e5e7eb;border-radius:2px;flex:1;height:4px;transition:background .2s ease}.noah-templates-modal__steps span.is-active{background:#4f46e5}.noah-templates-modal__intro{color:#6b7280;margin:0 0 16px}.noah-templates-modal__form{display:flex;flex-direction:column;gap:20px;max-width:640px}.noah-templates-modal__field{border:0;margin:0;padding:0}.noah-templates-modal__field legend{color:#1d2327;font-size:11px;font-weight:500;margin-bottom:8px;padding:0;text-transform:uppercase}.noah-templates-modal__footer{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.noah-type-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.noah-type-card{align-items:flex-start;background:#fff;border:1px solid #e2e4e7;border-radius:12px;cursor:pointer;display:flex;flex-direction:column;gap:6px;padding:18px;text-align:start;transition:all .15s ease}.noah-type-card strong{color:#1d2327;font-size:14px;margin-top:6px}.noah-type-card__description{color:#6b7280;font-size:12px;line-height:1.5}.noah-type-card__starters{background:#eef2ff;border-radius:999px;color:#4f46e5;font-size:11px;font-weight:600;margin-top:auto;padding:2px 8px}.noah-type-card:focus-visible,.noah-type-card:hover{border-color:#4f46e5;box-shadow:0 4px 14px rgba(79,70,229,.12);outline:none;transform:translateY(-1px)}.noah-type-card__icon{align-items:center;background:#eef2ff;border-radius:10px;color:#4f46e5;display:inline-flex;height:44px;justify-content:center;width:44px}.noah-type-card__icon svg{fill:currentcolor}.noah-templates-modal__subheader{align-items:center;display:flex;gap:12px;margin-bottom:16px}.noah-templates-modal__subheader .noah-templates-modal__intro{margin:0}.noah-templates-modal__subheader .components-button{flex-shrink:0}.noah-templates-modal__footer.has-back{justify-content:space-between}.noah-templates-modal__footer-end{display:flex;gap:8px}.noah-design-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.noah-design-card{background:#fff;border:1px solid #e2e4e7;border-radius:12px;overflow:hidden;position:relative;transition:all .15s ease}.noah-design-card__select{background:transparent;border:0;cursor:pointer;display:flex;flex-direction:column;height:100%;padding:0;text-align:start;width:100%}.noah-design-card__select:focus-visible{outline:2px solid #4f46e5;outline-offset:-2px}.noah-design-card__preview-button.components-button{background:#fff;inset-inline-end:10px;opacity:0;position:absolute;top:10px;transition:opacity .15s ease}.noah-design-card:focus-within .noah-design-card__preview-button,.noah-design-card:hover .noah-design-card__preview-button{opacity:1}@media(hover:none){.noah-design-card__preview-button.components-button{opacity:1}}.noah-design-card__blocks{align-self:flex-start;border-radius:999px;font-size:11px;font-weight:600;margin-top:4px;padding:1px 8px}.noah-design-card__blocks.is-noah{background:#eef2ff;color:#4f46e5}.noah-design-card__blocks.is-woocommerce{background:#f3e8ff;color:#7e22ce}.noah-design-card__preview{background:#f8f9fc;border-bottom:1px solid #e2e4e7;display:block;padding:14px}.noah-design-card__body{color:#6b7280;display:flex;flex-direction:column;font-size:12px;gap:4px;line-height:1.5;padding:14px 16px 16px}.noah-design-card__body strong{color:#1d2327;font-size:14px}.noah-design-card:focus-within,.noah-design-card:hover{border-color:#4f46e5;box-shadow:0 6px 18px rgba(79,70,229,.14);transform:translateY(-2px)}.noah-preview-modal .components-modal__content{background:#f0f0f1;display:flex;flex-direction:column;padding:0}.noah-preview-modal__actions{align-items:center;display:flex;gap:8px;margin-inline-end:8px}.noah-preview-modal__actions .noah-segmented .components-button{color:#6b7280;height:28px}.noah-preview-modal__actions .noah-segmented .components-button.is-selected{background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08);color:#1d2327}.noah-preview-modal__stage{display:flex;flex:1;justify-content:center;min-height:0;padding:16px;position:relative}.noah-preview-modal__stage iframe{background:#fff;border:0;border-radius:8px;box-shadow:0 4px 24px rgba(0,0,0,.1);height:100%;max-width:100%;min-height:70vh;transition:width .25s ease,opacity .2s ease}.noah-preview-modal__stage iframe.is-loading{opacity:0}.noah-preview-modal__loading{align-items:center;display:flex;flex-direction:column;gap:8px;inset:0;justify-content:center;position:absolute}.noah-wireframe{background:#fff;border-radius:6px;box-shadow:0 1px 3px rgba(0,0,0,.06);display:block;height:auto;width:100%}.noah-wireframe__image{fill:#e0e7ff}.noah-wireframe__heading{fill:#9ca3af}.noah-wireframe__line{fill:#e5e7eb}.noah-wireframe__accent{fill:#4f46e5}.noah-wireframe__box{fill:#fff;stroke:#d1d5db;stroke-width:1}.noah-wireframe__dashed{fill:none;stroke:#c7cbd1;stroke-dasharray:5 4;stroke-width:1.5}.noah-wireframe__accent-stroke{fill:none;stroke:#4f46e5;stroke-linecap:round;stroke-width:3}.noah-selected-type{align-items:center;background:#eef2ff;border-radius:12px;display:flex;gap:14px;padding:14px}.noah-selected-type>div{color:#6b7280;display:flex;flex:1;flex-direction:column;font-size:12px;gap:2px}.noah-selected-type>div strong{color:#1d2327;font-size:14px}.noah-selected-type .noah-type-card__icon{background:#fff}.noah-option-cards{display:grid;gap:10px;grid-template-columns:repeat(2,1fr)}.noah-option-card{align-items:flex-start;background:#fff;border:1px solid #e2e4e7;border-radius:10px;cursor:pointer;display:flex;gap:10px;padding:12px 14px;text-align:start;transition:border-color .15s ease}.noah-option-card>span:last-child{color:#6b7280;display:flex;flex-direction:column;font-size:12px;gap:2px}.noah-option-card>span:last-child strong{color:#1d2327;font-size:13px}.noah-option-card__radio{border:1.5px solid #9ca3af;border-radius:50%;box-sizing:border-box;flex-shrink:0;height:16px;margin-top:1px;width:16px}.noah-option-card:hover{border-color:#4f46e5}.noah-option-card:focus-visible{outline:2px solid #4f46e5;outline-offset:1px}.noah-option-card.is-selected{background:#eef2ff;border-color:#4f46e5}.noah-option-card.is-selected .noah-option-card__radio{border:5px solid #4f46e5}@media(max-width:960px){.noah-templates__head{display:none}.noah-template-row{grid-template-columns:1fr auto;row-gap:10px}.noah-template-row__display{grid-column:1;padding-inline-start:54px}.noah-template-row__status{grid-column:2;grid-row:1}.noah-template-row__actions{grid-column:2}.noah-option-cards{grid-template-columns:1fr}} 2 .noah-shop-builder-dashboard-header{background:linear-gradient(-135deg,#f5f7fa,#f0f2f5);border-radius:16px;box-shadow:0 2px 8px rgba(0,0,0,.05);margin:0 0 24px;padding:16px}.noah-shop-builder-dashboard-header .noah-shop-builder-header-container{max-width:100%}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav{backdrop-filter:blur(10px);background:hsla(0,0%,100%,.6);border-radius:12px;display:flex;gap:8px;justify-content:center;padding:6px;position:relative}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-indicator{background:linear-gradient(-135deg,#667eea,#764ba2);border-radius:8px;box-shadow:0 4px 12px rgba(102,126,234,.4),0 2px 4px rgba(102,126,234,.2);height:calc(100% - 12px);right:6px;pointer-events:none;position:absolute;top:6px;transition:all .4s cubic-bezier(.34,1.56,.64,1);z-index:0}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-indicator:before{background:linear-gradient(-135deg,hsla(0,0%,100%,.2),hsla(0,0%,100%,0));border-radius:8px;bottom:0;content:"";right:0;position:absolute;left:0;top:0}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button{align-items:center;background:transparent;border:none;border-radius:8px;color:#6b7280;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:8px;padding:12px 24px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);white-space:nowrap;z-index:1}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button svg{fill:currentcolor}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button:hover{color:#4f46e5}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button.active{color:#fff;z-index:1}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button.active svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1))}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button:active{transform:translateY(0)}@media(max-width:600px){.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav{gap:4px;justify-content:space-between}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button{padding:10px 16px}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button span{clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}}@keyframes slideIn{0%{opacity:0;transform:translateY(0) scale(.95)}to{opacity:1;transform:translateY(-2px) scale(1)}}.noah-shop-builder-wrapper{margin:20px auto;max-width:1200px;padding:20px}.noah-shop-builder-wrapper h1{color:#1d2327;font-size:24px;margin-bottom:20px}.noah-shop-builder-wrapper p{color:#50575e;font-size:14px;line-height:1.6;margin-bottom:20px}.noah-shop-builder-wrapper .section{background:#fff;border:1px solid #c3c4c7;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.04);margin-bottom:20px;padding:30px}.noah-shop-builder-wrapper .button-group{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.noah-shop-builder-wrapper .button-group button{margin:0}.noah-shop-builder-snackbars{inset-block-end:24px;inset-inline-start:184px;position:fixed;z-index:100000}.folded .noah-shop-builder-snackbars{inset-inline-start:60px}@media(max-width:782px){.noah-shop-builder-snackbars{inset-inline-start:16px}}.noah-shop-builder-blocks .blocks-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:30px}.noah-shop-builder-blocks .blocks-header h1{margin:0 0 8px}.noah-shop-builder-blocks .blocks-header p{margin:0}.noah-shop-builder-blocks .blocks-header .header-actions{align-items:center;display:flex;gap:20px}.noah-shop-builder-blocks .blocks-header .header-actions .bulk-toggle{align-items:center;background:#f6f7f7;border-radius:6px;display:flex;gap:12px;padding:8px 16px}.noah-shop-builder-blocks .blocks-header .header-actions .bulk-toggle label{color:#50575e;font-size:13px;font-weight:500;margin:0}.noah-shop-builder-blocks .blocks-header .header-actions .bulk-toggle .components-form-toggle{margin:0}.noah-shop-builder-blocks .blocks-category{margin-bottom:40px}.noah-shop-builder-blocks .blocks-category h2{border-bottom:2px solid #e8e8e8;color:#1d2327;font-size:18px;font-weight:600;margin:0 0 20px;padding-bottom:10px}.noah-shop-builder-blocks .blocks-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin-bottom:20px}.noah-shop-builder-blocks .block-card{align-items:center;background:#fff;border:1px solid #dcdcde;border-radius:8px;display:flex;justify-content:space-between;padding:20px;transition:all .2s ease}.noah-shop-builder-blocks .block-card:hover{border-color:#2271b1;box-shadow:0 2px 8px rgba(0,0,0,.08)}.noah-shop-builder-blocks .block-card .block-info{flex:1}.noah-shop-builder-blocks .block-card .block-info h3{color:#1d2327;font-size:15px;font-weight:600;margin:0 0 8px}.noah-shop-builder-blocks .block-card . components-form-toggle{flex-shrink:0;margin:0}.noah-shop-builder-blocks .blocks-footer{border-top:1px solid #dcdcde;display:flex;justify-content:flex-end;padding-top:20px}.noah-shop-builder-welcome h2{color:#1d2327;font-size:18px;font-weight:600;margin:0 0 20px}.noah-shop-builder-welcome h3{color:#1d2327;font-size:15px;font-weight:600;margin:0 0 8px}.noah-shop-builder-welcome .welcome-hero{background:linear-gradient(-135deg,#667eea,#764ba2);border:none;border-radius:8px}.noah-shop-builder-welcome .welcome-hero h1,.noah-shop-builder-welcome .welcome-hero p{color:#fff}.noah-shop-builder-welcome .welcome-hero p{font-size:15px;max-width:640px}.noah-shop-builder-welcome .welcome-hero .components-button.is-primary{background:#fff;color:#4f46e5}.noah-shop-builder-welcome .welcome-hero .components-button.is-secondary{box-shadow:inset 0 0 0 1px #fff;color:#fff}.noah-shop-builder-welcome .welcome-steps{counter-reset:noah-step;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));list-style:none;margin:0;padding:0}.noah-shop-builder-welcome .welcome-steps li{background:#f6f7f7;border-radius:8px;counter-increment:noah-step;margin:0;padding:20px}.noah-shop-builder-welcome .welcome-steps li:before{align-items:center;background:#4f46e5;border-radius:50%;color:#fff;content:counter(noah-step);display:flex;font-weight:600;height:28px;justify-content:center;margin-bottom:12px;width:28px}.noah-shop-builder-welcome .welcome-steps p{margin:0}.noah-shop-builder-welcome .welcome-cards{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.noah-shop-builder-welcome .welcome-card{border:1px solid #dcdcde;border-radius:8px;padding:20px}.noah-shop-builder-welcome .welcome-card p{margin:0}.noah-shop-builder-welcome .welcome-card-icon{background:#eef2ff;border-radius:8px;color:#4f46e5;display:inline-flex;margin-bottom:12px;padding:8px}.noah-shop-builder-welcome .welcome-card-icon svg{fill:currentcolor}.noah-shop-builder-welcome .welcome-columns{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.noah-shop-builder-welcome .welcome-columns .section{margin-bottom:0}.noah-badges{display:inline-flex;flex-wrap:wrap;gap:6px}.noah-badges .badge{background:#f0f0f1;border-radius:3px;color:#50575e;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.3px;line-height:1.6;padding:2px 8px;text-transform:uppercase}.noah-badges .badge-new{background:#e7f5ff;color:#1971c2}.noah-badges .badge-beta{background:#fff3bf;color:#f59e0b}.noah-module-settings{width:min(480px,100vw - 32px)}.noah-module-settings .noah-module-settings__fields{display:flex;flex-direction:column;gap:20px}.noah-module-settings .noah-module-settings__actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px}.noah-shop-builder-settings .settings-group h2{border-bottom:2px solid #e8e8e8;color:#1d2327;font-size:18px;font-weight:600;margin:0 0 20px;padding-bottom:10px}.noah-shop-builder-settings .settings-card{background:#fff;border:1px solid #dcdcde;border-radius:8px;max-width:720px;padding:20px}.noah-shop-builder-settings .settings-card .components-base-control__help,.noah-shop-builder-settings .settings-card .components-toggle-control__help{margin:8px 0 0}.noah-shop-builder-modules .modules-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));margin-bottom:24px}.noah-shop-builder-modules .module-card{background:#fff;border:1px solid #dcdcde;border-radius:8px;padding:20px}.noah-shop-builder-modules .module-card h3{color:#1d2327;font-size:15px;font-weight:600;margin:0 0 8px}.noah-shop-builder-modules .module-card p{margin:0}.noah-shop-builder-modules .module-card.is-active{border-color:var(--wp-admin-theme-color,#3858e9)}.noah-shop-builder-modules .module-card .module-card-settings{margin-top:16px}.noah-shop-builder-modules>h2{font-size:15px;margin:8px 0 12px}.noah-shop-builder-modules .module-card-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:12px}.noah-shop-builder-modules .module-icon{background:#f6f7f7;border-radius:8px;color:#50575e;display:inline-flex;padding:8px}.noah-shop-builder-modules .module-icon svg{fill:currentcolor}.noah-shop-builder-modules .badge-upcoming{background:#fff3bf;border-radius:3px;color:#8a6100;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.3px;padding:2px 8px;text-transform:uppercase}.noah-shop-builder-modules .modules-note{border-top:1px solid #dcdcde;padding-top:20px}.noah-shop-builder-modules .modules-note p{margin:0}2 .noah-shop-builder-dashboard-header{background:linear-gradient(-135deg,#f5f7fa,#f0f2f5);border-radius:16px;box-shadow:0 2px 8px rgba(0,0,0,.05);margin:0 0 24px;padding:16px}.noah-shop-builder-dashboard-header .noah-shop-builder-header-container{max-width:100%}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav{backdrop-filter:blur(10px);background:hsla(0,0%,100%,.6);border-radius:12px;display:flex;gap:8px;justify-content:center;padding:6px;position:relative}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-indicator{background:linear-gradient(-135deg,#667eea,#764ba2);border-radius:8px;box-shadow:0 4px 12px rgba(102,126,234,.4),0 2px 4px rgba(102,126,234,.2);height:calc(100% - 12px);right:6px;pointer-events:none;position:absolute;top:6px;transition:all .4s cubic-bezier(.34,1.56,.64,1);z-index:0}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-indicator:before{background:linear-gradient(-135deg,hsla(0,0%,100%,.2),hsla(0,0%,100%,0));border-radius:8px;bottom:0;content:"";right:0;position:absolute;left:0;top:0}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button{align-items:center;background:transparent;border:none;border-radius:8px;color:#6b7280;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:8px;padding:12px 24px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);white-space:nowrap;z-index:1}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button svg{fill:currentcolor}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button:hover{color:#4f46e5}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button.active{color:#fff;z-index:1}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button.active svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1))}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button:active{transform:translateY(0)}@media(max-width:600px){.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav{gap:4px;justify-content:space-between}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button{padding:10px 16px}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button span{clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}}@keyframes slideIn{0%{opacity:0;transform:translateY(0) scale(.95)}to{opacity:1;transform:translateY(-2px) scale(1)}}.noah-shop-builder-wrapper{margin:20px auto;max-width:1200px;padding:20px}.noah-shop-builder-wrapper h1{color:#1d2327;font-size:24px;margin-bottom:20px}.noah-shop-builder-wrapper p{color:#50575e;font-size:14px;line-height:1.6;margin-bottom:20px}.noah-shop-builder-wrapper .section{background:#fff;border:1px solid #c3c4c7;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.04);margin-bottom:20px;padding:30px}.noah-shop-builder-wrapper .button-group{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.noah-shop-builder-wrapper .button-group button{margin:0}.noah-shop-builder-snackbars{inset-block-end:24px;inset-inline-start:184px;position:fixed;z-index:100000}.folded .noah-shop-builder-snackbars{inset-inline-start:60px}@media(max-width:782px){.noah-shop-builder-snackbars{inset-inline-start:16px}}.noah-shop-builder-blocks .blocks-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:30px}.noah-shop-builder-blocks .blocks-header h1{margin:0 0 8px}.noah-shop-builder-blocks .blocks-header p{margin:0}.noah-shop-builder-blocks .blocks-header .header-actions{align-items:center;display:flex;gap:20px}.noah-shop-builder-blocks .blocks-header .header-actions .bulk-toggle{align-items:center;background:#f6f7f7;border-radius:6px;display:flex;gap:12px;padding:8px 16px}.noah-shop-builder-blocks .blocks-header .header-actions .bulk-toggle label{color:#50575e;font-size:13px;font-weight:500;margin:0}.noah-shop-builder-blocks .blocks-header .header-actions .bulk-toggle .components-form-toggle{margin:0}.noah-shop-builder-blocks .blocks-category{margin-bottom:40px}.noah-shop-builder-blocks .blocks-category h2{border-bottom:2px solid #e8e8e8;color:#1d2327;font-size:18px;font-weight:600;margin:0 0 20px;padding-bottom:10px}.noah-shop-builder-blocks .blocks-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin-bottom:20px}.noah-shop-builder-blocks .block-card{align-items:center;background:#fff;border:1px solid #dcdcde;border-radius:8px;display:flex;justify-content:space-between;padding:20px;transition:all .2s ease}.noah-shop-builder-blocks .block-card:hover{border-color:#2271b1;box-shadow:0 2px 8px rgba(0,0,0,.08)}.noah-shop-builder-blocks .block-card .block-info{flex:1}.noah-shop-builder-blocks .block-card .block-info h3{color:#1d2327;font-size:15px;font-weight:600;margin:0 0 8px}.noah-shop-builder-blocks .block-card .block-info .block-doc-link{align-items:center;color:#2271b1;display:inline-flex;font-size:13px;gap:4px;margin-right:12px;margin-top:8px;text-decoration:none}.noah-shop-builder-blocks .block-card .block-info .block-doc-link:after{content:"↗";font-size:11px}.noah-shop-builder-blocks .block-card .block-info .block-doc-link:focus,.noah-shop-builder-blocks .block-card .block-info .block-doc-link:hover{color:#135e96;text-decoration:underline}.noah-shop-builder-blocks .block-card .block-info h3+.block-doc-link{margin-right:0}.noah-shop-builder-blocks .block-card .components-form-toggle{flex-shrink:0;margin:0}.noah-shop-builder-blocks .blocks-footer{border-top:1px solid #dcdcde;display:flex;justify-content:flex-end;padding-top:20px}.noah-shop-builder-welcome h2{color:#1d2327;font-size:18px;font-weight:600;margin:0 0 20px}.noah-shop-builder-welcome h3{color:#1d2327;font-size:15px;font-weight:600;margin:0 0 8px}.noah-shop-builder-welcome .welcome-hero{background:linear-gradient(-135deg,#667eea,#764ba2);border:none;border-radius:8px}.noah-shop-builder-welcome .welcome-hero h1,.noah-shop-builder-welcome .welcome-hero p{color:#fff}.noah-shop-builder-welcome .welcome-hero p{font-size:15px;max-width:640px}.noah-shop-builder-welcome .welcome-hero .components-button.is-primary{background:#fff;color:#4f46e5}.noah-shop-builder-welcome .welcome-hero .components-button.is-secondary{box-shadow:inset 0 0 0 1px #fff;color:#fff}.noah-shop-builder-welcome .welcome-steps{counter-reset:noah-step;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));list-style:none;margin:0;padding:0}.noah-shop-builder-welcome .welcome-steps li{background:#f6f7f7;border-radius:8px;counter-increment:noah-step;margin:0;padding:20px}.noah-shop-builder-welcome .welcome-steps li:before{align-items:center;background:#4f46e5;border-radius:50%;color:#fff;content:counter(noah-step);display:flex;font-weight:600;height:28px;justify-content:center;margin-bottom:12px;width:28px}.noah-shop-builder-welcome .welcome-steps p{margin:0}.noah-shop-builder-welcome .welcome-cards{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.noah-shop-builder-welcome .welcome-card{border:1px solid #dcdcde;border-radius:8px;padding:20px}.noah-shop-builder-welcome .welcome-card p{margin:0}.noah-shop-builder-welcome .welcome-card-icon{background:#eef2ff;border-radius:8px;color:#4f46e5;display:inline-flex;margin-bottom:12px;padding:8px}.noah-shop-builder-welcome .welcome-card-icon svg{fill:currentcolor}.noah-shop-builder-welcome .welcome-columns{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.noah-shop-builder-welcome .welcome-columns .section{margin-bottom:0}.noah-badges{display:inline-flex;flex-wrap:wrap;gap:6px}.noah-badges .badge{background:#f0f0f1;border-radius:3px;color:#50575e;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.3px;line-height:1.6;padding:2px 8px;text-transform:uppercase}.noah-badges .badge-new{background:#e7f5ff;color:#1971c2}.noah-badges .badge-beta{background:#fff3bf;color:#f59e0b}.noah-badges .badge-locked{align-items:center;background:#f3e8ff;color:#6b21a8;display:inline-flex;gap:3px}.noah-badges .badge-locked svg{fill:currentcolor}.noah-upgrade-link{align-items:center;color:#6b21a8;display:inline-flex;flex-shrink:0;font-size:13px;font-weight:600;gap:4px;text-decoration:none}.noah-upgrade-link svg{fill:currentcolor}.noah-upgrade-link.is-button{background:#f3e8ff;border:1px solid #e9d5ff;border-radius:999px;padding:5px 9px 5px 12px}.noah-upgrade-link.is-button:focus,.noah-upgrade-link.is-button:hover{background:#6b21a8;border-color:#6b21a8;color:#fff}.noah-upgrade-link.is-text:focus,.noah-upgrade-link.is-text:hover{color:#4c1d95;text-decoration:underline}.noah-upgrade-link:focus{box-shadow:none;outline:2px solid var(--wp-admin-theme-color,#3858e9);outline-offset:2px}.noah-shop-builder-blocks .block-card.is-locked,.noah-shop-builder-modules .module-card.is-locked{background:#fcfaff;border-style:dashed}.noah-shop-builder-blocks .block-card.is-locked:hover,.noah-shop-builder-modules .module-card.is-locked:hover{border-color:#c084fc}.noah-shop-builder-modules .module-card-locked{border-top:1px dashed #dcdcde;margin-top:16px;padding-top:12px}.noah-shop-builder-modules .module-card-locked ul{list-style:none;margin:0 0 8px;padding:0}.noah-shop-builder-modules .module-card-locked li{align-items:center;color:#646970;display:flex;gap:6px;margin:0 0 4px}.noah-shop-builder-modules .module-card-locked li svg{fill:#6b21a8}.noah-module-settings{width:min(480px,100vw - 32px)}.noah-module-settings .noah-module-settings__fields{display:flex;flex-direction:column;gap:20px}.noah-module-settings .noah-module-settings__actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px}.noah-shop-builder-settings .settings-group h2{border-bottom:2px solid #e8e8e8;color:#1d2327;font-size:18px;font-weight:600;margin:0 0 20px;padding-bottom:10px}.noah-shop-builder-settings .settings-card{background:#fff;border:1px solid #dcdcde;border-radius:8px;max-width:720px;padding:20px}.noah-shop-builder-settings .settings-card .components-base-control__help,.noah-shop-builder-settings .settings-card .components-toggle-control__help{margin:8px 0 0}.noah-shop-builder-modules .modules-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));margin-bottom:24px}.noah-shop-builder-modules .module-card{background:#fff;border:1px solid #dcdcde;border-radius:8px;padding:20px}.noah-shop-builder-modules .module-card h3{color:#1d2327;font-size:15px;font-weight:600;margin:0 0 8px}.noah-shop-builder-modules .module-card p{margin:0}.noah-shop-builder-modules .module-card.is-active{border-color:var(--wp-admin-theme-color,#3858e9)}.noah-shop-builder-modules .module-card .module-card-settings{margin-top:16px}.noah-shop-builder-modules>h2{font-size:15px;margin:8px 0 12px}.noah-shop-builder-modules .module-card-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:12px}.noah-shop-builder-modules .module-icon{background:#f6f7f7;border-radius:8px;color:#50575e;display:inline-flex;padding:8px}.noah-shop-builder-modules .module-icon svg{fill:currentcolor}.noah-shop-builder-modules .badge-upcoming{background:#fff3bf;border-radius:3px;color:#8a6100;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.3px;padding:2px 8px;text-transform:uppercase}.noah-shop-builder-modules .modules-note{border-top:1px solid #dcdcde;padding-top:20px}.noah-shop-builder-modules .modules-note p{margin:0} -
noah-shop-builder-for-woocommerce/trunk/build/style-admin-dashboard.css
r3800774 r3801491 1 1 .noah-templates__header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:24px}.noah-templates__header h1{margin:0 0 6px}.noah-templates__header p{margin:0;max-width:640px}.noah-templates__header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.noah-templates__header-actions:empty{display:none}.noah-templates__loading{padding:50px;text-align:center}.noah-templates__toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:16px}.noah-templates__toolbar-end{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.noah-templates__toolbar-end .components-search-control{min-width:220px}.noah-templates__table{border:1px solid #e2e4e7;border-radius:12px;overflow:hidden}.noah-templates .noah-template-row,.noah-templates__head{align-items:center;display:grid;gap:16px;grid-template-columns:minmax(240px,2.2fr) minmax(160px,1.4fr) 130px 150px;padding:14px 20px}.noah-templates__head{background:#f9fafb;border-bottom:1px solid #e2e4e7;color:#6b7280;font-size:12px;font-weight:600;letter-spacing:.04em;padding-block:10px;text-transform:uppercase}.noah-templates__no-results{padding:40px 20px;text-align:center}.noah-templates__no-results p{margin:0 0 8px}.noah-template-row{border-bottom:1px solid #e2e4e7;transition:background .15s ease}.noah-template-row:last-child{border-bottom:0}.noah-template-row:hover{background:#fafaff}.noah-template-row__main{align-items:center;display:flex;gap:14px;min-width:0}.noah-template-row__main>div{min-width:0}.noah-template-row__icon{align-items:center;background:#eef2ff;border-radius:10px;color:#4f46e5;display:inline-flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.noah-template-row__icon svg{fill:currentcolor}.noah-template-row__title{color:#1d2327;display:block;font-size:14px;font-weight:600;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.noah-template-row__title:focus,.noah-template-row__title:hover{color:#4f46e5}.noah-template-row__meta{align-items:center;color:#6b7280;display:flex;font-size:12px;gap:8px;margin-top:4px}.noah-template-row__display{flex-wrap:wrap}.noah-template-row__display,.noah-template-row__status{align-items:center;display:flex;gap:8px}.noah-template-row__status label{color:#1d2327;cursor:pointer;font-size:13px}.noah-template-row__actions{align-items:center;display:flex;gap:4px;justify-content:flex-end}.noah-template-row.is-inactive .noah-template-row__icon{background:#f3f4f6;color:#6b7280}.noah-template-row.is-inactive .noah-template-row__status label{color:#6b7280}.noah-pill{background:#f3f4f6;border-radius:999px;color:#374151;display:inline-block;font-weight:500;padding:2px 8px}.noah-display{color:#1d2327;font-size:13px}.noah-display:before{background:#10b981;border-radius:50%;content:"";display:inline-block;height:8px;margin-inline-end:8px;width:8px}.noah-display--custom:before{background:#4f46e5}.noah-display--none{color:#6b7280}.noah-display--none:before{background:#d1d5db}.noah-badge{align-items:center;border-radius:999px;cursor:help;display:inline-flex;font-size:12px;font-weight:500;gap:4px;padding:2px 8px 2px 4px}.noah-badge svg{fill:currentcolor}.noah-badge--warning{background:#fef3c7;color:#92400e}.noah-type-filter{display:flex;flex-wrap:wrap;gap:6px}.noah-type-filter button{align-items:center;background:#fff;border:1px solid #e2e4e7;border-radius:999px;color:#374151;cursor:pointer;display:inline-flex;font-size:13px;gap:6px;padding:6px 12px;transition:all .15s ease}.noah-type-filter button:hover{border-color:#4f46e5;color:#4f46e5}.noah-type-filter button:focus-visible{outline:2px solid #4f46e5;outline-offset:1px}.noah-type-filter button.is-selected{background:#4f46e5;border-color:#4f46e5;color:#fff}.noah-type-filter button.is-selected .noah-type-filter__count{background:hsla(0,0%,100%,.2);color:#fff}.noah-type-filter__count{background:#f3f4f6;border-radius:999px;color:#6b7280;font-size:11px;line-height:18px;min-width:18px;padding:0 6px;text-align:center}.noah-segmented{background:#f3f4f6;border-radius:8px;display:inline-flex;padding:3px}.noah-segmented button{background:transparent;border:0;border-radius:6px;color:#6b7280;cursor:pointer;font-size:13px;padding:6px 12px}.noah-segmented button:focus-visible{outline:2px solid #4f46e5}.noah-segmented button.is-selected{background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08);color:#1d2327}.noah-templates-empty{padding:40px 20px 20px;text-align:center}.noah-templates-empty h2{color:#1d2327;font-size:20px;margin:0 0 8px}.noah-templates-empty__steps{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));list-style:none;margin:24px auto 28px;max-width:760px;padding:0}.noah-templates-empty__steps li{align-items:center;border:1px dashed #e2e4e7;border-radius:12px;color:#6b7280;display:flex;flex-direction:column;font-size:13px;gap:6px;margin:0;padding:20px 16px}.noah-templates-empty__steps li strong{color:#1d2327;font-size:14px}.noah-templates-empty__number{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:50%;color:#fff;display:inline-flex;font-weight:600;height:28px;justify-content:center;width:28px}.noah-templates-modal__steps{display:flex;gap:6px;margin:-8px 0 16px}.noah-templates-modal__steps span{background:#e5e7eb;border-radius:2px;flex:1;height:4px;transition:background .2s ease}.noah-templates-modal__steps span.is-active{background:#4f46e5}.noah-templates-modal__intro{color:#6b7280;margin:0 0 16px}.noah-templates-modal__form{display:flex;flex-direction:column;gap:20px;max-width:640px}.noah-templates-modal__field{border:0;margin:0;padding:0}.noah-templates-modal__field legend{color:#1d2327;font-size:11px;font-weight:500;margin-bottom:8px;padding:0;text-transform:uppercase}.noah-templates-modal__footer{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.noah-type-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.noah-type-card{align-items:flex-start;background:#fff;border:1px solid #e2e4e7;border-radius:12px;cursor:pointer;display:flex;flex-direction:column;gap:6px;padding:18px;text-align:start;transition:all .15s ease}.noah-type-card strong{color:#1d2327;font-size:14px;margin-top:6px}.noah-type-card__description{color:#6b7280;font-size:12px;line-height:1.5}.noah-type-card__starters{background:#eef2ff;border-radius:999px;color:#4f46e5;font-size:11px;font-weight:600;margin-top:auto;padding:2px 8px}.noah-type-card:focus-visible,.noah-type-card:hover{border-color:#4f46e5;box-shadow:0 4px 14px rgba(79,70,229,.12);outline:none;transform:translateY(-1px)}.noah-type-card__icon{align-items:center;background:#eef2ff;border-radius:10px;color:#4f46e5;display:inline-flex;height:44px;justify-content:center;width:44px}.noah-type-card__icon svg{fill:currentcolor}.noah-templates-modal__subheader{align-items:center;display:flex;gap:12px;margin-bottom:16px}.noah-templates-modal__subheader .noah-templates-modal__intro{margin:0}.noah-templates-modal__subheader .components-button{flex-shrink:0}.noah-templates-modal__footer.has-back{justify-content:space-between}.noah-templates-modal__footer-end{display:flex;gap:8px}.noah-design-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.noah-design-card{background:#fff;border:1px solid #e2e4e7;border-radius:12px;overflow:hidden;position:relative;transition:all .15s ease}.noah-design-card__select{background:transparent;border:0;cursor:pointer;display:flex;flex-direction:column;height:100%;padding:0;text-align:start;width:100%}.noah-design-card__select:focus-visible{outline:2px solid #4f46e5;outline-offset:-2px}.noah-design-card__preview-button.components-button{background:#fff;inset-inline-end:10px;opacity:0;position:absolute;top:10px;transition:opacity .15s ease}.noah-design-card:focus-within .noah-design-card__preview-button,.noah-design-card:hover .noah-design-card__preview-button{opacity:1}@media(hover:none){.noah-design-card__preview-button.components-button{opacity:1}}.noah-design-card__blocks{align-self:flex-start;border-radius:999px;font-size:11px;font-weight:600;margin-top:4px;padding:1px 8px}.noah-design-card__blocks.is-noah{background:#eef2ff;color:#4f46e5}.noah-design-card__blocks.is-woocommerce{background:#f3e8ff;color:#7e22ce}.noah-design-card__preview{background:#f8f9fc;border-bottom:1px solid #e2e4e7;display:block;padding:14px}.noah-design-card__body{color:#6b7280;display:flex;flex-direction:column;font-size:12px;gap:4px;line-height:1.5;padding:14px 16px 16px}.noah-design-card__body strong{color:#1d2327;font-size:14px}.noah-design-card:focus-within,.noah-design-card:hover{border-color:#4f46e5;box-shadow:0 6px 18px rgba(79,70,229,.14);transform:translateY(-2px)}.noah-preview-modal .components-modal__content{background:#f0f0f1;display:flex;flex-direction:column;padding:0}.noah-preview-modal__actions{align-items:center;display:flex;gap:8px;margin-inline-end:8px}.noah-preview-modal__actions .noah-segmented .components-button{color:#6b7280;height:28px}.noah-preview-modal__actions .noah-segmented .components-button.is-selected{background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08);color:#1d2327}.noah-preview-modal__stage{display:flex;flex:1;justify-content:center;min-height:0;padding:16px;position:relative}.noah-preview-modal__stage iframe{background:#fff;border:0;border-radius:8px;box-shadow:0 4px 24px rgba(0,0,0,.1);height:100%;max-width:100%;min-height:70vh;transition:width .25s ease,opacity .2s ease}.noah-preview-modal__stage iframe.is-loading{opacity:0}.noah-preview-modal__loading{align-items:center;display:flex;flex-direction:column;gap:8px;inset:0;justify-content:center;position:absolute}.noah-wireframe{background:#fff;border-radius:6px;box-shadow:0 1px 3px rgba(0,0,0,.06);display:block;height:auto;width:100%}.noah-wireframe__image{fill:#e0e7ff}.noah-wireframe__heading{fill:#9ca3af}.noah-wireframe__line{fill:#e5e7eb}.noah-wireframe__accent{fill:#4f46e5}.noah-wireframe__box{fill:#fff;stroke:#d1d5db;stroke-width:1}.noah-wireframe__dashed{fill:none;stroke:#c7cbd1;stroke-dasharray:5 4;stroke-width:1.5}.noah-wireframe__accent-stroke{fill:none;stroke:#4f46e5;stroke-linecap:round;stroke-width:3}.noah-selected-type{align-items:center;background:#eef2ff;border-radius:12px;display:flex;gap:14px;padding:14px}.noah-selected-type>div{color:#6b7280;display:flex;flex:1;flex-direction:column;font-size:12px;gap:2px}.noah-selected-type>div strong{color:#1d2327;font-size:14px}.noah-selected-type .noah-type-card__icon{background:#fff}.noah-option-cards{display:grid;gap:10px;grid-template-columns:repeat(2,1fr)}.noah-option-card{align-items:flex-start;background:#fff;border:1px solid #e2e4e7;border-radius:10px;cursor:pointer;display:flex;gap:10px;padding:12px 14px;text-align:start;transition:border-color .15s ease}.noah-option-card>span:last-child{color:#6b7280;display:flex;flex-direction:column;font-size:12px;gap:2px}.noah-option-card>span:last-child strong{color:#1d2327;font-size:13px}.noah-option-card__radio{border:1.5px solid #9ca3af;border-radius:50%;box-sizing:border-box;flex-shrink:0;height:16px;margin-top:1px;width:16px}.noah-option-card:hover{border-color:#4f46e5}.noah-option-card:focus-visible{outline:2px solid #4f46e5;outline-offset:1px}.noah-option-card.is-selected{background:#eef2ff;border-color:#4f46e5}.noah-option-card.is-selected .noah-option-card__radio{border:5px solid #4f46e5}@media(max-width:960px){.noah-templates__head{display:none}.noah-template-row{grid-template-columns:1fr auto;row-gap:10px}.noah-template-row__display{grid-column:1;padding-inline-start:54px}.noah-template-row__status{grid-column:2;grid-row:1}.noah-template-row__actions{grid-column:2}.noah-option-cards{grid-template-columns:1fr}} 2 .noah-shop-builder-dashboard-header{background:linear-gradient(135deg,#f5f7fa,#f0f2f5);border-radius:16px;box-shadow:0 2px 8px rgba(0,0,0,.05);margin:0 0 24px;padding:16px}.noah-shop-builder-dashboard-header .noah-shop-builder-header-container{max-width:100%}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav{backdrop-filter:blur(10px);background:hsla(0,0%,100%,.6);border-radius:12px;display:flex;gap:8px;justify-content:center;padding:6px;position:relative}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-indicator{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:8px;box-shadow:0 4px 12px rgba(102,126,234,.4),0 2px 4px rgba(102,126,234,.2);height:calc(100% - 12px);left:6px;pointer-events:none;position:absolute;top:6px;transition:all .4s cubic-bezier(.34,1.56,.64,1);z-index:0}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-indicator:before{background:linear-gradient(135deg,hsla(0,0%,100%,.2),hsla(0,0%,100%,0));border-radius:8px;bottom:0;content:"";left:0;position:absolute;right:0;top:0}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button{align-items:center;background:transparent;border:none;border-radius:8px;color:#6b7280;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:8px;padding:12px 24px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);white-space:nowrap;z-index:1}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button svg{fill:currentcolor}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button:hover{color:#4f46e5}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button.active{color:#fff;z-index:1}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button.active svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1))}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button:active{transform:translateY(0)}@media(max-width:600px){.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav{gap:4px;justify-content:space-between}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button{padding:10px 16px}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button span{clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}}@keyframes slideIn{0%{opacity:0;transform:translateY(0) scale(.95)}to{opacity:1;transform:translateY(-2px) scale(1)}}.noah-shop-builder-wrapper{margin:20px auto;max-width:1200px;padding:20px}.noah-shop-builder-wrapper h1{color:#1d2327;font-size:24px;margin-bottom:20px}.noah-shop-builder-wrapper p{color:#50575e;font-size:14px;line-height:1.6;margin-bottom:20px}.noah-shop-builder-wrapper .section{background:#fff;border:1px solid #c3c4c7;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.04);margin-bottom:20px;padding:30px}.noah-shop-builder-wrapper .button-group{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.noah-shop-builder-wrapper .button-group button{margin:0}.noah-shop-builder-snackbars{inset-block-end:24px;inset-inline-start:184px;position:fixed;z-index:100000}.folded .noah-shop-builder-snackbars{inset-inline-start:60px}@media(max-width:782px){.noah-shop-builder-snackbars{inset-inline-start:16px}}.noah-shop-builder-blocks .blocks-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:30px}.noah-shop-builder-blocks .blocks-header h1{margin:0 0 8px}.noah-shop-builder-blocks .blocks-header p{margin:0}.noah-shop-builder-blocks .blocks-header .header-actions{align-items:center;display:flex;gap:20px}.noah-shop-builder-blocks .blocks-header .header-actions .bulk-toggle{align-items:center;background:#f6f7f7;border-radius:6px;display:flex;gap:12px;padding:8px 16px}.noah-shop-builder-blocks .blocks-header .header-actions .bulk-toggle label{color:#50575e;font-size:13px;font-weight:500;margin:0}.noah-shop-builder-blocks .blocks-header .header-actions .bulk-toggle .components-form-toggle{margin:0}.noah-shop-builder-blocks .blocks-category{margin-bottom:40px}.noah-shop-builder-blocks .blocks-category h2{border-bottom:2px solid #e8e8e8;color:#1d2327;font-size:18px;font-weight:600;margin:0 0 20px;padding-bottom:10px}.noah-shop-builder-blocks .blocks-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin-bottom:20px}.noah-shop-builder-blocks .block-card{align-items:center;background:#fff;border:1px solid #dcdcde;border-radius:8px;display:flex;justify-content:space-between;padding:20px;transition:all .2s ease}.noah-shop-builder-blocks .block-card:hover{border-color:#2271b1;box-shadow:0 2px 8px rgba(0,0,0,.08)}.noah-shop-builder-blocks .block-card .block-info{flex:1}.noah-shop-builder-blocks .block-card .block-info h3{color:#1d2327;font-size:15px;font-weight:600;margin:0 0 8px}.noah-shop-builder-blocks .block-card . components-form-toggle{flex-shrink:0;margin:0}.noah-shop-builder-blocks .blocks-footer{border-top:1px solid #dcdcde;display:flex;justify-content:flex-end;padding-top:20px}.noah-shop-builder-welcome h2{color:#1d2327;font-size:18px;font-weight:600;margin:0 0 20px}.noah-shop-builder-welcome h3{color:#1d2327;font-size:15px;font-weight:600;margin:0 0 8px}.noah-shop-builder-welcome .welcome-hero{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px}.noah-shop-builder-welcome .welcome-hero h1,.noah-shop-builder-welcome .welcome-hero p{color:#fff}.noah-shop-builder-welcome .welcome-hero p{font-size:15px;max-width:640px}.noah-shop-builder-welcome .welcome-hero .components-button.is-primary{background:#fff;color:#4f46e5}.noah-shop-builder-welcome .welcome-hero .components-button.is-secondary{box-shadow:inset 0 0 0 1px #fff;color:#fff}.noah-shop-builder-welcome .welcome-steps{counter-reset:noah-step;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));list-style:none;margin:0;padding:0}.noah-shop-builder-welcome .welcome-steps li{background:#f6f7f7;border-radius:8px;counter-increment:noah-step;margin:0;padding:20px}.noah-shop-builder-welcome .welcome-steps li:before{align-items:center;background:#4f46e5;border-radius:50%;color:#fff;content:counter(noah-step);display:flex;font-weight:600;height:28px;justify-content:center;margin-bottom:12px;width:28px}.noah-shop-builder-welcome .welcome-steps p{margin:0}.noah-shop-builder-welcome .welcome-cards{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.noah-shop-builder-welcome .welcome-card{border:1px solid #dcdcde;border-radius:8px;padding:20px}.noah-shop-builder-welcome .welcome-card p{margin:0}.noah-shop-builder-welcome .welcome-card-icon{background:#eef2ff;border-radius:8px;color:#4f46e5;display:inline-flex;margin-bottom:12px;padding:8px}.noah-shop-builder-welcome .welcome-card-icon svg{fill:currentcolor}.noah-shop-builder-welcome .welcome-columns{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.noah-shop-builder-welcome .welcome-columns .section{margin-bottom:0}.noah-badges{display:inline-flex;flex-wrap:wrap;gap:6px}.noah-badges .badge{background:#f0f0f1;border-radius:3px;color:#50575e;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.3px;line-height:1.6;padding:2px 8px;text-transform:uppercase}.noah-badges .badge-new{background:#e7f5ff;color:#1971c2}.noah-badges .badge-beta{background:#fff3bf;color:#f59e0b}.noah-module-settings{width:min(480px,100vw - 32px)}.noah-module-settings .noah-module-settings__fields{display:flex;flex-direction:column;gap:20px}.noah-module-settings .noah-module-settings__actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px}.noah-shop-builder-settings .settings-group h2{border-bottom:2px solid #e8e8e8;color:#1d2327;font-size:18px;font-weight:600;margin:0 0 20px;padding-bottom:10px}.noah-shop-builder-settings .settings-card{background:#fff;border:1px solid #dcdcde;border-radius:8px;max-width:720px;padding:20px}.noah-shop-builder-settings .settings-card .components-base-control__help,.noah-shop-builder-settings .settings-card .components-toggle-control__help{margin:8px 0 0}.noah-shop-builder-modules .modules-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));margin-bottom:24px}.noah-shop-builder-modules .module-card{background:#fff;border:1px solid #dcdcde;border-radius:8px;padding:20px}.noah-shop-builder-modules .module-card h3{color:#1d2327;font-size:15px;font-weight:600;margin:0 0 8px}.noah-shop-builder-modules .module-card p{margin:0}.noah-shop-builder-modules .module-card.is-active{border-color:var(--wp-admin-theme-color,#3858e9)}.noah-shop-builder-modules .module-card .module-card-settings{margin-top:16px}.noah-shop-builder-modules>h2{font-size:15px;margin:8px 0 12px}.noah-shop-builder-modules .module-card-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:12px}.noah-shop-builder-modules .module-icon{background:#f6f7f7;border-radius:8px;color:#50575e;display:inline-flex;padding:8px}.noah-shop-builder-modules .module-icon svg{fill:currentcolor}.noah-shop-builder-modules .badge-upcoming{background:#fff3bf;border-radius:3px;color:#8a6100;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.3px;padding:2px 8px;text-transform:uppercase}.noah-shop-builder-modules .modules-note{border-top:1px solid #dcdcde;padding-top:20px}.noah-shop-builder-modules .modules-note p{margin:0}2 .noah-shop-builder-dashboard-header{background:linear-gradient(135deg,#f5f7fa,#f0f2f5);border-radius:16px;box-shadow:0 2px 8px rgba(0,0,0,.05);margin:0 0 24px;padding:16px}.noah-shop-builder-dashboard-header .noah-shop-builder-header-container{max-width:100%}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav{backdrop-filter:blur(10px);background:hsla(0,0%,100%,.6);border-radius:12px;display:flex;gap:8px;justify-content:center;padding:6px;position:relative}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-indicator{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:8px;box-shadow:0 4px 12px rgba(102,126,234,.4),0 2px 4px rgba(102,126,234,.2);height:calc(100% - 12px);left:6px;pointer-events:none;position:absolute;top:6px;transition:all .4s cubic-bezier(.34,1.56,.64,1);z-index:0}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-indicator:before{background:linear-gradient(135deg,hsla(0,0%,100%,.2),hsla(0,0%,100%,0));border-radius:8px;bottom:0;content:"";left:0;position:absolute;right:0;top:0}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button{align-items:center;background:transparent;border:none;border-radius:8px;color:#6b7280;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:8px;padding:12px 24px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);white-space:nowrap;z-index:1}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button svg{fill:currentcolor}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button:hover{color:#4f46e5}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button.active{color:#fff;z-index:1}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button.active svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1))}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button:active{transform:translateY(0)}@media(max-width:600px){.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav{gap:4px;justify-content:space-between}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button{padding:10px 16px}.noah-shop-builder-dashboard-header .noah-shop-builder-dashboard-nav .nav-button span{clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}}@keyframes slideIn{0%{opacity:0;transform:translateY(0) scale(.95)}to{opacity:1;transform:translateY(-2px) scale(1)}}.noah-shop-builder-wrapper{margin:20px auto;max-width:1200px;padding:20px}.noah-shop-builder-wrapper h1{color:#1d2327;font-size:24px;margin-bottom:20px}.noah-shop-builder-wrapper p{color:#50575e;font-size:14px;line-height:1.6;margin-bottom:20px}.noah-shop-builder-wrapper .section{background:#fff;border:1px solid #c3c4c7;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.04);margin-bottom:20px;padding:30px}.noah-shop-builder-wrapper .button-group{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.noah-shop-builder-wrapper .button-group button{margin:0}.noah-shop-builder-snackbars{inset-block-end:24px;inset-inline-start:184px;position:fixed;z-index:100000}.folded .noah-shop-builder-snackbars{inset-inline-start:60px}@media(max-width:782px){.noah-shop-builder-snackbars{inset-inline-start:16px}}.noah-shop-builder-blocks .blocks-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:30px}.noah-shop-builder-blocks .blocks-header h1{margin:0 0 8px}.noah-shop-builder-blocks .blocks-header p{margin:0}.noah-shop-builder-blocks .blocks-header .header-actions{align-items:center;display:flex;gap:20px}.noah-shop-builder-blocks .blocks-header .header-actions .bulk-toggle{align-items:center;background:#f6f7f7;border-radius:6px;display:flex;gap:12px;padding:8px 16px}.noah-shop-builder-blocks .blocks-header .header-actions .bulk-toggle label{color:#50575e;font-size:13px;font-weight:500;margin:0}.noah-shop-builder-blocks .blocks-header .header-actions .bulk-toggle .components-form-toggle{margin:0}.noah-shop-builder-blocks .blocks-category{margin-bottom:40px}.noah-shop-builder-blocks .blocks-category h2{border-bottom:2px solid #e8e8e8;color:#1d2327;font-size:18px;font-weight:600;margin:0 0 20px;padding-bottom:10px}.noah-shop-builder-blocks .blocks-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin-bottom:20px}.noah-shop-builder-blocks .block-card{align-items:center;background:#fff;border:1px solid #dcdcde;border-radius:8px;display:flex;justify-content:space-between;padding:20px;transition:all .2s ease}.noah-shop-builder-blocks .block-card:hover{border-color:#2271b1;box-shadow:0 2px 8px rgba(0,0,0,.08)}.noah-shop-builder-blocks .block-card .block-info{flex:1}.noah-shop-builder-blocks .block-card .block-info h3{color:#1d2327;font-size:15px;font-weight:600;margin:0 0 8px}.noah-shop-builder-blocks .block-card .block-info .block-doc-link{align-items:center;color:#2271b1;display:inline-flex;font-size:13px;gap:4px;margin-left:12px;margin-top:8px;text-decoration:none}.noah-shop-builder-blocks .block-card .block-info .block-doc-link:after{content:"↗";font-size:11px}.noah-shop-builder-blocks .block-card .block-info .block-doc-link:focus,.noah-shop-builder-blocks .block-card .block-info .block-doc-link:hover{color:#135e96;text-decoration:underline}.noah-shop-builder-blocks .block-card .block-info h3+.block-doc-link{margin-left:0}.noah-shop-builder-blocks .block-card .components-form-toggle{flex-shrink:0;margin:0}.noah-shop-builder-blocks .blocks-footer{border-top:1px solid #dcdcde;display:flex;justify-content:flex-end;padding-top:20px}.noah-shop-builder-welcome h2{color:#1d2327;font-size:18px;font-weight:600;margin:0 0 20px}.noah-shop-builder-welcome h3{color:#1d2327;font-size:15px;font-weight:600;margin:0 0 8px}.noah-shop-builder-welcome .welcome-hero{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px}.noah-shop-builder-welcome .welcome-hero h1,.noah-shop-builder-welcome .welcome-hero p{color:#fff}.noah-shop-builder-welcome .welcome-hero p{font-size:15px;max-width:640px}.noah-shop-builder-welcome .welcome-hero .components-button.is-primary{background:#fff;color:#4f46e5}.noah-shop-builder-welcome .welcome-hero .components-button.is-secondary{box-shadow:inset 0 0 0 1px #fff;color:#fff}.noah-shop-builder-welcome .welcome-steps{counter-reset:noah-step;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));list-style:none;margin:0;padding:0}.noah-shop-builder-welcome .welcome-steps li{background:#f6f7f7;border-radius:8px;counter-increment:noah-step;margin:0;padding:20px}.noah-shop-builder-welcome .welcome-steps li:before{align-items:center;background:#4f46e5;border-radius:50%;color:#fff;content:counter(noah-step);display:flex;font-weight:600;height:28px;justify-content:center;margin-bottom:12px;width:28px}.noah-shop-builder-welcome .welcome-steps p{margin:0}.noah-shop-builder-welcome .welcome-cards{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.noah-shop-builder-welcome .welcome-card{border:1px solid #dcdcde;border-radius:8px;padding:20px}.noah-shop-builder-welcome .welcome-card p{margin:0}.noah-shop-builder-welcome .welcome-card-icon{background:#eef2ff;border-radius:8px;color:#4f46e5;display:inline-flex;margin-bottom:12px;padding:8px}.noah-shop-builder-welcome .welcome-card-icon svg{fill:currentcolor}.noah-shop-builder-welcome .welcome-columns{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.noah-shop-builder-welcome .welcome-columns .section{margin-bottom:0}.noah-badges{display:inline-flex;flex-wrap:wrap;gap:6px}.noah-badges .badge{background:#f0f0f1;border-radius:3px;color:#50575e;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.3px;line-height:1.6;padding:2px 8px;text-transform:uppercase}.noah-badges .badge-new{background:#e7f5ff;color:#1971c2}.noah-badges .badge-beta{background:#fff3bf;color:#f59e0b}.noah-badges .badge-locked{align-items:center;background:#f3e8ff;color:#6b21a8;display:inline-flex;gap:3px}.noah-badges .badge-locked svg{fill:currentcolor}.noah-upgrade-link{align-items:center;color:#6b21a8;display:inline-flex;flex-shrink:0;font-size:13px;font-weight:600;gap:4px;text-decoration:none}.noah-upgrade-link svg{fill:currentcolor}.noah-upgrade-link.is-button{background:#f3e8ff;border:1px solid #e9d5ff;border-radius:999px;padding:5px 12px 5px 9px}.noah-upgrade-link.is-button:focus,.noah-upgrade-link.is-button:hover{background:#6b21a8;border-color:#6b21a8;color:#fff}.noah-upgrade-link.is-text:focus,.noah-upgrade-link.is-text:hover{color:#4c1d95;text-decoration:underline}.noah-upgrade-link:focus{box-shadow:none;outline:2px solid var(--wp-admin-theme-color,#3858e9);outline-offset:2px}.noah-shop-builder-blocks .block-card.is-locked,.noah-shop-builder-modules .module-card.is-locked{background:#fcfaff;border-style:dashed}.noah-shop-builder-blocks .block-card.is-locked:hover,.noah-shop-builder-modules .module-card.is-locked:hover{border-color:#c084fc}.noah-shop-builder-modules .module-card-locked{border-top:1px dashed #dcdcde;margin-top:16px;padding-top:12px}.noah-shop-builder-modules .module-card-locked ul{list-style:none;margin:0 0 8px;padding:0}.noah-shop-builder-modules .module-card-locked li{align-items:center;color:#646970;display:flex;gap:6px;margin:0 0 4px}.noah-shop-builder-modules .module-card-locked li svg{fill:#6b21a8}.noah-module-settings{width:min(480px,100vw - 32px)}.noah-module-settings .noah-module-settings__fields{display:flex;flex-direction:column;gap:20px}.noah-module-settings .noah-module-settings__actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px}.noah-shop-builder-settings .settings-group h2{border-bottom:2px solid #e8e8e8;color:#1d2327;font-size:18px;font-weight:600;margin:0 0 20px;padding-bottom:10px}.noah-shop-builder-settings .settings-card{background:#fff;border:1px solid #dcdcde;border-radius:8px;max-width:720px;padding:20px}.noah-shop-builder-settings .settings-card .components-base-control__help,.noah-shop-builder-settings .settings-card .components-toggle-control__help{margin:8px 0 0}.noah-shop-builder-modules .modules-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));margin-bottom:24px}.noah-shop-builder-modules .module-card{background:#fff;border:1px solid #dcdcde;border-radius:8px;padding:20px}.noah-shop-builder-modules .module-card h3{color:#1d2327;font-size:15px;font-weight:600;margin:0 0 8px}.noah-shop-builder-modules .module-card p{margin:0}.noah-shop-builder-modules .module-card.is-active{border-color:var(--wp-admin-theme-color,#3858e9)}.noah-shop-builder-modules .module-card .module-card-settings{margin-top:16px}.noah-shop-builder-modules>h2{font-size:15px;margin:8px 0 12px}.noah-shop-builder-modules .module-card-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:12px}.noah-shop-builder-modules .module-icon{background:#f6f7f7;border-radius:8px;color:#50575e;display:inline-flex;padding:8px}.noah-shop-builder-modules .module-icon svg{fill:currentcolor}.noah-shop-builder-modules .badge-upcoming{background:#fff3bf;border-radius:3px;color:#8a6100;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.3px;padding:2px 8px;text-transform:uppercase}.noah-shop-builder-modules .modules-note{border-top:1px solid #dcdcde;padding-top:20px}.noah-shop-builder-modules .modules-note p{margin:0} -
noah-shop-builder-for-woocommerce/trunk/includes/Admin/Admin.php
r3800774 r3801491 373 373 ); 374 374 375 wp_add_inline_script( 376 'noah-shop-builder-admin-dashboard', 377 'window.noahShopBuilderProCatalog = ' . wp_json_encode( ProCatalog::data() ) . ';', 378 'before' 379 ); 380 375 381 wp_enqueue_style( 376 382 'noah-shop-builder-admin-dashboard', -
noah-shop-builder-for-woocommerce/trunk/includes/Config/BlockList.php
r3800774 r3801491 19 19 * `category` (block category slugs, see Blocks\Categories), `status` (default status), 20 20 * an optional `badge` list (`new`, `beta`; an add-on badges its own blocks, e.g. `pro`) 21 * an d, for blocks outside this plugin's22 * b uild folder, `dir` (absolute path of the built block folder).21 * an optional `doc` (documentation URL; free blocks get theirs from DOC_PAGES) and, for 22 * blocks outside this plugin's build folder, `dir` (absolute path of the built block folder). 23 23 */ 24 24 class BlockList extends ConfigList { 25 26 /** 27 * Base URL of the documentation site. 28 * 29 * @since 2.1.1 30 */ 31 const DOCS_BASE = 'https://wpshark.xyz/docs/'; 32 33 /** 34 * Documentation pages of the free blocks: block slug => doc page slug. 35 * Blocks without a published doc are left out and show no link. 36 * 37 * @since 2.1.1 38 */ 39 const DOC_PAGES = array( 40 'product-title' => 'product-title-block', 41 'product-price' => 'product-price-block', 42 'store-notices' => 'store-notices-block', 43 'product-image' => 'product-image-block', 44 'product-excerpt' => 'product-excerpt-block', 45 'product-description' => 'product-description-block', 46 'product-meta' => 'product-meta-block', 47 'product-sku' => 'product-sku-block', 48 'product-stock' => 'product-stock-block', 49 'product-categories' => 'product-categories-block', 50 'product-tags' => 'product-tags-block', 51 'product-rating' => 'product-rating-block', 52 'product-review' => 'product-reviews-block', 53 'product-share' => 'product-share-block', 54 'product-tabs' => 'product-tabs-block', 55 'product-additional-information' => 'additional-information-block', 56 'add-to-cart' => 'add-to-cart-block', 57 'breadcrumbs' => 'breadcrumbs-block', 58 'related-products' => 'related-products-block', 59 'upsells' => 'upsells-block', 60 'archive-products' => 'archive-products-block', 61 'archive-title' => 'archive-title-block', 62 'archive-description' => 'archive-description-block', 63 'archive-result-count' => 'archive-result-count-block', 64 'archive-pagination' => 'archive-pagination-block', 65 'order-by' => 'order-by-filter-block', 66 'products' => 'products-block', 67 'cart-table' => 'cart-table-block', 68 'cart-totals' => 'cart-total-block', 69 'cross-sells' => 'cross-sell-block', 70 'empty-cart-message' => 'empty-cart-message-block', 71 'return-to-shop' => 'return-to-shop-block', 72 'checkout-form' => 'checkout-form-block', 73 'checkout-billing' => 'checkout-billing-block', 74 'checkout-shipping' => 'checkout-shipping-block', 75 'checkout-additional' => 'checkout-additional-block', 76 'checkout-order-notes' => 'order-notes-block', 77 'checkout-order-review' => 'order-review-block', 78 'checkout-payment' => 'checkout-payment-block', 79 'checkout-coupon' => 'checkout-coupon-block', 80 'checkout-login' => 'checkout-login-block', 81 'checkout-shipping-methods' => 'checkout-shipping-methods-block', 82 'wishlist-button' => 'wishlist-button-block', 83 'wishlist-table' => 'wishlist-table-block', 84 'wishlist-counter' => 'wishlist-counter-block', 85 ); 25 86 26 87 /** … … 30 91 */ 31 92 protected $type = 'blocks'; 93 94 /** 95 * Documentation URL of a block: its own `doc`, else its DOC_PAGES entry. 96 * 97 * @param array<string, mixed> $item Block list item. 98 * @return string URL, or an empty string when the block has no doc. 99 * @since 2.1.1 100 */ 101 public static function doc_url( $item ) { 102 $slug = (string) ( $item['slug'] ?? '' ); 103 $url = (string) ( $item['doc'] ?? '' ); 104 105 if ( '' === $url && isset( self::DOC_PAGES[ $slug ] ) ) { 106 $url = self::DOCS_BASE . self::DOC_PAGES[ $slug ] . '/'; 107 } 108 109 /** 110 * Filters a block's documentation URL on the Blocks dashboard page. 111 * 112 * @since 2.1.1 113 * 114 * @param string $url URL, or an empty string for no link. 115 * @param string $slug Block slug. 116 * @param array<string, mixed> $item Block list item. 117 */ 118 return (string) apply_filters( 'noah_shop_builder/blocks/doc_url', $url, $slug, $item ); 119 } 32 120 33 121 /** -
noah-shop-builder-for-woocommerce/trunk/includes/Core/API.php
r3782288 r3801491 122 122 123 123 /** 124 * A block list item without server-side keys (an add-on block's `dir` path). 124 * A block list item without server-side keys (an add-on block's `dir` path), with 125 * its documentation URL in `doc` (empty when the block has no doc). 125 126 * 126 127 * @param array<string, mixed> $item Block list item. … … 130 131 public function public_item( $item ) { 131 132 unset( $item['dir'] ); 133 134 $item['doc'] = esc_url_raw( BlockList::doc_url( $item ) ); 132 135 133 136 return $item; … … 294 297 ), 295 298 'required' => array( 'type' => 'boolean' ), 299 'doc' => array( 'type' => 'string' ), 296 300 ), 297 301 ), -
noah-shop-builder-for-woocommerce/trunk/languages/noah-shop-builder-for-woocommerce.pot
r3800774 r3801491 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Noah Shop Builder for WooCommerce 2.1. 0\n"5 "Project-Id-Version: Noah Shop Builder for WooCommerce 2.1.1\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/noah-shop-builder-for-woocommerce\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2026-11-1 3T16:10:07+01:00\n"12 "POT-Creation-Date: 2026-11-14T08:02:50+01:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" … … 52 52 #: includes/Admin/Admin.php:115 53 53 #: includes/Admin/Admin.php:116 54 #: src/admin/blocks/index.js:2 154 #: src/admin/blocks/index.js:26 55 55 #: src/admin/dashboard/components/Header.js:28 56 #: src/admin/modules/index.js:3 3056 #: src/admin/modules/index.js:356 57 57 #: src/admin/welcome/index.js:197 58 58 msgid "Modules" … … 71 71 #: includes/Admin/Admin.php:132 72 72 #: src/admin/dashboard/components/Header.js:36 73 #: src/admin/modules/index.js: 39073 #: src/admin/modules/index.js:416 74 74 #: src/admin/settings/index.js:53 75 75 #: src/blocks/account-navigation/edit.js:63 … … 125 125 msgstr "" 126 126 127 #: includes/Admin/ProCatalog.php:97 128 msgid "Product Comparison" 129 msgstr "" 130 131 #: includes/Admin/ProCatalog.php:98 132 msgid "Compare products side by side: price, rating, stock, attributes and more, with a floating compare bar." 133 msgstr "" 134 135 #: includes/Admin/ProCatalog.php:106 136 msgid "Use WooCommerce’s wishlist" 137 msgstr "" 138 139 #: includes/Admin/ProCatalog.php:110 140 msgid "Page cache support" 141 msgstr "" 142 143 #: includes/Admin/ProCatalog.php:116 144 msgid "Swatches on product cards" 145 msgstr "" 146 147 #: includes/Admin/ProCatalog.php:120 148 msgid "Availability states" 149 msgstr "" 150 151 #: includes/Admin/ProCatalog.php:124 152 msgid "Swatches in Quick View" 153 msgstr "" 154 155 #: includes/Admin/ProCatalog.php:155 156 msgid "Stock Progress Bar" 157 msgstr "" 158 159 #: includes/Admin/ProCatalog.php:156 160 msgid "Deal Countdown" 161 msgstr "" 162 163 #: includes/Admin/ProCatalog.php:157 164 msgid "Sticky Add to Cart" 165 msgstr "" 166 167 #: includes/Admin/ProCatalog.php:158 168 msgid "Size Chart" 169 msgstr "" 170 171 #: includes/Admin/ProCatalog.php:159 172 msgid "Products Per Page" 173 msgstr "" 174 175 #: includes/Admin/ProCatalog.php:160 176 msgid "Archive View Mode" 177 msgstr "" 178 179 #: includes/Admin/ProCatalog.php:161 180 msgid "Recently Viewed" 181 msgstr "" 182 183 #: includes/Admin/ProCatalog.php:162 184 msgid "Deal Products" 185 msgstr "" 186 187 #: includes/Admin/ProCatalog.php:163 188 msgid "Flash Sale Products" 189 msgstr "" 190 191 #: includes/Admin/ProCatalog.php:164 192 msgid "Advanced Search" 193 msgstr "" 194 195 #: includes/Admin/ProCatalog.php:165 196 msgid "Product Category List" 197 msgstr "" 198 199 #: includes/Admin/ProCatalog.php:166 200 msgid "Product Filters" 201 msgstr "" 202 203 #: includes/Admin/ProCatalog.php:167 204 msgid "Active Filters" 205 msgstr "" 206 207 #: includes/Admin/ProCatalog.php:168 208 msgid "Reset Filters" 209 msgstr "" 210 211 #: includes/Admin/ProCatalog.php:169 212 msgid "Stock Status Filter" 213 msgstr "" 214 215 #: includes/Admin/ProCatalog.php:170 216 msgid "Price Filter" 217 msgstr "" 218 219 #: includes/Admin/ProCatalog.php:171 220 msgid "Attribute Filter" 221 msgstr "" 222 223 #: includes/Admin/ProCatalog.php:172 224 msgid "Rating Filter" 225 msgstr "" 226 227 #: includes/Admin/ProCatalog.php:173 228 msgid "Category Filter" 229 msgstr "" 230 231 #: includes/Admin/ProCatalog.php:174 232 msgid "Side Cart" 233 msgstr "" 234 235 #: includes/Admin/ProCatalog.php:175 236 msgid "Free Shipping Bar" 237 msgstr "" 238 239 #: includes/Admin/ProCatalog.php:176 240 msgid "Customer Details" 241 msgstr "" 242 243 #: includes/Admin/ProCatalog.php:177 244 msgid "Payment Instructions" 245 msgstr "" 246 247 #: includes/Admin/ProCatalog.php:178 248 msgid "Login / Register" 249 msgstr "" 250 251 #: includes/Admin/ProCatalog.php:179 252 msgid "Account Dashboard" 253 msgstr "" 254 255 #: includes/Admin/ProCatalog.php:180 256 msgid "Account Orders" 257 msgstr "" 258 259 #: includes/Admin/ProCatalog.php:181 260 msgid "Account Downloads" 261 msgstr "" 262 263 #: includes/Admin/ProCatalog.php:182 264 msgid "Account Addresses" 265 msgstr "" 266 267 #: includes/Admin/ProCatalog.php:183 268 msgid "Account Details" 269 msgstr "" 270 271 #: includes/Admin/ProCatalog.php:184 272 msgid "Compare Button" 273 msgstr "" 274 275 #: includes/Admin/ProCatalog.php:185 276 msgid "Compare Bar" 277 msgstr "" 278 279 #: includes/Admin/ProCatalog.php:186 280 msgid "Compare Table" 281 msgstr "" 282 127 283 #: includes/Blocks/CartTable.php:78 128 284 #: includes/Modules/Wishlist/WishlistTable.php:82 … … 224 380 #: includes/Config/TemplateTypes.php:92 225 381 #: patterns/checkout-standard.php:16 226 #: src/admin/blocks/index.js: 19382 #: src/admin/blocks/index.js:24 227 383 #: src/admin/welcome/index.js:43 228 384 msgid "Checkout" … … 327 483 328 484 #: includes/Config/TemplateTypes.php:62 329 #: src/admin/blocks/index.js: 16485 #: src/admin/blocks/index.js:21 330 486 #: src/admin/welcome/index.js:16 331 487 msgid "Single Product" … … 347 503 348 504 #: includes/Config/TemplateTypes.php:82 349 #: src/admin/blocks/index.js: 18505 #: src/admin/blocks/index.js:23 350 506 msgid "Cart" 351 507 msgstr "" … … 360 516 361 517 #: includes/Config/TemplateTypes.php:102 362 #: src/admin/blocks/index.js:2 0518 #: src/admin/blocks/index.js:25 363 519 msgid "My Account" 364 520 msgstr "" … … 540 696 541 697 #: includes/Modules/Swatches/SwatchesModule.php:38 542 #: src/admin/modules/index.js: 49698 #: src/admin/modules/index.js:61 543 699 msgid "Variation Swatches" 544 700 msgstr "" 545 701 546 702 #: includes/Modules/Swatches/SwatchesModule.php:39 547 #: src/admin/modules/index.js: 50703 #: src/admin/modules/index.js:62 548 704 msgid "Replace variation dropdowns on product pages with color, image and label swatches that work with the keyboard." 549 705 msgstr "" … … 554 710 #: includes/Modules/Wishlist/WishlistModule.php:80 555 711 #: includes/Modules/Wishlist/WishlistModule.php:275 556 #: src/admin/modules/index.js: 40712 #: src/admin/modules/index.js:52 557 713 msgid "Wishlist" 558 714 msgstr "" … … 581 737 582 738 #: includes/Modules/Wishlist/WishlistModule.php:81 583 #: src/admin/modules/index.js: 41739 #: src/admin/modules/index.js:53 584 740 msgid "Shoppers save products from cards and product pages to a wishlist. Works for guests and logged-in customers, with a wishlist page block." 585 741 msgstr "" … … 1263 1419 msgstr "" 1264 1420 1265 #: src/admin/blocks/index.js: 171421 #: src/admin/blocks/index.js:22 1266 1422 #: src/admin/welcome/index.js:25 1267 1423 msgid "Shop & Archive" 1268 1424 msgstr "" 1269 1425 1270 #: src/admin/blocks/index.js: 481426 #: src/admin/blocks/index.js:53 1271 1427 msgid "Loading blocks…" 1272 1428 msgstr "" 1273 1429 1274 #: src/admin/blocks/index.js: 861430 #: src/admin/blocks/index.js:105 1275 1431 msgid "Disable/Enable Blocks" 1276 1432 msgstr "" 1277 1433 1278 #: src/admin/blocks/index.js: 921434 #: src/admin/blocks/index.js:111 1279 1435 msgid "Turn blocks on or off. Changes are saved automatically." 1280 1436 msgstr "" 1281 1437 1282 #: src/admin/blocks/index.js:1 021438 #: src/admin/blocks/index.js:121 1283 1439 msgid "Enable all" 1284 1440 msgstr "" 1285 1441 1286 #: src/admin/blocks/index.js:134 1442 #: src/admin/blocks/index.js:158 1443 msgid "Documentation" 1444 msgstr "" 1445 1446 #. translators: %s: block title. 1447 #: src/admin/blocks/index.js:165 1448 #, js-format 1449 msgid "for %s (opens in a new tab)" 1450 msgstr "" 1451 1452 #: src/admin/blocks/index.js:191 1287 1453 msgid "Required" 1288 1454 msgstr "" 1289 1455 1290 #: src/admin/modules/index.js:93 1456 #: src/admin/dashboard/components/ProLock.js:47 1457 msgid "Pro" 1458 msgstr "" 1459 1460 #: src/admin/dashboard/components/ProLock.js:76 1461 msgid "Upgrade" 1462 msgstr "" 1463 1464 #. translators: %s: name of a Pro block, module or setting. 1465 #: src/admin/dashboard/components/ProLock.js:80 1466 #, js-format 1467 msgid "to unlock %s (opens in a new tab)" 1468 msgstr "" 1469 1470 #: src/admin/modules/index.js:105 1291 1471 msgid "— None —" 1292 1472 msgstr "" 1293 1473 1294 1474 #. translators: %d: page ID 1295 #: src/admin/modules/index.js:1 011475 #: src/admin/modules/index.js:113 1296 1476 #, js-format 1297 1477 msgid "#%d (no title)" … … 1299 1479 1300 1480 #. translators: %s: module name. 1301 #: src/admin/modules/index.js:2 321481 #: src/admin/modules/index.js:244 1302 1482 #, js-format 1303 1483 msgid "%s settings" 1304 1484 msgstr "" 1305 1485 1306 #: src/admin/modules/index.js:2 561486 #: src/admin/modules/index.js:268 1307 1487 #: src/admin/templates/index.js:960 1308 1488 #: src/admin/templates/NewTemplateModal.js:529 … … 1310 1490 msgstr "" 1311 1491 1312 #: src/admin/modules/index.js:2 641492 #: src/admin/modules/index.js:276 1313 1493 msgid "Save" 1314 1494 msgstr "" 1315 1495 1316 #: src/admin/modules/index.js:3 181496 #: src/admin/modules/index.js:344 1317 1497 msgid "Loading modules…" 1318 1498 msgstr "" 1319 1499 1320 #: src/admin/modules/index.js:3 321500 #: src/admin/modules/index.js:358 1321 1501 msgid "Modules add shopping features across your store. Turn each one on or off here; a module that is off loads no code at all." 1322 1502 msgstr "" 1323 1503 1324 #: src/admin/modules/index.js:406 1504 #: src/admin/modules/index.js:444 1505 msgid "Unlock with Pro" 1506 msgstr "" 1507 1508 #: src/admin/modules/index.js:485 1325 1509 msgid "Coming soon" 1326 1510 msgstr "" 1327 1511 1328 #: src/admin/modules/index.js: 4231512 #: src/admin/modules/index.js:502 1329 1513 msgid "Upcoming" 1330 1514 msgstr "" 1331 1515 1332 #: src/admin/modules/index.js: 4431516 #: src/admin/modules/index.js:522 1333 1517 msgid "These modules are in development and will arrive in a future update. Until then, build your store pages with templates and blocks." 1334 1518 msgstr "" 1335 1519 1336 #: src/admin/modules/index.js: 4531520 #: src/admin/modules/index.js:532 1337 1521 msgid "Go to Templates" 1338 1522 msgstr "" 1339 1523 1340 #: src/admin/modules/index.js: 4621524 #: src/admin/modules/index.js:541 1341 1525 msgid "Go to Blocks" 1342 1526 msgstr "" -
noah-shop-builder-for-woocommerce/trunk/noah-shop-builder-for-woocommerce.php
r3800774 r3801491 7 7 * Requires Plugins: woocommerce 8 8 * Author: Iqbal Hossain 9 * Version: 2.1. 09 * Version: 2.1.1 10 10 * License: GPL-3.0-or-later 11 11 * License URI: https://www.gnu.org/licenses/gpl-3.0.html … … 20 20 defined( 'ABSPATH' ) || exit; 21 21 22 define( 'NOAH_SHOP_BUILDER_VERSION', '2.1. 0' );22 define( 'NOAH_SHOP_BUILDER_VERSION', '2.1.1' ); 23 23 define( 'NOAH_SHOP_BUILDER_FILE', __FILE__ ); 24 24 define( 'NOAH_SHOP_BUILDER_URL', plugin_dir_url( __FILE__ ) ); -
noah-shop-builder-for-woocommerce/trunk/package.json
r3800774 r3801491 1 1 { 2 2 "name": "noah-shop-builder-for-woocommerce", 3 "version": "2.1. 0",3 "version": "2.1.1", 4 4 "description": "A powerful WooCommerce store builder for Gutenberg with drag-and-drop blocks, ready-made templates, and easy customization.", 5 5 "author": "Iqbal Hossain", -
noah-shop-builder-for-woocommerce/trunk/readme.txt
r3800774 r3801491 1 === Noah Shop Builder for WooCommerce ===1 === Noah Shop Builder for WooCommerce – Gutenberg Woo Builder, Woo Blocks & Woo Store Templates === 2 2 Contributors: iqbal1hossain 3 Tags: WooCommerce, Gutenberg blocks, shop builder, product display, WooCommerce templates3 Tags: gutenberg woocommerce, woocommerce blocks, WooCommerce Builder, Variation Swatches, Quick View 4 4 Requires at least: 6.9 5 5 Tested up to: 7.1 6 6 Requires PHP: 7.4 7 Stable tag: 2.1. 07 Stable tag: 2.1.1 8 8 License: GPLv3 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-3.0.html 10 10 11 Design WooCommerce product, shop, cart, checkout, thank-you and account pages with blocks. Quick View, Wishlist and Variation Swatches included.11 Gutenberg Woo builder: design WooCommerce product, shop, cart, checkout and account pages with blocks. Quick View, Wishlist and Variation Swatches. 12 12 13 13 == Description == 14 14 15 15 **Noah Shop Builder for WooCommerce** is a comprehensive WooCommerce page builder designed specifically for the WordPress Gutenberg editor. Build beautiful, conversion-optimized online stores without writing a single line of code. 16 17 Noah is a **Gutenberg Woo builder** and **Woo shop builder** in one plugin. Use **Woo blocks** to design every page of your **Woo store** – single product, shop, product archive, cart, empty cart, checkout, thank-you and My Account – right inside the block editor. No Elementor or other page builder needed: it is a native **Gutenberg WooCommerce builder** with 50 WooCommerce blocks, starter templates and built-in **Quick View**, **Wishlist** and **Variation Swatches** modules. 18 19 = Why Choose Noah Woo Builder? = 20 21 * **Gutenberg WooCommerce Builder** - Build your whole Woo store with the WordPress block editor you already know. 22 * **Woo Shop Builder** - Design the shop page, category pages and product archives with sortable product grids and lists. 23 * **Woo Product Page Builder** - Build custom single product pages with gallery, price, add to cart, tabs, reviews and related products. 24 * **Woo Cart & Checkout Builder** - Lay out the cart, empty cart and checkout pages with blocks. 25 * **WooCommerce Blocks for Any Page** - Show newest, best selling, on sale, featured or top rated products anywhere. 26 * **Variation Swatches** - Turn variation dropdowns into color, image or label swatches. 27 * **Quick View** - Let shoppers open a product in a popup without leaving the shop page. 28 * **Wishlist** - Let shoppers save products for later, as guests or logged-in customers. 29 * **Fast and Lightweight** - Built on native blocks, with no extra page builder loaded on your store. 30 * **Free** - All core Woo builder features are free. 16 31 17 32 = Key Features = … … 51 66 * **Store Notices** - WooCommerce messages such as "Added to cart", coupon results and errors. 52 67 68 **Pro** ([Upgrade](https://wpshark.xyz/noah/pricing/)) 69 70 * **Stock Progress Bar** - Shows how much of the stock has sold. For products that manage stock. 71 * **Deal Countdown** - Time left on the product's sale, from its sale end date. 72 * **Sticky Add to Cart** - A bar with the product and its add to cart button that stays on screen once the shopper scrolls past the form. 73 * **Buy Now Button** - An option on the Add To Cart block that adds the product and goes straight to checkout. 74 * **Size Chart** - The product's size chart from Products → Size Charts, in the page or behind a "Size guide" button in a popup. 75 * **Product Tabs Layouts** - Accordion and stacked layouts for the Product Tabs block. 76 53 77 = Shop & Archive Blocks = 54 78 … … 61 85 * **Order By Filter** - Lets shoppers sort products by popularity, rating, date or price. 62 86 87 **Pro** ([Upgrade](https://wpshark.xyz/noah/pricing/)) 88 89 * **Product Filters** - Lets shoppers narrow the products without a page reload, with product counts and a shareable URL. Holds the filter blocks below. 90 * **Category Filter** - Pick one or more product categories. 91 * **Price Filter** - Set a price range with a slider or by typing it. 92 * **Attribute Filter** - Filter by an attribute such as color or size, as a list, swatches or a dropdown. 93 * **Rating Filter** - Show only products rated at least a number of stars. 94 * **Stock Status Filter** - Show only products in stock, on backorder or out of stock. 95 * **Active Filters** - The filters the shopper picked, each with a remove button. 96 * **Reset Filters** - A button that turns every filter off. 97 * **Products Per Page** - Lets shoppers choose how many products the page shows. 98 * **Archive View Mode** - Grid and list buttons that switch the product view without reloading. 99 * **Advanced Search** - A product search box that lists matching products while the shopper types, with an optional category menu. 100 * **Product Category List** - Your product categories with images and product counts, as a grid, a list or a carousel. 101 * **Recently Viewed** - The products a shopper looked at earlier in their visit. 102 * **Deal Products** - Products on sale with an end date, soonest first, each with a countdown. 103 * **Flash Sale Products** - Products whose sale falls inside the campaign dates, with a countdown to the end. 104 * **Product Card Layouts** - Overlay and flip card layouts, a carousel display for product lists and swatches on cards. 105 63 106 = Cart Blocks = 64 107 … … 68 111 * **Empty Cart Message** - The "Your cart is currently empty." message for the empty cart page. 69 112 * **Return To Shop** - A button that takes shoppers back to the shop page. 113 114 **Pro** ([Upgrade](https://wpshark.xyz/noah/pricing/)) 115 116 * **Side Cart** - A cart icon with the item count that opens a cart drawer: change quantities, remove items and go to checkout without leaving the page. 117 * **Free Shipping Bar** - "Add $12 more to get free shipping!" with a progress bar, for the cart, product pages and headers. 70 118 71 119 = Checkout Blocks = … … 88 136 * **Order Details** - The ordered items, totals and downloads, with the payment method's instructions and the addresses. 89 137 138 **Pro** ([Upgrade](https://wpshark.xyz/noah/pricing/)) 139 140 * **Customer Details** - The billing and shipping addresses, shown to the customer who placed the order. 141 * **Payment Instructions** - What the payment method shows after checkout, such as bank transfer details. 142 90 143 = My Account Blocks = 91 144 92 145 * **Account Navigation** - The account menu: dashboard, orders, addresses, account details and more. 93 146 * **Account Content** - The account page being visited, including pages added by other plugins. 147 148 **Pro** ([Upgrade](https://wpshark.xyz/noah/pricing/)) 149 150 * **Login / Register** - The login form and, when your store allows it, the registration form. 151 * **Account Dashboard** - The welcome text and links to the other account pages. 152 * **Account Orders** - The customer's orders, with pagination. 153 * **Account Downloads** - The customer's downloadable products. 154 * **Account Addresses** - The billing and shipping addresses and the form to edit them. 155 * **Account Details** - The form for the customer's name, email and password. 156 * **Horizontal Account Navigation** - A horizontal layout for the Account Navigation block. 94 157 95 158 = Modules = … … 106 169 Module buttons appear on the product cards of the Archive Products, Products, Related Products, Upsells and Cross-Sell blocks. 107 170 171 **Pro** ([Upgrade](https://wpshark.xyz/noah/pricing/)) 172 173 * **Product Comparison** - Shoppers compare products side by side: price, rating, stock, attributes and more. 174 * **Compare Button** - Adds the product to the comparison or removes it. 175 * **Compare Bar** - A floating bar with the products to compare. 176 * **Compare Table** - The products side by side, with a "Highlight differences" switch. 177 * **Variation Swatches Extras** - Crossed-out unavailable options and swatches in Quick View. 178 * **Wishlist Extras** - WooCommerce wishlist integration and wishlist support for cached pages. 179 * **Module Buttons on WooCommerce Grids** - Quick View, Wishlist and Compare buttons on WooCommerce's own product grids. 180 108 181 = Starter Templates = 109 182 … … 113 186 114 187 * **Single Page** - Gallery beside the product details, with tabs and related products below. 188 * **Stock Progress Bar** (Pro) - Large gallery with a buy box that shows the stock left and the time left on a sale, plus upsells. 115 189 116 190 **Shop** 117 191 118 192 * **Shop** - Shop title and intro above a sortable three-column product grid. 193 * **Shop with Filters** (Pro) - Product filters in a sidebar beside the product grid; the grid updates without a page reload. 194 * **Shop with Categories** (Pro) - Centered intro and category list, then a four-column product grid. 195 * **Shop Flip** (Pro) - Four-column grid whose cards show the second gallery image on hover, with a grid/list switch. 119 196 120 197 **Product Archive** … … 122 199 * **Archive** - Category title and description above a sortable product grid. 123 200 * **Category with Sidebar** - A category list in a sidebar next to the product grid. 201 * **Category with Filters** (Pro) - Product filters in a sidebar beside the category's products. 124 202 125 203 **Cart** … … 146 224 147 225 * **Thank You Note** - A short, centered thank-you with the order summary and a keep-shopping button. 226 * **Order Confirmation** (Pro) - Order status, summary, totals, downloads and addresses. 148 227 149 228 **My Account** 150 229 151 230 * **Classic Account** - Account navigation beside the account content, with a page heading. 231 * **Account with Help Box** (Pro) - Account content with a side box for help and a link back to the shop. 232 233 = Noah Shop Builder Pro = 234 235 [Noah Shop Builder Pro](https://wpshark.xyz/noah/pricing/) is an add-on that adds the blocks, layouts, modules and starter designs marked **Pro** above, plus template export and import (move your templates to another site). Everything you build with the free plugin keeps working with or without Pro. 236 237 👉 [Upgrade to Noah Shop Builder Pro](https://wpshark.xyz/noah/pricing/) 238 239 = Build Your Woo Store in Minutes = 240 241 1. Install Noah Shop Builder and WooCommerce. 242 2. Go to Noah Shop Builder → Templates and create a Shop, Single Product, Cart or Checkout template. 243 3. Pick a starter design or start blank, then add Woo blocks from the block inserter. 244 4. Choose where the template shows and publish. Your Gutenberg Woo store is ready. 152 245 153 246 = How to Use = … … 174 267 * [Documentation](https://wpshark.xyz/docs/) - Comprehensive guides and tutorials 175 268 * [Video Tutorials](https://www.youtube.com/watch?v=9F8VXErJSgk&list=PLaYGPJWHiizY) - Step-by-step video guides 269 * [Upgrade to Pro](https://wpshark.xyz/noah/pricing/) - Plans and pricing for Noah Shop Builder Pro 176 270 177 271 = Privacy Policy = … … 220 314 Yes, Noah Shop Builder for WooCommerce requires WooCommerce to be installed and active. The plugin will show an admin notice if WooCommerce is not detected. 221 315 316 = Is Noah a Gutenberg WooCommerce builder? = 317 318 Yes. Noah is a Woo builder made for Gutenberg. Every shop, product, cart, checkout, thank-you and account page is built from WooCommerce blocks in the WordPress block editor. 319 320 = Do I need Elementor to build my Woo store? = 321 322 No. Noah works in the WordPress block editor, so you can build a complete Woo store without Elementor or any other page builder. 323 324 = What Woo blocks are included? = 325 326 50 WooCommerce blocks for single product, shop and archive, cart, checkout, thank-you, My Account and wishlist pages. See the block lists above. 327 328 = Can I build a custom WooCommerce shop page? = 329 330 Yes. Create a Shop or Product Archive template in Noah Shop Builder → Templates, then design it with the Archive Products, Order By Filter, Archive Pagination and other shop blocks. 331 332 = Does it include Variation Swatches and Quick View? = 333 334 Yes. Variation Swatches, Quick View and Wishlist are free modules. Turn each one on in Noah Shop Builder → Modules. 335 222 336 = Is this plugin compatible with my theme? = 223 337 … … 250 364 = Is the plugin free? = 251 365 252 Yes, Noah Shop Builder for WooCommerce is completely free. 366 Yes, Noah Shop Builder for WooCommerce is completely free, with 50 blocks, starter templates and the Quick View, Wishlist and Variation Swatches modules. 367 368 = What does the Pro add-on offer? = 369 370 Noah Shop Builder Pro adds Product Filters, Advanced Search, Side Cart, Free Shipping Bar, Sticky Add to Cart, Buy Now, Deal Countdown, Size Chart, Product Comparison, extra product card layouts, more My Account blocks, template export/import and more. See the "Noah Shop Builder Pro" section above, or compare plans on the [pricing page](https://wpshark.xyz/noah/pricing/). 253 371 254 372 = Where can I get support? = … … 270 388 271 389 == Changelog == 390 391 = 2.1.1 = 392 * New: The Blocks and Modules pages show the blocks and modules of Noah Shop Builder Pro as locked cards with an upgrade link. They show as usual once Pro is active. 393 * Improved: Block cards on the Blocks page link to each block's documentation. 394 * Improved: The readme lists the Pro blocks, modules and starter designs under each section. 272 395 273 396 = 2.1.0 = … … 320 443 == Upgrade Notice == 321 444 445 = 2.1.1 = 446 Block cards link to their documentation, and the Blocks and Modules pages show what Noah Shop Builder Pro adds. 447 322 448 = 2.1.0 = 323 449 Adds Order Received and My Account templates, the Variation Swatches module and an option to delete all data on uninstall. Sale badges now use your theme's colors. -
noah-shop-builder-for-woocommerce/trunk/src/admin/blocks/index.js
r3782288 r3801491 4 4 5 5 import { Fragment } from '@wordpress/element'; 6 import { __ } from '@wordpress/i18n';6 import { __, sprintf } from '@wordpress/i18n'; 7 7 import { Notice, ToggleControl, Spinner } from '@wordpress/components'; 8 8 import { useDispatch, useSelect } from '@wordpress/data'; 9 9 import { store as dashboardStore } from '../store'; 10 10 import Badges from '../dashboard/components/Badges'; 11 import { 12 getProCatalog, 13 LockedBadge, 14 UpgradeLink, 15 } from '../dashboard/components/ProLock'; 11 16 12 17 /** … … 72 77 return acc; 73 78 }, {} ); 79 80 // Pro blocks show locked in their category, after the available ones. 81 const proCatalog = getProCatalog(); 82 83 for ( const item of proCatalog.blocks ) { 84 if ( blocks[ item.slug ] ) { 85 continue; 86 } 87 const category = item.category || 'other'; 88 if ( ! groupedBlocks[ category ] ) { 89 groupedBlocks[ category ] = []; 90 } 91 groupedBlocks[ category ].push( { ...item, locked: true } ); 92 } 74 93 75 94 return ( … … 117 136 <div className="blocks-grid"> 118 137 { groupedBlocks[ category ].map( ( block ) => ( 119 <div key={ block.slug } className="block-card"> 138 <div 139 key={ block.slug } 140 className={ `block-card${ 141 block.locked ? ' is-locked' : '' 142 }` } 143 > 120 144 <div className="block-info"> 121 145 <h3>{ block.title }</h3> 122 <Badges badges={ block.badge } /> 146 { block.locked ? ( 147 <LockedBadge /> 148 ) : ( 149 <Badges badges={ block.badge } /> 150 ) } 151 { block.doc && ( 152 <a 153 className="block-doc-link" 154 href={ block.doc } 155 target="_blank" 156 rel="noopener noreferrer" 157 > 158 { __( 159 'Documentation', 160 'noah-shop-builder-for-woocommerce' 161 ) } 162 <span className="screen-reader-text"> 163 { sprintf( 164 /* translators: %s: block title. */ 165 __( 166 'for %s (opens in a new tab)', 167 'noah-shop-builder-for-woocommerce' 168 ), 169 block.title 170 ) } 171 </span> 172 </a> 173 ) } 123 174 </div> 124 <ToggleControl 125 __nextHasNoMarginBottom 126 label={ 127 // The title shows on the card; screen readers still get it. 128 <span className="screen-reader-text"> 129 { block.title } 130 </span> 131 } 132 help={ 133 block.required 134 ? __( 135 'Required', 136 'noah-shop-builder-for-woocommerce' 137 ) 138 : undefined 139 } 140 checked={ block.status === 'active' } 141 disabled={ block.required } 142 onChange={ ( checked ) => 143 toggleBlock( block.slug, checked ) 144 } 145 /> 175 { block.locked ? ( 176 <UpgradeLink 177 url={ proCatalog.url } 178 title={ block.title } 179 /> 180 ) : ( 181 <ToggleControl 182 __nextHasNoMarginBottom 183 label={ 184 // The title shows on the card; screen readers still get it. 185 <span className="screen-reader-text"> 186 { block.title } 187 </span> 188 } 189 help={ 190 block.required 191 ? __( 192 'Required', 193 'noah-shop-builder-for-woocommerce' 194 ) 195 : undefined 196 } 197 checked={ 198 block.status === 'active' 199 } 200 disabled={ block.required } 201 onChange={ ( checked ) => 202 toggleBlock( 203 block.slug, 204 checked 205 ) 206 } 207 /> 208 ) } 146 209 </div> 147 210 ) ) } -
noah-shop-builder-for-woocommerce/trunk/src/admin/dashboard/style.scss
r3800774 r3801491 270 270 } 271 271 272 .block-doc-link { 273 display: inline-flex; 274 align-items: center; 275 gap: 4px; 276 margin-top: 8px; 277 margin-left: 12px; 278 font-size: 13px; 279 color: #2271b1; 280 text-decoration: none; 281 282 &::after { 283 content: "\2197"; 284 font-size: 11px; 285 } 286 287 &:hover, 288 &:focus { 289 color: #135e96; 290 text-decoration: underline; 291 } 292 } 293 294 // No badge before it: line up with the title. 295 h3 + .block-doc-link { 296 margin-left: 0; 297 } 272 298 } 273 299 … … 434 460 color: #f59e0b; 435 461 } 462 463 // Locked Pro item (ProLock.js). 464 .badge-locked { 465 display: inline-flex; 466 align-items: center; 467 gap: 3px; 468 background: #f3e8ff; 469 color: #6b21a8; 470 471 svg { 472 fill: currentcolor; 473 } 474 } 475 } 476 477 // Link to the pricing page on a locked Pro item (ProLock.js). 478 .noah-upgrade-link { 479 display: inline-flex; 480 align-items: center; 481 gap: 4px; 482 flex-shrink: 0; 483 font-size: 13px; 484 font-weight: 600; 485 color: #6b21a8; 486 text-decoration: none; 487 488 svg { 489 fill: currentcolor; 490 } 491 492 &.is-button { 493 padding: 5px 12px 5px 9px; 494 background: #f3e8ff; 495 border: 1px solid #e9d5ff; 496 border-radius: 999px; 497 498 &:hover, 499 &:focus { 500 background: #6b21a8; 501 border-color: #6b21a8; 502 color: #fff; 503 } 504 } 505 506 &.is-text { 507 &:hover, 508 &:focus { 509 color: #4c1d95; 510 text-decoration: underline; 511 } 512 } 513 514 &:focus { 515 outline: 2px solid var(--wp-admin-theme-color, #3858e9); 516 outline-offset: 2px; 517 box-shadow: none; 518 } 519 } 520 521 .noah-shop-builder-blocks .block-card.is-locked, 522 .noah-shop-builder-modules .module-card.is-locked { 523 background: #fcfaff; 524 border-style: dashed; 525 526 &:hover { 527 border-color: #c084fc; 528 } 529 } 530 531 .noah-shop-builder-modules .module-card-locked { 532 margin-top: 16px; 533 padding-top: 12px; 534 border-top: 1px dashed #dcdcde; 535 536 ul { 537 margin: 0 0 8px; 538 padding: 0; 539 list-style: none; 540 } 541 542 li { 543 display: flex; 544 align-items: center; 545 gap: 6px; 546 margin: 0 0 4px; 547 color: #646970; 548 549 svg { 550 fill: #6b21a8; 551 } 552 } 436 553 } 437 554 -
noah-shop-builder-for-woocommerce/trunk/src/admin/modules/index.js
r3800774 r3801491 19 19 import { decodeEntities } from '@wordpress/html-entities'; 20 20 import { applyFilters } from '@wordpress/hooks'; 21 import { plugins, seen, starFilled, swatch, table } from '@wordpress/icons'; 21 import { 22 lock, 23 plugins, 24 seen, 25 starFilled, 26 swatch, 27 table, 28 } from '@wordpress/icons'; 22 29 import { addQueryArgs } from '@wordpress/url'; 23 30 import { store as dashboardStore } from '../store'; 24 31 import Badges from '../dashboard/components/Badges'; 32 import { 33 getProCatalog, 34 LockedBadge, 35 UpgradeLink, 36 } from '../dashboard/components/ProLock'; 25 37 26 38 /** … … 303 315 const planned = Array.isArray( filtered ) ? filtered : upcomingModules; 304 316 const registered = Object.values( modules ); 305 const upcoming = planned.filter( ( item ) => ! modules[ item.slug ] ); 317 const proCatalog = getProCatalog(); 318 const locked = proCatalog.modules.filter( 319 ( item ) => ! modules[ item.slug ] 320 ); 321 const upcoming = planned.filter( 322 ( item ) => 323 ! modules[ item.slug ] && 324 ! locked.some( ( lockedItem ) => lockedItem.slug === item.slug ) 325 ); 326 // Pro settings of a free module that aren't available (no Pro): shown locked. 327 const lockedFeatures = ( module ) => 328 ( proCatalog.features[ module.slug ] || [] ).filter( 329 ( feature ) => 330 ! module.fields.some( ( field ) => field.key === feature.key ) 331 ); 306 332 const iconOf = ( module ) => 307 333 planned.find( ( item ) => item.slug === module.slug )?.icon || … … 342 368 ) } 343 369 344 { registered.length > 0&& (370 { ( registered.length > 0 || locked.length > 0 ) && ( 345 371 <div className="modules-grid"> 346 372 { registered.map( ( module ) => { … … 394 420 </Button> 395 421 ) } 422 { lockedFeatures( module ).length > 0 && ( 423 <div className="module-card-locked"> 424 <ul> 425 { lockedFeatures( module ).map( 426 ( feature ) => ( 427 <li key={ feature.key }> 428 <Icon 429 icon={ lock } 430 size={ 14 } 431 /> 432 { feature.label } 433 </li> 434 ) 435 ) } 436 </ul> 437 <UpgradeLink 438 url={ proCatalog.url } 439 title={ lockedFeatures( module ) 440 .map( 441 ( feature ) => feature.label 442 ) 443 .join( ', ' ) } 444 label={ __( 445 'Unlock with Pro', 446 'noah-shop-builder-for-woocommerce' 447 ) } 448 variant="text" 449 /> 450 </div> 451 ) } 396 452 </div> 397 453 ); 398 454 } ) } 455 { locked.map( ( module ) => ( 456 <div 457 key={ module.slug } 458 className="module-card is-locked" 459 > 460 <div className="module-card-header"> 461 <span className="module-icon"> 462 <Icon 463 icon={ ICONS[ module.icon ] || plugins } 464 size={ 24 } 465 /> 466 </span> 467 <UpgradeLink 468 url={ proCatalog.url } 469 title={ module.title } 470 /> 471 </div> 472 <h3> 473 { module.title } <LockedBadge /> 474 </h3> 475 <p>{ module.description }</p> 476 </div> 477 ) ) } 399 478 </div> 400 479 ) } -
noah-shop-builder-for-woocommerce/trunk/vendor/composer/autoload_classmap.php
r3800774 r3801491 10 10 'NoahShopBuilder\\Admin\\Admin' => $baseDir . '/includes/Admin/Admin.php', 11 11 'NoahShopBuilder\\Admin\\PluginLinks' => $baseDir . '/includes/Admin/PluginLinks.php', 12 'NoahShopBuilder\\Admin\\ProCatalog' => $baseDir . '/includes/Admin/ProCatalog.php', 12 13 'NoahShopBuilder\\Assets\\DynamicCss' => $baseDir . '/includes/Assets/DynamicCss.php', 13 14 'NoahShopBuilder\\Assets\\Manager' => $baseDir . '/includes/Assets/Manager.php', -
noah-shop-builder-for-woocommerce/trunk/vendor/composer/autoload_real.php
r3800774 r3801491 32 32 call_user_func(\Composer\Autoload\ComposerStaticInita2bd8db3214f3533eaef3d126cda274d::getInitializer($loader)); 33 33 34 $loader->setClassMapAuthoritative(true);35 34 $loader->register(true); 36 35 -
noah-shop-builder-for-woocommerce/trunk/vendor/composer/autoload_static.php
r3800774 r3801491 25 25 'NoahShopBuilder\\Admin\\Admin' => __DIR__ . '/../..' . '/includes/Admin/Admin.php', 26 26 'NoahShopBuilder\\Admin\\PluginLinks' => __DIR__ . '/../..' . '/includes/Admin/PluginLinks.php', 27 'NoahShopBuilder\\Admin\\ProCatalog' => __DIR__ . '/../..' . '/includes/Admin/ProCatalog.php', 27 28 'NoahShopBuilder\\Assets\\DynamicCss' => __DIR__ . '/../..' . '/includes/Assets/DynamicCss.php', 28 29 'NoahShopBuilder\\Assets\\Manager' => __DIR__ . '/../..' . '/includes/Assets/Manager.php',
Note:
See TracChangeset
for help on using the changeset viewer.