@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
@@ -32,10 +32,12 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
32
32
  }
33
33
  return useValue ? value : void 0;
34
34
  };
35
- import { customElement, property, html, css, cssManager, DeesElement, } from '@design.estate/dees-element';
35
+ import { customElement, DeesElement, property, html, css, cssManager } from '@design.estate/dees-element';
36
36
  import { demoFunc } from './dees-shopping-productcard.demo.js';
37
37
  import { themeDefaultStyles } from '../../00theme.js';
38
- import '../../00group-layout/dees-tile/dees-tile.js';
38
+ import '../../00group-utility/dees-icon/dees-icon.js';
39
+ import '../../00group-input/dees-input-checkbox/dees-input-checkbox.js';
40
+ import '../../00group-input/dees-input-quantityselector/dees-input-quantityselector.js';
39
41
  let DeesShoppingProductcard = (() => {
40
42
  let _classDecorators = [customElement('dees-shopping-productcard')];
41
43
  let _classDescriptor;
@@ -77,10 +79,7 @@ let DeesShoppingProductcard = (() => {
77
79
  }
78
80
  static demo = demoFunc;
79
81
  static demoGroups = ['Simple'];
80
- #productData_accessor_storage = __runInitializers(this, _productData_initializers, {
81
- name: 'Product Name',
82
- price: 0,
83
- });
82
+ #productData_accessor_storage = __runInitializers(this, _productData_initializers, { name: 'Product Name', price: 0 });
84
83
  get productData() { return this.#productData_accessor_storage; }
85
84
  set productData(value) { this.#productData_accessor_storage = value; }
86
85
  #quantity_accessor_storage = (__runInitializers(this, _productData_extraInitializers), __runInitializers(this, _quantity_initializers, 0));
@@ -95,280 +94,62 @@ let DeesShoppingProductcard = (() => {
95
94
  #selected_accessor_storage = (__runInitializers(this, _selectable_extraInitializers), __runInitializers(this, _selected_initializers, false));
96
95
  get selected() { return this.#selected_accessor_storage; }
97
96
  set selected(value) { this.#selected_accessor_storage = value; }
98
- static styles = [
99
- themeDefaultStyles,
100
- cssManager.defaultStyles,
101
- css `
102
- /* TODO: Migrate hardcoded values to --dees-* CSS variables */
103
- :host {
104
- display: block;
105
- }
106
-
107
- dees-tile {
108
- height: 100%;
109
- }
110
-
111
- dees-tile:hover::part(outer) {
112
- border-color: var(--dees-color-border-strong);
113
- box-shadow: var(--dees-shadow-md);
114
- }
115
-
116
- dees-tile.selectable {
117
- cursor: pointer;
118
- }
119
-
120
- dees-tile.selected::part(outer) {
121
- border-color: var(--dees-color-link);
122
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--dees-color-link) 10%, transparent);
123
- }
124
-
125
- .product-image {
126
- width: 100%;
127
- height: 180px;
128
- background: var(--dees-color-badge-default-bg);
129
- display: flex;
130
- align-items: center;
131
- justify-content: center;
132
- position: relative;
133
- overflow: hidden;
134
- }
135
-
136
- .product-image img {
137
- width: 100%;
138
- height: 100%;
139
- object-fit: cover;
140
- }
141
-
142
- .product-image dees-icon {
143
- font-size: 48px;
144
- color: var(--dees-color-text-muted);
145
- }
146
-
147
- .selection-checkbox {
148
- position: absolute;
149
- top: var(--dees-spacing-md);
150
- right: var(--dees-spacing-md);
151
- width: 20px;
152
- height: 20px;
153
- background: var(--dees-color-bg-primary);
154
- border: 2px solid color-mix(in srgb, var(--dees-color-text-primary) 35%, transparent);
155
- border-radius: var(--dees-radius-sm);
156
- display: flex;
157
- align-items: center;
158
- justify-content: center;
159
- transition: all var(--dees-transition-default) var(--dees-ease-standard);
160
- cursor: pointer;
161
- }
162
-
163
- .selection-checkbox.checked {
164
- background: var(--dees-color-link);
165
- border-color: var(--dees-color-link);
166
- }
167
-
168
- .selection-checkbox dees-icon {
169
- color: var(--dees-color-on-accent);
170
- font-size: 12px;
171
- opacity: 0;
172
- transform: scale(0);
173
- transition: all var(--dees-transition-default) var(--dees-ease-standard);
174
- }
175
-
176
- .selection-checkbox.checked dees-icon {
177
- opacity: 1;
178
- transform: scale(1);
179
- }
180
-
181
- .product-header-bar {
182
- display: flex;
183
- align-items: center;
184
- justify-content: space-between;
185
- height: var(--dees-control-height-sm);
186
- padding: 0 var(--dees-spacing-lg);
187
- gap: var(--dees-spacing-sm);
188
- }
189
-
190
- .product-name {
191
- font-size: var(--dees-font-control-size);
192
- font-weight: var(--dees-font-control-weight);
193
- color: var(--dees-color-text-secondary);
194
- white-space: nowrap;
195
- overflow: hidden;
196
- text-overflow: ellipsis;
197
- }
198
-
199
- .product-category {
200
- font-size: var(--dees-font-caption2-size);
201
- font-weight: var(--dees-font-control-weight);
202
- color: var(--dees-color-text-secondary);
203
- text-transform: uppercase;
204
- letter-spacing: 0.05em;
205
- white-space: nowrap;
206
- flex-shrink: 0;
207
- }
208
-
209
- .product-body {
210
- display: flex;
211
- flex-direction: column;
212
- height: 100%;
213
- }
214
-
215
- .product-content {
216
- padding: var(--dees-spacing-md) var(--dees-spacing-lg);
217
- display: flex;
218
- flex-direction: column;
219
- gap: var(--dees-spacing-sm);
220
- flex: 1;
221
- }
222
-
223
- .product-description {
224
- font-size: var(--dees-font-control-size-sm);
225
- color: var(--dees-color-text-muted);
226
- line-height: 1.5;
227
- flex: 1;
228
- }
229
-
230
- .product-footer {
231
- display: flex;
232
- align-items: center;
233
- justify-content: space-between;
234
- gap: var(--dees-spacing-lg);
235
- padding: var(--dees-spacing-md) var(--dees-spacing-lg);
236
- width: 100%;
237
- box-sizing: border-box;
238
- }
239
-
240
- .product-price {
241
- display: flex;
242
- flex-direction: column;
243
- gap: 2px;
244
- }
245
-
246
- .price-current {
247
- font-size: var(--dees-font-title3-size);
248
- font-weight: 600;
249
- color: var(--dees-color-text-primary);
250
- }
251
-
252
- .price-original {
253
- font-size: var(--dees-font-control-size);
254
- color: var(--dees-color-text-muted);
255
- text-decoration: line-through;
256
- }
257
-
258
- .stock-status {
259
- display: inline-flex;
260
- align-items: center;
261
- gap: var(--dees-spacing-xs);
262
- font-size: var(--dees-font-caption1-size);
263
- margin-top: var(--dees-spacing-sm);
264
- }
265
-
266
- .stock-status.in-stock {
267
- color: var(--dees-color-text-success);
268
- }
269
-
270
- .stock-status.out-of-stock {
271
- color: var(--dees-color-accent-error);
272
- }
273
-
274
- .stock-status dees-icon {
275
- font-size: 14px;
276
- }
277
- `,
278
- ];
97
+ static styles = [themeDefaultStyles, cssManager.defaultStyles, css `
98
+ :host { display: flex; min-width: 0; font: 13px/1.5 var(--dees-font-family); color: var(--dees-color-text-primary); }
99
+ * { box-sizing: border-box; }
100
+ article { display: flex; flex-direction: column; width: 100%; min-width: 0; position: relative; background: var(--dees-color-bg-primary); border: 1px solid var(--dees-color-border-subtle); border-radius: var(--dees-radius-2xl); corner-shape: var(--dees-corner-shape); transition: border-color 140ms ease, box-shadow 140ms ease; }
101
+ article.selectable { cursor: pointer; }
102
+ article.selected { border-color: var(--dees-color-accent-primary); box-shadow: 0 0 0 1px var(--dees-color-accent-primary); }
103
+ .product-image { display: grid; place-items: center; aspect-ratio: 4 / 3; margin: 8px 8px 0; min-width: 0; border-radius: var(--dees-radius-xl); corner-shape: var(--dees-corner-shape); background: var(--dees-color-bg-secondary); overflow: hidden; color: var(--dees-color-text-secondary); }
104
+ .product-image img { display: block; width: 100%; height: 100%; object-fit: contain; }
105
+ .selection { position: absolute; inset: 16px 16px auto auto; display: grid; place-items: center; min-width: 32px; min-height: 32px; border-radius: var(--dees-radius-md); background: var(--dees-color-bg-primary); box-shadow: var(--dees-shadow-xs); }
106
+ .selection dees-input-checkbox { --dees-input-spacing: 0px; }
107
+ .product-content { display: flex; flex-direction: column; flex: 1; gap: 8px; padding: 20px; }
108
+ .category { color: var(--dees-color-text-secondary); font-size: 11px; font-weight: 500; }
109
+ h3 { font-size: 19px; font-weight: 600; line-height: 1.25; letter-spacing: -.025em; margin: 0; overflow-wrap: anywhere; }
110
+ .description { color: var(--dees-color-text-secondary); margin: 0; }
111
+ .stock { display: flex; align-items: center; gap: 5px; color: var(--dees-color-text-secondary); font-size: 11px; margin-top: auto; padding-top: 8px; }
112
+ .stock.unavailable { color: var(--dees-color-text-warning); }
113
+ .product-footer { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 0 20px 20px; }
114
+ .price { display: grid; align-content: center; min-height: 40px; gap: 2px; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
115
+ .current-price { font-size: 17px; line-height: 1.3; font-weight: 600; letter-spacing: -.02em; }
116
+ .original-price { font-size: 12px; color: var(--dees-color-text-secondary); }
117
+ .quantity { border-radius: var(--dees-radius-lg); background: var(--dees-color-fill-secondary); }
118
+ @media (hover: hover) { article.selectable:hover:not(.selected) { border-color: var(--dees-color-border-strong); box-shadow: var(--dees-shadow-sm); } }
119
+ @media (prefers-reduced-motion: reduce) { article { transition: none; } }
120
+ `];
279
121
  render() {
280
- const { name, category, description, price, originalPrice, currency = '$', inStock = true, stockText = inStock ? 'In Stock' : 'Out of Stock', imageUrl, iconName = 'lucide:package', } = this.productData;
281
- const formatPrice = (value) => {
282
- return `${currency}${value.toFixed(2)}`;
283
- };
284
- return html `
285
- <dees-tile
286
- class="${this.selectable ? 'selectable' : ''} ${this.selected ? 'selected' : ''}"
287
- @click=${this.handleCardClick}
288
- >
289
- <div slot="header" class="product-header-bar">
290
- <span class="product-name">${name}</span>
291
- ${category ? html `<span class="product-category">${category}</span>` : ''}
292
- </div>
293
- <div class="product-body">
294
- <div class="product-image">
295
- ${imageUrl ? html `
296
- <img src="${imageUrl}" alt="${name}">
297
- ` : html `
298
- <dees-icon .icon=${iconName}></dees-icon>
299
- `}
300
- ${this.selectable ? html `
301
- <div
302
- class="selection-checkbox ${this.selected ? 'checked' : ''}"
303
- @click=${(e) => {
304
- e.stopPropagation();
305
- this.handleSelectionToggle();
306
- }}
307
- >
308
- <dees-icon .icon=${'lucide:check'}></dees-icon>
309
- </div>
310
- ` : ''}
311
- </div>
312
- <div class="product-content">
313
- ${description ? html `
314
- <div class="product-description">${description}</div>
315
- ` : ''}
316
- <div class="stock-status ${inStock ? 'in-stock' : 'out-of-stock'}">
317
- <dees-icon .icon=${inStock ? 'lucide:check-circle' : 'lucide:x-circle'}></dees-icon>
318
- ${stockText}
319
- </div>
320
- </div>
321
- </div>
322
- <div slot="footer" class="product-footer">
323
- <div class="product-price">
324
- <span class="price-current">${formatPrice(price)}</span>
325
- ${originalPrice && originalPrice > price ? html `
326
- <span class="price-original">${formatPrice(originalPrice)}</span>
327
- ` : ''}
328
- </div>
329
- ${this.showQuantitySelector ? html `
330
- <dees-input-quantityselector
331
- .value=${this.quantity}
332
- @changeSubject=${(e) => {
333
- this.quantity = e.detail.getValue();
334
- this.dispatchEvent(new CustomEvent('quantityChange', {
335
- detail: {
336
- quantity: this.quantity,
337
- productData: this.productData
338
- },
339
- bubbles: true,
340
- composed: true
341
- }));
342
- }}
343
- ></dees-input-quantityselector>
344
- ` : ''}
345
- </div>
346
- </dees-tile>
347
- `;
122
+ const product = this.productData;
123
+ const available = product.inStock !== false;
124
+ const currency = product.currency || '$';
125
+ return html `<article class="${this.selectable ? 'selectable' : ''} ${this.selected ? 'selected' : ''}" aria-labelledby="product-name" @click=${this.toggleSelection}>
126
+ <div class="product-image">${product.imageUrl ? html `<img src=${product.imageUrl} alt=${product.name} loading="lazy" decoding="async">` : html `<dees-icon .icon=${product.iconName || 'lucide:package'} iconSize="64"></dees-icon>`}</div>
127
+ ${this.selectable ? html `<div class="selection" @click=${(event) => event.stopPropagation()}>
128
+ <dees-input-checkbox .ariaLabel=${`Select ${product.name}`} .value=${this.selected}
129
+ @newValue=${(event) => this.setSelection(event.detail)}></dees-input-checkbox>
130
+ </div>` : ''}
131
+ <div class="product-content">${product.category ? html `<div class="category">${product.category}</div>` : ''}
132
+ <h3 id="product-name">${product.name}</h3>${product.description ? html `<p class="description">${product.description}</p>` : ''}
133
+ <div class="stock ${available ? '' : 'unavailable'}"><dees-icon .icon=${available ? 'lucide:check' : 'lucide:clock'} iconSize="12"></dees-icon>${product.stockText || (available ? 'In stock' : 'Out of stock')}</div>
134
+ </div>
135
+ <footer class="product-footer"><div class="price"><span class="current-price">${currency}${product.price.toFixed(2)}</span>
136
+ ${product.originalPrice !== undefined && product.originalPrice > product.price ? html `<s class="original-price">${currency}${product.originalPrice.toFixed(2)}</s>` : ''}</div>
137
+ ${this.showQuantitySelector ? html `<div class="quantity" role="group" aria-label=${`Quantity for ${product.name}`} @click=${(event) => event.stopPropagation()}>
138
+ <dees-input-quantityselector .value=${this.quantity}
139
+ @newValue=${(event) => {
140
+ this.quantity = event.detail;
141
+ this.dispatchEvent(new CustomEvent('quantityChange', { detail: { quantity: this.quantity, productData: this.productData }, bubbles: true, composed: true }));
142
+ }}></dees-input-quantityselector></div>` : ''}
143
+ </footer>
144
+ </article>`;
348
145
  }
349
- handleCardClick() {
350
- if (this.selectable) {
351
- this.selected = !this.selected;
352
- this.dispatchEvent(new CustomEvent('selectionChange', {
353
- detail: {
354
- selected: this.selected,
355
- productData: this.productData
356
- },
357
- bubbles: true,
358
- composed: true
359
- }));
360
- }
361
- }
362
- handleSelectionToggle() {
363
- this.selected = !this.selected;
364
- this.dispatchEvent(new CustomEvent('selectionChange', {
365
- detail: {
366
- selected: this.selected,
367
- productData: this.productData
368
- },
369
- bubbles: true,
370
- composed: true
371
- }));
146
+ toggleSelection() { if (this.selectable)
147
+ this.setSelection(!this.selected); }
148
+ setSelection(selected) {
149
+ if (!this.selectable || this.selected === selected)
150
+ return;
151
+ this.selected = selected;
152
+ this.dispatchEvent(new CustomEvent('selectionChange', { detail: { selected, productData: this.productData }, bubbles: true, composed: true }));
372
153
  }
373
154
  constructor() {
374
155
  super(...arguments);
@@ -381,4 +162,4 @@ let DeesShoppingProductcard = (() => {
381
162
  return DeesShoppingProductcard = _classThis;
382
163
  })();
383
164
  export { DeesShoppingProductcard };
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLXNpbXBsZS9kZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkL2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxhQUFhLEVBQ2IsUUFBUSxFQUNSLElBQUksRUFDSixHQUFHLEVBQ0gsVUFBVSxFQUVWLFdBQVcsR0FDWixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLDZDQUE2QyxDQUFDO0lBc0J4Qyx1QkFBdUI7NEJBRG5DLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7O3VDQUFuQixTQUFRLFdBQVc7Ozs7dUNBSXJELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztvQ0FNMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dEQUcxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7c0NBRzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztvQ0FHM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBZDVCLHNMQUFTLFdBQVcsNkJBQVgsV0FBVyxpR0FHbEI7WUFHRiw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQWE7WUFHOUIsaU5BQVMsb0JBQW9CLDZCQUFwQixvQkFBb0IsbUhBQWlCO1lBRzlDLG1MQUFTLFVBQVUsNkJBQVYsVUFB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
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zaG9wcGluZy1wcm9kdWN0Y2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLXNpbXBsZS9kZWVzLXNob3BwaW5nLXByb2R1Y3RjYXJkL2RlZXMtc2hvcHBpbmctcHJvZHVjdGNhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBdUIsTUFBTSw2QkFBNkIsQ0FBQztBQUMvSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyw4Q0FBOEMsQ0FBQztBQUN0RCxPQUFPLGdFQUFnRSxDQUFDO0FBQ3hFLE9BQU8sZ0ZBQWdGLENBQUM7SUFrQjNFLHVCQUF1Qjs0QkFEbkMsYUFBYSxDQUFDLDJCQUEyQixDQUFDOzs7O3NCQUNFLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7dUNBQW5CLFNBQVEsV0FBVzs7Ozt1Q0FHckQsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO29DQUMxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0RBQzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztzQ0FDM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO29DQUMzQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFKQSxzTEFBUyxXQUFXLDZCQUFYLFdBQVcsaUdBQW9EO1lBQ3hFLDZLQUFTLFFBQVEsNkJBQVIsUUFBUSwyRkFBSztZQUNyQixpTkFBUyxvQkFBb0Is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
@@ -1,6 +1,9 @@
1
- import { DeesElement, type TemplateResult, type CSSResult } from '@design.estate/dees-element';
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
2
  import '../../00group-utility/dees-icon/dees-icon.js';
3
+ import '../../00group-button/dees-button/dees-button.js';
4
+ import '../../00group-overlay/dees-speechbubble/dees-speechbubble.js';
3
5
  import type { DeesWorkspaceTerminal } from '../../00group-workspace/dees-workspace-terminal/dees-workspace-terminal.js';
6
+ import type { IExecutionEnvironment } from '../../00group-runtime/index.js';
4
7
  declare global {
5
8
  interface HTMLElementTagNameMap {
6
9
  'dees-simple-appdash': DeesSimpleAppDash;
@@ -26,31 +29,43 @@ export interface IGlobalMessage {
26
29
  icon?: string;
27
30
  actions?: IGlobalMessageAction[];
28
31
  }
32
+ /** A compact app shell. Views, notices and the terminal share one bounded workspace. */
29
33
  export declare class DeesSimpleAppDash extends DeesElement {
30
34
  static demo: () => TemplateResult<1>;
31
35
  static demoGroups: string[];
32
36
  accessor name: string;
33
37
  accessor viewTabs: IView[];
34
38
  accessor terminalSetupCommand: string;
39
+ /** Consumer-owned runtime used by the embedded terminal. */
40
+ accessor executionEnvironment: IExecutionEnvironment | null;
35
41
  accessor globalMessages: IGlobalMessage[];
42
+ /** Collapse to an icon rail. Narrow containers use the rail automatically. */
43
+ accessor collapsed: boolean;
36
44
  accessor selectedView: IView;
37
45
  accessor _activeMessages: IGlobalMessage[];
38
- static styles: CSSResult[];
46
+ private accessor compact;
47
+ private accessor terminalOpen;
48
+ currentTerminal: DeesWorkspaceTerminal | null;
49
+ private currentView?;
50
+ private terminalRequest;
51
+ constructor();
52
+ static styles: import("@design.estate/dees-element").CSSResult[];
53
+ private get rail();
54
+ private icon;
55
+ private isGroupActive;
56
+ private renderView;
39
57
  render(): TemplateResult;
40
- firstUpdated(_changedProperties: Map<string | number | symbol, unknown>): Promise<void>;
41
- willUpdate(changedProperties: Map<string, unknown>): void;
42
- updated(changedProperties: Map<string, unknown>): void;
43
- private updateBannerOffset;
58
+ private handleNavigationKey;
59
+ willUpdate(changes: Map<string, unknown>): void;
60
+ updated(changes: Map<string, unknown>): void;
44
61
  private getMessageIcon;
45
62
  addMessage(message: Omit<IGlobalMessage, 'id'> & {
46
63
  id?: string;
47
64
  }): string;
48
65
  removeMessage(id: string): void;
49
66
  clearMessages(): void;
50
- currentTerminal: DeesWorkspaceTerminal | null;
51
67
  launchTerminal(): Promise<DeesWorkspaceTerminal | undefined>;
52
68
  private closeTerminal;
53
- private isGroupActive;
54
- private currentView;
55
- loadView(viewArg: IView): any;
69
+ disconnectedCallback(): Promise<void>;
70
+ loadView(view: IView): Promise<void>;
56
71
  }
@@ -1,8 +1,7 @@
1
1
  import '../../00group-form/dees-form/dees-form.js';
2
- import '../../00group-input/dees-input-text/dees-input-text.js';
3
- import '../../00group-input/dees-input-checkbox/dees-input-checkbox.js';
4
- import '../../00group-input/dees-input-dropdown/dees-input-dropdown.js';
5
- import '../../00group-input/dees-input-radiogroup/dees-input-radiogroup.js';
6
2
  import '../../00group-form/dees-form-submit/dees-form-submit.js';
3
+ import '../../00group-input/dees-input-text/dees-input-text.js';
4
+ import '../../00group-input/dees-input-toggle/dees-input-toggle.js';
7
5
  import '../../00group-dataview/dees-statsgrid/dees-statsgrid.js';
6
+ import '../../00group-dataview/dees-table/dees-table.js';
8
7
  export declare const demoFunc: () => import("@design.estate/dees-element").TemplateResult<1>;