@design.estate/dees-catalog 3.51.0 → 3.51.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.
Files changed (58) hide show
  1. package/dist_bundle/bundle.js +2374 -2188
  2. package/dist_ts_web/00_commitinfo_data.js +1 -1
  3. package/dist_ts_web/elements/00group-chart/dees-chart-area/component.d.ts +10 -0
  4. package/dist_ts_web/elements/00group-chart/dees-chart-area/component.js +35 -8
  5. package/dist_ts_web/elements/00group-chart/dees-chart-area/styles.js +41 -24
  6. package/dist_ts_web/elements/00group-chart/dees-chart-area/template.js +17 -4
  7. package/dist_ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.d.ts +1 -0
  8. package/dist_ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.js +16 -24
  9. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.d.ts +1 -0
  10. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.js +14 -28
  11. package/dist_ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.d.ts +1 -0
  12. package/dist_ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.js +52 -51
  13. package/dist_ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.d.ts +1 -0
  14. package/dist_ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.js +22 -29
  15. package/dist_ts_web/elements/00group-dataview/dees-table/dees-table.d.ts +1 -0
  16. package/dist_ts_web/elements/00group-dataview/dees-table/dees-table.js +6 -6
  17. package/dist_ts_web/elements/00group-dataview/dees-table/styles.js +51 -44
  18. package/dist_ts_web/elements/00group-input/dees-input-code/dees-input-code.d.ts +1 -0
  19. package/dist_ts_web/elements/00group-input/dees-input-code/dees-input-code.js +7 -14
  20. package/dist_ts_web/elements/00group-input/dees-input-richtext/component.d.ts +1 -0
  21. package/dist_ts_web/elements/00group-input/dees-input-richtext/component.js +2 -1
  22. package/dist_ts_web/elements/00group-input/dees-input-richtext/styles.js +12 -20
  23. package/dist_ts_web/elements/00group-input/dees-input-richtext/template.js +5 -5
  24. package/dist_ts_web/elements/00group-layout/dees-tile/dees-tile.d.ts +34 -0
  25. package/dist_ts_web/elements/00group-layout/dees-tile/dees-tile.demo.d.ts +2 -0
  26. package/dist_ts_web/elements/00group-layout/dees-tile/dees-tile.demo.js +67 -0
  27. package/dist_ts_web/elements/00group-layout/dees-tile/dees-tile.js +187 -0
  28. package/dist_ts_web/elements/00group-layout/dees-tile/index.d.ts +1 -0
  29. package/dist_ts_web/elements/00group-layout/dees-tile/index.js +2 -0
  30. package/dist_ts_web/elements/00group-layout/index.d.ts +1 -0
  31. package/dist_ts_web/elements/00group-layout/index.js +2 -1
  32. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.d.ts +1 -0
  33. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.js +82 -74
  34. package/dist_ts_web/elements/00group-workspace/dees-workspace-terminal-preview/dees-workspace-terminal-preview.d.ts +1 -0
  35. package/dist_ts_web/elements/00group-workspace/dees-workspace-terminal-preview/dees-workspace-terminal-preview.js +8 -15
  36. package/dist_watch/bundle.js +2374 -2188
  37. package/dist_watch/bundle.js.map +4 -4
  38. package/package.json +1 -1
  39. package/ts_web/00_commitinfo_data.ts +1 -1
  40. package/ts_web/elements/00group-chart/dees-chart-area/component.ts +29 -6
  41. package/ts_web/elements/00group-chart/dees-chart-area/styles.ts +40 -23
  42. package/ts_web/elements/00group-chart/dees-chart-area/template.ts +16 -4
  43. package/ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.ts +15 -23
  44. package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.ts +13 -27
  45. package/ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.ts +51 -50
  46. package/ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.ts +21 -28
  47. package/ts_web/elements/00group-dataview/dees-table/dees-table.ts +5 -5
  48. package/ts_web/elements/00group-dataview/dees-table/styles.ts +50 -43
  49. package/ts_web/elements/00group-input/dees-input-code/dees-input-code.ts +6 -13
  50. package/ts_web/elements/00group-input/dees-input-richtext/component.ts +1 -0
  51. package/ts_web/elements/00group-input/dees-input-richtext/styles.ts +11 -19
  52. package/ts_web/elements/00group-input/dees-input-richtext/template.ts +5 -5
  53. package/ts_web/elements/00group-layout/dees-tile/dees-tile.demo.ts +67 -0
  54. package/ts_web/elements/00group-layout/dees-tile/dees-tile.ts +139 -0
  55. package/ts_web/elements/00group-layout/dees-tile/index.ts +1 -0
  56. package/ts_web/elements/00group-layout/index.ts +1 -0
  57. package/ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.ts +92 -84
  58. package/ts_web/elements/00group-workspace/dees-workspace-terminal-preview/dees-workspace-terminal-preview.ts +7 -14
