@design.estate/dees-catalog 3.50.2 → 3.51.1

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.
@@ -6,7 +6,6 @@ export const chartAreaStyles = [
6
6
  :host {
7
7
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
8
8
  color: ${cssManager.bdTheme('hsl(0 0% 3.9%)', 'hsl(0 0% 98%)')};
9
- font-weight: 400;
10
9
  font-size: 14px;
11
10
  }
12
11
  .mainbox {
@@ -18,7 +17,6 @@ export const chartAreaStyles = [
18
17
  border-radius: 8px;
19
18
  overflow: hidden;
20
19
  }
21
-
22
20
  .chartTitle {
23
21
  position: absolute;
24
22
  top: 0;
@@ -34,27 +32,59 @@ export const chartAreaStyles = [
34
32
  }
35
33
  .chartContainer {
36
34
  position: absolute;
37
- top: 0px;
38
- left: 0px;
39
- bottom: 0px;
40
- right: 0px;
41
- padding: 44px 16px 16px 0px;
42
- overflow: hidden;
43
- background: transparent; /* Ensure container doesn't override chart background */
35
+ top: 44px;
36
+ left: 0;
37
+ bottom: 32px;
38
+ right: 0;
39
+ }
40
+ .statsBar {
41
+ position: absolute;
42
+ bottom: 0;
43
+ left: 0;
44
+ right: 0;
45
+ height: 32px;
46
+ display: flex;
47
+ align-items: center;
48
+ gap: 24px;
49
+ padding: 0 16px;
50
+ border-top: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
51
+ font-size: 11px;
52
+ color: ${cssManager.bdTheme('hsl(0 0% 45%)', 'hsl(0 0% 55%)')};
44
53
  }
45
-
46
- /* ApexCharts theme overrides */
47
- .apexcharts-canvas {
48
- background: transparent !important;
54
+ .statsSeries {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: 8px;
49
58
  }
50
-
51
- .apexcharts-inner {
52
- background: transparent !important;
59
+ .statsSeries + .statsSeries {
60
+ padding-left: 24px;
61
+ border-left: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
53
62
  }
54
-
55
- .apexcharts-graphical {
56
- background: transparent !important;
63
+ .statsColor {
64
+ width: 8px;
65
+ height: 8px;
66
+ border-radius: 2px;
67
+ flex-shrink: 0;
68
+ }
69
+ .statsName {
70
+ font-weight: 500;
71
+ color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 80%)')};
72
+ margin-right: 4px;
73
+ }
74
+ .statsItem strong {
75
+ color: ${cssManager.bdTheme('hsl(0 0% 15%)', 'hsl(0 0% 90%)')};
76
+ }
77
+ .lw-tooltip {
78
+ position: absolute;
79
+ z-index: 100;
80
+ pointer-events: none;
81
+ padding: 12px;
82
+ border-radius: 6px;
83
+ border: 1px solid;
84
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
85
+ font-size: 12px;
86
+ box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.15);
87
+ min-width: 140px;
57
88
  }
58
89
  `,
59
90
  ];
60
-
@@ -6,7 +6,20 @@ export const renderChartArea = (component: DeesChartArea): TemplateResult => {
6
6
  <div class="mainbox">
7
7
  <div class="chartTitle">${component.label}</div>
8
8
  <div class="chartContainer"></div>
9
+ ${component.seriesStats.length > 0 ? html`
10
+ <div class="statsBar">
11
+ ${component.seriesStats.map(s => html`
12
+ <div class="statsSeries">
13
+ <span class="statsColor" style="background:${s.color}"></span>
14
+ <span class="statsName">${s.name}</span>
15
+ <span class="statsItem">latest <strong>${component.yAxisFormatter(s.latest)}</strong></span>
16
+ <span class="statsItem">min <strong>${component.yAxisFormatter(s.min)}</strong></span>
17
+ <span class="statsItem">max <strong>${component.yAxisFormatter(s.max)}</strong></span>
18
+ <span class="statsItem">avg <strong>${component.yAxisFormatter(s.avg)}</strong></span>
19
+ </div>
20
+ `)}
21
+ </div>
22
+ ` : ''}
9
23
  </div>
10
24
  `;
11
-
12
25
  };
@@ -710,6 +710,7 @@ export class DeesSimpleAppDash extends DeesElement {
710
710
  terminal.style.top = 'var(--banner-area-height, 0px)';
711
711
  terminal.style.left = '240px';
712
712
  terminal.style.right = '0px';
713
+ terminal.style.height = 'auto';
713
714
  terminal.style.bottom = '24px';
714
715
  terminal.style.opacity = '0';
715
716
  terminal.style.transform = 'translateY(8px) scale(0.99)';
@@ -4,7 +4,15 @@ import { CDN_BASE, CDN_VERSIONS } from './versions.js';
4
4
  import type { Terminal, ITerminalOptions } from 'xterm';
5
5
  import type { FitAddon } from 'xterm-addon-fit';
6
6
  import type { HLJSApi } from 'highlight.js';
7
- import type ApexChartsType from 'apexcharts';
7
+ import type {
8
+ createChart as createChartType,
9
+ IChartApi,
10
+ ISeriesApi,
11
+ UTCTimestamp,
12
+ MouseEventParams,
13
+ DeepPartial,
14
+ TimeChartOptions,
15
+ } from 'lightweight-charts';
8
16
  import type { Editor, EditorOptions } from '@tiptap/core';
9
17
  import type { StarterKitOptions } from '@tiptap/starter-kit';
10
18
  import type { UnderlineOptions } from '@tiptap/extension-underline';
@@ -43,6 +51,29 @@ export interface IXtermSearchAddon {
43
51
  findPrevious(term: string, searchOptions?: { regex?: boolean; wholeWord?: boolean; caseSensitive?: boolean; incremental?: boolean }): boolean;
44
52
  }
45
53
 
54
+ /**
55
+ * Bundle type for TradingView Lightweight Charts
56
+ */
57
+ export interface ILightweightChartsBundle {
58
+ createChart: typeof createChartType;
59
+ AreaSeries: any;
60
+ LineSeries: any;
61
+ ColorType: {
62
+ Solid: string;
63
+ VerticalGradient: string;
64
+ };
65
+ LineType: {
66
+ Simple: number;
67
+ WithSteps: number;
68
+ Curved: number;
69
+ };
70
+ CrosshairMode: {
71
+ Normal: number;
72
+ Magnet: number;
73
+ Hidden: number;
74
+ };
75
+ }
76
+
46
77
  /**
47
78
  * Bundle type for Tiptap editor and extensions
48
79
  */
@@ -76,7 +107,7 @@ export class DeesServiceLibLoader {
76
107
  private xtermFitAddonLib: IXtermFitAddonBundle | null = null;
77
108
  private xtermSearchAddonLib: IXtermSearchAddonBundle | null = null;
78
109
  private highlightJsLib: HLJSApi | null = null;
79
- private apexChartsLib: typeof ApexChartsType | null = null;
110
+ private lightweightChartsLib: ILightweightChartsBundle | null = null;
80
111
  private tiptapLib: ITiptapBundle | null = null;
81
112
 
82
113
  // Loading promises to prevent duplicate concurrent loads
@@ -84,7 +115,7 @@ export class DeesServiceLibLoader {
84
115
  private xtermFitAddonLoadingPromise: Promise<IXtermFitAddonBundle> | null = null;
85
116
  private xtermSearchAddonLoadingPromise: Promise<IXtermSearchAddonBundle> | null = null;
86
117
  private highlightJsLoadingPromise: Promise<HLJSApi> | null = null;
87
- private apexChartsLoadingPromise: Promise<typeof ApexChartsType> | null = null;
118
+ private lightweightChartsLoadingPromise: Promise<ILightweightChartsBundle> | null = null;
88
119
  private tiptapLoadingPromise: Promise<ITiptapBundle> | null = null;
89
120
 
90
121
  private constructor() {}
@@ -235,27 +266,34 @@ body > div[style*="top: -50000px"][style*="width: 50000px"] {
235
266
  }
236
267
 
237
268
  /**
238
- * Load ApexCharts charting library from CDN
239
- * @returns Promise resolving to ApexCharts constructor
269
+ * Load TradingView Lightweight Charts from CDN
270
+ * @returns Promise resolving to Lightweight Charts bundle
240
271
  */
241
- public async loadApexCharts(): Promise<typeof ApexChartsType> {
242
- if (this.apexChartsLib) {
243
- return this.apexChartsLib;
272
+ public async loadLightweightCharts(): Promise<ILightweightChartsBundle> {
273
+ if (this.lightweightChartsLib) {
274
+ return this.lightweightChartsLib;
244
275
  }
245
276
 
246
- if (this.apexChartsLoadingPromise) {
247
- return this.apexChartsLoadingPromise;
277
+ if (this.lightweightChartsLoadingPromise) {
278
+ return this.lightweightChartsLoadingPromise;
248
279
  }
249
280
 
250
- this.apexChartsLoadingPromise = (async () => {
251
- const url = `${CDN_BASE}/apexcharts@${CDN_VERSIONS.apexcharts}/+esm`;
281
+ this.lightweightChartsLoadingPromise = (async () => {
282
+ const url = `${CDN_BASE}/lightweight-charts@${CDN_VERSIONS.lightweightCharts}/+esm`;
252
283
  const module = await import(/* @vite-ignore */ url);
253
284
 
254
- this.apexChartsLib = module.default;
255
- return this.apexChartsLib!;
285
+ this.lightweightChartsLib = {
286
+ createChart: module.createChart,
287
+ AreaSeries: module.AreaSeries,
288
+ LineSeries: module.LineSeries,
289
+ ColorType: module.ColorType,
290
+ LineType: module.LineType,
291
+ CrosshairMode: module.CrosshairMode,
292
+ };
293
+ return this.lightweightChartsLib;
256
294
  })();
257
295
 
258
- return this.apexChartsLoadingPromise;
296
+ return this.lightweightChartsLoadingPromise;
259
297
  }
260
298
 
261
299
  /**
@@ -316,7 +354,7 @@ body > div[style*="top: -50000px"][style*="width: 50000px"] {
316
354
  this.loadXtermFitAddon(),
317
355
  this.loadXtermSearchAddon(),
318
356
  this.loadHighlightJs(),
319
- this.loadApexCharts(),
357
+ this.loadLightweightCharts(),
320
358
  this.loadTiptap(),
321
359
  ]);
322
360
  }
@@ -324,7 +362,7 @@ body > div[style*="top: -50000px"][style*="width: 50000px"] {
324
362
  /**
325
363
  * Check if a specific library is already loaded
326
364
  */
327
- public isLoaded(library: 'xterm' | 'xtermFitAddon' | 'xtermSearchAddon' | 'highlightJs' | 'apexCharts' | 'tiptap'): boolean {
365
+ public isLoaded(library: 'xterm' | 'xtermFitAddon' | 'xtermSearchAddon' | 'highlightJs' | 'lightweightCharts' | 'tiptap'): boolean {
328
366
  switch (library) {
329
367
  case 'xterm':
330
368
  return this.xtermLib !== null;
@@ -334,8 +372,8 @@ body > div[style*="top: -50000px"][style*="width: 50000px"] {
334
372
  return this.xtermSearchAddonLib !== null;
335
373
  case 'highlightJs':
336
374
  return this.highlightJsLib !== null;
337
- case 'apexCharts':
338
- return this.apexChartsLib !== null;
375
+ case 'lightweightCharts':
376
+ return this.lightweightChartsLib !== null;
339
377
  case 'tiptap':
340
378
  return this.tiptapLib !== null;
341
379
  default:
@@ -1,3 +1,3 @@
1
1
  export { DeesServiceLibLoader } from './DeesServiceLibLoader.js';
2
- export type { IXtermBundle, IXtermFitAddonBundle, IXtermSearchAddonBundle, IXtermSearchAddon, ITiptapBundle } from './DeesServiceLibLoader.js';
2
+ export type { IXtermBundle, IXtermFitAddonBundle, IXtermSearchAddonBundle, IXtermSearchAddon, ITiptapBundle, ILightweightChartsBundle } from './DeesServiceLibLoader.js';
3
3
  export { CDN_BASE, CDN_VERSIONS } from './versions.js';
@@ -7,7 +7,7 @@ export const CDN_VERSIONS = {
7
7
  xtermAddonFit: '0.8.0',
8
8
  xtermAddonSearch: '0.13.0',
9
9
  highlightJs: '11.11.1',
10
- apexcharts: '5.10.4',
10
+ lightweightCharts: '5.1.0',
11
11
  tiptap: '2.27.2',
12
12
  fontawesome: '7.2.0',
13
13
  } as const;