@mohasinac/appkit 4.57.0 → 4.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.build-stamp.json +4 -4
- package/dist/_internal/server/features/beys/data.d.ts +44 -0
- package/dist/_internal/server/features/beys/data.js +107 -0
- package/dist/_internal/server/features/beys/og.d.ts +42 -0
- package/dist/_internal/server/features/beys/og.js +89 -0
- package/dist/_internal/server/features/parts/data.js +3 -2
- package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
- package/dist/_internal/server/jobs/handlers/messages.js +1 -1
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +86 -0
- package/dist/_internal/shared/types/base-document.d.ts +1 -1
- package/dist/client.d.ts +2 -0
- package/dist/client.js +1 -0
- package/dist/constants/api-endpoints.d.ts +12 -0
- package/dist/constants/api-endpoints.js +10 -0
- package/dist/constants/field-names.d.ts +46 -0
- package/dist/constants/field-names.js +46 -0
- package/dist/constants/seed-meta.d.ts +113 -0
- package/dist/constants/seed-meta.js +91 -0
- package/dist/features/admin/components/AdminBeysView.d.ts +27 -0
- package/dist/features/admin/components/AdminBeysView.js +178 -0
- package/dist/features/admin/components/AdminPartsView.d.ts +27 -0
- package/dist/features/admin/components/AdminPartsView.js +160 -0
- package/dist/features/admin/components/OwnerQuickActions.d.ts +19 -2
- package/dist/features/admin/components/OwnerQuickActions.js +31 -3
- package/dist/features/admin/components/RecordOwnerQuickActions.d.ts +31 -0
- package/dist/features/admin/components/RecordOwnerQuickActions.js +128 -0
- package/dist/features/admin/components/ReferenceRecordEditor.d.ts +45 -0
- package/dist/features/admin/components/ReferenceRecordEditor.js +153 -0
- package/dist/features/admin/schemas/firestore.d.ts +1 -1
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +15 -2
- package/dist/features/auth/permissions/constants.d.ts +1 -1
- package/dist/features/auth/permissions/constants.js +12 -1
- package/dist/features/beys/components/BeyDetailPageView.d.ts +50 -0
- package/dist/features/beys/components/BeyDetailPageView.js +98 -0
- package/dist/features/beys/schemas/firestore.d.ts +417 -0
- package/dist/features/beys/schemas/firestore.js +65 -0
- package/dist/features/blog/components/BlogFeaturedCard.js +15 -2
- package/dist/features/blog/components/BlogPostView.js +2 -2
- package/dist/features/categories/components/BrandDetailPageView.js +4 -2
- package/dist/features/categories/components/BundleDetailView.js +2 -2
- package/dist/features/categories/components/CategoryDetailPageView.js +36 -3
- package/dist/features/categories/components/CategoryGrid.js +24 -2
- package/dist/features/categories/components/FranchiseDetailPageView.js +2 -3
- package/dist/features/events/components/EventCard.js +15 -2
- package/dist/features/grouped/components/GroupedListingDetailView.js +2 -3
- package/dist/features/homepage/components/CustomCardsSection.js +67 -50
- package/dist/features/homepage/components/ShopByCategorySection.js +23 -10
- package/dist/features/homepage/schemas/index.d.ts +10 -10
- package/dist/features/parts/components/PartDetailPageView.js +5 -3
- package/dist/features/parts/components/PartsSearchBox.js +79 -4
- package/dist/features/parts/schemas/admin-edit.d.ts +81 -0
- package/dist/features/parts/schemas/admin-edit.js +89 -0
- package/dist/features/parts/schemas/firestore.d.ts +2 -1
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +15 -2
- package/dist/features/products/components/MarketplaceBundleCard.js +15 -2
- package/dist/features/products/components/MarketplacePrizeDrawCard.js +15 -2
- package/dist/features/products/components/ProductGrid.js +18 -2
- package/dist/features/products/schemas/firestore.d.ts +18 -0
- package/dist/features/seller/components/CategoryInlineSelect.d.ts +10 -1
- package/dist/features/seller/components/CategoryInlineSelect.js +53 -5
- package/dist/features/seller/components/SellerProductShell.d.ts +39 -0
- package/dist/features/seller/components/SellerProductShell.js +31 -3
- package/dist/index.d.ts +6 -129
- package/dist/index.js +61 -292
- package/dist/next/routing/route-map.d.ts +13 -1
- package/dist/next/routing/route-map.js +37 -0
- package/dist/schemas/registry.d.ts +6 -6
- package/dist/server.d.ts +2 -69
- package/dist/server.js +8 -69
- package/dist/styles.css +468 -1
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/PosterCard.d.ts +99 -0
- package/dist/ui/components/PosterCard.js +109 -0
- package/dist/ui/components/PosterCard.style.css +466 -0
- package/dist/ui/components/index.style.css +1 -0
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.js +2 -0
- package/package.json +4 -2
- package/scripts/seed-cli.mjs +177 -2
- package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
- package/dist/features/tester/seed-data/_happy-path.js +0 -710
- package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
- package/dist/features/tester/seed-data/_money-flows.js +0 -610
- package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
- package/dist/features/tester/seed-data/authored/_types.js +0 -35
- package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
- package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
- package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
- package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
- package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
- package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
- package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
- package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
- package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
- package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
- package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
- package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
- package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
- package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
- package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
- package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
- package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
- package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
- package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
- package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
- package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
- package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
- package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
- package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
- package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
- package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
- package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
- package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
- package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
- package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
- package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
- package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
- package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
- package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
- package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
- package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
- package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
- package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
- package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
- package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
- package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
- package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
- package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
- package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
- package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
- package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
- package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
- package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
- package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
- package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
- package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
- package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
- package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
- package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
- package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
- package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
- package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
- package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
- package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
- package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
- package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
- package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
- package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
- package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
- package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
- package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
- package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
- package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/index.js +0 -301
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
- package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
- package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
- package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
- package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
- package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
- package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
- package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
- package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
- package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
- package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
- package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
- package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
- package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
- package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
- package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
- package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
- package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
- package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
- package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
- package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
- package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
- package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
- package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
- package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
- package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
- package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
- package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
- package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
- package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
- package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
- package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
- package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
- package/dist/features/tester/seed-data/index.d.ts +0 -2
- package/dist/features/tester/seed-data/index.js +0 -2
- package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
- package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
- package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
- package/dist/features/tester/seed-data/tester-window.js +0 -66
- package/dist/seed/_helpers/brand-rows.d.ts +0 -35
- package/dist/seed/_helpers/brand-rows.js +0 -600
- package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
- package/dist/seed/_helpers/category-content-generated.js +0 -1853
- package/dist/seed/_helpers/category-content.d.ts +0 -68
- package/dist/seed/_helpers/category-content.js +0 -731
- package/dist/seed/_helpers/category-forest.d.ts +0 -4
- package/dist/seed/_helpers/category-forest.js +0 -824
- package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
- package/dist/seed/_helpers/category-images-generated.js +0 -618
- package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
- package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
- package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
- package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
- package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
- package/dist/seed/_helpers/category-models.d.ts +0 -12
- package/dist/seed/_helpers/category-models.js +0 -45
- package/dist/seed/_helpers/category-names.d.ts +0 -54
- package/dist/seed/_helpers/category-names.js +0 -118
- package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
- package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
- package/dist/seed/_helpers/category-parts.d.ts +0 -9
- package/dist/seed/_helpers/category-parts.js +0 -15022
- package/dist/seed/_helpers/category-tree.d.ts +0 -27
- package/dist/seed/_helpers/category-tree.js +0 -119
- package/dist/seed/_helpers/character-features.d.ts +0 -10
- package/dist/seed/_helpers/character-features.js +0 -120
- package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
- package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
- package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
- package/dist/seed/_helpers/franchise-rows.js +0 -189
- package/dist/seed/_helpers/media.d.ts +0 -67
- package/dist/seed/_helpers/media.js +0 -172
- package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
- package/dist/seed/_helpers/part-colours-generated.js +0 -273
- package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
- package/dist/seed/_helpers/product-search-txt.js +0 -23
- package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
- package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
- package/dist/seed/addresses-seed-data.d.ts +0 -2
- package/dist/seed/addresses-seed-data.js +0 -78
- package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
- package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
- package/dist/seed/bids-seed-data.d.ts +0 -2
- package/dist/seed/bids-seed-data.js +0 -206
- package/dist/seed/blog-posts-seed-data.d.ts +0 -6
- package/dist/seed/blog-posts-seed-data.js +0 -442
- package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
- package/dist/seed/carousel-slides-seed-data.js +0 -411
- package/dist/seed/carousels-seed-data.d.ts +0 -2
- package/dist/seed/carousels-seed-data.js +0 -36
- package/dist/seed/cart-seed-data.d.ts +0 -2
- package/dist/seed/cart-seed-data.js +0 -241
- package/dist/seed/catalogue-seed-data.d.ts +0 -2
- package/dist/seed/catalogue-seed-data.js +0 -112
- package/dist/seed/categories-seed-data.d.ts +0 -3
- package/dist/seed/categories-seed-data.js +0 -816
- package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
- package/dist/seed/claimed-coupons-seed-data.js +0 -85
- package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
- package/dist/seed/coupon-usage-seed-data.js +0 -55
- package/dist/seed/coupons-seed-data.d.ts +0 -2
- package/dist/seed/coupons-seed-data.js +0 -226
- package/dist/seed/defaults/categories.d.ts +0 -2
- package/dist/seed/defaults/categories.js +0 -12
- package/dist/seed/defaults/faqs.d.ts +0 -2
- package/dist/seed/defaults/faqs.js +0 -40
- package/dist/seed/events-seed-data.d.ts +0 -7
- package/dist/seed/events-seed-data.js +0 -482
- package/dist/seed/factories/address.factory.d.ts +0 -21
- package/dist/seed/factories/address.factory.js +0 -44
- package/dist/seed/factories/bid.factory.d.ts +0 -15
- package/dist/seed/factories/bid.factory.js +0 -33
- package/dist/seed/factories/blog-post.factory.d.ts +0 -15
- package/dist/seed/factories/blog-post.factory.js +0 -22
- package/dist/seed/factories/carousel.factory.d.ts +0 -11
- package/dist/seed/factories/carousel.factory.js +0 -17
- package/dist/seed/factories/cart.factory.d.ts +0 -25
- package/dist/seed/factories/cart.factory.js +0 -35
- package/dist/seed/factories/category.factory.d.ts +0 -11
- package/dist/seed/factories/category.factory.js +0 -16
- package/dist/seed/factories/coupon.factory.d.ts +0 -21
- package/dist/seed/factories/coupon.factory.js +0 -43
- package/dist/seed/factories/faq.factory.d.ts +0 -10
- package/dist/seed/factories/faq.factory.js +0 -15
- package/dist/seed/factories/notification.factory.d.ts +0 -18
- package/dist/seed/factories/notification.factory.js +0 -39
- package/dist/seed/factories/order.factory.d.ts +0 -20
- package/dist/seed/factories/order.factory.js +0 -20
- package/dist/seed/factories/payout.factory.d.ts +0 -21
- package/dist/seed/factories/payout.factory.js +0 -38
- package/dist/seed/factories/product.factory.d.ts +0 -27
- package/dist/seed/factories/product.factory.js +0 -80
- package/dist/seed/factories/review.factory.d.ts +0 -14
- package/dist/seed/factories/review.factory.js +0 -52
- package/dist/seed/factories/session.factory.d.ts +0 -15
- package/dist/seed/factories/session.factory.js +0 -31
- package/dist/seed/factories/store.factory.d.ts +0 -23
- package/dist/seed/factories/store.factory.js +0 -47
- package/dist/seed/factories/user.factory.d.ts +0 -19
- package/dist/seed/factories/user.factory.js +0 -56
- package/dist/seed/faq-seed-data.d.ts +0 -18
- package/dist/seed/faq-seed-data.js +0 -1956
- package/dist/seed/firestore-indexes.d.ts +0 -12
- package/dist/seed/firestore-indexes.js +0 -31
- package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
- package/dist/seed/grouped-listings-seed-data.js +0 -283
- package/dist/seed/history-seed-data.d.ts +0 -12
- package/dist/seed/history-seed-data.js +0 -70
- package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
- package/dist/seed/homepage-sections-seed-data.js +0 -1018
- package/dist/seed/index.d.ts +0 -98
- package/dist/seed/index.js +0 -112
- package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
- package/dist/seed/lottery-entries-seed-data.js +0 -108
- package/dist/seed/manifest.d.ts +0 -16
- package/dist/seed/manifest.js +0 -235
- package/dist/seed/media-assets-seed-data.d.ts +0 -22
- package/dist/seed/media-assets-seed-data.js +0 -5593
- package/dist/seed/model-composition-seed-data.d.ts +0 -15
- package/dist/seed/model-composition-seed-data.js +0 -9032
- package/dist/seed/notifications-seed-data.d.ts +0 -2
- package/dist/seed/notifications-seed-data.js +0 -606
- package/dist/seed/offers-seed-data.d.ts +0 -2
- package/dist/seed/offers-seed-data.js +0 -398
- package/dist/seed/orders-seed-data.d.ts +0 -2
- package/dist/seed/orders-seed-data.js +0 -845
- package/dist/seed/part-glossary/chunk0.d.ts +0 -9
- package/dist/seed/part-glossary/chunk0.js +0 -35448
- package/dist/seed/part-glossary/chunk1.d.ts +0 -9
- package/dist/seed/part-glossary/chunk1.js +0 -40494
- package/dist/seed/part-glossary/chunk2.d.ts +0 -9
- package/dist/seed/part-glossary/chunk2.js +0 -51242
- package/dist/seed/part-glossary/chunk3.d.ts +0 -9
- package/dist/seed/part-glossary/chunk3.js +0 -53337
- package/dist/seed/part-glossary/chunk4.d.ts +0 -9
- package/dist/seed/part-glossary/chunk4.js +0 -51454
- package/dist/seed/part-glossary-seed-data.d.ts +0 -15
- package/dist/seed/part-glossary-seed-data.js +0 -25
- package/dist/seed/payouts-seed-data.d.ts +0 -2
- package/dist/seed/payouts-seed-data.js +0 -302
- package/dist/seed/product-features-seed-data.d.ts +0 -3
- package/dist/seed/product-features-seed-data.js +0 -366
- package/dist/seed/products-art-seed-data.d.ts +0 -2
- package/dist/seed/products-art-seed-data.js +0 -289
- package/dist/seed/products-auctions-seed-data.d.ts +0 -2
- package/dist/seed/products-auctions-seed-data.js +0 -475
- package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
- package/dist/seed/products-beyblade-x-seed-data.js +0 -476
- package/dist/seed/products-catalogue-seed-data.d.ts +0 -22
- package/dist/seed/products-catalogue-seed-data.js +0 -86384
- package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
- package/dist/seed/products-classifieds-seed-data.js +0 -435
- package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
- package/dist/seed/products-digital-codes-seed-data.js +0 -395
- package/dist/seed/products-live-items-seed-data.d.ts +0 -7
- package/dist/seed/products-live-items-seed-data.js +0 -269
- package/dist/seed/products-preorders-seed-data.d.ts +0 -2
- package/dist/seed/products-preorders-seed-data.js +0 -360
- package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
- package/dist/seed/products-prize-draws-seed-data.js +0 -427
- package/dist/seed/products-spares-seed-data.d.ts +0 -2
- package/dist/seed/products-spares-seed-data.js +0 -368
- package/dist/seed/products-standard-seed-data.d.ts +0 -2
- package/dist/seed/products-standard-seed-data.js +0 -632
- package/dist/seed/products-stickers-seed-data.d.ts +0 -2
- package/dist/seed/products-stickers-seed-data.js +0 -319
- package/dist/seed/reviews-seed-data.d.ts +0 -1
- package/dist/seed/reviews-seed-data.js +0 -185
- package/dist/seed/runner.d.ts +0 -2
- package/dist/seed/runner.js +0 -125
- package/dist/seed/scammers-seed-data.d.ts +0 -2
- package/dist/seed/scammers-seed-data.js +0 -235
- package/dist/seed/seed-market-config.d.ts +0 -48
- package/dist/seed/seed-market-config.js +0 -199
- package/dist/seed/seed-purpose.d.ts +0 -299
- package/dist/seed/seed-purpose.js +0 -431
- package/dist/seed/sessions-seed-data.d.ts +0 -3
- package/dist/seed/sessions-seed-data.js +0 -116
- package/dist/seed/shipments-seed-data.d.ts +0 -5
- package/dist/seed/shipments-seed-data.js +0 -185
- package/dist/seed/site-settings-seed-data.d.ts +0 -2
- package/dist/seed/site-settings-seed-data.js +0 -1069
- package/dist/seed/store-addresses-seed-data.d.ts +0 -18
- package/dist/seed/store-addresses-seed-data.js +0 -71
- package/dist/seed/store-extensions-seed-data.d.ts +0 -11
- package/dist/seed/store-extensions-seed-data.js +0 -292
- package/dist/seed/stores-seed-data.d.ts +0 -6
- package/dist/seed/stores-seed-data.js +0 -242
- package/dist/seed/support-tickets-seed-data.d.ts +0 -16
- package/dist/seed/support-tickets-seed-data.js +0 -239
- package/dist/seed/tax-codes-seed-data.d.ts +0 -34
- package/dist/seed/tax-codes-seed-data.js +0 -100
- package/dist/seed/test-data-ttl.d.ts +0 -29
- package/dist/seed/test-data-ttl.js +0 -31
- package/dist/seed/test-utils.d.ts +0 -49
- package/dist/seed/test-utils.js +0 -110
- package/dist/seed/types.d.ts +0 -89
- package/dist/seed/types.js +0 -15
- package/dist/seed/users-seed-data.d.ts +0 -2
- package/dist/seed/users-seed-data.js +0 -597
- package/dist/seed/wishlists-seed-data.d.ts +0 -12
- package/dist/seed/wishlists-seed-data.js +0 -54
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for the design-ux/form-validation-errors page.
|
|
3
|
-
* WHAT: 4 case(s), keyed by full checklist id.
|
|
4
|
-
*
|
|
5
|
-
* Written by hand, case by case, against the label each one states. There is no
|
|
6
|
-
* generator: the authoring scripts were deleted once it was clear they were
|
|
7
|
-
* scaffolding around work that is simply writing.
|
|
8
|
-
*
|
|
9
|
-
* 🛑 THE FIRST CASE IS A REGRESSION GUARD, NOT A FEATURE CHECK. Eleven views call
|
|
10
|
-
* validate() from a mount effect, and the summary was deliberately un-gated by
|
|
11
|
-
* `touched` — together those made every schema-driven form open by listing every
|
|
12
|
-
* empty required field, accusing the user of mistakes before they had typed
|
|
13
|
-
* anything. The fix gates the DISPLAY, never the computation: dropping the mount
|
|
14
|
-
* effect would stop the summary updating as the user fixes fields, which is the
|
|
15
|
-
* whole reason it exists.
|
|
16
|
-
*
|
|
17
|
-
* @tag domain:tester
|
|
18
|
-
* @tag layer:seed
|
|
19
|
-
* @tag pattern:none
|
|
20
|
-
* @tag access:server-only
|
|
21
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
22
|
-
* @tag sideEffects:none
|
|
23
|
-
*/
|
|
24
|
-
export const authored = {
|
|
25
|
-
"checklist-design-ux-form-validation-errors-error-summary-shows-beside-submit": {
|
|
26
|
-
roles: ["buyer"],
|
|
27
|
-
startPage: "/user/addresses/new",
|
|
28
|
-
steps: [
|
|
29
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
30
|
-
"Open /user/addresses/new and read the page WITHOUT typing anything.",
|
|
31
|
-
"Look for any list of errors, and for any red field.",
|
|
32
|
-
"Click Save with every field still empty.",
|
|
33
|
-
"Read what appears and where it sits relative to the Save button.",
|
|
34
|
-
"Count the errors listed and compare with the number of empty required fields.",
|
|
35
|
-
],
|
|
36
|
-
expectedBehaviour: "On first paint the form is silent — no summary, no red fields — because the user has done nothing wrong yet. The summary appears only after a submit is attempted, and then sits near the control that was pressed rather than at the top of a long form where it can be off screen.",
|
|
37
|
-
expectedUiState: "Before the click: no error summary and no red fields, even though the schema would fail. After the click: a summary listing every failing field, visible without scrolling away from Save. A form that opens already listing six errors is the exact regression this case guards.",
|
|
38
|
-
expectedData: { errorsBeforeSubmit: 0 },
|
|
39
|
-
endResult: "Nothing is saved. The pre-submit silence is half the case — a summary that is always correct but always visible fails it.",
|
|
40
|
-
},
|
|
41
|
-
"checklist-design-ux-form-validation-errors-error-summary-live-on-change": {
|
|
42
|
-
roles: ["buyer"],
|
|
43
|
-
startPage: "/user/addresses/new",
|
|
44
|
-
steps: [
|
|
45
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
46
|
-
"Open /user/addresses/new and click Save with every field empty.",
|
|
47
|
-
"Read the summary and count the errors it lists.",
|
|
48
|
-
"Type 'QA Address error-summary-live' into the name field.",
|
|
49
|
-
"Read the summary again without clicking anything.",
|
|
50
|
-
"Fill the street, city, state and postal code fields one at a time, reading the summary after each.",
|
|
51
|
-
],
|
|
52
|
-
inputs: { name: "QA Address error-summary-live" },
|
|
53
|
-
expectedBehaviour: "Once a submit has been attempted the summary tracks every keystroke, so a user watching it can see the list shrink as they work. The count has to be part of the summary's own label — the panel is only re-published when that label changes, and a static label would freeze its contents at six errors while the user fixes five of them.",
|
|
54
|
-
expectedUiState: "The count falls by one as each field is filled — 'Fix 6 issues' becomes 'Fix 5 issues' and so on — and the fixed field leaves the list. A summary that stays at its original count until Save is pressed again is the failure.",
|
|
55
|
-
endResult: "Nothing is saved unless the form is submitted. Leave without saving.",
|
|
56
|
-
},
|
|
57
|
-
"checklist-design-ux-form-validation-errors-error-summary-step-tagged": {
|
|
58
|
-
roles: ["seller"],
|
|
59
|
-
startPage: "/store/products/new",
|
|
60
|
-
steps: [
|
|
61
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
62
|
-
"Open /store/products/new and click 'Show all fields (advanced)'. 🛑 IT IS NOT A WIZARD BY DEFAULT: a standard create opens the QUICK form — six flat fields, no steps at all — so there is no step for an error to be tagged with until you switch. The advanced form is the sectionised one this case is about.",
|
|
63
|
-
"Advance past the first section leaving a required field on it empty, and continue to a later section.",
|
|
64
|
-
"Leave a required field on that later step empty too.",
|
|
65
|
-
"Attempt to publish.",
|
|
66
|
-
"Read the summary and note whether each error names the step it belongs to.",
|
|
67
|
-
"Click the error that belongs to the first step.",
|
|
68
|
-
],
|
|
69
|
-
expectedBehaviour: "In a wizard an error is useless without its step — the user cannot see the field it refers to. Each entry is tagged with its owning step and clicking it jumps there, which is only possible because the wizard supplies a field-to-step map to the summary.",
|
|
70
|
-
expectedUiState: "Every error names its step. Clicking one navigates to that step with the offending field visible and marked. An untagged flat list on a multi-step form is the failure even when the errors themselves are right.",
|
|
71
|
-
endResult: "Nothing is published. Leave the wizard without saving.",
|
|
72
|
-
},
|
|
73
|
-
"checklist-design-ux-form-validation-errors-error-summary-supplements-inline": {
|
|
74
|
-
roles: ["buyer"],
|
|
75
|
-
startPage: "/user/addresses/new",
|
|
76
|
-
steps: [
|
|
77
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
78
|
-
"Open /user/addresses/new.",
|
|
79
|
-
"Click into the city field, then click out of it without typing.",
|
|
80
|
-
"Read whether an error appears under that field, and whether a summary has appeared.",
|
|
81
|
-
"Click Save with the form still empty.",
|
|
82
|
-
"Read both the summary and the individual fields.",
|
|
83
|
-
],
|
|
84
|
-
expectedBehaviour: "The two are gated differently on purpose. An inline error is gated on the field being touched — a field the user visited and left empty SHOULD say so immediately. The summary is gated on a submit attempt, because it speaks about fields the user has not reached yet. The summary supplements the inline errors; it never replaces them.",
|
|
85
|
-
expectedUiState: "Leaving the city field empty marks that field alone, with no summary yet. After Save, the summary lists every failing field AND each field is still individually marked. A summary with no inline marks, or inline marks with no summary, are both failures.",
|
|
86
|
-
endResult: "Nothing is saved. Leave without saving.",
|
|
87
|
-
},
|
|
88
|
-
};
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for the design-ux/general-design page.
|
|
3
|
-
* WHAT: 12 case(s), keyed by full checklist id.
|
|
4
|
-
*
|
|
5
|
-
* Written by hand, case by case, against the label each one states. There is no
|
|
6
|
-
* generator: the authoring scripts were deleted once it was clear they were
|
|
7
|
-
* scaffolding around work that is simply writing.
|
|
8
|
-
*
|
|
9
|
-
* 🛑 THE COLOUR CASES ARE READ IN BOTH THEMES, ALWAYS. Two spellings produce
|
|
10
|
-
* white-on-white in exactly one theme: a status tint paired with a literal
|
|
11
|
-
* text-white, and a named palette tint used as a hover fill under inverted ink.
|
|
12
|
-
* Reading one theme passes both.
|
|
13
|
-
*
|
|
14
|
-
* @tag domain:tester
|
|
15
|
-
* @tag layer:seed
|
|
16
|
-
* @tag pattern:none
|
|
17
|
-
* @tag access:server-only
|
|
18
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
19
|
-
* @tag sideEffects:none
|
|
20
|
-
*/
|
|
21
|
-
export const authored = {
|
|
22
|
-
"checklist-design-ux-general-design-contrast-readability": {
|
|
23
|
-
roles: ["guest"],
|
|
24
|
-
startPage: "/",
|
|
25
|
-
steps: [
|
|
26
|
-
"Open / in a private window in light mode and read every heading, paragraph, badge and button label down the page.",
|
|
27
|
-
"Write down anything that is hard to read at normal viewing distance.",
|
|
28
|
-
"Switch to dark mode without navigating and read the same page again.",
|
|
29
|
-
"Open /products and repeat in both themes.",
|
|
30
|
-
"Hover every link and button on both pages and read them while hovering.",
|
|
31
|
-
],
|
|
32
|
-
expectedBehaviour: "Every foreground and background pair comes from tokens that invert together, so contrast holds in both themes. A pair where only one half inverts is legible in one theme and invisible in the other.",
|
|
33
|
-
expectedUiState: "All text is readable in both themes, including while hovering. The specific failure to look for is text that disappears on hover only — a hover fill that does not invert sits under ink that does.",
|
|
34
|
-
expectedData: { unreadableElements: 0 },
|
|
35
|
-
endResult: "Read-only; return the site to light mode afterwards.",
|
|
36
|
-
},
|
|
37
|
-
"checklist-design-ux-general-design-mobile-nav": {
|
|
38
|
-
roles: ["guest"],
|
|
39
|
-
startPage: "/",
|
|
40
|
-
steps: [
|
|
41
|
-
"Resize the browser window to 390 pixels wide and open / in a private window.",
|
|
42
|
-
"Open the mobile navigation and read every item.",
|
|
43
|
-
"Compare that list against the desktop top navigation at 1280 pixels.",
|
|
44
|
-
"Tap into a nested group if one exists and read its items.",
|
|
45
|
-
"Navigate somewhere and check the menu closes.",
|
|
46
|
-
"Look at the bottom of the screen and count the fixed bars present.",
|
|
47
|
-
],
|
|
48
|
-
inputs: { mobileWidth: 390, desktopWidth: 1280 },
|
|
49
|
-
expectedBehaviour: "The mobile navigation carries the same destinations as the desktop one and closes on navigation. Exactly one bottom navigation bar may be mounted per route — it is the sole publisher of the tab-bar height, so two mounted at once means two bars on the same pixels and a height nobody owns.",
|
|
50
|
-
expectedUiState: "Every desktop destination is reachable from the mobile menu. The menu closes after navigating. Exactly one fixed bar sits at the bottom of the screen — never two stacked or overlapping.",
|
|
51
|
-
expectedData: { bottomNavCount: 1 },
|
|
52
|
-
endResult: "Read-only; restore the window width afterwards.",
|
|
53
|
-
},
|
|
54
|
-
"checklist-design-ux-general-design-dark-mode": {
|
|
55
|
-
roles: ["guest"],
|
|
56
|
-
startPage: "/",
|
|
57
|
-
steps: [
|
|
58
|
-
"Open / in a private window and find the theme control.",
|
|
59
|
-
"Switch to dark mode and read the page.",
|
|
60
|
-
"Navigate to /products, then to /products/product-beyblade-burst-valkyrie, reading each.",
|
|
61
|
-
"Reload the page and watch the first moment it paints.",
|
|
62
|
-
"Set the theme control to follow the system setting and change the system theme.",
|
|
63
|
-
],
|
|
64
|
-
expectedBehaviour: "The chosen mode is applied before first paint and persists across navigation and reload. Themes are written to the document root at runtime from the active record, so a flash of the wrong theme on load means the choice is being applied after render rather than before.",
|
|
65
|
-
expectedUiState: "Dark mode holds across every page and survives the reload with no flash of light theme on first paint. The follow-system option tracks the system setting.",
|
|
66
|
-
endResult: "Read-only; return the site to light mode afterwards.",
|
|
67
|
-
},
|
|
68
|
-
"checklist-design-ux-general-design-loading-states": {
|
|
69
|
-
roles: ["guest"],
|
|
70
|
-
startPage: "/products",
|
|
71
|
-
steps: [
|
|
72
|
-
"Open browser DevTools and throttle the network to a slow connection.",
|
|
73
|
-
"Open /products in a private window and watch the page while it loads.",
|
|
74
|
-
"Read what occupies the grid area before the cards arrive.",
|
|
75
|
-
"Navigate to /products/product-beyblade-burst-valkyrie and watch the same.",
|
|
76
|
-
"Wait and check the loading state resolves rather than persisting.",
|
|
77
|
-
"Remove the throttle.",
|
|
78
|
-
],
|
|
79
|
-
expectedBehaviour: "A loading state occupies the space its content will take, so the page does not jump when data arrives. It must also resolve — a spinner that never stops is indistinguishable from a crash, and is what a fetch that neither succeeds nor reports failure looks like.",
|
|
80
|
-
expectedUiState: "Placeholders roughly the size of the incoming cards, not a bare centred spinner on an empty page. Content replaces them without the layout jumping. No loading state is still showing after the data has arrived.",
|
|
81
|
-
endResult: "Read-only; remove the network throttle afterwards.",
|
|
82
|
-
},
|
|
83
|
-
"checklist-design-ux-general-design-empty-states": {
|
|
84
|
-
roles: ["guest", "buyer"],
|
|
85
|
-
startPage: "/products",
|
|
86
|
-
steps: [
|
|
87
|
-
"Open /products in a private window, search zzzznope, and read what fills the grid area.",
|
|
88
|
-
"Open /faqs, search zzzznope, and read what is shown.",
|
|
89
|
-
"Sign in as karthik.new@gmail.com / TempPass123!, an account with little history.",
|
|
90
|
-
"Open /user/orders, /user/bids and /wishlist and read each.",
|
|
91
|
-
"Write down any that show a blank area rather than a message.",
|
|
92
|
-
],
|
|
93
|
-
inputs: { nonsenseQuery: "zzzznope" },
|
|
94
|
-
expectedBehaviour: "Every list that can be empty says so, inside the normal layout, and where useful offers a way forward. A blank area is read as a broken page rather than as an empty one.",
|
|
95
|
-
expectedUiState: "Each surface shows a named empty state with a readable message. None shows a bare white area, and none shows a heading with nothing under it.",
|
|
96
|
-
expectedData: { blankEmptyAreas: 0 },
|
|
97
|
-
endResult: "Read-only; nothing persists.",
|
|
98
|
-
},
|
|
99
|
-
"checklist-design-ux-general-design-error-states": {
|
|
100
|
-
roles: ["guest"],
|
|
101
|
-
startPage: "/",
|
|
102
|
-
steps: [
|
|
103
|
-
"Open /this-page-does-not-exist-qa in a private window and read the page.",
|
|
104
|
-
"Open a product URL with a slug that does not exist and read that page.",
|
|
105
|
-
"Read both for a reference code and for any file path or stack trace.",
|
|
106
|
-
"Check each offers a link back into the site.",
|
|
107
|
-
],
|
|
108
|
-
expectedBehaviour: "Error pages render inside the site chrome, offer a way out, and show the digest as a reference the user can quote. The digest is an opaque hash, not sensitive data — hiding it in production is what makes a user's bug report unactionable.",
|
|
109
|
-
expectedUiState: "Both pages are styled site pages with a readable message and at least one working link. Where a digest exists it is shown as a reference. Neither shows a file path, a stack trace, or an unstyled white page.",
|
|
110
|
-
endResult: "Read-only; nothing persists.",
|
|
111
|
-
},
|
|
112
|
-
"checklist-design-ux-general-design-card-row-heights-aligned": {
|
|
113
|
-
roles: ["guest"],
|
|
114
|
-
startPage: "/products",
|
|
115
|
-
steps: [
|
|
116
|
-
"Open /products in a private window at 1280 pixels wide.",
|
|
117
|
-
"Look along the top edge of each row of cards, then along the bottom edge.",
|
|
118
|
-
"Find a row mixing a short title with a long one and compare those two cards' heights.",
|
|
119
|
-
"Resize to 768 pixels and look again.",
|
|
120
|
-
"Resize to 390 pixels and look again.",
|
|
121
|
-
"Scroll to the last row and look at how many cards it holds and how wide they are.",
|
|
122
|
-
],
|
|
123
|
-
inputs: { widths: "1280, 768, 390" },
|
|
124
|
-
expectedBehaviour: "Cards in a row share a height so the grid reads as rows. The grid also uses auto-fill rather than auto-fit: auto-fit collapses the empty tracks in a short final row and lets the remaining card stretch across the container, so one leftover card ends up several times the width of its siblings.",
|
|
125
|
-
expectedUiState: "Card tops and bottoms line up within each row at all three widths. A final row holding one card shows it at the SAME width as the cards above it, not stretched across the grid.",
|
|
126
|
-
endResult: "Read-only; restore the window width afterwards.",
|
|
127
|
-
},
|
|
128
|
-
"checklist-design-ux-general-design-image-watermark-subtle": {
|
|
129
|
-
roles: ["guest"],
|
|
130
|
-
startPage: "/products",
|
|
131
|
-
steps: [
|
|
132
|
-
"Open /products in a private window and look at the watermark on several card images.",
|
|
133
|
-
"Open /products/product-beyblade-burst-valkyrie and look at the watermark on the main gallery image.",
|
|
134
|
-
"Open the image lightbox and look at it there.",
|
|
135
|
-
"Judge whether the product itself is still clearly visible under it.",
|
|
136
|
-
"Look at a video's poster frame and check it carries the watermark too.",
|
|
137
|
-
],
|
|
138
|
-
expectedBehaviour: "Images are watermarked by the media proxy on the way out, so the mark is present everywhere an image is served. It degrades through a fallback chain — an admin override, then the bundled brand mark, then the wordmark, then plain text — and never simply skips, so an absent mark means the proxy was bypassed.",
|
|
139
|
-
expectedUiState: "Every product image carries a visible but unobtrusive watermark, including in the lightbox and on video poster frames. The product remains clearly visible. An image with NO mark at all is the finding — it means that image is not being served through the proxy.",
|
|
140
|
-
endResult: "Read-only; nothing persists.",
|
|
141
|
-
},
|
|
142
|
-
"checklist-design-ux-general-design-clickable-image-tiles-not-blank": {
|
|
143
|
-
roles: ["guest"],
|
|
144
|
-
startPage: "/products/product-beyblade-burst-valkyrie",
|
|
145
|
-
steps: [
|
|
146
|
-
"Open /products/product-beyblade-burst-valkyrie in a private window.",
|
|
147
|
-
"Look at the thumbnail strip below the main image and check each tile shows a picture.",
|
|
148
|
-
"Click a thumbnail and check the main image changes.",
|
|
149
|
-
"Open /products/product-beyblade-original-dranzer-s and look at the 'Photos' grid on its reviews. That product is the seed's deep-review fixture — 14 reviews, of which every fourth carries images, so FOUR have photos. Picking any other product risks one with no photo grid at all, and an absent grid is indistinguishable from the collapsed one this case is looking for.",
|
|
150
|
-
"Open the review lightbox and look at its thumbnail strip.",
|
|
151
|
-
"Open /bundles/bundle-original-collectors-set and look at its member collage.",
|
|
152
|
-
],
|
|
153
|
-
expectedBehaviour: "An image inside a button renders at its intended size. A fill-style image resolves its percentages against its parent, so a shrink-to-fit wrapper between the button and the image collapses both to nothing — the tile becomes an empty bordered square while the button still looks and clicks correctly.",
|
|
154
|
-
expectedUiState: "Every clickable image tile shows its picture at the same size as its neighbours, on all four surfaces. An empty bordered square where a photo should be is the failure, and it is the same failure on each of them.",
|
|
155
|
-
expectedData: { blankTiles: 0 },
|
|
156
|
-
endResult: "Read-only; nothing persists. Check all four surfaces — this defect hits every clickable image tile in the app at once, so finding one page clean proves nothing about the others.",
|
|
157
|
-
},
|
|
158
|
-
"checklist-design-ux-general-design-icon-button-label-spacing": {
|
|
159
|
-
roles: ["guest", "buyer"],
|
|
160
|
-
startPage: "/products/product-beyblade-original-dranzer-s",
|
|
161
|
-
steps: [
|
|
162
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
163
|
-
"Open /products/product-beyblade-original-dranzer-s.",
|
|
164
|
-
"Look at each button that has both an icon and a label, and check the gap between them.",
|
|
165
|
-
"Compare the icon's size against the button's own height.",
|
|
166
|
-
"Open /admin or /store and look at the same on toolbar buttons.",
|
|
167
|
-
"Find an icon-only control and check whether it is a true square.",
|
|
168
|
-
],
|
|
169
|
-
expectedBehaviour: "A button's gap and alignment reach its real children, and its glyph size derives from the button's own size rather than being fixed. An icon-only control belongs in the square-boxed primitive: the ordinary button's small size sets a minimum height that beats a caller's height utility, so a round icon button rendered that way comes out as an ellipse.",
|
|
170
|
-
expectedUiState: "Icon and label are separated by a visible gap on every such button. Glyphs scale with their button rather than all being one size. Icon-only controls are square, not oval.",
|
|
171
|
-
endResult: "Read-only; nothing persists.",
|
|
172
|
-
},
|
|
173
|
-
"checklist-design-ux-general-design-section-cta-buttons-visible": {
|
|
174
|
-
roles: ["guest"],
|
|
175
|
-
startPage: "/",
|
|
176
|
-
steps: [
|
|
177
|
-
"Open / in a private window in light mode and scroll to the bottom.",
|
|
178
|
-
"Find every section-level call-to-action button and read its label.",
|
|
179
|
-
"Check each against its section's background.",
|
|
180
|
-
"Switch to dark mode and read them all again.",
|
|
181
|
-
"Look specifically at buttons sitting on a coloured or gradient band.",
|
|
182
|
-
],
|
|
183
|
-
expectedBehaviour: "A button on a branded or coloured band uses the pairing meant for that case — a solid fill with its own on-solid ink — rather than a theme-relative surface, which is a light background in every light theme and produces white-on-white under inverted ink.",
|
|
184
|
-
expectedUiState: "Every section CTA is readable in both themes, including those on coloured bands. A button whose label vanishes in one theme is the failure, and it will be one that reads perfectly in the other.",
|
|
185
|
-
expectedData: { unreadableCtas: 0 },
|
|
186
|
-
endResult: "Read-only; return the site to light mode afterwards.",
|
|
187
|
-
},
|
|
188
|
-
"checklist-design-ux-general-design-mobile-search-bar-proportions": {
|
|
189
|
-
roles: ["guest"],
|
|
190
|
-
startPage: "/",
|
|
191
|
-
steps: [
|
|
192
|
-
"Resize the browser window to 390 pixels wide and open / in a private window.",
|
|
193
|
-
"Look at the header search bar and any control beside it.",
|
|
194
|
-
"Compare the width of the text input against the width of the adjacent control.",
|
|
195
|
-
"Type into the input and check the text is not clipped.",
|
|
196
|
-
"Resize to 320 pixels and look again.",
|
|
197
|
-
"Try to scroll the page sideways at both widths.",
|
|
198
|
-
],
|
|
199
|
-
inputs: { widths: "390, 320" },
|
|
200
|
-
expectedBehaviour: "The input takes the majority of the row and its neighbouring control stays at its own width. A control whose sizing utilities land on an inner element rather than the wrapper that is actually the flex child will ignore them and claim the whole row — which squeezes the input toward zero.",
|
|
201
|
-
expectedUiState: "The text input is clearly the wider of the two at both widths, typed text is fully visible, and nothing scrolls sideways. A dropdown or button that has ballooned to take most of the row is the failure.",
|
|
202
|
-
endResult: "Read-only; restore the window width afterwards.",
|
|
203
|
-
},
|
|
204
|
-
};
|
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for the design-ux/hand-mode-layout page.
|
|
3
|
-
* WHAT: 18 case(s), keyed by full checklist id.
|
|
4
|
-
*
|
|
5
|
-
* Written by hand, case by case, against the label each one states. There is no
|
|
6
|
-
* generator: the authoring scripts were deleted once it was clear they were
|
|
7
|
-
* scaffolding around work that is simply writing.
|
|
8
|
-
*
|
|
9
|
-
* 🛑 HALF THESE CASES ASSERT THAT SOMETHING DOES *NOT* MOVE, and they are the
|
|
10
|
-
* half worth reading carefully. Left-hand mode moves chrome the thumb reaches
|
|
11
|
-
* for — sidebars, drawers, close buttons, floating controls. It must not mirror
|
|
12
|
-
* content, reading order, or any control whose direction carries meaning: a
|
|
13
|
-
* gallery's next-arrow still means "next", and flipping it inverts the gesture.
|
|
14
|
-
*
|
|
15
|
-
* @tag domain:tester
|
|
16
|
-
* @tag layer:seed
|
|
17
|
-
* @tag pattern:none
|
|
18
|
-
* @tag access:server-only
|
|
19
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
20
|
-
* @tag sideEffects:none
|
|
21
|
-
*/
|
|
22
|
-
export const authored = {
|
|
23
|
-
"checklist-design-ux-hand-mode-layout-sidebar-flips": {
|
|
24
|
-
roles: ["buyer"],
|
|
25
|
-
startPage: "/user/settings",
|
|
26
|
-
steps: [
|
|
27
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
28
|
-
"Open /user and note which side the sidebar is on.",
|
|
29
|
-
"Open /user/settings, click the 'Appearance' tab, and set 'Left-hand mode' to on.",
|
|
30
|
-
"Open /user and note which side the sidebar is on now.",
|
|
31
|
-
"Open /admin or /store as the relevant role and check that portal's sidebar too.",
|
|
32
|
-
"Set 'Left-hand mode' back to off.",
|
|
33
|
-
],
|
|
34
|
-
inputs: { leftHandMode: true },
|
|
35
|
-
expectedBehaviour: "The dashboard sidebar moves to the opposite side, and it does so in every portal, since all three wrap one structural shell. The main content reflows around it rather than sliding underneath.",
|
|
36
|
-
expectedUiState: "With the mode on the sidebar is on the opposite side in every portal checked, and the content area has moved with it — no overlap and no horizontal scroll.",
|
|
37
|
-
endResult: "The mode is off again by the last step. Later cases assume the default layout.",
|
|
38
|
-
},
|
|
39
|
-
"checklist-design-ux-hand-mode-layout-drawers-flip": {
|
|
40
|
-
roles: ["buyer"],
|
|
41
|
-
startPage: "/products",
|
|
42
|
-
steps: [
|
|
43
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode' from /user/settings.",
|
|
44
|
-
"Open /products and click 'Filters' to open the filter drawer.",
|
|
45
|
-
"Note which edge the drawer slides in from.",
|
|
46
|
-
"Close it, then open any side drawer in the dashboard and note its edge.",
|
|
47
|
-
"Turn 'Left-hand mode' off and repeat both.",
|
|
48
|
-
],
|
|
49
|
-
inputs: { leftHandMode: true },
|
|
50
|
-
expectedBehaviour: "Side drawers enter from the opposite edge, because a drawer is a thumb-reach surface. The animation direction follows the edge — a drawer that lands on the left while still animating in from the right reads as broken.",
|
|
51
|
-
expectedUiState: "With the mode on, drawers enter from and rest on the opposite edge to their default, and the animation runs in that direction. With it off, they return to the default edge.",
|
|
52
|
-
endResult: "The mode is off again by the last step.",
|
|
53
|
-
},
|
|
54
|
-
"checklist-design-ux-hand-mode-layout-close-buttons-flip": {
|
|
55
|
-
roles: ["buyer"],
|
|
56
|
-
startPage: "/products",
|
|
57
|
-
steps: [
|
|
58
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
59
|
-
"Open /products, open the filter drawer, and note which corner its close control is in.",
|
|
60
|
-
"Open a modal and note which corner its close control is in.",
|
|
61
|
-
"Open a product image lightbox and note the same.",
|
|
62
|
-
"Turn 'Left-hand mode' off and check all three again.",
|
|
63
|
-
],
|
|
64
|
-
inputs: { leftHandMode: true },
|
|
65
|
-
expectedBehaviour: "Close controls follow the hand, since dismissing is the most repeated action on any overlay. All three surfaces must agree — a modal that flips while the lightbox does not is the shape this defect takes.",
|
|
66
|
-
expectedUiState: "With the mode on, all three close controls sit in the mirrored corner. With it off, all three return. One surface out of step with the other two is the finding.",
|
|
67
|
-
endResult: "The mode is off again by the last step.",
|
|
68
|
-
},
|
|
69
|
-
"checklist-design-ux-hand-mode-layout-back-to-top-cta-flips": {
|
|
70
|
-
roles: ["buyer"],
|
|
71
|
-
startPage: "/products",
|
|
72
|
-
steps: [
|
|
73
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
74
|
-
"Open /products and scroll past 400 pixels so the back-to-top control appears.",
|
|
75
|
-
"Note which side of the viewport it is on.",
|
|
76
|
-
"Open /products/product-beyblade-burst-valkyrie, scroll until the purchase bar appears, and check the control still clears the bar.",
|
|
77
|
-
"Turn 'Left-hand mode' off and check both again.",
|
|
78
|
-
],
|
|
79
|
-
inputs: { leftHandMode: true },
|
|
80
|
-
expectedBehaviour: "The floating control moves to the opposite side while still reading the same bottom-edge tiers, so it clears the purchase bar in either mode. Flipping the horizontal position must not reset the vertical offset.",
|
|
81
|
-
expectedUiState: "With the mode on, the control is on the mirrored side AND still sits above the purchase bar with a visible gap. A control that flips sides and lands on top of the bar is the failure.",
|
|
82
|
-
endResult: "The mode is off again by the last step.",
|
|
83
|
-
},
|
|
84
|
-
"checklist-design-ux-hand-mode-layout-quick-links-unaffected": {
|
|
85
|
-
roles: ["buyer"],
|
|
86
|
-
startPage: "/user",
|
|
87
|
-
steps: [
|
|
88
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
89
|
-
"Open /user and write down the order of the quick-links tiles, left to right and top to bottom.",
|
|
90
|
-
"Turn on 'Left-hand mode' from /user/settings.",
|
|
91
|
-
"Open /user and write down the tile order again.",
|
|
92
|
-
"Compare the two.",
|
|
93
|
-
"Turn 'Left-hand mode' off.",
|
|
94
|
-
],
|
|
95
|
-
inputs: { leftHandMode: true },
|
|
96
|
-
expectedBehaviour: "The quick-links grid is CONTENT, not chrome, so its order is unchanged. Mirroring a grid of tiles reverses reading order and moves every tile the user has learned the position of — the mode is about reach, not about handedness of content.",
|
|
97
|
-
expectedUiState: "The tiles are in exactly the same order in both modes. A reversed grid is the failure even though it looks deliberate.",
|
|
98
|
-
endResult: "The mode is off again by the last step.",
|
|
99
|
-
},
|
|
100
|
-
"checklist-design-ux-hand-mode-layout-hero-carousel-arrows-flip": {
|
|
101
|
-
roles: ["buyer"],
|
|
102
|
-
startPage: "/",
|
|
103
|
-
steps: [
|
|
104
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
105
|
-
"Open / and look at the hero carousel's controls.",
|
|
106
|
-
"Note where the previous and next controls sit.",
|
|
107
|
-
"Click each and check which direction the slides move.",
|
|
108
|
-
"Turn 'Left-hand mode' off and check both again.",
|
|
109
|
-
],
|
|
110
|
-
inputs: { leftHandMode: true },
|
|
111
|
-
expectedBehaviour: "The hero's controls are grouped chrome placed for reach, so the GROUP moves — but each control keeps its meaning. Next still advances; only where the pair sits changes.",
|
|
112
|
-
expectedUiState: "With the mode on the control group sits on the mirrored side, and the next control still advances the carousel while previous still goes back. A next control that now goes backwards is the failure.",
|
|
113
|
-
endResult: "The mode is off again by the last step.",
|
|
114
|
-
},
|
|
115
|
-
"checklist-design-ux-hand-mode-layout-gallery-arrows-unaffected": {
|
|
116
|
-
roles: ["buyer"],
|
|
117
|
-
startPage: "/products/product-beyblade-burst-valkyrie",
|
|
118
|
-
steps: [
|
|
119
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
120
|
-
"Open /products/product-beyblade-burst-valkyrie and look at the gallery's previous and next arrows.",
|
|
121
|
-
"Note which side each is on and click each to check its direction.",
|
|
122
|
-
"Open the image lightbox and check its arrows the same way.",
|
|
123
|
-
"Turn 'Left-hand mode' off and compare.",
|
|
124
|
-
],
|
|
125
|
-
inputs: { leftHandMode: true },
|
|
126
|
-
expectedBehaviour: "Gallery arrows straddle the image and their positions ARE their meaning — left goes back, right goes forward. Mirroring them inverts the gesture, so they are explicitly out of scope for this mode.",
|
|
127
|
-
expectedUiState: "The gallery arrows are in the same positions in both modes, and each still moves in its own direction. Arrows that swap sides are the failure here, which is the opposite of what the carousel case above expects.",
|
|
128
|
-
endResult: "The mode is off again by the last step.",
|
|
129
|
-
},
|
|
130
|
-
"checklist-design-ux-hand-mode-layout-homepage-section-buttons-mirror": {
|
|
131
|
-
roles: ["buyer"],
|
|
132
|
-
startPage: "/",
|
|
133
|
-
steps: [
|
|
134
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
135
|
-
"Open / and scroll through every section, noting where each section's action button sits relative to its heading.",
|
|
136
|
-
"Turn 'Left-hand mode' off.",
|
|
137
|
-
"Open / and note the same positions.",
|
|
138
|
-
"Compare section by section.",
|
|
139
|
-
],
|
|
140
|
-
inputs: { leftHandMode: true },
|
|
141
|
-
expectedBehaviour: "A section's trailing action — a 'See all' or similar — moves to the mirrored end of its header row, since it is a reach target rather than content. The heading itself stays where reading starts.",
|
|
142
|
-
expectedUiState: "In left-hand mode the section actions sit at the mirrored end of their rows while the headings stay put. A section whose heading has also moved is the failure.",
|
|
143
|
-
endResult: "The mode is off again by the last step.",
|
|
144
|
-
},
|
|
145
|
-
"checklist-design-ux-hand-mode-layout-titlebar-actions-mirror": {
|
|
146
|
-
roles: ["buyer"],
|
|
147
|
-
startPage: "/",
|
|
148
|
-
steps: [
|
|
149
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
150
|
-
"Open / and look at the title bar's action cluster — account, cart, notifications.",
|
|
151
|
-
"Note which end of the bar it sits at and the order within it.",
|
|
152
|
-
"Turn 'Left-hand mode' off and look again.",
|
|
153
|
-
"Compare both the end and the internal order.",
|
|
154
|
-
],
|
|
155
|
-
inputs: { leftHandMode: true },
|
|
156
|
-
expectedBehaviour: "The header's action cluster moves to the mirrored end as a group. Whether the icons within it also reverse is the question worth recording — reversing them moves every icon the user has learned, for no reach benefit once the group has already moved.",
|
|
157
|
-
expectedUiState: "The cluster sits at the mirrored end in left-hand mode. Note in the comment whether the icons within it kept their relative order, and whether that reads well.",
|
|
158
|
-
endResult: "The mode is off again by the last step.",
|
|
159
|
-
},
|
|
160
|
-
"checklist-design-ux-hand-mode-layout-titlebar-centre-mark-unaffected": {
|
|
161
|
-
roles: ["buyer"],
|
|
162
|
-
startPage: "/",
|
|
163
|
-
steps: [
|
|
164
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
165
|
-
"Open / and note where the brand mark and wordmark sit in the title bar.",
|
|
166
|
-
"Turn on 'Left-hand mode' and open / again.",
|
|
167
|
-
"Note where the brand mark and wordmark sit now.",
|
|
168
|
-
"Resize to 390 pixels wide and check both modes again.",
|
|
169
|
-
"Turn 'Left-hand mode' off.",
|
|
170
|
-
],
|
|
171
|
-
inputs: { leftHandMode: true },
|
|
172
|
-
expectedBehaviour: "The brand mark is identity, not a control, so it does not move. On desktop it is centred and on mobile it prefixes the bar — neither position is a reach target, so neither mirrors.",
|
|
173
|
-
expectedUiState: "The mark is in the same place in both modes, at both widths. A brand mark that jumps sides with the mode is the failure.",
|
|
174
|
-
endResult: "The mode is off again by the last step; restore the window width.",
|
|
175
|
-
},
|
|
176
|
-
"checklist-design-ux-hand-mode-layout-titlebar-row2-mirror": {
|
|
177
|
-
roles: ["buyer"],
|
|
178
|
-
startPage: "/",
|
|
179
|
-
steps: [
|
|
180
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
181
|
-
"Open / and look at the header's second row — the nav items and any controls beside them.",
|
|
182
|
-
"Note which end any control cluster sits at.",
|
|
183
|
-
"Note whether the nav items themselves have reversed.",
|
|
184
|
-
"Turn 'Left-hand mode' off and compare both.",
|
|
185
|
-
],
|
|
186
|
-
inputs: { leftHandMode: true },
|
|
187
|
-
expectedBehaviour: "Controls in the second row mirror; the nav items are content and keep their order. This is the same content-versus-chrome line the quick-links case draws, applied to a row that mixes both.",
|
|
188
|
-
expectedUiState: "Control clusters sit at the mirrored end while the nav items read in their original order. Reversed nav items are the failure.",
|
|
189
|
-
endResult: "The mode is off again by the last step.",
|
|
190
|
-
},
|
|
191
|
-
"checklist-design-ux-hand-mode-layout-titlebar-actions-no-overflow-narrow": {
|
|
192
|
-
roles: ["buyer"],
|
|
193
|
-
startPage: "/",
|
|
194
|
-
steps: [
|
|
195
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
196
|
-
"Resize the browser window to 320 pixels wide and open /.",
|
|
197
|
-
"Look at the title bar and check every control is fully on screen.",
|
|
198
|
-
"Try to scroll the page sideways.",
|
|
199
|
-
"Turn 'Left-hand mode' off at 320 pixels and check the same.",
|
|
200
|
-
],
|
|
201
|
-
inputs: { leftHandMode: true, viewportWidth: 320 },
|
|
202
|
-
expectedBehaviour: "Mirroring must not push anything off the edge at the narrowest width. A cluster that fits when right-aligned can overflow when left-aligned if its spacing was written for one direction only.",
|
|
203
|
-
expectedUiState: "Every title-bar control is fully visible at 320 pixels in both modes, and the page does not scroll sideways in either.",
|
|
204
|
-
endResult: "The mode is off again by the last step; restore the window width.",
|
|
205
|
-
},
|
|
206
|
-
"checklist-design-ux-hand-mode-layout-bottom-nav-mirror": {
|
|
207
|
-
roles: ["buyer"],
|
|
208
|
-
startPage: "/",
|
|
209
|
-
steps: [
|
|
210
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
211
|
-
"Resize the browser window to 390 pixels wide and open /.",
|
|
212
|
-
"Look at the bottom tab bar and write down its items in order.",
|
|
213
|
-
"Turn 'Left-hand mode' off and write down the order again.",
|
|
214
|
-
"Compare, and count the bottom bars in both modes.",
|
|
215
|
-
],
|
|
216
|
-
inputs: { leftHandMode: true, mobileWidth: 390 },
|
|
217
|
-
expectedBehaviour: "The bottom tab bar spans the full width, so handedness changes nothing about reach — its items are equally reachable either way. Reversing them moves every destination the user has memorised for no benefit.",
|
|
218
|
-
expectedUiState: "The tab items are in the same order in both modes. Exactly one bottom tab bar is present in each — the bar is the sole publisher of its own height, so two mounted at once is a separate and worse failure.",
|
|
219
|
-
expectedData: { bottomNavCount: 1 },
|
|
220
|
-
endResult: "The mode is off again by the last step; restore the window width.",
|
|
221
|
-
},
|
|
222
|
-
"checklist-design-ux-hand-mode-layout-dashboard-bottom-nav-mirror": {
|
|
223
|
-
roles: ["buyer"],
|
|
224
|
-
startPage: "/user",
|
|
225
|
-
steps: [
|
|
226
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
227
|
-
"Resize the browser window to 390 pixels wide and open /user.",
|
|
228
|
-
"Look at the bottom tab bar and write down its items in order.",
|
|
229
|
-
"Count the bottom bars present.",
|
|
230
|
-
"Compare the item order against the public bar from the sibling case (checklist-design-ux-hand-mode-layout-bottom-nav-mirror, on /).",
|
|
231
|
-
"Turn 'Left-hand mode' off and check both again.",
|
|
232
|
-
],
|
|
233
|
-
inputs: { leftHandMode: true, mobileWidth: 390 },
|
|
234
|
-
expectedBehaviour: "BEFORE (fixed 2026-09-28): /user rendered its own dashboard-specific bottom bar, so this case was testing whether a second, separate implementation happened to mirror the same way as the public one. AFTER: /user renders the exact same shared bottom bar component as every public page — there is only one implementation, so hand-mode mirroring is inherited for free rather than needing its own logic. Exactly one bottom bar is mounted.",
|
|
235
|
-
expectedUiState: "The /user bottom bar's items and order match the public bar's from the sibling case, in both hand-mode states, because it is literally the same bar. Exactly one bottom bar is present throughout.",
|
|
236
|
-
expectedData: { bottomNavCount: 1 },
|
|
237
|
-
endResult: "The mode is off again by the last step; restore the window width.",
|
|
238
|
-
},
|
|
239
|
-
"checklist-design-ux-hand-mode-layout-count-badges-mirror": {
|
|
240
|
-
roles: ["buyer"],
|
|
241
|
-
startPage: "/",
|
|
242
|
-
steps: [
|
|
243
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! with at least one unread notification and one cart item.",
|
|
244
|
-
"Open / and note which corner each count badge sits in on its icon.",
|
|
245
|
-
"Turn on 'Left-hand mode' and open / again.",
|
|
246
|
-
"Note the badge corners now, and read each number.",
|
|
247
|
-
"Resize to 390 pixels and check the badges on the bottom bar too.",
|
|
248
|
-
"Turn 'Left-hand mode' off.",
|
|
249
|
-
],
|
|
250
|
-
inputs: { leftHandMode: true },
|
|
251
|
-
expectedBehaviour: "A badge stays attached to its icon and does not drift off the icon's edge or under an adjacent control when the cluster mirrors. It must also stay readable — these badges overlay chrome and take the solid pairing, so a tint conversion would leave the number invisible.",
|
|
252
|
-
expectedUiState: "Every badge sits on its own icon in both modes, fully within the bar, with its number readable. A badge clipped by the viewport edge in left-hand mode is the failure this case is looking for.",
|
|
253
|
-
endResult: "The mode is off again by the last step; restore the window width.",
|
|
254
|
-
},
|
|
255
|
-
"checklist-design-ux-hand-mode-layout-nav-scroll-arrows-unaffected": {
|
|
256
|
-
roles: ["buyer"],
|
|
257
|
-
startPage: "/",
|
|
258
|
-
steps: [
|
|
259
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
260
|
-
"Resize the browser window to 390 pixels wide and open /.",
|
|
261
|
-
"Find a horizontally scrolling nav strip and look at its scroll arrows.",
|
|
262
|
-
"Click each and check which direction the strip moves.",
|
|
263
|
-
"Turn 'Left-hand mode' off and check both again.",
|
|
264
|
-
],
|
|
265
|
-
inputs: { leftHandMode: true, mobileWidth: 390 },
|
|
266
|
-
expectedBehaviour: "Scroll arrows describe a direction of travel, like gallery arrows, so they do not mirror. Left scrolls left in both modes.",
|
|
267
|
-
expectedUiState: "The arrows are in the same positions and move the strip in the same directions in both modes. Swapped arrows are the failure.",
|
|
268
|
-
endResult: "The mode is off again by the last step; restore the window width.",
|
|
269
|
-
},
|
|
270
|
-
"checklist-design-ux-hand-mode-layout-header-tab-order-sane": {
|
|
271
|
-
roles: ["buyer"],
|
|
272
|
-
startPage: "/",
|
|
273
|
-
steps: [
|
|
274
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
275
|
-
"Open / and press Tab repeatedly from the top of the page, writing down each control as it receives focus.",
|
|
276
|
-
"Continue until focus reaches the main content.",
|
|
277
|
-
"Turn 'Left-hand mode' off and repeat the same walk.",
|
|
278
|
-
"Compare the two sequences.",
|
|
279
|
-
],
|
|
280
|
-
inputs: { leftHandMode: true },
|
|
281
|
-
expectedBehaviour: "Mirroring is visual. Focus order follows the document, so a keyboard user's path through the header is unchanged — and every focused control shows a visible focus ring in both modes.",
|
|
282
|
-
expectedUiState: "The tab sequence is the same in both modes and never jumps backwards across the header. Every focused control is visibly outlined. A focus order that reverses with the mode means the DOM is being reordered rather than the layout mirrored.",
|
|
283
|
-
endResult: "The mode is off again by the last step.",
|
|
284
|
-
},
|
|
285
|
-
"checklist-design-ux-hand-mode-layout-hand-mode-no-fouc": {
|
|
286
|
-
roles: ["buyer"],
|
|
287
|
-
startPage: "/user",
|
|
288
|
-
steps: [
|
|
289
|
-
"Sign in as rehan.sheikh@gmail.com / TempPass123! and turn on 'Left-hand mode'.",
|
|
290
|
-
"Open /user and reload the page, watching the very first moment it paints.",
|
|
291
|
-
"Note whether the sidebar appears on the default side before moving.",
|
|
292
|
-
"Reload three more times, watching each time.",
|
|
293
|
-
"Navigate between dashboard pages and watch for the same flash.",
|
|
294
|
-
"Turn 'Left-hand mode' off.",
|
|
295
|
-
],
|
|
296
|
-
inputs: { leftHandMode: true },
|
|
297
|
-
expectedBehaviour: "The preference is stored on the user record and applied before first paint. Reading it only after hydration paints the default layout first and then moves it — visible as the sidebar jumping across the screen on every single load.",
|
|
298
|
-
expectedUiState: "On all four reloads the sidebar is on the mirrored side from the first painted frame. No flash of the default layout, and no jump during client-side navigation.",
|
|
299
|
-
endResult: "The mode is off again by the last step. Reloading four times matters — a flash this brief is easy to miss once.",
|
|
300
|
-
},
|
|
301
|
-
};
|