@design.estate/dees-wcctools 1.0.100 → 1.1.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design.estate/dees-wcctools",
3
- "version": "1.0.100",
3
+ "version": "1.1.0",
4
4
  "private": false,
5
5
  "description": "A set of web component tools for creating element catalogues, enabling the structured development and documentation of custom elements and pages.",
6
6
  "exports": {
package/readme.hints.md CHANGED
@@ -1,5 +1,107 @@
1
1
  # Project Hints and Findings
2
2
 
3
+ ## UI Redesign with Shadcn-like Styles (2025-06-27)
4
+
5
+ ### Changes Made
6
+ Updated the WCC Dashboard UI components (properties and sidebar) to use shadcn-like design patterns:
7
+
8
+ 1. **Color System**: Implemented CSS variables for theming:
9
+ - `--background`, `--foreground`, `--card`, `--primary`, `--secondary`
10
+ - `--muted`, `--accent`, `--border`, `--input`, `--ring`
11
+ - Consistent dark theme with subtle borders and proper contrast
12
+ - Dynamic theme switching between light and dark modes
13
+
14
+ 2. **Properties Panel Improvements (Updated)**:
15
+ - Changed from fixed 3-column grid to flexible flexbox layout
16
+ - Properties now wrap and use space more efficiently
17
+ - Added rounded corners (using --radius-md) and better spacing
18
+ - Property items use flexbox with min-width for responsive layout
19
+ - Property labels now show as styled headers with type info
20
+ - Form controls updated with shadcn-style focus states and transitions
21
+ - Complex properties (Objects/Arrays) show "Edit" button
22
+ - Advanced JSON editor appears above properties panel when editing complex types
23
+ - Dynamic height adjustment (50px when editor is open, 120px normally)
24
+
25
+ 3. **Sidebar Styling**:
26
+ - Updated with consistent color scheme
27
+ - Added rounded corners to menu items
28
+ - Improved hover states with smooth transitions
29
+ - Better typography with proper font weights
30
+
31
+ 4. **Advanced Property Editor**:
32
+ - JSON editor for complex types (Objects and Arrays)
33
+ - Monaco-style monospace font for code editing
34
+ - Live updates to element properties
35
+ - Positioned above the properties panel with smooth transitions
36
+
37
+ 5. **Theme and Viewport Selectors (New)**:
38
+ - Redesigned buttons with flexbox layout for better icon/text alignment
39
+ - Added hover effects with transform and shadow
40
+ - Smooth transitions on all interactive elements
41
+ - Selected state uses primary color variables
42
+ - Icons reduced in size for better balance
43
+
44
+ 6. **Form Controls (New)**:
45
+ - Input fields and selects now have:
46
+ - Rounded corners (--radius-sm)
47
+ - Consistent padding (0.5rem 0.75rem)
48
+ - Focus states with ring effect using box-shadow
49
+ - Smooth transition animations
50
+ - Checkboxes use accent-color for theming
51
+
52
+ ### Technical Details
53
+ - Uses system font stack ('Inter' preferred) for better native appearance
54
+ - Subtle borders with CSS variables for consistency
55
+ - Consistent spacing using rem units
56
+ - Smooth transitions (0.2s ease) for interactive elements
57
+ - Custom scrollbar styling for better visual integration
58
+ - Grid layout with 1px gaps creating subtle dividers
59
+ - Warning display with backdrop blur and rounded corners
60
+
61
+ ## Advanced Complex Properties Editor (2025-06-27)
62
+
63
+ ### Overview
64
+ Implemented an advanced editor for complex properties (Arrays and Objects) that appears between the wcc-properties panel and frame when activated.
65
+
66
+ ### Features
67
+ 1. **Dynamic Layout**: Frame shrinks by 300px from bottom when editor opens
68
+ 2. **Multiple Editors**: Can edit multiple properties simultaneously side by side
69
+ 3. **JSON Editor**:
70
+ - Monospace font for code editing
71
+ - Tab key support for indentation
72
+ - Syntax validation with error messages
73
+ - Live preview of changes
74
+ 4. **Smooth Transitions**: Animated opening/closing with 0.3s ease
75
+ 5. **Error Handling**: Invalid JSON shows clear error messages that disappear on typing
76
+ 6. **Close All Button**: Single button to close all open editors at once
77
+
78
+ ### Technical Implementation (Updated)
79
+ - **State Management**: Changed from single editor to array of editors with unique IDs
80
+ - **Editor Structure**: Each editor instance contains:
81
+ - `id`: Unique identifier (`propertyName-timestamp`)
82
+ - `name`: Property name
83
+ - `value`: Original value
84
+ - `element`: Reference to the element
85
+ - `editorValue`: Current JSON string
86
+ - `editorError`: Validation error message
87
+ - **Event System**: Uses custom 'editorStateChanged' event to communicate with parent dashboard
88
+ - **Dynamic Styling**: wcc-frame's bottom position changes from 100px to 400px when any editor is open
89
+ - **Property Types**: Object and Array properties show "Edit Object/Array" button instead of inline controls
90
+
91
+ ### User Flow
92
+ 1. Click "Edit Object/Array" button on complex property
93
+ 2. Editor slides up between properties panel and frame
94
+ 3. Click additional "Edit" buttons to open more properties side by side
95
+ 4. Each editor can be saved/cancelled independently
96
+ 5. "Close All" button dismisses all editors at once
97
+ 6. Frame automatically resizes back when all editors are closed
98
+
99
+ ### Layout Details
100
+ - **Container**: Flexbox with horizontal scrolling when multiple editors overflow
101
+ - **Editor Width**: Min 300px, max 500px, flexible between
102
+ - **Scrollbar**: Custom styled thin scrollbar for horizontal overflow
103
+ - **Header Bar**: Fixed top bar with "Property Editors" title and "Close All" button
104
+
3
105
  ## Properties Panel Element Detection Issue (Fixed)
4
106
 
5
107
  ### Problem
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-wcctools',
6
- version: '1.0.100',
6
+ version: '1.1.0',
7
7
  description: 'A set of web component tools for creating element catalogues, enabling the structured development and documentation of custom elements and pages.'
8
8
  }
