@design.estate/dees-catalog 9.3.0 → 9.4.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.
Files changed (29) hide show
  1. package/dist_bundle/bundle.js +1372 -2727
  2. package/dist_bundle/bundle.js.map +1 -1
  3. package/dist_ts_web/00_commitinfo_data.js +1 -1
  4. package/dist_ts_web/elements/00group-button/dees-button/dees-button.js +2 -1
  5. package/dist_ts_web/elements/00group-input/dees-input-quantityselector/dees-input-quantityselector.js +4 -2
  6. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.d.ts +11 -9
  7. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.demo.d.ts +2 -2
  8. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.demo.js +148 -319
  9. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.js +60 -279
  10. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.d.ts +25 -10
  11. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.demo.d.ts +3 -4
  12. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.demo.js +229 -388
  13. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.js +253 -813
  14. package/dist_ts_web/elements/00group-simple/dees-simple-login/dees-simple-login.demo.d.ts +2 -0
  15. package/dist_ts_web/elements/00group-simple/dees-simple-login/dees-simple-login.demo.js +150 -389
  16. package/dist_ts_web/elements/00group-simple/dees-simple-login/dees-simple-login.js +67 -11
  17. package/package.json +1 -1
  18. package/readme.hints.md +26 -0
  19. package/readme.md +76 -15
  20. package/scripts/bdtheme-baseline.json +0 -2
  21. package/ts_web/00_commitinfo_data.ts +1 -1
  22. package/ts_web/elements/00group-button/dees-button/dees-button.ts +1 -0
  23. package/ts_web/elements/00group-input/dees-input-quantityselector/dees-input-quantityselector.ts +3 -1
  24. package/ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.demo.ts +67 -332
  25. package/ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.ts +65 -322
  26. package/ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.demo.ts +136 -382
  27. package/ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.ts +224 -872
  28. package/ts_web/elements/00group-simple/dees-simple-login/dees-simple-login.demo.ts +116 -421
  29. package/ts_web/elements/00group-simple/dees-simple-login/dees-simple-login.ts +66 -10
@@ -1,326 +1,155 @@
1
- import { html, css, cssManager } from '@design.estate/dees-element';
2
- import '@design.estate/dees-element/demotools';
3
- import '../../00group-layout/dees-panel/dees-panel.js';
4
- export const demoFunc = () => html `
5
- <dees-demowrapper>
6
- <style>
7
- ${css `
8
- .demo-container {
9
- display: flex;
10
- flex-direction: column;
11
- gap: 24px;
12
- padding: 24px;
13
- max-width: 1200px;
14
- margin: 0 auto;
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
15
19
  }
16
-
17
- .product-grid {
18
- display: grid;
19
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
20
- gap: 20px;
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
21
23
  }
