@design.estate/dees-catalog 3.68.0 → 3.69.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design.estate/dees-catalog",
3
- "version": "3.68.0",
3
+ "version": "3.69.1",
4
4
  "private": false,
5
5
  "description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
6
6
  "main": "dist_ts_web/index.js",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '3.68.0',
6
+ version: '3.69.1',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  }
@@ -8,7 +8,9 @@ export function demoFunc() {
8
8
  <dees-heading level="4">This is a H4 heading</dees-heading>
9
9
  <dees-heading level="5">This is a H5 heading</dees-heading>
10
10
  <dees-heading level="6">This is a H6 heading</dees-heading>
11
- <dees-heading level="hr">This is an hr heading</dees-heading>
12
- <dees-heading level="hr-small">This is an hr small heading</dees-heading>
11
+ <dees-heading level="hr">This is an hr heading (level="hr")</dees-heading>
12
+ <dees-heading level="7">This is an hr heading (level="7")</dees-heading>
13
+ <dees-heading level="hr-small">This is an hr-small heading (level="hr-small")</dees-heading>
14
+ <dees-heading level="8">This is an hr-small heading (level="8")</dees-heading>
13
15
  `;
14
16
  }
@@ -27,68 +27,104 @@ export class DeesHeading extends DeesElement {
27
27
 
28
28
  // properties
29
29
  /**
30
- * Heading level: 1-6 for h1-h6, or 'hr' for horizontal rule style
30
+ * Heading level:
31
+ * '1'-'6' → <h1>..<h6>
32
+ * '7'|'hr' → horizontal-rule style heading
33
+ * '8'|'hr-small' → small horizontal-rule style heading
31
34
  */
32
35
  @property({ type: String, reflect: true })
33
- accessor level: '1' | '2' | '3' | '4' | '5' | '6' | 'hr' | 'hr-small' = '1';
36
+ accessor level: '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | 'hr' | 'hr-small' = '1';
34
37
 
35
38
  // STATIC STYLES
36
39
  public static styles: CSSResult[] = [
37
40
  themeDefaultStyles,
38
41
  cssManager.defaultStyles,
39
42
  css`
40
- /* TODO: Migrate hardcoded values to --dees-* CSS variables */
41
- /* Heading styles */
43
+ :host {
44
+ display: block;
45
+ }
46
+
47
+ /* Heading styles.
48
+ * Color hierarchy: h1-h2 stay prominent with text-primary; h3-h6 step
49
+ * down to text-secondary so they read as subheadings instead of
50
+ * mini-h1s. Keeps the visual loudness out of smaller headings. */
42
51
  h1, h2, h3, h4, h5, h6 {
43
- margin: 16px 0 8px;
44
52
  font-weight: 600;
45
- color: ${cssManager.bdTheme('#000', '#fff')};
46
53
  }
47
- h1 { font-size: 32px; font-family: ${cssCalSansFontFamily}; letter-spacing: 0.025em;}
48
- h2 { font-size: 28px; }
49
- h3 { font-size: 24px; }
50
- h4 { font-size: 20px; }
51
- h5 { font-size: 16px; }
52
- h6 { font-size: 14px; }
54
+ h1, h2 {
55
+ color: var(--dees-color-text-primary);
56
+ }
57
+ h3, h4, h5, h6 {
58
+ color: var(--dees-color-text-secondary);
59
+ }
60
+
61
+ /* Per-level typography + spacing.
62
+ * Margin scales with importance: h1 gets the most breathing room,
63
+ * h6 the least. Top margin > bottom margin so headings group with
64
+ * the content that follows them. */
65
+ h1 {
66
+ /* h1 uses weight 500, not 600: the Cal Sans display font is
67
+ * already stylized enough that bold + max contrast + 32px stacks
68
+ * too much emphasis. 500 keeps the typographic impact without
69
+ * shouting. */
70
+ font-weight: 500;
71
+ font-size: 32px;
72
+ font-family: ${cssCalSansFontFamily};
73
+ letter-spacing: 0.025em;
74
+ margin: var(--dees-spacing-2xl) 0 var(--dees-spacing-lg);
75
+ }
76
+ h2 {
77
+ font-size: 28px;
78
+ margin: var(--dees-spacing-xl) 0 var(--dees-spacing-md);
79
+ }
80
+ h3 {
81
+ font-size: 24px;
82
+ margin: var(--dees-spacing-xl) 0 var(--dees-spacing-md);
83
+ }
84
+ h4 {
85
+ font-size: 20px;
86
+ margin: var(--dees-spacing-lg) 0 var(--dees-spacing-sm);
87
+ }
88
+ h5 {
89
+ font-size: 16px;
90
+ margin: var(--dees-spacing-md) 0 var(--dees-spacing-sm);
91
+ }
92
+ h6 {
93
+ font-size: 14px;
94
+ margin: var(--dees-spacing-md) 0 var(--dees-spacing-xs);
95
+ }
96
+
53
97
  /* Horizontal rule style heading */
54
98
  .heading-hr {
55
99
  display: flex;
56
100
  align-items: center;
57
101
  text-align: center;
58
- margin: 16px 0;
59
- color: ${cssManager.bdTheme('#999', '#555')};
102
+ margin: var(--dees-spacing-lg) 0;
103
+ color: var(--dees-color-text-muted);
60
104
  }
61
105
  /* Fade lines toward and away from text for hr style */
62
106
  .heading-hr::before {
63
107
  content: '';
64
108
  flex: 1;
65
109
  height: 1px;
66
- /* fade in toward center */
67
- background: ${cssManager.bdTheme(
68
- 'linear-gradient(to right, transparent, #ccc)',
69
- 'linear-gradient(to right, transparent, #333)'
70
- )};
71
- margin: 0 8px;
110
+ background: linear-gradient(to right, transparent, var(--dees-color-border-strong));
111
+ margin: 0 var(--dees-spacing-sm);
72
112
  }
73
113
  .heading-hr::after {
74
114
  content: '';
75
115
  flex: 1;
76
116
  height: 1px;
77
- /* fade out away from center */
78
- background: ${cssManager.bdTheme(
79
- 'linear-gradient(to right, #ccc, transparent)',
80
- 'linear-gradient(to right, #333, transparent)'
81
- )};
82
- margin: 0 8px;
117
+ background: linear-gradient(to right, var(--dees-color-border-strong), transparent);
118
+ margin: 0 var(--dees-spacing-sm);
83
119
  }
84
120
  /* Small hr variant with reduced margins */
85
121
  .heading-hr.heading-hr-small {
86
- margin: 8px 0;
122
+ margin: var(--dees-spacing-sm) 0;
87
123
  font-size: 12px;
88
124
  }
89
125
  .heading-hr.heading-hr-small::before,
90
126
  .heading-hr.heading-hr-small::after {
91
- margin: 0 8px;
127
+ margin: 0 var(--dees-spacing-sm);
92
128
  }
93
129
  `,
94
130
  ];
@@ -109,8 +145,10 @@ export class DeesHeading extends DeesElement {
109
145
  return html`<h5><slot></slot></h5>`;
110
146
  case '6':
111
147
  return html`<h6><slot></slot></h6>`;
148
+ case '7':
112
149
  case 'hr':
113
150
  return html`<div class="heading-hr"><slot></slot></div>`;
151
+ case '8':
114
152
  case 'hr-small':
115
153
  return html`<div class="heading-hr heading-hr-small"><slot></slot></div>`;
116
154
  default:
@@ -269,12 +269,20 @@ export class DeesSimpleAppDash extends DeesElement {
269
269
  }
270
270
 
271
271
  .subViews {
272
- display: flex;
273
- flex-direction: column;
274
- gap: 2px;
275
- margin: 2px 0 4px 12px;
276
- padding-left: 12px;
272
+ display: grid;
273
+ grid-template-rows: 0fr;
274
+ margin-left: 12px;
277
275
  position: relative;
276
+ transition:
277
+ grid-template-rows 0.25s cubic-bezier(0.4, 0, 0.2, 1),
278
+ margin-top 0.25s cubic-bezier(0.4, 0, 0.2, 1),
279
+ margin-bottom 0.25s cubic-bezier(0.4, 0, 0.2, 1);
280
+ }
281
+
282
+ .subViews.expanded {
283
+ grid-template-rows: 1fr;
284
+ margin-top: 2px;
285
+ margin-bottom: 4px;
278
286
  }
279
287
 
280
288
  .subViews::before {
@@ -285,6 +293,21 @@ export class DeesSimpleAppDash extends DeesElement {
285
293
  bottom: 4px;
286
294
  width: 1px;
287
295
  background: var(--dees-color-border-default);
296
+ opacity: 0;
297
+ transition: opacity 0.2s ease;
298
+ }
299
+
300
+ .subViews.expanded::before {
301
+ opacity: 1;
302
+ }
303
+
304
+ .subViews-inner {
305
+ min-height: 0;
306
+ overflow: hidden;
307
+ display: flex;
308
+ flex-direction: column;
309
+ gap: 2px;
310
+ padding-left: 12px;
288
311
  }
289
312
 
290
313
  .viewTab.sub {
@@ -631,26 +654,31 @@ export class DeesSimpleAppDash extends DeesElement {
631
654
  <dees-icon class="chevron" .icon="${'lucide:chevronDown'}"></dees-icon>
632
655
  ` : ''}
