Store detail updates

This commit is contained in:
Greg Kilmer
2026-08-06 12:42:27 -04:00
parent f4a49fe9bc
commit 40b2cc8c5d
2 changed files with 51 additions and 21 deletions
+9 -3
View File
@@ -1,10 +1,16 @@
{
"ordersOpen": false,
"lastUpdated": "2026-08-04",
"lastUpdated": "2026-08-06",
"turnaround": "Estimated turnaround: ~2 weeks once a list is confirmed.",
"maxNote": "I take a limited number of orders at a time so each one gets full attention. Slots reopen as current orders finish.",
"slots": {
"cards": { "open": 0, "total": 5 },
"deckBoxes": { "open": 0, "total": 4 }
"cards": {
"open": 0,
"total": 3
},
"deckBoxes": {
"open": 0,
"total": 3
}
}
}
+41 -17
View File
@@ -42,6 +42,21 @@ export interface PriceTier {
note?: string;
}
/**
* A selectable filament/print color for a printed product. Rendered as a
* swatch on the product page and offered in the order form. Flip `inStock` to
* false when a color runs out — it shows as "Out of stock" and is removed from
* the order-form color list.
*/
export interface ColorOption {
/** Display name, e.g. "Midnight Black". */
name: string;
/** Hex swatch color shown in the grid + form, e.g. "#1b1730". */
hex: string;
/** Whether the color is currently available to order. */
inStock: boolean;
}
export interface Product {
/** mdi icon used as the decorative mark. */
icon: string;
@@ -64,6 +79,13 @@ export interface Product {
specs: SpecRow[];
/** Pricing tiers rendered as a pricing table. */
pricing: PriceTier[];
/**
* Optional selectable print colors (filament). Rendered as a swatch grid on
* the product page and offered in the order form. Add/remove entries here to
* manage available colors; toggle `inStock` per color. Omit for products that
* have no color choice (e.g. proxy cards).
*/
colors?: ColorOption[];
}
/**
@@ -74,7 +96,7 @@ export const cardProduct: Product = {
icon: 'cards-playing',
title: 'Proxy MTG Cards',
summary:
'High-quality printed proxy cards for casual play, sized to match real Magic cards and clearly marked as proxies.',
'High-quality printed proxy cards for casual play, sized to match real Magic cards and clearly marked as proxies intended for use sleeved.',
slotKey: 'cards',
images: [
{
@@ -95,23 +117,25 @@ export const cardProduct: Product = {
],
specs: [
{ label: 'Size', value: '63 x 88 mm (standard MTG card size)' },
{ label: 'Thickness', value: '[Greg to fill] (e.g. 300 gsm / 350 gsm cardstock)' },
{ label: 'Thickness', value: '0.31mm laminated photo cardstock' },
{ label: 'Back', value: 'Solid white back (clearly not tournament-legal)' },
{
label: 'Finishes',
value: '[Greg to fill] (e.g. matte, linen, glossy)',
value: 'Default matte finish, available in glossy on request',
},
{
label: 'Double-sided cards',
value: 'Printed as two separate cards and count as 2 card slots',
},
{ label: 'Art', value: 'Official card art only. No custom or offensive art (see Requirements)' },
{ label: 'Art', value: 'Official card art only. No offensive art (custom cards usable if fully provided see Requirements)' },
],
pricing: [
{ band: '1-9 cards', price: '[Greg to fill]', note: 'per card' },
{ band: '10-39 cards', price: '[Greg to fill]', note: 'per card' },
{ band: '40-99 cards', price: '[Greg to fill]', note: 'per card' },
{ band: '100+ cards', price: '[Greg to fill]', note: 'per card' },
{ band: 'Individual cards', price: '$1.00', note: 'per card' },
{ band: 'Individual foil cards', price: '$2.00', note: 'per card' },
{ band: '36 card set', price: '$20.00', note: 'per set of cards' },
{ band: '60 card deck', price: '$30.00', note: 'per set of cards' },
{ band: '100 card deck', price: '$40.00', note: 'per set of cards' },
{ band: 'Deck Disclosure Card', price: '$2.00', note: 'per card' },
],
};
@@ -142,16 +166,16 @@ export const deckBoxProduct: Product = {
},
],
specs: [
{ label: 'Capacity', value: '[Greg to fill] (e.g. 100 double-sleeved cards)' },
{ label: 'Material', value: '[Greg to fill] (e.g. PLA / PETG)' },
{ label: 'Finish', value: '[Greg to fill] (e.g. as-printed, sanded, painted)' },
{ label: 'Sizing', value: '[Greg to fill] (deck box + matching counters)' },
{ label: 'Capacity', value: '100 double-sleeved card bay / 82mm depth and tray 67 mm x 76 mm x 24 mm (width x depth x height)' },
{ label: 'Material', value: 'PLA with 2x4 magnets and top-loader protection pane' },
{ label: 'Finish', value: 'as-printed' },
{ label: 'Sizing', value: '86 mm x 109 mm x 143 mm (width x depth x height)' },
{ label: 'Customization', value: 'Color selection from available filament' },
],
pricing: [
{ band: 'Single deck box', price: '[Greg to fill]', note: 'per print' },
{ band: 'Deck box + counter set', price: '[Greg to fill]', note: 'per set' },
{ band: 'Counter / token only', price: '[Greg to fill]', note: 'per print' },
{ band: 'Single deck box', price: '$30.00', note: 'per print' },
{ band: 'Deck box + counter set', price: 'Coming Soon', note: 'per set' },
{ band: 'Counter / token only', price: 'Coming Soon', note: 'per print' },
],
};
@@ -205,8 +229,8 @@ export const requirements: Requirement[] = [
},
{
icon: 'alert',
title: 'No custom or offensive art',
body: 'I will not print custom art or any cards I find to be offensive. Only official card art is used.',
title: 'No offensive art',
body: 'I will not print custom art or any cards I find to be offensive. Only official card art is used unless card art fully provided by the customer.',
},
{
icon: 'information',