22
-
23
- .cart-summary {
24
- margin-top: 24px;
25
- padding: 20px;
26
- background: ${cssManager.bdTheme('hsl(210 40% 96.1%)', 'hsl(215 20.2% 16.8%)')};
27
- border: 1px solid ${cssManager.bdTheme('hsl(214.3 31.8% 91.4%)', 'hsl(215 20.2% 21.8%)')};
28
- border-radius: 8px;
29
- }
30
-
31
- .cart-summary-title {
32
- font-size: 18px;
33
- font-weight: 600;
34
- margin-bottom: 16px;
35
- color: ${cssManager.bdTheme('hsl(0 0% 9%)', 'hsl(0 0% 95%)')};
36
- }
37
-
38
- .cart-item {
39
- display: flex;
40
- justify-content: space-between;
41
- align-items: center;
42
- padding: 8px 0;
43
- font-size: 14px;
44
- color: ${cssManager.bdTheme('hsl(215.3 25% 26.7%)', 'hsl(217.9 10.6% 74.9%)')};
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { html, css, cssManager, customElement, state, DeesElement } from '@design.estate/dees-element';
36
+ import { themeDefaultStyles } from '../../00theme.js';
37
+ import { demoPage } from '../../../demos/templates.js';
38
+ import '../../00group-input/dees-input-multitoggle/dees-input-multitoggle.js';
39
+ import '../../00group-button/dees-button/dees-button.js';
40
+ // Small original vector product studies keep this fixture sharp and self-contained.
41
+ const illustration = (content) => `data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 300"><rect width="400" height="300" fill="#e8e6e1"/>${content}</svg>`)}`;
42
+ const products = [
43
+ { name: 'Studio headphones', category: 'Sound', description: 'A quiet space, wherever you work.', price: 179, originalPrice: 219, iconName: 'lucide:headphones', imageUrl: illustration('<path d="M125 172v-40a75 75 0 0 1 150 0v40" fill="none" stroke="#383a3c" stroke-width="17"/><path d="M135 136v-5a65 65 0 0 1 130 0v5" fill="none" stroke="#b4b1ab" stroke-width="7"/><rect x="106" y="130" width="42" height="88" rx="20" fill="#343638"/><rect x="124" y="130" width="30" height="88" rx="15" fill="#616467"/><rect x="252" y="130" width="42" height="88" rx="20" fill="#343638"/><rect x="246" y="130" width="30" height="88" rx="15" fill="#616467"/>') },
44
+ { name: 'Everyday keyboard', category: 'Desk', description: 'Low-profile keys. A little more focus.', price: 89, iconName: 'lucide:keyboard', imageUrl: illustration('<rect x="54" y="109" width="292" height="111" rx="14" fill="#a6a4a0"/><rect x="54" y="101" width="292" height="111" rx="14" fill="#cecbc4"/>' + Array.from({ length: 3 }, (_, row) => Array.from({ length: 11 }, (_, col) => `<rect x="${67 + col * 24}" y="${112 + row * 23}" width="19" height="17" rx="4" fill="#f6f5f1"/>`).join('')).join('') + '<rect x="67" y="181" width="42" height="17" rx="4" fill="#f6f5f1"/><rect x="115" y="181" width="165" height="17" rx="4" fill="#f6f5f1"/><rect x="286" y="181" width="43" height="17" rx="4" fill="#f6f5f1"/>') },
45
+ { name: 'Pocket notebook', category: 'Ideas', description: 'For the ideas that start on paper.', price: 24, iconName: 'lucide:notebook', imageUrl: illustration('<rect x="122" y="51" width="156" height="210" rx="8" fill="#a7ada5"/><rect x="116" y="43" width="156" height="210" rx="8" fill="#737e6d"/><path d="M129 43v210" stroke="#596750" stroke-width="3"/><path d="M248 43v210" stroke="#485541" stroke-width="7"/><rect x="151" y="94" width="72" height="1" fill="#aeb6a6"/><rect x="151" y="103" width="50" height="1" fill="#aeb6a6"/><path d="M207 252v18l8-5 8 5v-18" fill="#c0b391"/>') },
46
+ { name: 'Desktop hub', category: 'Connections', description: 'One cable. Everything connected.', price: 69, inStock: false, stockText: 'Back soon', iconName: 'lucide:usb', imageUrl: illustration('<path d="M253 135h30q37 0 37-40v-8" fill="none" stroke="#53565a" stroke-width="10"/><rect x="307" y="58" width="25" height="35" rx="5" fill="#33383d"/><rect x="76" y="130" width="220" height="73" rx="19" fill="#646a71"/><rect x="76" y="118" width="220" height="67" rx="19" fill="#adb3ba"/><rect x="97" y="159" width="40" height="9" rx="3" fill="#33383d"/><rect x="151" y="159" width="40" height="9" rx="3" fill="#33383d"/><rect x="217" y="159" width="31" height="9" rx="4" fill="#33383d"/><circle cx="268" cy="163" r="3" fill="#d4dddc"/>') },
47
+ ];
48
+ const money = (value) => `$${value.toFixed(2)}`;
49
+ let DeesDemoSimpleShop = (() => {
50
+ let _classDecorators = [customElement('dees-demo-simple-shop')];
51
+ let _classDescriptor;
52
+ let _classExtraInitializers = [];
53
+ let _classThis;
54
+ let _classSuper = DeesElement;
55
+ let _mode_decorators;
56
+ let _mode_initializers = [];
57
+ let _mode_extraInitializers = [];
58
+ let _quantities_decorators;
59
+ let _quantities_initializers = [];
60
+ let _quantities_extraInitializers = [];
61
+ let _selected_decorators;
62
+ let _selected_initializers = [];
63
+ let _selected_extraInitializers = [];
64
+ let _restocked_decorators;
65
+ let _restocked_initializers = [];
66
+ let _restocked_extraInitializers = [];
67
+ let _result_decorators;
68
+ let _result_initializers = [];
69
+ let _result_extraInitializers = [];
70
+ var DeesDemoSimpleShop = class extends _classSuper {
71
+ static { _classThis = this; }
72
+ static {
73
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
74
+ _mode_decorators = [state()];
75
+ _quantities_decorators = [state()];
76
+ _selected_decorators = [state()];
77
+ _restocked_decorators = [state()];
78
+ _result_decorators = [state()];
79
+ __esDecorate(this, null, _mode_decorators, { kind: "accessor", name: "mode", static: false, private: false, access: { has: obj => "mode" in obj, get: obj => obj.mode, set: (obj, value) => { obj.mode = value; } }, metadata: _metadata }, _mode_initializers, _mode_extraInitializers);
80
+ __esDecorate(this, null, _quantities_decorators, { kind: "accessor", name: "quantities", static: false, private: false, access: { has: obj => "quantities" in obj, get: obj => obj.quantities, set: (obj, value) => { obj.quantities = value; } }, metadata: _metadata }, _quantities_initializers, _quantities_extraInitializers);
81
+ __esDecorate(this, null, _selected_decorators, { kind: "accessor", name: "selected", static: false, private: false, access: { has: obj => "selected" in obj, get: obj => obj.selected, set: (obj, value) => { obj.selected = value; } }, metadata: _metadata }, _selected_initializers, _selected_extraInitializers);
82
+ __esDecorate(this, null, _restocked_decorators, { kind: "accessor", name: "restocked", static: false, private: false, access: { has: obj => "restocked" in obj, get: obj => obj.restocked, set: (obj, value) => { obj.restocked = value; } }, metadata: _metadata }, _restocked_initializers, _restocked_extraInitializers);
83
+ __esDecorate(this, null, _result_decorators, { kind: "accessor", name: "result", static: false, private: false, access: { has: obj => "result" in obj, get: obj => obj.result, set: (obj, value) => { obj.result = value; } }, metadata: _metadata }, _result_initializers, _result_extraInitializers);
84
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
85
+ DeesDemoSimpleShop = _classThis = _classDescriptor.value;
86
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
45
87
  }
46
-
47
- .cart-total {
48
- display: flex;
49
- justify-content: space-between;
50
- align-items: center;
51
- padding-top: 16px;
52
- margin-top: 16px;
53
- border-top: 2px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
54
- font-size: 18px;
55
- font-weight: 600;
56
- color: ${cssManager.bdTheme('hsl(0 0% 9%)', 'hsl(0 0% 95%)')};
88
+ #mode_accessor_storage = __runInitializers(this, _mode_initializers, 'shop');
89
+ get mode() { return this.#mode_accessor_storage; }
90
+ set mode(value) { this.#mode_accessor_storage = value; }
91
+ #quantities_accessor_storage = (__runInitializers(this, _mode_extraInitializers), __runInitializers(this, _quantities_initializers, products.map(() => 0)));
92
+ get quantities() { return this.#quantities_accessor_storage; }
93
+ set quantities(value) { this.#quantities_accessor_storage = value; }
94
+ #selected_accessor_storage = (__runInitializers(this, _quantities_extraInitializers), __runInitializers(this, _selected_initializers, []));
95
+ get selected() { return this.#selected_accessor_storage; }
96
+ set selected(value) { this.#selected_accessor_storage = value; }
97
+ #restocked_accessor_storage = (__runInitializers(this, _selected_extraInitializers), __runInitializers(this, _restocked_initializers, false));
98
+ get restocked() { return this.#restocked_accessor_storage; }
99
+ set restocked(value) { this.#restocked_accessor_storage = value; }
100
+ #result_accessor_storage = (__runInitializers(this, _restocked_extraInitializers), __runInitializers(this, _result_initializers, 'Add a few essentials to your bag, or build a kit.'));
101
+ get result() { return this.#result_accessor_storage; }
102
+ set result(value) { this.#result_accessor_storage = value; }
103
+ get inventory() { return products.map(product => product.inStock === false && this.restocked ? { ...product, inStock: true, stockText: 'In stock' } : product); }
104
+ static styles = [themeDefaultStyles, cssManager.defaultStyles, css `
105
+ :host { display: grid; gap: 24px; container-type: inline-size; font: 13px/1.5 var(--dees-font-family); }
106
+ .toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; }
107
+ .layout { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 24px; align-items: start; }
108
+ .products { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
109
+ .bag { position: sticky; top: 20px; display: grid; gap: 20px; padding: 24px; border-radius: var(--dees-radius-2xl); corner-shape: var(--dees-corner-shape); background: var(--dees-color-bg-primary); border: 1px solid var(--dees-color-border-subtle); }
110
+ h2 { margin: 0; font-size: 19px; font-weight: 600; letter-spacing: -.02em; }
111
+ p { margin: 0; color: var(--dees-color-text-secondary); }
112
+ .empty { display: grid; justify-items: start; gap: 12px; padding: 16px 0; color: var(--dees-color-text-secondary); }
113
+ .lines { display: grid; gap: 16px; }
114
+ .line, .total { display: flex; gap: 16px; justify-content: space-between; }
115
+ .line small { display: block; color: var(--dees-color-text-secondary); margin-top: 3px; }
116
+ .line > span, .total { font-variant-numeric: tabular-nums; }
117
+ .total { border-top: 1px solid var(--dees-color-border-subtle); padding-top: 16px; font-weight: 600; }
118
+ .kit { display: grid; gap: 12px; padding-top: 20px; border-top: 1px solid var(--dees-color-border-subtle); }
119
+ output { padding: 14px 16px; border-radius: var(--dees-radius-lg); background: var(--dees-color-bg-secondary); color: var(--dees-color-text-secondary); }
120
+ @container (max-width: 760px) { .layout { grid-template-columns: minmax(0, 1fr); } .bag { position: static; } }
121
+ @container (max-width: 500px) { .products { grid-template-columns: minmax(0, 1fr); } }
122
+ `];
123
+ render() {
124
+ const inventory = this.inventory;
125
+ const count = this.quantities.reduce((sum, quantity) => sum + quantity, 0);
126
+ const total = this.quantities.reduce((sum, quantity, index) => sum + quantity * inventory[index].price, 0);
127
+ return html `<div class="toolbar"><dees-input-multitoggle aria-label="Shopping mode" .options=${[{ key: 'shop', label: 'Shop essentials' }, { key: 'kit', label: 'Build a kit' }]} .value=${this.mode}
128
+ @change=${(event) => { this.mode = event.detail.value; }}></dees-input-multitoggle>
129
+ <dees-button type="ghost" text=${this.restocked ? 'Hub restocked' : 'Restock hub'} .disabled=${this.restocked} @clicked=${() => { this.restocked = true; this.result = 'Desktop hub is available again.'; }}></dees-button></div>
130
+ <div class="layout"><div class="products">${inventory.map((product, index) => html `<dees-shopping-productcard .productData=${product} .quantity=${this.quantities[index]}
131
+ .selectable=${this.mode === 'kit' && product.inStock !== false} .selected=${this.mode === 'kit' && this.selected.includes(index)} .showQuantitySelector=${product.inStock !== false}
132
+ @quantityChange=${(event) => { this.quantities = this.quantities.map((value, i) => i === index ? event.detail.quantity : value); this.result = `${product.name}: ${event.detail.quantity} in your bag.`; }}
133
+ @selectionChange=${(event) => { this.selected = event.detail.selected ? [...this.selected, index] : this.selected.filter(i => i !== index); this.result = `${this.selected.length} essentials selected for your kit.`; }}></dees-shopping-productcard>`)}</div>
134
+ <aside class="bag" aria-label="Shopping bag"><h2>Your bag${count ? ` · ${count}` : ''}</h2>
135
+ ${count ? html `<div class="lines">${inventory.map((product, index) => this.quantities[index] ? html `<div class="line"><div>${product.name}<small>Quantity ${this.quantities[index]}</small></div><span>${money(product.price * this.quantities[index])}</span></div>` : '')}</div>` : html `<div class="empty"><dees-icon icon="lucide:shoppingBag" iconSize="28"></dees-icon><p>A few good essentials.<br>A space that feels like yours.</p></div>`}
136
+ <div class="total"><span>Subtotal</span><span>${money(total)}</span></div>
137
+ <dees-button full-width type="accent" text="Review bag" .disabled=${count === 0} @clicked=${() => { this.result = `Your sample bag has ${count} items, totaling ${money(total)}. No order has been placed.`; }}></dees-button>
138
+ ${count ? html `<dees-button type="ghost" size="sm" text="Clear bag" @clicked=${() => { this.quantities = products.map(() => 0); this.result = 'Your bag is empty.'; }}></dees-button>` : ''}
139
+ ${this.mode === 'kit' ? html `<div class="kit"><p>${this.selected.length} items selected for your kit.</p><dees-button full-width type="outline" text="Add kit to bag" .disabled=${!this.selected.length}
140
+ @clicked=${() => { this.quantities = this.quantities.map((quantity, index) => quantity + (this.selected.includes(index) ? 1 : 0)); this.result = 'One of each selected essential was added to your bag.'; }}></dees-button></div>` : ''}
141
+ </aside>
142
+ </div><output role="status">${this.result}</output>`;
57
143
  }
58
-
59
- .selected-products {
60
- padding: 16px;
61
- background: ${cssManager.bdTheme('hsl(210 40% 96.1%)', 'hsl(215 20.2% 16.8%)')};
62
- border-radius: 6px;
63
- font-size: 14px;
64
- color: ${cssManager.bdTheme('hsl(215.3 25% 26.7%)', 'hsl(217.9 10.6% 74.9%)')};
144
+ constructor() {
145
+ super(...arguments);
146
+ __runInitializers(this, _result_extraInitializers);
65
147
  }
66
- `}
67
- </style>
68
-
69
- <div class="demo-container">
70
- <dees-panel .title=${'Basic Product Cards'} .subtitle=${'Simple product display with various configurations'}>
71
- <div class="product-grid">
72
- <dees-shopping-productcard
73
- .productData=${{
74
- name: 'Wireless Bluetooth Headphones',
75
- category: 'Audio',
76
- description: 'Premium sound quality with active noise cancellation',
77
- price: 149.99,
78
- originalPrice: 199.99,
79
- iconName: 'lucide:headphones'
80
- }}
81
- .quantity=${1}
82
- ></dees-shopping-productcard>
83
-
84
- <dees-shopping-productcard
85
- .productData=${{
86
- name: 'Smart Watch Series 7',
87
- category: 'Wearables',
88
- description: 'Track your fitness and stay connected on the go',
89
- price: 399.00,
90
- iconName: 'lucide:watch'
91
- }}
92
- .quantity=${1}
93
- ></dees-shopping-productcard>
94
-
95
- <dees-shopping-productcard
96
- .productData=${{
97
- name: 'USB-C Hub',
98
- category: 'Accessories',
99
- price: 49.99,
100
- iconName: 'lucide:usb',
101
- inStock: false
102
- }}
103
- .quantity=${0}
104
- ></dees-shopping-productcard>
105
- </div>
106
- </dees-panel>
107
-
108
- <dees-panel .title=${'Interactive Shopping Cart'} .subtitle=${'Product cards with dynamic cart calculation'} .runAfterRender=${async (elementArg) => {
109
- const products = [
110
- { id: 'laptop', element: null, data: { name: 'MacBook Pro 14"', category: 'Computers', description: 'M3 Pro chip with 18GB RAM', price: 1999, originalPrice: 2199, iconName: 'lucide:laptop' } },
111
- { id: 'tablet', element: null, data: { name: 'Tablet Air', category: 'Tablets', description: '10.9" high-resolution display', price: 599, iconName: 'lucide:tablet' } },
112
- { id: 'keyboard', element: null, data: { name: 'Magic Keyboard', category: 'Accessories', description: 'Wireless keyboard with Touch ID', price: 149, iconName: 'lucide:keyboard' } }
113
- ];
114
- const updateCartSummary = () => {
115
- let total = 0;
116
- const items = [];
117
- products.forEach(product => {
118
- const element = elementArg.querySelector(`#${product.id}`);
119
- if (element && element.quantity > 0) {
120
- const subtotal = product.data.price * element.quantity;
121
- total += subtotal;
122
- items.push(`
123
- <div class="cart-item">
124
- <span>${product.data.name} (${element.quantity})</span>
125
- <span>$${subtotal.toFixed(2)}</span>
126
- </div>
127
- `);
128
- }
129
- });
130
- const summary = elementArg.querySelector('#interactive-cart-summary');
131
- if (summary) {
132
- summary.innerHTML = `
133
- ${items.join('')}
134
- ${items.length === 0 ? '<div class="cart-item" style="text-align: center; color: #999;">Your cart is empty</div>' : ''}
135
- <div class="cart-total">
136
- <span>Total</span>
137
- <span>$${total.toFixed(2)}</span>
138
- </div>
139
- `;
148
+ static {
149
+ __runInitializers(_classThis, _classExtraInitializers);
140
150
  }
141
151
  };
142
- // Initial update
143
- setTimeout(updateCartSummary, 100);
144
- // Set up listeners
145
- elementArg.querySelectorAll('dees-shopping-productcard').forEach(card => {
146
- card.addEventListener('quantityChange', updateCartSummary);
147
- });
148
- }}>
149
- <div class="product-grid">
150
- <dees-shopping-productcard
151
- id="laptop"
152
- .productData=${{
153
- name: 'MacBook Pro 14"',
154
- category: 'Computers',
155
- description: 'M3 Pro chip with 18GB RAM',
156
- price: 1999,
157
- originalPrice: 2199,
158
- iconName: 'lucide:laptop'
159
- }}
160
- .quantity=${1}
161
- ></dees-shopping-productcard>
162
-
163
- <dees-shopping-productcard
164
- id="tablet"
165
- .productData=${{
166
- name: 'Tablet Air',
167
- category: 'Tablets',
168
- description: '10.9" high-resolution display',
169
- price: 599,
170
- iconName: 'lucide:tablet'
171
- }}
172
- .quantity=${0}
173
- ></dees-shopping-productcard>
174
-
175
- <dees-shopping-productcard
176
- id="keyboard"
177
- .productData=${{
178
- name: 'Magic Keyboard',
179
- category: 'Accessories',
180
- description: 'Wireless keyboard with Touch ID',
181
- price: 149,
182
- iconName: 'lucide:keyboard'
183
- }}
184
- .quantity=${2}
185
- ></dees-shopping-productcard>
186
- </div>
187
-
188
- <div class="cart-summary">
189
- <h3 class="cart-summary-title">Shopping Cart</h3>
190
- <div id="interactive-cart-summary">
191
- <!-- Dynamically updated -->
192
- </div>
193
- </div>
194
- </dees-panel>
195
-
196
- <dees-panel .title=${'Selectable Product Cards'} .subtitle=${'Click cards or checkboxes to select products'}>
197
- <div class="product-grid">
198
- <dees-shopping-productcard
199
- .productData=${{
200
- name: 'Sony Alpha 7 IV',
201
- category: 'Cameras',
202
- description: 'Full-frame mirrorless camera',
203
- price: 2498,
204
- iconName: 'lucide:camera'
205
- }}
206
- .selectable=${true}
207
- .showQuantitySelector=${false}
208
- @selectionChange=${(e) => {
209
- const output = document.querySelector('#selection-output');
210
- if (output) {
211
- const selectedCards = document.querySelectorAll('dees-shopping-productcard[selectable]');
212
- const selectedProducts = [];
213
- selectedCards.forEach((card) => {
214
- if (card.selected) {
215
- selectedProducts.push(card.productData.name);
216
- }
217
- });
218
- output.textContent = selectedProducts.length > 0
219
- ? `Selected: ${selectedProducts.join(', ')}`
220
- : 'No products selected';
221
- }
222
- }}
223
- ></dees-shopping-productcard>
224
-
225
- <dees-shopping-productcard
226
- .productData=${{
227
- name: 'DJI Mini 3 Pro',
228
- category: 'Drones',
229
- description: 'Lightweight drone with 4K camera',
230
- price: 759,
231
- iconName: 'lucide:plane'
232
- }}
233
- .selectable=${true}
234
- .showQuantitySelector=${false}
235
- @selectionChange=${(e) => {
236
- const output = document.querySelector('#selection-output');
237
- if (output) {
238
- const selectedCards = document.querySelectorAll('dees-shopping-productcard[selectable]');
239
- const selectedProducts = [];
240
- selectedCards.forEach((card) => {
241
- if (card.selected) {
242
- selectedProducts.push(card.productData.name);
243
- }
244
- });
245
- output.textContent = selectedProducts.length > 0
246
- ? `Selected: ${selectedProducts.join(', ')}`
247
- : 'No products selected';
248
- }
249
- }}
250
- ></dees-shopping-productcard>
251
-
252
- <dees-shopping-productcard
253
- .productData=${{
254
- name: 'GoPro HERO12',
255
- category: 'Action Cameras',
256
- description: '5.3K video with HyperSmooth 6.0',
257
- price: 399,
258
- originalPrice: 449,
259
- iconName: 'lucide:video'
260
- }}
261
- .selectable=${true}
262
- .showQuantitySelector=${false}
263
- @selectionChange=${(e) => {
264
- const output = document.querySelector('#selection-output');
265
- if (output) {
266
- const selectedCards = document.querySelectorAll('dees-shopping-productcard[selectable]');
267
- const selectedProducts = [];
268
- selectedCards.forEach((card) => {
269
- if (card.selected) {
270
- selectedProducts.push(card.productData.name);
271
- }
272
- });
273
- output.textContent = selectedProducts.length > 0
274
- ? `Selected: ${selectedProducts.join(', ')}`
275
- : 'No products selected';
276
- }
277
- }}
278
- ></dees-shopping-productcard>
279
- </div>
280
-
281
- <div class="selected-products" id="selection-output" style="margin-top: 16px;">
282
- No products selected
283
- </div>
284
- </dees-panel>
285
-
286
- <dees-panel .title=${'Product Variations'} .subtitle=${'Different states and configurations'}>
287
- <div class="product-grid">
288
- <dees-shopping-productcard
289
- .productData=${{
290
- name: 'Limited Edition Sneakers',
291
- category: 'Footwear',
292
- description: 'Exclusive colorway - Only 500 pairs',
293
- price: 299,
294
- iconName: 'lucide:footprints',
295
- inStock: false,
296
- stockText: 'Sold Out'
297
- }}
298
- .quantity=${0}
299
- ></dees-shopping-productcard>
300
-
301
- <dees-shopping-productcard
302
- .productData=${{
303
- name: 'Minimalist Wallet',
304
- price: 39.99,
305
- iconName: 'lucide:wallet'
306
- }}
307
- .quantity=${1}
308
- ></dees-shopping-productcard>
309
-
310
- <dees-shopping-productcard
311
- .productData=${{
312
- name: 'Premium Coffee Beans',
313
- category: 'Food & Beverage',
314
- description: 'Single origin, medium roast',
315
- price: 18.50,
316
- iconName: 'lucide:coffee',
317
- currency: '€'
318
- }}
319
- .quantity=${2}
320
- ></dees-shopping-productcard>
321
- </div>
322
- </dees-panel>
323
- </div>
324
- </dees-demowrapper>
325
- `;
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZC5kZW1vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtc2ltcGxlL2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZC5kZW1vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sdUNBQXVDLENBQUM7QUFDL0MsT0FBTywrQ0FBK0MsQ0FBQztBQUd2RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzs7UUFHMUIsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCQW1CYSxVQUFVLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixDQUFDOzhCQUMxRCxVQUFVLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLHNCQUFzQixDQUFDOzs7Ozs7OzttQkFRL0UsVUFBVSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDOzs7Ozs7Ozs7bUJBU25ELFVBQVUsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsd0JBQXdCLENBQUM7Ozs7Ozs7OztrQ0FTckQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQzs7O21CQUd2RSxVQUFVLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUM7Ozs7O3dCQUs5QyxVQUFVLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixDQUFDOzs7bUJBR3JFLFVBQVUsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsd0JBQXdCLENBQUM7O09BRWhGOzs7OzJCQUlvQixxQkFBcUIsY0FBYyxvREFBb0Q7OzsyQkFHdkY7SUFDYixJQUFJLEVB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
152
+ return DeesDemoSimpleShop = _classThis;
153
+ })();
154
+ export const demoFunc = () => demoPage('Good things for good work.', 'A considered set of desk essentials. Find your favorites and build a kit that works together.', html `<dees-demo-simple-shop></dees-demo-simple-shop>`);
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZC5kZW1vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtc2ltcGxlL2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQvZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZC5kZW1vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdkQsT0FBTyxzRUFBc0UsQ0FBQztBQUM5RSxPQUFPLGlEQUFpRCxDQUFDO0FBRXpELG9GQUFvRjtBQUNwRixNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsc0JBQXNCLGtCQUFrQixDQUFDLGdIQUFnSCxPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDdE4sTUFBTSxRQUFRLEdBQW1CO0lBQy9CLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1DQUFtQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQywyY0FBMmMsQ0FBQyxFQUFFO0lBQ3RvQixFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSx3Q0FBd0MsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxRQUFR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