@@ -18,6 +18,7 @@ import '../../00group-utility/dees-icon/dees-icon.js';
18
18
  import '../../00group-overlay/dees-contextmenu/dees-contextmenu.js';
19
19
  import '../../00group-button/dees-button/dees-button.js';
20
20
  import { themeDefaultStyles } from '../../00theme.js';
21
+ import '../../00group-layout/dees-tile/dees-tile.js';
21
22
 
22
23
  declare global {
23
24
  interface HTMLElementTagNameMap {
@@ -179,22 +180,12 @@ export class DeesStatsGrid extends DeesElement {
179
180
  width: 100%;
180
181
  }
181
182
 
182
- /* Tile Base Styles */
183
- .stats-tile {
184
- background: ${cssManager.bdTheme('#ffffff', '#09090b')};
185
- border: 1px solid ${cssManager.bdTheme('#e0e0e0', '#202020')};
186
- border-radius: var(--border-radius);
187
- padding: var(--tile-padding);
183
+ /* Tile Base Styles — frame provided by dees-tile, hover via ::part */
184
+ .stats-tile::part(outer) {
188
185
  transition: all var(--transition-duration) ease;
189
- cursor: default;
190
- position: relative;
191
- overflow: hidden;
192
- display: flex;
193
- flex-direction: column;
194
186
  }
195
187
 
196
- .stats-tile:hover {
197
- background: ${cssManager.bdTheme('#fafafa', '#0d0d0d')};
188
+ .stats-tile:hover::part(outer) {
198
189
  border-color: ${cssManager.bdTheme('#d0d0d0', '#2a2a2a')};
199
190
  }
200
191
 
@@ -202,17 +193,18 @@ export class DeesStatsGrid extends DeesElement {
202
193
  cursor: pointer;
203
194
  }
204
195
 
205
- .stats-tile.clickable:hover {
196
+ .stats-tile.clickable:hover::part(outer) {
206
197
  transform: translateY(-1px);
207
198
  box-shadow: 0 2px 6px ${cssManager.bdTheme('rgba(0,0,0,0.03)', 'rgba(0,0,0,0.15)')};
208
199
  }
209
200
 
210
- /* Tile Header */
201
+ /* Tile Header — slotted into dees-tile header */
211
202
  .tile-header {
212
203
  display: flex;
213
204
  justify-content: space-between;
214
- align-items: flex-start;
215
- margin-bottom: var(--header-spacing);
205
+ align-items: center;
206
+ padding: 0 12px;
207
+ height: 28px;
216
208
  flex-shrink: 0;
217
209
  }
218
210
 
@@ -232,12 +224,12 @@ export class DeesStatsGrid extends DeesElement {
232
224
  flex-shrink: 0;
233
225
  }
234
226
 
235
- /* Tile Content */
227
+ /* Tile Content — slotted into dees-tile content area */
236
228
  .tile-content {
237
- min-height: var(--content-min-height);
238
229
  display: flex;
239
230
  flex-direction: column;
240
- flex: 1;
231
+ padding: 12px;
232
+ min-height: var(--content-min-height);
241
233
  }
242
234
 
243
235
  .tile-value {
@@ -261,9 +253,10 @@ export class DeesStatsGrid extends DeesElement {
261
253
  .tile-description {
262
254
  font-size: var(--label-font-size);
263
255
  color: ${cssManager.bdTheme('hsl(215.4 16.3% 56.9%)', 'hsl(215 20.2% 55.1%)')};
264
- margin-top: var(--description-spacing);
265
256
  letter-spacing: -0.01em;
266
- flex-shrink: 0;
257
+ padding: 0 12px;
258
+ height: 24px;
259
+ line-height: 24px;
267
260
  }
268
261
 
269
262
  /* Gauge Styles */
@@ -882,27 +875,27 @@ export class DeesStatsGrid extends DeesElement {
882
875
  const columnSpan = tile.columnSpan && tile.columnSpan > 1 ? tile.columnSpan : undefined;
883
876
 
884
877
  return html`
885
- <div
878
+ <dees-tile
886
879
  class="stats-tile ${clickable ? 'clickable' : ''}"
887
880
  style="${columnSpan ? `grid-column: span ${columnSpan}` : ''}"
888
881
  @click=${clickable ? () => this.handleTileAction(tile.actions![0], tile) : undefined}
889
882
  @contextmenu=${hasActions ? (e: MouseEvent) => this.showContextMenu(e, tile) : undefined}
890
883
  >
891
- <div class="tile-header">
884
+ <div slot="header" class="tile-header">
892
885
  <h3 class="tile-title">${tile.title}</h3>
893
886
  ${tile.icon ? html`
894
887
  <dees-icon class="tile-icon" .icon=${tile.icon} size="small"></dees-icon>
895
888
  ` : ''}
896
889
  </div>
897
-
890
+
898
891
  <div class="tile-content">
899
892
  ${this.renderTileContent(tile)}
900
893
  </div>
901
-
894
+
902
895
  ${tile.description && tile.type !== 'trend' ? html`
903
- <div class="tile-description">${tile.description}</div>
896
+ <div slot="footer" class="tile-description">${tile.description}</div>
904
897
  ` : ''}
905
- </div>
898
+ </dees-tile>
906
899
  `;
907
900
  }
908
901
 
@@ -15,6 +15,7 @@ import {
15
15
  } from './data.js';
16
16
  import { compileLucenePredicate } from './lucene.js';
17
17
  import { themeDefaultStyles } from '../../00theme.js';
18
+ import '../../00group-layout/dees-tile/dees-tile.js';
18
19
 
19
20
  export type { Column, ITableAction, ITableActionDataArg, TDisplayFunction } from './types.js';
20
21
 
@@ -221,9 +222,8 @@ export class DeesTable<T> extends DeesElement {
221
222
  );
222
223
  (this as any)._lastViewData = viewData;
223
224
  return html`
224
- <div class="mainbox">
225
- <!-- the heading part -->
226
- <div class="header">
225
+ <dees-tile>
226
+ <div slot="header" class="header">
227
227
  <div class="headingContainer">
228
228
  <div class="heading heading1">${this.label || this.heading1}</div>
229
229
  <div class="heading heading2">${this.heading2}</div>
@@ -496,7 +496,7 @@ export class DeesTable<T> extends DeesElement {
496
496
  </div>
497
497
  `
498
498
  : html` <div class="noDataSet">No data set!</div> `}
499
- <div class="footer">
499
+ <div slot="footer" class="footer">
500
500
  <div class="tableStatistics">
501
501
  ${this.data.length} ${this.dataName || 'data rows'} (total) |
502
502
  ${this.selectedDataRow ? '# ' + `${this.data.indexOf(this.selectedDataRow) + 1}` : `No`}
@@ -528,7 +528,7 @@ export class DeesTable<T> extends DeesElement {
528
528
  })}
529
529
  </div>
530
530
  </div>
531
- </div>
531
+ </dees-tile>
532
532
  `;
533
533
  }
534
534
 
@@ -12,17 +12,11 @@ export const tableStyles: CSSResult[] = [
12
12
  width: 100%;
13
13
  }
14
14
 
15
- .mainbox {
15
+ dees-tile {
16
16
  color: ${cssManager.bdTheme('hsl(0 0% 3.9%)', 'hsl(0 0% 98%)')};
17
17
  font-family: ${cssGeistFontFamily};
18
18
  font-weight: 400;
19
19
  font-size: 14px;
20
- display: block;
21
- width: 100%;
22
- background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(0 0% 3.9%)')};
23
- border: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
24
- border-radius: 8px;
25
- overflow: hidden;
26
20
  cursor: default;
27
21
  }
28
22
 
@@ -30,30 +24,31 @@ export const tableStyles: CSSResult[] = [
30
24
  display: flex;
31
25
  justify-content: space-between;
32
26
  align-items: center;
33
- padding: 16px 24px;
34
- min-height: 64px;
35
- border-bottom: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
27
+ padding: 0 16px;
28
+ height: 40px;
36
29
  }
37
30
 
38
31
  .headingContainer {
39
32
  flex: 1;
33
+ display: flex;
34
+ align-items: baseline;
40
35
  }
41
36
 
42
37
  .heading {
43
- line-height: 1.5;
38
+ line-height: 1;
44
39
  }
45
40
 
46
41
  .heading1 {
47
- font-size: 18px;
48
- font-weight: 600;
49
- color: ${cssManager.bdTheme('hsl(0 0% 9%)', 'hsl(0 0% 95%)')};
50
- letter-spacing: -0.025em;
42
+ font-size: 14px;
43
+ font-weight: 500;
44
+ color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 63.9%)')};
45
+ letter-spacing: -0.01em;
51
46
  }
52
-
47
+
53
48
  .heading2 {
54
- font-size: 14px;
49
+ font-size: 12px;
55
50
  color: ${cssManager.bdTheme('hsl(215.4 16.3% 56.9%)', 'hsl(215 20.2% 55.1%)')};
56
- margin-top: 2px;
51
+ margin-left: 8px;
57
52
  }
58
53
 
59
54
  .headingSeparation {
@@ -70,14 +65,14 @@ export const tableStyles: CSSResult[] = [
70
65
  .headerAction {
71
66
  display: flex;
72
67
  align-items: center;
73
- gap: 6px;
74
- padding: 6px 12px;
75
- font-size: 14px;
68
+ gap: 4px;
69
+ padding: 4px 10px;
70
+ font-size: 12px;
76
71
  font-weight: 500;
77
72
  color: ${cssManager.bdTheme('hsl(0 0% 45.1%)', 'hsl(0 0% 63.9%)')};
78
73
  background: transparent;
79
74
  border: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
80
- border-radius: 6px;
75
+ border-radius: 4px;
81
76
  cursor: pointer;
82
77
  transition: all 0.15s ease;
83
78
  }
@@ -199,7 +194,7 @@ export const tableStyles: CSSResult[] = [
199
194
  }
200
195
 
201
196
  tbody tr:hover {
202
- background: ${cssManager.bdTheme('hsl(210 40% 96.1% / 0.5)', 'hsl(0 0% 14.9% / 0.5)')};
197
+ background: ${cssManager.bdTheme('hsl(222.2 47.4% 51.2% / 0.06)', 'hsl(217.2 91.2% 59.8% / 0.08)')};
203
198
  }
204
199
 
205
200
  /* Column hover effect for better traceability */
@@ -214,7 +209,7 @@ export const tableStyles: CSSResult[] = [
214
209
  bottom: 0;
215
210
  left: 0;
216
211
  right: 0;
217
- background: ${cssManager.bdTheme('hsl(210 40% 96.1% / 0.3)', 'hsl(0 0% 14.9% / 0.3)')};
212
+ background: ${cssManager.bdTheme('hsl(222.2 47.4% 51.2% / 0.04)', 'hsl(217.2 91.2% 59.8% / 0.05)')};
218
213
  opacity: 0;
219
214
  pointer-events: none;
220
215
  transition: opacity 0.15s ease;
@@ -238,15 +233,19 @@ export const tableStyles: CSSResult[] = [
238
233
  border-top: none;
239
234
  }
240
235
 
241
- :host([show-grid]) th:first-child,
242
- :host([show-grid]) td:first-child {
243
- border-left: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
244
- }
245
-
246
236
  :host([show-grid]) tbody tr:first-child td {
247
237
  border-top: none;
248
238
  }
249
239
 
240
+ /* Remove edge borders that would double with tile frame */
241
+ :host([show-grid]) th:last-child,
242
+ :host([show-grid]) td:last-child {
243
+ border-right: none;
244
+ }
245
+ :host([show-grid]) tbody tr:last-child td {
246
+ border-bottom: none;
247
+ }
248
+
250
249
  /* Sticky Actions column (right pinned) */
251
250
  thead th.actionsCol,
252
251
  tbody td.actionsCol {
@@ -261,7 +260,7 @@ export const tableStyles: CSSResult[] = [
261
260
  }
262
261
 
263
262
  tbody tr.selected {
264
- background: ${cssManager.bdTheme('hsl(210 40% 96.1%)', 'hsl(0 0% 14.9%)')};
263
+ background: ${cssManager.bdTheme('hsl(222.2 47.4% 51.2% / 0.1)', 'hsl(217.2 91.2% 59.8% / 0.12)')};
265
264
  }
266
265
 
267
266
  tbody tr.hasAttachment {
@@ -269,10 +268,11 @@ export const tableStyles: CSSResult[] = [
269
268
  }
270
269
 
271
270
  th {
272
- height: 48px;
273
- padding: 12px 24px;
271
+ height: 36px;
272
+ padding: 8px 16px;
274
273
  text-align: left;
275
274
  font-weight: 500;
275
+ font-size: 12px;
276
276
  color: ${cssManager.bdTheme('hsl(215.4 16.3% 46.9%)', 'hsl(215 20.2% 65.1%)')};
277
277
  letter-spacing: -0.01em;
278
278
  }
@@ -282,8 +282,9 @@ export const tableStyles: CSSResult[] = [
282
282
  }
283
283
 
284
284
  td {
285
- padding: 12px 24px;
285
+ padding: 8px 16px;
286
286
  vertical-align: middle;
287
+ font-size: 13px;
287
288
  color: ${cssManager.bdTheme('hsl(0 0% 3.9%)', 'hsl(0 0% 98%)')};
288
289
  }
289
290
 
@@ -293,18 +294,23 @@ export const tableStyles: CSSResult[] = [
293
294
 
294
295
  th:first-child,
295
296
  td:first-child {
296
- padding-left: 24px;
297
+ padding-left: 16px;
297
298
  }
298
299
 
299
300
  th:last-child,
300
301
  td:last-child {
301
- padding-right: 24px;
302
+ padding-right: 16px;
302
303
  }
303
304
 
304
305
  :host([show-vertical-lines]) th:last-child,
305
306
  :host([show-vertical-lines]) td:last-child {
306
307
  border-right: none;
307
308
  }
309
+
310
+ /* Default bottom border on last row removed — tile frame handles it */
311
+ :host(:not([show-horizontal-lines])) tbody tr:last-child {
312
+ border-bottom: none;
313
+ }
308
314
 
309
315
  .innerCellContainer {
310
316
  position: relative;
@@ -389,12 +395,12 @@ export const tableStyles: CSSResult[] = [
389
395
  display: flex;
390
396
  align-items: center;
391
397
  justify-content: space-between;
392
- height: 52px;
393
- padding: 0 24px;
394
- font-size: 14px;
395
- color: ${cssManager.bdTheme('hsl(215.4 16.3% 46.9%)', 'hsl(215 20.2% 65.1%)')};
396
- background: ${cssManager.bdTheme('hsl(210 40% 96.1%)', 'hsl(0 0% 9%)')};
397
- border-top: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
398
+ height: 32px;
399
+ padding: 0 16px;
400
+ font-size: 11px;
401
+ color: ${cssManager.bdTheme('hsl(0 0% 45%)', 'hsl(0 0% 55%)')};
402
+ width: 100%;
403
+ box-sizing: border-box;
398
404
  }
399
405
 
400
406
  .tableStatistics {
@@ -409,9 +415,10 @@ export const tableStyles: CSSResult[] = [
409
415
  .footerActions .footerAction {
410
416
  display: flex;
411
417
  align-items: center;
412
- gap: 6px;
413
- padding: 6px 12px;
418
+ gap: 4px;
419
+ padding: 2px 8px;
414
420
  font-weight: 500;
421
+ font-size: 11px;
415
422
  color: ${cssManager.bdTheme('hsl(215.4 16.3% 46.9%)', 'hsl(215 20.2% 65.1%)')};
416
423
  border-radius: 6px;
417
424
  cursor: pointer;
@@ -12,6 +12,7 @@ import { themeDefaultStyles } from '../../00theme.js';
12
12
  import { DeesModal } from '../../00group-overlay/dees-modal/dees-modal.js';
13
13
  import '../../00group-utility/dees-icon/dees-icon.js';
14
14
  import '../../00group-layout/dees-label/dees-label.js';
15
+ import '../../00group-layout/dees-tile/dees-tile.js';
15
16
  import '../../00group-workspace/dees-workspace-monaco/dees-workspace-monaco.js';
16
17
  import { DeesWorkspaceMonaco } from '../../00group-workspace/dees-workspace-monaco/dees-workspace-monaco.js';
17
18
 
@@ -105,24 +106,16 @@ export class DeesInputCode extends DeesInputBase<string> {
105
106
  min-height: 0;
106
107
  }
107
108
 
108
- .code-container {
109
- display: flex;
110
- flex-direction: column;
109
+ dees-tile {
111
110
  flex: 1;
112
111
  min-height: 0;
113
- border: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
114
- border-radius: 6px;
115
- overflow: hidden;
116
- background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(0 0% 9%)')};
117
112
  }
118
113
 
119
114
  .toolbar {
120
115
  display: flex;
121
116
  align-items: center;
122
117
  justify-content: space-between;
123
- padding: 8px 12px;
124
- background: ${cssManager.bdTheme('hsl(0 0% 97%)', 'hsl(0 0% 7%)')};
125
- border-bottom: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
118
+ padding: 4px 12px;
126
119
  gap: 8px;
127
120
  }
128
121
 
@@ -256,8 +249,8 @@ export class DeesInputCode extends DeesInputBase<string> {
256
249
  </style>
257
250
  <div class="input-wrapper">
258
251
  <dees-label .label=${this.label} .description=${this.description} .required=${this.required}></dees-label>
259
- <div class="code-container">
260
- <div class="toolbar">
252
+ <dees-tile>
253
+ <div slot="header" class="toolbar">
261
254
  <div class="toolbar-left">
262
255
  <div class="language-selector">
263
256
  <button
@@ -322,7 +315,7 @@ export class DeesInputCode extends DeesInputBase<string> {
322
315
  @content-change=${this.handleContentChange}
323
316
  ></dees-workspace-monaco>
324
317
  </div>
325
- </div>
318
+ </dees-tile>
326
319
  </div>
327
320
  `;
328
321
  }
@@ -16,6 +16,7 @@ import {
16
16
 
17
17
  import type { Editor } from '@tiptap/core';
18
18
  import { DeesServiceLibLoader, type ITiptapBundle } from '../../../services/index.js';
19
+ import '../../00group-layout/dees-tile/dees-tile.js';
19
20
 
20
21
  declare global {
21
22
  interface HTMLElementTagNameMap {
@@ -23,22 +23,15 @@ export const richtextStyles = [
23
23
  color: ${cssManager.bdTheme('hsl(0 0% 15%)', 'hsl(0 0% 93.9%)')};
24
24
  }
25
25
 
26
- .editor-container {
27
- display: flex;
28
- flex-direction: column;
29
- min-height: ${cssManager.bdTheme('200px', '200px')};
30
- border: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
31
- border-radius: 6px;
32
- background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(0 0% 9%)')};
33
- overflow: hidden;
34
- transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
26
+ dees-tile {
27
+ min-height: 200px;
35
28
  }
36
29
 
37
- .editor-container:hover {
30
+ dees-tile:hover::part(outer) {
38
31
  border-color: ${cssManager.bdTheme('hsl(0 0% 79.8%)', 'hsl(0 0% 20.9%)')};
39
32
  }
40
33
 
41
- .editor-container.focused {
34
+ dees-tile.focused::part(outer) {
42
35
  border-color: ${cssManager.bdTheme('hsl(0 0% 9%)', 'hsl(0 0% 98%)')};
43
36
  box-shadow: 0 0 0 2px ${cssManager.bdTheme('hsl(0 0% 9% / 0.05)', 'hsl(0 0% 98% / 0.05)')};
44
37
  }
@@ -47,9 +40,7 @@ export const richtextStyles = [
47
40
  display: flex;
48
41
  flex-wrap: wrap;
49
42
  gap: 4px;
50
- padding: 8px 12px;
51
- background: ${cssManager.bdTheme('hsl(210 40% 96.1%)', 'hsl(0 0% 14.9%)')};
52
- border-bottom: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
43
+ padding: 4px 12px;
53
44
  align-items: center;
54
45
  position: relative;
55
46
  }
@@ -199,14 +190,15 @@ export const richtextStyles = [
199
190
  }
200
191
 
201
192
  .editor-footer {
202
- padding: 8px 12px;
203
- background: ${cssManager.bdTheme('hsl(210 40% 96.1%)', 'hsl(0 0% 14.9%)')};
204
- border-top: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
205
- font-size: 12px;
206
- color: ${cssManager.bdTheme('hsl(215.4 16.3% 46.9%)', 'hsl(215 20.2% 65.1%)')};
193
+ padding: 0 12px;
194
+ height: 28px;
195
+ font-size: 11px;
196
+ color: ${cssManager.bdTheme('hsl(0 0% 45%)', 'hsl(0 0% 55%)')};
207
197
  display: flex;
208
198
  justify-content: space-between;
209
199
  align-items: center;
200
+ width: 100%;
201
+ box-sizing: border-box;
210
202
  }
211
203
 
212
204
  .word-count {
@@ -5,8 +5,8 @@ export const renderRichtext = (component: DeesInputRichtext): TemplateResult =>
5
5
  return html`
6
6
  <div class="input-wrapper">
7
7
  ${component.label ? html`<label class="label">${component.label}</label>` : ''}
8
- <div class="editor-container ${component.editor?.isFocused ? 'focused' : ''}" style="--min-height: ${component.minHeight}px">
9
- <div class="editor-toolbar">
8
+ <dees-tile class="${component.editor?.isFocused ? 'focused' : ''}" style="--min-height: ${component.minHeight}px">
9
+ <div slot="header" class="editor-toolbar">
10
10
  ${component.renderToolbar()}
11
11
  <div class="link-input ${component.showLinkInput ? 'show' : ''}">
12
12
  <input type="url" placeholder="Enter URL..." @keydown=${component.handleLinkInputKeydown} />
@@ -20,14 +20,14 @@ export const renderRichtext = (component: DeesInputRichtext): TemplateResult =>
20
20
  <div class="editor-content"></div>
21
21
  ${component.showWordCount
22
22
  ? html`
23
- <div class="editor-footer">
23
+ <div slot="footer" class="editor-footer">
24
24
  <span class="word-count">${component.wordCount} word${component.wordCount !== 1 ? 's' : ''}</span>
25
25
  </div>
26
26
  `
27
27
  : ''}
28
- </div>
28
+ </dees-tile>
29
29
  ${component.description ? html`<div class="description">${component.description}</div>` : ''}
30
30
  </div>
31
31
  `;
32
-
32
+
33
33
  };
@@ -0,0 +1,67 @@
1
+ import { html, css, cssManager } from '@design.estate/dees-element';
2
+ import './dees-tile.js';
3
+
4
+ export const demoFunc = () => {
5
+ return html`
6
+ <dees-demowrapper>
7
+ <style>
8
+ ${css`
9
+ .demoBox {
10
+ background: ${cssManager.bdTheme('hsl(0 0% 95%)', 'hsl(0 0% 9%)')};
11
+ padding: 40px;
12
+ display: flex;
13
+ flex-direction: column;
14
+ gap: 24px;
15
+ }
16
+ .tile-demo-content {
17
+ position: absolute;
18
+ inset: 0;
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ color: ${cssManager.bdTheme('hsl(0 0% 45%)', 'hsl(0 0% 55%)')};
23
+ font-size: 13px;
24
+ }
25
+ .footer-stats {
26
+ display: flex;
27
+ align-items: center;
28
+ gap: 24px;
29
+ font-size: 11px;
30
+ width: 100%;
31
+ }
32
+ .footer-stats .stat {
33
+ display: flex;
34
+ align-items: center;
35
+ gap: 6px;
36
+ }
37
+ .footer-stats .stat strong {
38
+ color: ${cssManager.bdTheme('hsl(0 0% 15%)', 'hsl(0 0% 90%)')};
39
+ }
40
+ `}
41
+ </style>
42
+ <div class="demoBox">
43
+ <dees-tile heading="Simple Tile" style="height: 200px;">
44
+ <div class="tile-demo-content">Content area with rounded corners</div>
45
+ </dees-tile>
46
+
47
+ <dees-tile heading="Tile with Footer" style="height: 200px;">
48
+ <div class="tile-demo-content">Content goes here</div>
49
+ <div slot="footer" class="footer-stats">
50
+ <span class="stat">latest <strong>42</strong></span>
51
+ <span class="stat">min <strong>12</strong></span>
52
+ <span class="stat">max <strong>87</strong></span>
53
+ <span class="stat">avg <strong>45.3</strong></span>
54
+ </div>
55
+ </dees-tile>
56
+
57
+ <dees-tile style="height: 200px;">
58
+ <div slot="header" style="display:flex;align-items:center;gap:12px;width:100%;">
59
+ <span style="font-weight:500;">Custom Header</span>
60
+ <input type="text" placeholder="Search..." style="flex:1;max-width:200px;padding:2px 8px;border:1px solid;border-radius:4px;font-size:12px;background:transparent;color:inherit;border-color:inherit;">
61
+ </div>
62
+ <div class="tile-demo-content">Custom header slot with search input</div>
63
+ </dees-tile>
64
+ </div>
65
+ </dees-demowrapper>
66
+ `;
67
+ };