633
656
  </div>
634
- ${hasSubs && groupActive ? html`
635
- <div class="subViews">
636
- ${view.subViews!.map(
637
- (sub) => html`
638
- <div
639
- class="viewTab sub ${this.selectedView === sub ? 'selected' : ''}"
640
- @click=${(e: Event) => {
641
- e.stopPropagation();
642
- this.loadView(sub);
643
- }}
644
- >
645
- ${sub.iconName ? html`
646
- <dees-icon .icon="${sub.iconName.includes(':') ? sub.iconName : `lucide:${sub.iconName}`}"></dees-icon>
647
- ` : html`
648
- <dees-icon .icon="${'lucide:dot'}"></dees-icon>
649
- `}
650
- <span>${sub.name}</span>
651
- </div>
652
- `
653
- )}
657
+ ${hasSubs ? html`
658
+ <div
659
+ class="subViews ${groupActive ? 'expanded' : ''}"
660
+ ?inert=${!groupActive}
661
+ >
662
+ <div class="subViews-inner">
663
+ ${view.subViews!.map(
664
+ (sub) => html`
665
+ <div
666
+ class="viewTab sub ${this.selectedView === sub ? 'selected' : ''}"
667
+ @click=${(e: Event) => {
668
+ e.stopPropagation();
669
+ this.loadView(sub);
670
+ }}
671
+ >
672
+ ${sub.iconName ? html`
673
+ <dees-icon .icon="${sub.iconName.includes(':') ? sub.iconName : `lucide:${sub.iconName}`}"></dees-icon>
674
+ ` : html`
675
+ <dees-icon .icon="${'lucide:dot'}"></dees-icon>
676
+ `}
677
+ <span>${sub.name}</span>
678
+ </div>
679
+ `
680
+ )}
681
+ </div>
654
682
  </div>
655
683
  ` : ''}
656
684
  `;