@@ -38,12 +38,8 @@ export class WccDashboard extends DeesElement {
38
38
  @property()
39
39
  public warning: string = null;
40
40
 
41
- @property()
42
- public frameScrollY: number = 0;
43
-
44
- @property()
45
- public sidebarScrollY: number = 0;
46
-
41
+ private frameScrollY: number = 0;
42
+ private sidebarScrollY: number = 0;
47
43
  private scrollPositionsApplied: boolean = false;
48
44
 
49
45
  @queryAsync('wcc-frame')
@@ -103,6 +99,13 @@ export class WccDashboard extends DeesElement {
103
99
  @selectedTheme=${(eventArg) => {
104
100
  this.selectedTheme = eventArg.detail;
105
101
  }}
102
+ @editorStateChanged=${async (eventArg) => {
103
+ const frame = await this.wccFrame;
104
+ if (frame) {
105
+ frame.advancedEditorOpen = eventArg.detail.isOpen;
106
+ frame.requestUpdate();
107
+ }
108
+ }}
106
109
  ></wcc-properties>
107
110
  <wcc-frame id="wccFrame" viewport=${this.selectedViewport}>
108
111
  </wcc-frame>
@@ -222,8 +225,14 @@ export class WccDashboard extends DeesElement {
222
225
  }
223
226
 
224
227
  private scrollUpdateTimeout: NodeJS.Timeout;
228
+ private scrollListenersAttached: boolean = false;
225
229
 
226
230
  public async setupScrollListeners() {
231
+ // Prevent duplicate listeners
232
+ if (this.scrollListenersAttached) {
233
+ return;
234
+ }
235
+
227
236
  const wccFrame = await this.wccFrame;
228
237
  const wccSidebar = this.shadowRoot.querySelector('wcc-sidebar');
229
238
 
@@ -233,6 +242,7 @@ export class WccDashboard extends DeesElement {
233
242
  this.frameScrollY = wccFrame.scrollTop;
234
243
  this.debouncedScrollUpdate();
235
244
  });
245
+ this.scrollListenersAttached = true;
236
246
  }
237
247
 
238
248
  if (wccSidebar) {
@@ -13,6 +13,9 @@ export class WccFrame extends DeesElement {
13
13
  @property()
14
14
  public viewport: string;
15
15
 
16
+ @property({ type: Boolean })
17
+ public advancedEditorOpen: boolean = false;
18
+
16
19
  public static styles = [
17
20
  css`
18
21
  :host {
@@ -22,7 +25,6 @@ export class WccFrame extends DeesElement {
22
25
  left: 200px;
23
26
  right: 0px;
24
27
  top: 0px;
25
- bottom: 100px;
26
28
  overflow-y: auto;
27
29
  overflow-x: auto;
28
30
  overscroll-behavior: contain;
@@ -41,6 +43,8 @@ export class WccFrame extends DeesElement {
41
43
  return html`
42
44
  <style>
43
45
  :host {
46
+ bottom: ${this.advancedEditorOpen ? '400px' : '100px'};
47
+ transition: bottom 0.3s ease;
44
48
  ${(() => {
45
49
  switch (this.viewport) {
46
50
  case 'desktop':