@blamejs/blamejs-shop 0.2.1 → 0.2.2
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/CHANGELOG.md +2 -0
- package/lib/asset-manifest.json +3 -3
- package/lib/storefront.js +24 -21
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,8 @@ upgrading across more than a few patches at a time.
|
|
|
8
8
|
|
|
9
9
|
## v0.2.x
|
|
10
10
|
|
|
11
|
+
- v0.2.2 (2026-05-27) — **Bespoke line-art illustrations across the storefront — category tiles, image placeholders, and every empty state.** The storefront's stand-in graphics are now a single, cohesive set of hand-drawn line illustrations in the brand violet, replacing the previous mix of gradient-only tiles, single-letter image marks, and emoji. The six featured-collection tiles carry a matching icon (apparel, hardware, digital, subscriptions, bundles, gift cards). Products without an image — in the grid and on the product page — show a bespoke "no image yet" placeholder instead of a letter glyph. Every empty state has its own illustration: cart, search, wishlist, saved-for-later, addresses, returns, and orders. The artwork is inline SVG (no extra files fetched, consistent with the strict asset policy) and adapts to the surface — the fine detail strokes follow the text colour, so the same set reads correctly on a dark or a light background. **Changed:** *Category tiles carry line-art icons* — Each of the six featured-collection tiles now shows a violet line icon for its category, centered over the existing tile gradient. The tile links and labels are unchanged. · *Bespoke image placeholder replaces the letter mark* — When a product has no image, the grid card and the product-page gallery render a line-art "no image yet" placeholder — an isometric package on a faint grid (the product page adds a shield motif and a terminal-prompt accent) — instead of the previous single uppercase letter. The no-image grid card now uses the same media-card layout as image-bearing cards for a consistent grid. · *Every empty state has matching artwork* — The empty cart, no-search-results, empty wishlist, saved-for-later, addresses, returns, and orders states now show a bespoke line illustration in place of the previous emoji or unicode glyphs, so the storefront and account sections share one visual language. · *Inline, theme-adaptive SVG* — All of the new artwork is inline SVG with presentation attributes only — nothing is fetched from a CDN and no inline styles are used, consistent with the strict content-security and asset policies. The detail strokes use currentColor, so the set adapts to the background it sits on. The edge and container renderers emit identical markup.
|
|
12
|
+
|
|
11
13
|
- v0.2.1 (2026-05-27) — **Theme tuning — stronger contrast, a cleaner product buy-box, and natural code-sample colors.** A polish pass over the new dark theme. The palette is rebalanced so the brand violet reads as a deliberate accent rather than the whole field: surfaces, borders, and shadows are now neutral dark, body text and prices are high-contrast near-white, and violet is concentrated on calls-to-action, the hero accent, and the newsletter band. The product page's buy-box is now a single contained card — price, variant, quantity, and add-to-cart group cleanly with proper spacing and alignment instead of blending into the column, and the wishlist/compare controls sit in their own separated row. The homepage code sample uses natural syntax-highlight colours (green strings, blue functions, violet keywords) with the usual window dots. The home collection tiles are calmer dark tiles with a subtle violet glow rather than solid magenta swatches. **Changed:** *Rebalanced palette for contrast* — Surfaces (`--surface`, card and raised tiers) and borders are now neutral dark instead of violet-tinted; secondary text and prices are high-contrast near-white; default shadows are neutral. The violet accent is reserved for primary buttons, the hero accent word, focus states, and the newsletter/framework bands — so contrast and hierarchy are clearer and the page no longer reads as a single wash of magenta. · *Product buy-box is a contained, aligned card* — Price, variant chip(s), quantity, and the full-width add-to-cart now sit in one bordered buy-box card with consistent spacing, the price rendered in high-contrast white, and the post-quantum-secured-checkout trust line as a calm note beneath it. The wishlist and compare controls are grouped into their own row, separated from the buy-box. No change to add-to-cart, variant, or currency behaviour. · *Natural code-sample colours and calmer collection tiles* — The homepage server-rendered code sample now uses a natural console palette — green strings, blue function names, violet keywords, grey comments — with red/yellow/green window dots. The home collection tiles are dark with a subtle, position-varied violet glow instead of solid violet gradient fills.
|
|
12
14
|
|
|
13
15
|
- v0.2.0 (2026-05-27) — **A new storefront visual identity — a dark, violet brand theme with self-hosted typefaces and a redesigned product buy-box.** The default storefront theme has been redesigned around the project's actual brand: a dark, near-black canvas with a violet-to-magenta accent system that matches the blamejs shield-and-terminal mark, replacing the previous light theme and its unrelated orange accent. The stylesheet is restructured onto a semantic design-token layer (a purpose tier — surface, text, border, accent, price — sitting over the raw palette), so colour, contrast, and surfaces are now consistent and themeable rather than hard-coded per component. Two distinctive open-licensed typefaces are self-hosted in place of Inter: Hanken Grotesk for display and body, Space Mono for the terminal-style chrome (navigation, labels, SKUs, prices). The product page's variant selector is rebuilt from a data table into a proper buy-box: a prominent price, the variant(s) as selectable chips, a full-width add-to-cart, and a post-quantum-secured-checkout trust line — the add-to-cart, variant, and currency-conversion behaviour is unchanged. Accessibility is preserved (contrast targets met on the dark surfaces, focus-visible, reduced-motion guards, the consent banner restyled as legible dark glass). Operators on the default theme get the new look on upgrade; a custom theme passed via the theme primitive is unaffected. **Changed:** *Dark violet brand theme replaces the light theme* — The default theme is now a dark, near-black storefront with a violet→magenta accent family (matching the logo's shield/terminal mark) carried across the chrome, hero, cards, forms, badges, switchers, and footer. The previous light canvas and its off-brand orange accent are gone. Depth comes from hard-edged and soft violet shadows and a faint circuit-grid texture; motion (a staggered page-load reveal, a glitch treatment on the hero accent word, a terminal cursor) is CSS-only and disabled under `prefers-reduced-motion`. · *Semantic design-token layer + self-hosted typefaces* — The stylesheet now has a primitive→semantic token structure (`--surface`/`--surface-raised`, `--text`/`--text-muted`, `--border`, `--color-accent`, `--color-price`, glow tokens) so components reference purpose, not raw values — fixing the previously undefined `--font-sans`/`--danger-l` tokens and a duplicated button definition along the way. Hanken Grotesk (display/body) and Space Mono (mono chrome) are self-hosted as OFL woff2, replacing Inter; nothing is fetched from a font CDN, consistent with the strict `font-src 'self'` policy. · *Product buy-box redesign* — The product page's variant table is replaced by a buy-box: a large monospace price, each variant as a selectable pill chip (with a clear selected state, fully operable with JavaScript off), a full-width add-to-cart, and a trust line stating the checkout is post-quantum secured. The underlying add-to-cart form, multi-variant selection, and multi-currency price formatting are unchanged; products with many variants keep a compact fallback. The PDP trust badge wording "Ships from origin" is replaced with a real delivery estimate.
|
package/lib/asset-manifest.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.2.
|
|
2
|
+
"version": "0.2.2",
|
|
3
3
|
"assets": {
|
|
4
4
|
"css/admin.css": {
|
|
5
5
|
"integrity": "sha384-oUi6NkXA0ULSy8+8+LG0FV6jsgr7Y11Xf3VdnwUESnvUPaN7anYEC+QOAUXwgsap",
|
|
6
6
|
"fingerprinted": "css/admin.7b692a8965624a0c.css"
|
|
7
7
|
},
|
|
8
8
|
"css/main.css": {
|
|
9
|
-
"integrity": "sha384-
|
|
10
|
-
"fingerprinted": "css/main.
|
|
9
|
+
"integrity": "sha384-iKbkn3AR4k733EgN+1Ju51qbKfz9yVmDk8lE2l99asnRGbSo4BJu4Lo+OTxcBME4",
|
|
10
|
+
"fingerprinted": "css/main.5678b2596038b019.css"
|
|
11
11
|
},
|
|
12
12
|
"js/consent.js": {
|
|
13
13
|
"integrity": "sha384-KKMQ0og8HPOykRRPpUyxX7dMhTvKySfVtpGX/jGWzZwNaN/c4OykvRvXpqBHcQST",
|
package/lib/storefront.js
CHANGED
|
@@ -512,11 +512,15 @@ var PRODUCT_CARD_IMAGE =
|
|
|
512
512
|
"</a>\n";
|
|
513
513
|
|
|
514
514
|
var PRODUCT_CARD =
|
|
515
|
-
"<
|
|
516
|
-
" <
|
|
517
|
-
"
|
|
518
|
-
"
|
|
519
|
-
"
|
|
515
|
+
"<a class=\"product-card\" href=\"/products/{{slug}}\">\n" +
|
|
516
|
+
" <figure class=\"product-card__media product-card__media--placeholder\">\n" +
|
|
517
|
+
" <svg class=\"media-ph__svg\" viewBox=\"0 0 160 120\" aria-hidden=\"true\"><rect width=\"160\" height=\"120\" fill=\"none\"/><g stroke=\"currentColor\" stroke-opacity=\"0.10\" stroke-width=\"1\"><path d=\"M0 30 H160 M0 60 H160 M0 90 H160 M40 0 V120 M80 0 V120 M120 0 V120\"/></g><g fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M80 38 L104 50 L104 76 L80 88 L56 76 L56 50 Z\"/><path d=\"M56 50 L80 62 L104 50 M80 62 V88\" stroke=\"#732A8D\"/><path d=\"M70 47 L74 50 L70 53\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M77 54 H86\" stroke=\"currentColor\" stroke-width=\"2\"/></g><text x=\"80\" y=\"106\" text-anchor=\"middle\" font-family=\"ui-monospace,Menlo,Consolas,monospace\" font-size=\"9\" letter-spacing=\"1.5\" fill=\"#6b6b78\">no image yet</text></svg>\n" +
|
|
518
|
+
" </figure>\n" +
|
|
519
|
+
" <div class=\"product-card__meta\">\n" +
|
|
520
|
+
" <h3 class=\"product-card__title\">{{title}}</h3>\n" +
|
|
521
|
+
" <p class=\"product-card__price\">{{price}}</p>\n" +
|
|
522
|
+
" </div>\n" +
|
|
523
|
+
"</a>\n";
|
|
520
524
|
|
|
521
525
|
// Render-time picker. Image-bearing cards become the dominant
|
|
522
526
|
// surface as soon as a product carries media; text-only cards
|
|
@@ -625,42 +629,42 @@ var HOME_HERO =
|
|
|
625
629
|
" </header>\n" +
|
|
626
630
|
" <div class=\"collections__grid\">\n" +
|
|
627
631
|
" <a class=\"collection-card\" href=\"/search?q=tee\">\n" +
|
|
628
|
-
" <div class=\"collection-card__art collection-card__art--1\" aria-hidden=\"true\"></div>\n" +
|
|
632
|
+
" <div class=\"collection-card__art collection-card__art--1\" aria-hidden=\"true\"><svg class=\"collection-card__icon\" viewBox=\"0 0 160 120\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M70 38 C74 44 86 44 90 38 L104 44 L112 58 L100 64 L96 58 L96 92 L64 92 L64 58 L60 64 L48 58 L56 44 Z\"/><path d=\"M71 40 C75 47 85 47 89 40\" stroke=\"#732A8D\" stroke-width=\"2\"/><path d=\"M73 76 H87\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-dasharray=\"2 3\"/></svg></div>\n" +
|
|
629
633
|
" <div class=\"collection-card__meta\">\n" +
|
|
630
634
|
" <h3>Apparel</h3>\n" +
|
|
631
635
|
" <p>Sized, colored, inventoried.</p>\n" +
|
|
632
636
|
" </div>\n" +
|
|
633
637
|
" </a>\n" +
|
|
634
638
|
" <a class=\"collection-card\" href=\"/search?q=edge\">\n" +
|
|
635
|
-
" <div class=\"collection-card__art collection-card__art--2\" aria-hidden=\"true\"></div>\n" +
|
|
639
|
+
" <div class=\"collection-card__art collection-card__art--2\" aria-hidden=\"true\"><svg class=\"collection-card__icon\" viewBox=\"0 0 160 120\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"58\" y=\"38\" width=\"44\" height=\"44\" rx=\"4\"/><rect x=\"70\" y=\"50\" width=\"20\" height=\"20\" rx=\"2\" stroke=\"#732A8D\"/><circle cx=\"80\" cy=\"60\" r=\"3\" fill=\"#AD38DB\" stroke=\"none\"/><path d=\"M66 38 V30 M76 38 V30 M86 38 V30 M96 38 V30\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M66 82 V90 M76 82 V90 M86 82 V90 M96 82 V90\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M58 48 H50 M58 60 H50 M58 72 H50\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M102 48 H110 M102 60 H110 M102 72 H110\" stroke=\"currentColor\" stroke-width=\"2\"/></svg></div>\n" +
|
|
636
640
|
" <div class=\"collection-card__meta\">\n" +
|
|
637
641
|
" <h3>Hardware</h3>\n" +
|
|
638
642
|
" <p>Serialized, warranty-tracked.</p>\n" +
|
|
639
643
|
" </div>\n" +
|
|
640
644
|
" </a>\n" +
|
|
641
645
|
" <a class=\"collection-card\" href=\"/search?q=license\">\n" +
|
|
642
|
-
" <div class=\"collection-card__art collection-card__art--3\" aria-hidden=\"true\"></div>\n" +
|
|
646
|
+
" <div class=\"collection-card__art collection-card__art--3\" aria-hidden=\"true\"><svg class=\"collection-card__icon\" viewBox=\"0 0 160 120\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M60 74 C50 74 48 62 57 59 C56 47 73 43 79 53 C88 47 100 54 97 64 C107 65 107 74 99 74 Z\" stroke=\"#732A8D\"/><path d=\"M78 60 V86\"/><path d=\"M70 78 L78 88 L86 78\"/><path d=\"M64 98 H92\" stroke=\"currentColor\" stroke-width=\"2\"/></svg></div>\n" +
|
|
643
647
|
" <div class=\"collection-card__meta\">\n" +
|
|
644
648
|
" <h3>Digital</h3>\n" +
|
|
645
649
|
" <p>License-key fulfillment.</p>\n" +
|
|
646
650
|
" </div>\n" +
|
|
647
651
|
" </a>\n" +
|
|
648
652
|
" <a class=\"collection-card\" href=\"/search?q=subscription\">\n" +
|
|
649
|
-
" <div class=\"collection-card__art collection-card__art--4\" aria-hidden=\"true\"></div>\n" +
|
|
653
|
+
" <div class=\"collection-card__art collection-card__art--4\" aria-hidden=\"true\"><svg class=\"collection-card__icon\" viewBox=\"0 0 160 120\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M56 50 A26 26 0 0 1 104 56\"/><path d=\"M104 70 A26 26 0 0 1 56 64\"/><path d=\"M104 42 L106 57 L91 55\" stroke=\"#AD38DB\"/><path d=\"M56 78 L54 63 L69 65\" stroke=\"#AD38DB\"/><circle cx=\"80\" cy=\"60\" r=\"6\" stroke=\"#732A8D\"/><circle cx=\"80\" cy=\"60\" r=\"1.6\" fill=\"currentColor\" stroke=\"none\"/></svg></div>\n" +
|
|
650
654
|
" <div class=\"collection-card__meta\">\n" +
|
|
651
655
|
" <h3>Subscriptions</h3>\n" +
|
|
652
656
|
" <p>Stripe-backed recurring.</p>\n" +
|
|
653
657
|
" </div>\n" +
|
|
654
658
|
" </a>\n" +
|
|
655
659
|
" <a class=\"collection-card\" href=\"/search?q=bundle\">\n" +
|
|
656
|
-
" <div class=\"collection-card__art collection-card__art--5\" aria-hidden=\"true\"></div>\n" +
|
|
660
|
+
" <div class=\"collection-card__art collection-card__art--5\" aria-hidden=\"true\"><svg class=\"collection-card__icon\" viewBox=\"0 0 160 120\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M86 36 L106 44 L106 64 L86 72 L66 64 L66 44 Z\" stroke=\"#732A8D\"/><path d=\"M66 44 L86 52 L106 44 M86 52 V72\" stroke=\"#732A8D\"/><path d=\"M70 56 L90 64 L90 88 L70 96 L50 88 L50 64 Z\"/><path d=\"M50 64 L70 72 L90 64 M70 72 V96\"/><path d=\"M70 72 V96\" stroke=\"currentColor\" stroke-width=\"2\"/></svg></div>\n" +
|
|
657
661
|
" <div class=\"collection-card__meta\">\n" +
|
|
658
662
|
" <h3>Bundles</h3>\n" +
|
|
659
663
|
" <p>Composite SKUs, atomic stock.</p>\n" +
|
|
660
664
|
" </div>\n" +
|
|
661
665
|
" </a>\n" +
|
|
662
666
|
" <a class=\"collection-card\" href=\"/search?q=gift\">\n" +
|
|
663
|
-
" <div class=\"collection-card__art collection-card__art--6\" aria-hidden=\"true\"></div>\n" +
|
|
667
|
+
" <div class=\"collection-card__art collection-card__art--6\" aria-hidden=\"true\"><svg class=\"collection-card__icon\" viewBox=\"0 0 160 120\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"48\" y=\"48\" width=\"64\" height=\"42\" rx=\"6\"/><path d=\"M80 48 V90\" stroke=\"#732A8D\"/><path d=\"M80 48 C71 36 56 39 62 49 C57 52 61 57 71 53 C76 51 80 50 80 48 Z\"/><path d=\"M80 48 C89 36 104 39 98 49 C103 52 99 57 89 53 C84 51 80 50 80 48 Z\"/><circle cx=\"80\" cy=\"48\" r=\"2.4\" fill=\"#AD38DB\" stroke=\"none\"/><rect x=\"56\" y=\"70\" width=\"11\" height=\"8\" rx=\"1.6\" stroke=\"currentColor\" stroke-width=\"1.8\"/></svg></div>\n" +
|
|
664
668
|
" <div class=\"collection-card__meta\">\n" +
|
|
665
669
|
" <h3>Gift cards</h3>\n" +
|
|
666
670
|
" <p>PQC-signed redemption codes.</p>\n" +
|
|
@@ -847,7 +851,7 @@ var SEARCH_HEADER =
|
|
|
847
851
|
var SEARCH_EMPTY =
|
|
848
852
|
"<section class=\"search-empty\">\n" +
|
|
849
853
|
" <div class=\"search-empty__inner\">\n" +
|
|
850
|
-
" <p class=\"search-empty__icon\" aria-hidden=\"true\"
|
|
854
|
+
" <p class=\"search-empty__icon\" aria-hidden=\"true\"><svg class=\"empty-illu\" viewBox=\"0 0 200 132\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"90\" cy=\"58\" r=\"30\"/><path d=\"M112 80 L132 100\"/><path d=\"M80 52 L86 58 L80 64\" stroke=\"currentColor\" stroke-width=\"2.4\"/><path d=\"M92 64 H102\" stroke=\"currentColor\" stroke-width=\"2.4\"/><circle cx=\"46\" cy=\"34\" r=\"2\" fill=\"#732A8D\" stroke=\"none\"/><circle cx=\"146\" cy=\"44\" r=\"2\" fill=\"#732A8D\" stroke=\"none\"/></svg></p>\n" +
|
|
851
855
|
" <h2>{{heading}}</h2>\n" +
|
|
852
856
|
" <p>{{copy}}</p>\n" +
|
|
853
857
|
" {{clear_link}}\n" +
|
|
@@ -1229,9 +1233,8 @@ function _buildPdpGallery(product, media, assetPrefix) {
|
|
|
1229
1233
|
var prefix = assetPrefix || "/assets/";
|
|
1230
1234
|
function _escAttr(s) { return b.template.escapeHtml(s); }
|
|
1231
1235
|
if (!media || media.length === 0) {
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
"<span class=\"pdp__media-mark\">" + _escAttr(initial) + "</span>" +
|
|
1236
|
+
return "<figure class=\"pdp__media pdp__media--placeholder\" aria-hidden=\"true\">" +
|
|
1237
|
+
"<svg class=\"media-ph__svg\" viewBox=\"0 0 240 240\" aria-hidden=\"true\"><rect width=\"240\" height=\"240\" fill=\"none\"/><g stroke=\"currentColor\" stroke-opacity=\"0.10\" stroke-width=\"1\"><path d=\"M0 40 H240 M0 80 H240 M0 120 H240 M0 160 H240 M0 200 H240 M40 0 V240 M80 0 V240 M120 0 V240 M160 0 V240 M200 0 V240\"/></g><g fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M120 64 L162 80 L162 122 C162 152 144 168 120 178 C96 168 78 152 78 122 L78 80 Z\" stroke=\"#732A8D\" stroke-width=\"2.4\"/><path d=\"M120 92 L146 105 L146 134 L120 147 L94 134 L94 105 Z\"/><path d=\"M94 105 L120 118 L146 105 M120 118 V147\" stroke=\"#732A8D\" stroke-width=\"2.4\"/><path d=\"M107 101 L112 105 L107 109\" stroke=\"currentColor\" stroke-width=\"2.4\"/><path d=\"M116 110 H128\" stroke=\"currentColor\" stroke-width=\"2.4\"/></g><text x=\"120\" y=\"208\" text-anchor=\"middle\" font-family=\"ui-monospace,Menlo,Consolas,monospace\" font-size=\"12\" letter-spacing=\"2\" fill=\"#6b6b78\">no image yet</text></svg>" +
|
|
1235
1238
|
"</figure>" +
|
|
1236
1239
|
"<ul class=\"pdp__thumbs\" aria-hidden=\"true\">" +
|
|
1237
1240
|
"<li class=\"is-active\"></li><li></li><li></li><li></li>" +
|
|
@@ -1715,7 +1718,7 @@ function renderWishlist(opts) {
|
|
|
1715
1718
|
var inner = rowsHtml
|
|
1716
1719
|
? "<ul class=\"wishlist-list\">" + rowsHtml + "</ul>"
|
|
1717
1720
|
: "<div class=\"account-empty\">" +
|
|
1718
|
-
"<p class=\"account-empty__icon\" aria-hidden=\"true\"
|
|
1721
|
+
"<p class=\"account-empty__icon\" aria-hidden=\"true\"><svg class=\"empty-illu\" viewBox=\"0 0 200 132\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M100 104 C70 82 60 64 60 50 C60 38 70 32 80 34 C88 35 96 42 100 50 C104 42 112 35 120 34 C130 32 140 38 140 50 C140 64 130 82 100 104 Z\"/><path d=\"M100 90 C82 76 76 64 76 54\" stroke=\"currentColor\" stroke-opacity=\"0.45\" stroke-width=\"1.8\" stroke-dasharray=\"2 4\"/><path d=\"M132 86 V98 M126 92 H138\" stroke=\"#732A8D\" stroke-width=\"2\"/></svg></p>" +
|
|
1719
1722
|
"<p class=\"account-empty__lede\">You haven't saved anything yet. Browse the shop and tap <strong>Save to wishlist</strong> on products you want to keep an eye on.</p>" +
|
|
1720
1723
|
"<a class=\"btn-secondary\" href=\"/\">Browse the shop →</a>" +
|
|
1721
1724
|
"</div>";
|
|
@@ -1964,7 +1967,7 @@ function renderSaved(opts) {
|
|
|
1964
1967
|
var inner = rowsHtml
|
|
1965
1968
|
? "<ul class=\"saved-list\">" + rowsHtml + "</ul>"
|
|
1966
1969
|
: "<div class=\"account-empty\">" +
|
|
1967
|
-
"<p class=\"account-empty__icon\" aria-hidden=\"true\"
|
|
1970
|
+
"<p class=\"account-empty__icon\" aria-hidden=\"true\"><svg class=\"empty-illu\" viewBox=\"0 0 200 132\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M78 32 H122 V104 L100 88 L78 104 Z\"/><path d=\"M90 58 H110\" stroke=\"currentColor\" stroke-opacity=\"0.45\" stroke-width=\"1.8\" stroke-dasharray=\"2 4\"/><circle cx=\"138\" cy=\"46\" r=\"12\" stroke=\"#732A8D\" stroke-width=\"2\"/><path d=\"M138 40 V46 L143 49\" stroke=\"#732A8D\" stroke-width=\"2\"/></svg></p>" +
|
|
1968
1971
|
"<p class=\"account-empty__lede\">Nothing saved for later. Use <strong>Save for later</strong> on a cart item to move it here without losing it.</p>" +
|
|
1969
1972
|
"<a class=\"btn-secondary\" href=\"/cart\">View your cart →</a>" +
|
|
1970
1973
|
"</div>";
|
|
@@ -2070,7 +2073,7 @@ function renderAddresses(opts) {
|
|
|
2070
2073
|
var listHtml = rowsHtml
|
|
2071
2074
|
? "<ul class=\"address-list\">" + rowsHtml + "</ul>"
|
|
2072
2075
|
: "<div class=\"account-empty\">" +
|
|
2073
|
-
"<p class=\"account-empty__icon\" aria-hidden=\"true\"
|
|
2076
|
+
"<p class=\"account-empty__icon\" aria-hidden=\"true\"><svg class=\"empty-illu\" viewBox=\"0 0 200 132\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M100 110 C84 90 74 76 74 60 A26 26 0 0 1 126 60 C126 76 116 90 100 110 Z\"/><path d=\"M88 64 L100 52 L112 64 M91 61 V74 H109 V61\" stroke=\"#732A8D\" stroke-width=\"2.2\"/><path d=\"M97 74 V67 H103 V74\" stroke=\"currentColor\" stroke-width=\"2\"/></svg></p>" +
|
|
2074
2077
|
"<p class=\"account-empty__lede\">No saved addresses yet. Add one below to speed up checkout.</p>" +
|
|
2075
2078
|
"</div>";
|
|
2076
2079
|
var notice = opts.notice
|
|
@@ -2464,7 +2467,7 @@ function renderReturns(opts) {
|
|
|
2464
2467
|
var inner = rowsHtml
|
|
2465
2468
|
? "<ul class=\"return-list\">" + rowsHtml + "</ul>"
|
|
2466
2469
|
: "<div class=\"account-empty\">" +
|
|
2467
|
-
"<p class=\"account-empty__icon\" aria-hidden=\"true\"
|
|
2470
|
+
"<p class=\"account-empty__icon\" aria-hidden=\"true\"><svg class=\"empty-illu\" viewBox=\"0 0 200 132\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M66 64 L100 50 L134 64 L100 78 Z\"/><path d=\"M66 64 V92 L100 106 L134 92 V64 M100 78 V106\"/><path d=\"M100 36 A20 20 0 0 1 120 56\" stroke=\"#732A8D\" stroke-width=\"2.4\"/><path d=\"M100 28 L100 40 L110 38\" stroke=\"#732A8D\" stroke-width=\"2.4\"/><path d=\"M88 70 H112\" stroke=\"currentColor\" stroke-opacity=\"0.45\" stroke-width=\"1.8\" stroke-dasharray=\"2 4\"/></svg></p>" +
|
|
2468
2471
|
"<p class=\"account-empty__lede\">No returns yet. Start one from an order in your account.</p>" +
|
|
2469
2472
|
"<a class=\"btn-secondary\" href=\"/account/orders\">View your orders →</a>" +
|
|
2470
2473
|
"</div>";
|
|
@@ -2891,7 +2894,7 @@ function renderAccountSubscriptions(opts) {
|
|
|
2891
2894
|
var inner = rowsHtml
|
|
2892
2895
|
? note + "<ul class=\"subscription-list\">" + rowsHtml + "</ul>"
|
|
2893
2896
|
: "<div class=\"account-empty\">" +
|
|
2894
|
-
"<p class=\"account-empty__icon\" aria-hidden=\"true\"
|
|
2897
|
+
"<p class=\"account-empty__icon\" aria-hidden=\"true\"><svg class=\"empty-illu\" viewBox=\"0 0 200 132\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M74 30 H126 V104 L118 98 L110 104 L100 98 L90 104 L82 98 L74 104 Z\"/><path d=\"M86 48 H114 M86 62 H114\" stroke=\"#732A8D\" stroke-width=\"2.2\"/><path d=\"M86 76 H106\" stroke=\"currentColor\" stroke-opacity=\"0.45\" stroke-width=\"1.8\" stroke-dasharray=\"2 4\"/></svg></p>" +
|
|
2895
2898
|
"<p class=\"account-empty__lede\">You have no active subscriptions.</p>" +
|
|
2896
2899
|
"<a class=\"btn-secondary\" href=\"/\">Browse the shop →</a>" +
|
|
2897
2900
|
"</div>";
|
|
@@ -3664,7 +3667,7 @@ var CART_EMPTY_PAGE =
|
|
|
3664
3667
|
" </nav>\n" +
|
|
3665
3668
|
" <div class=\"cart-empty\">\n" +
|
|
3666
3669
|
" <div class=\"cart-empty__card\">\n" +
|
|
3667
|
-
" <p class=\"cart-empty__icon\" aria-hidden=\"true\"
|
|
3670
|
+
" <p class=\"cart-empty__icon\" aria-hidden=\"true\"><svg class=\"empty-illu\" viewBox=\"0 0 200 132\" fill=\"none\" stroke=\"#AD38DB\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M52 50 H66 L74 90 H128 L138 58 H72\"/><path d=\"M46 44 H56\" stroke=\"#732A8D\"/><circle cx=\"82\" cy=\"106\" r=\"7\"/><circle cx=\"120\" cy=\"106\" r=\"7\"/><path d=\"M84 72 H122\" stroke=\"currentColor\" stroke-opacity=\"0.45\" stroke-width=\"1.8\" stroke-dasharray=\"2 4\"/><path d=\"M150 38 L150 50 M144 44 L156 44\" stroke=\"#732A8D\" stroke-width=\"2\"/></svg></p>\n" +
|
|
3668
3671
|
" <p class=\"eyebrow cart-empty__eyebrow\">Cart</p>\n" +
|
|
3669
3672
|
" <h1 class=\"cart-empty__title\">Your cart is empty</h1>\n" +
|
|
3670
3673
|
" <p class=\"cart-empty__lede\">Browse the catalog and the products you add show up here. Items hold their price at add-time, not at checkout.</p>\n" +
|
package/package.json
CHANGED