@redvars/peacock 3.8.6 → 3.9.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.
Files changed (85) hide show
  1. package/dist/code-highlighter.js +1 -4
  2. package/dist/code-highlighter.js.map +1 -1
  3. package/dist/custom-elements-jsdocs.json +93 -213
  4. package/dist/custom-elements.json +488 -2149
  5. package/dist/elevation.js +55 -2
  6. package/dist/elevation.js.map +1 -1
  7. package/dist/flow.js +762 -0
  8. package/dist/flow.js.map +1 -0
  9. package/dist/index.js +3 -3
  10. package/dist/loader.js +10 -9
  11. package/dist/loader.js.map +1 -1
  12. package/dist/menu-item.js +144 -63
  13. package/dist/menu-item.js.map +1 -1
  14. package/dist/menu.js +161 -73
  15. package/dist/menu.js.map +1 -1
  16. package/dist/src/flow/flow.d.ts +102 -0
  17. package/dist/src/flow/index.d.ts +2 -0
  18. package/dist/src/index.d.ts +3 -4
  19. package/dist/src/menu/menu/menu.d.ts +10 -9
  20. package/dist/src/menu/menu-item/menu-item.d.ts +1 -3
  21. package/dist/src/timeline/index.d.ts +2 -0
  22. package/dist/src/timeline/timeline-item.d.ts +23 -0
  23. package/dist/src/timeline/timeline.d.ts +26 -0
  24. package/dist/sub-menu.js +28 -1
  25. package/dist/sub-menu.js.map +1 -1
  26. package/dist/timeline-item.js +163 -0
  27. package/dist/timeline-item.js.map +1 -0
  28. package/dist/timeline.js +52 -0
  29. package/dist/timeline.js.map +1 -0
  30. package/dist/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +3 -2
  32. package/readme.md +2 -2
  33. package/src/code-highlighter/code-highlighter.scss +1 -7
  34. package/src/elevation/demo/index.html +52 -0
  35. package/src/elevation/elevation.scss +52 -5
  36. package/src/elevation/elevation.ts +8 -1
  37. package/src/flow/flow.scss +195 -0
  38. package/src/flow/flow.ts +683 -0
  39. package/src/flow/index.ts +2 -0
  40. package/src/index.ts +3 -16
  41. package/src/loader.ts +10 -9
  42. package/src/menu/menu/copy-component-files.mjs +47 -0
  43. package/src/menu/menu/menu.scss +55 -17
  44. package/src/menu/menu/menu.ts +155 -84
  45. package/src/menu/menu-item/menu-item-colors.scss +3 -3
  46. package/src/menu/menu-item/menu-item.scss +118 -24
  47. package/src/menu/menu-item/menu-item.ts +61 -55
  48. package/src/menu/sub-menu/sub-menu.scss +30 -1
  49. package/src/timeline/index.ts +2 -0
  50. package/src/timeline/timeline-item.scss +98 -0
  51. package/src/timeline/timeline-item.ts +63 -0
  52. package/src/timeline/timeline.scss +11 -0
  53. package/src/timeline/timeline.ts +41 -0
  54. package/dist/canvas.js +0 -385
  55. package/dist/canvas.js.map +0 -1
  56. package/dist/flow-designer-node-CGSm6cUH.js +0 -553
  57. package/dist/flow-designer-node-CGSm6cUH.js.map +0 -1
  58. package/dist/flow-designer-node.js +0 -4
  59. package/dist/flow-designer-node.js.map +0 -1
  60. package/dist/flow-designer.js +0 -1417
  61. package/dist/flow-designer.js.map +0 -1
  62. package/dist/src/canvas/canvas.d.ts +0 -92
  63. package/dist/src/canvas/index.d.ts +0 -2
  64. package/dist/src/flow-designer/commands.d.ts +0 -66
  65. package/dist/src/flow-designer/flow-designer-node.d.ts +0 -46
  66. package/dist/src/flow-designer/flow-designer.d.ts +0 -133
  67. package/dist/src/flow-designer/index.d.ts +0 -7
  68. package/dist/src/flow-designer/layout.d.ts +0 -30
  69. package/dist/src/flow-designer/types.d.ts +0 -142
  70. package/dist/src/flow-designer/validation.d.ts +0 -43
  71. package/dist/src/flow-designer/workflow-utils.d.ts +0 -40
  72. package/src/canvas/canvas.scss +0 -72
  73. package/src/canvas/canvas.ts +0 -413
  74. package/src/canvas/index.ts +0 -2
  75. package/src/flow-designer/DEMO.md +0 -239
  76. package/src/flow-designer/commands.ts +0 -278
  77. package/src/flow-designer/flow-designer-node.ts +0 -172
  78. package/src/flow-designer/flow-designer.scss +0 -457
  79. package/src/flow-designer/flow-designer.ts +0 -611
  80. package/src/flow-designer/index.ts +0 -41
  81. package/src/flow-designer/layout.ts +0 -357
  82. package/src/flow-designer/types.ts +0 -166
  83. package/src/flow-designer/validation.ts +0 -284
  84. package/src/flow-designer/workflow-utils.ts +0 -282
  85. /package/dist/test/{flow-designer.test.d.ts → elevation.test.d.ts} +0 -0
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@redvars/peacock",
3
3
  "description": "The foundation for beautiful user interfaces",
4
4
  "license": "Apache-2.0",
5
- "version": "3.8.6",
5
+ "version": "3.9.1",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.js",
@@ -32,9 +32,10 @@
32
32
  "analyze": "cem analyze --config \"./custom-elements-manifest.config.mjs\" && node bin/typedoc-gen.mjs",
33
33
  "start": "rollup -c && concurrently -k -r \"rollup -c -w\" \"web-dev-server\"",
34
34
  "start:for-docs": "rollup -c -w",
35
- "build": "npm run build:lit && npm run analyze -- --exclude dist && npm run build:scss",
35
+ "build": "npm run build:lit && npm run analyze -- --exclude dist && npm run build:scss && npm run publish:docs",
36
36
  "build:lit": "rollup -c",
37
37
  "build:scss": "node ./bin/scss-build.mjs",
38
+ "publish:docs": "node ./bin/docs-publish.mjs",
38
39
  "lint": "eslint --ext .ts,.html . --ignore-path .gitignore && prettier \"**/*.ts\" --check --ignore-path .gitignore",
39
40
  "format": "eslint --ext .ts,.html . --fix --ignore-path .gitignore && prettier \"**/*.ts\" --write --ignore-path .gitignore",
40
41
  "prepare": "husky",
package/readme.md CHANGED
@@ -44,9 +44,9 @@ Visit [https://peacock.redvars.com](https://peacock.redvars.com) to view the doc
44
44
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
45
45
  <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Mono:wght@100..900&family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
46
46
 
47
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@redvars/peacock@3.8.6/dist/assets/styles.css"></link>
47
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@redvars/peacock@3.9.1/dist/assets/styles.css"></link>
48
48
  <script type='module'
49
- src='https://cdn.jsdelivr.net/npm/@redvars/peacock@3.8.6/dist/loader.js'></script>
49
+ src='https://cdn.jsdelivr.net/npm/@redvars/peacock@3.9.1/dist/loader.js'></script>
50
50
  </head>
51
51
 
52
52
  <wc-button>Button</wc-button>
@@ -2,7 +2,6 @@
2
2
 
3
3
  @include mixin.base-styles;
4
4
 
5
-
6
5
  :host {
7
6
  display: block;
8
7
  height: 100%;
@@ -32,7 +31,7 @@
32
31
  align-items: center;
33
32
  justify-content: space-between;
34
33
  background-color: var(--code-highlighter-background);
35
- margin-bottom: var(--spacing-050);
34
+ border-bottom: 1px solid var(--color-outline-variant);
36
35
 
37
36
  @include mixin.get-typography(body-medium);
38
37
 
@@ -41,18 +40,15 @@
41
40
  }
42
41
  }
43
42
 
44
-
45
43
  .scroll-wrapper {
46
44
  flex: 1;
47
45
  overflow-y: auto;
48
46
  background-color: var(--code-highlighter-background);
49
47
 
50
-
51
48
  .highlighter {
52
49
  margin: 0;
53
50
  position: relative;
54
51
 
55
-
56
52
  .shiki {
57
53
  margin: 0;
58
54
  padding: var(--spacing-200);
@@ -69,8 +65,6 @@
69
65
  }
70
66
 
71
67
  &.line-numbers {
72
- margin-left: 3.75rem;
73
-
74
68
  .highlighter .shiki {
75
69
  /* Reset counter for line numbers */
76
70
  counter-reset: line-counter;
@@ -48,6 +48,58 @@
48
48
  Level 5
49
49
  </div>
50
50
 
51
+ <h2>Selective Shade Hiding (Level 3 shadow)</h2>
52
+ <div style="display: flex; gap: var(--spacing-400); flex-wrap: wrap; margin-block: var(--spacing-400);">
53
+ <div class="elevated-element">
54
+ <p-elevation style="--elevation-level: 3; --elevation-level-block-start: 0;"></p-elevation>
55
+ Hide Top
56
+ </div>
57
+
58
+ <div class="elevated-element">
59
+ <p-elevation style="--elevation-level: 3; --elevation-level-block-end: 0;"></p-elevation>
60
+ Hide Bottom
61
+ </div>
62
+
63
+ <div class="elevated-element">
64
+ <p-elevation style="--elevation-level: 3; --elevation-level-inline-start: 0;"></p-elevation>
65
+ Hide Start (Left)
66
+ </div>
67
+
68
+ <div class="elevated-element">
69
+ <p-elevation style="--elevation-level: 3; --elevation-level-inline-end: 0;"></p-elevation>
70
+ Hide End (Right)
71
+ </div>
72
+ </div>
73
+
74
+ <h3>RTL Direction (Hide Start should be Right, Hide End should be Left)</h3>
75
+ <div dir="rtl" style="display: flex; gap: var(--spacing-400); flex-wrap: wrap; margin-block: var(--spacing-400);">
76
+ <div class="elevated-element">
77
+ <p-elevation style="--elevation-level: 3; --elevation-level-inline-start: 0;"></p-elevation>
78
+ Hide Start (Right in RTL)
79
+ </div>
80
+
81
+ <div class="elevated-element">
82
+ <p-elevation style="--elevation-level: 3; --elevation-level-inline-end: 0;"></p-elevation>
83
+ Hide End (Left in RTL)
84
+ </div>
85
+ </div>
86
+
87
+ <h2>Multi-level Selective Shading (Different levels per side)</h2>
88
+ <div style="display: flex; gap: var(--spacing-400); flex-wrap: wrap; margin-block: var(--spacing-400);">
89
+ <div class="elevated-element">
90
+ <p-elevation style="--elevation-level-block-start: 4; --elevation-level-block-end: 1; --elevation-level-inline-start: 2; --elevation-level-inline-end: 5;"></p-elevation>
91
+ Top 4, Bottom 1, Left 2, Right 5
92
+ </div>
93
+
94
+ <div class="elevated-element">
95
+ <p-elevation style="--elevation-level-block-start: 5;"></p-elevation>
96
+ Top 5, others unset (0)
97
+ </div>
98
+ </div>
99
+
100
+
101
+
102
+
51
103
 
52
104
 
53
105
  <script type='module'>
@@ -30,6 +30,57 @@
30
30
  transition-property: box-shadow, opacity;
31
31
  --elevation-level: 0;
32
32
  --elevation-color: var(--elevation-color-default, black);
33
+
34
+ /* Fallback values for side-specific levels, falling back to --elevation-level */
35
+ --_level-top: var(--elevation-level-block-start, var(--elevation-level, 0));
36
+ --_level-bottom: var(--elevation-level-block-end, var(--elevation-level, 0));
37
+ --_level-left: var(--elevation-level-inline-start, var(--elevation-level, 0));
38
+ --_level-right: var(--elevation-level-inline-end, var(--elevation-level, 0));
39
+ }
40
+
41
+ :host-context([dir="rtl"]) {
42
+ --_level-left: var(--elevation-level-inline-end, var(--elevation-level, 0));
43
+ --_level-right: var(--elevation-level-inline-start, var(--elevation-level, 0));
44
+ }
45
+
46
+ :host([dir="rtl"]) {
47
+ --_level-left: var(--elevation-level-inline-end, var(--elevation-level, 0));
48
+ --_level-right: var(--elevation-level-inline-start, var(--elevation-level, 0));
49
+ }
50
+
51
+ .shadow {
52
+ /* Set the default private level property */
53
+ --_level: var(--elevation-level, 0);
54
+ }
55
+
56
+ .shadow.block-start {
57
+ --_level: var(--_level-top);
58
+ clip-path: polygon(50% 50%, -950% -950%, 1050% -950%);
59
+ }
60
+
61
+ .shadow.block-end {
62
+ --_level: var(--_level-bottom);
63
+ clip-path: polygon(50% 50%, 1050% 1050%, -950% 1050%);
64
+ }
65
+
66
+ .shadow.inline-start {
67
+ --_level: var(--_level-left);
68
+ clip-path: polygon(50% 50%, -950% 1050%, -950% -950%);
69
+ }
70
+
71
+ .shadow.inline-end {
72
+ --_level: var(--_level-right);
73
+ clip-path: polygon(50% 50%, 1050% -950%, 1050% 1050%);
74
+ }
75
+
76
+ :host-context([dir="rtl"]),
77
+ :host([dir="rtl"]) {
78
+ .shadow.inline-start {
79
+ clip-path: polygon(50% 50%, 1050% -950%, 1050% 1050%);
80
+ }
81
+ .shadow.inline-end {
82
+ clip-path: polygon(50% 50%, -950% 1050%, -950% -950%);
83
+ }
33
84
  }
34
85
 
35
86
  .shadow::before,
@@ -37,11 +88,7 @@
37
88
  content: '';
38
89
  transition-property: box-shadow, opacity;
39
90
 
40
- // Elevation doesn't share styles with multiple variants, so we normally
41
- // would not use private custom properties. However, these variables are
42
- // repeated several times in the styles below, and a shorter custom property
43
- // reduces the CSS size, minified and gzip.
44
- --_level: var(--elevation-level);
91
+ // --_level is inherited from .shadow
45
92
  --_shadow-color: var(--elevation-color);
46
93
  }
47
94
 
@@ -29,6 +29,13 @@ export class Elevation extends LitElement {
29
29
  static styles = [styles];
30
30
 
31
31
  render() {
32
- return html`<span class="shadow"></span>`;
32
+ return html`
33
+ <span class="shadow block-start"></span>
34
+ <span class="shadow block-end"></span>
35
+ <span class="shadow inline-start"></span>
36
+ <span class="shadow inline-end"></span>
37
+ `;
33
38
  }
34
39
  }
40
+
41
+
@@ -0,0 +1,195 @@
1
+ @use '../../scss/mixin';
2
+
3
+ @include mixin.base-styles;
4
+
5
+ :host {
6
+ display: block;
7
+ width: 100%;
8
+ height: 100%;
9
+ overflow: hidden;
10
+ --flow-background: var(--color-surface-container-lowest, #f4f5f8);
11
+ --flow-dot-color: var(--color-outline-variant, #e1e3e8);
12
+ --flow-line-color: var(--color-outline, #75777c);
13
+ --flow-hover-color: var(--color-primary, #005FAF);
14
+ --flow-node-bg: var(--color-surface-container-low, #f8f9fc);
15
+ --flow-node-border: var(--color-outline-variant, #c5c6cb);
16
+ --flow-node-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.05);
17
+ --flow-node-active-shadow: 0 8px 24px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.08);
18
+ }
19
+
20
+ .flow-container {
21
+ position: relative;
22
+ width: 100%;
23
+ height: 100%;
24
+ background: var(--flow-background);
25
+ border: 1px solid var(--color-outline-variant);
26
+ border-radius: 16px;
27
+ overflow: auto;
28
+ }
29
+
30
+ .flow-workspace {
31
+ position: relative;
32
+ }
33
+
34
+ .flow-svg {
35
+ position: absolute;
36
+ inset: 0;
37
+ width: 100%;
38
+ height: 100%;
39
+ pointer-events: auto;
40
+ }
41
+
42
+ #dot-grid circle {
43
+ fill: var(--flow-dot-color);
44
+ }
45
+
46
+ // --- Edges ---
47
+ .flow-edge {
48
+ transition: stroke 150ms ease, stroke-width 150ms ease;
49
+ pointer-events: stroke;
50
+ cursor: pointer;
51
+
52
+ &:hover {
53
+ stroke: var(--flow-hover-color);
54
+ stroke-width: 3;
55
+ }
56
+
57
+ &.variant-dashed {
58
+ stroke-dasharray: 5 5;
59
+ }
60
+
61
+ &.variant-animated-dashed {
62
+ stroke-dasharray: 5 5;
63
+ animation: flow-dash-flow 1s linear infinite;
64
+ }
65
+ }
66
+
67
+ .flow-edge-preview {
68
+ stroke-dasharray: 5 5;
69
+ animation: flow-dash-flow 1s linear infinite;
70
+ pointer-events: none;
71
+ }
72
+
73
+ // --- Nodes ---
74
+ .flow-nodes {
75
+ pointer-events: none;
76
+
77
+ > * {
78
+ pointer-events: auto;
79
+ }
80
+ }
81
+
82
+ .flow-node {
83
+ display: inline-flex;
84
+ align-items: center;
85
+ justify-content: center;
86
+ background: var(--flow-node-bg);
87
+ border: 1px solid var(--flow-node-border);
88
+ box-shadow: var(--flow-node-shadow);
89
+ border-radius: 12px;
90
+ min-width: 150px;
91
+ min-height: 70px;
92
+ cursor: grab;
93
+ user-select: none;
94
+ z-index: 5;
95
+ transition: box-shadow 150ms ease, border-color 150ms ease, transform 150ms ease;
96
+
97
+ &:active {
98
+ cursor: grabbing;
99
+ box-shadow: var(--flow-node-active-shadow);
100
+ border-color: var(--flow-hover-color);
101
+ transform: translateY(-1px);
102
+ }
103
+ }
104
+
105
+ .flow-node-content {
106
+ width: 100%;
107
+ height: 100%;
108
+ padding: 12px 16px;
109
+ }
110
+
111
+ // --- Default Node Card Design ---
112
+ .flow-node-default-card {
113
+ display: flex;
114
+ flex-direction: column;
115
+ justify-content: center;
116
+ align-items: center;
117
+ text-align: center;
118
+ width: 100%;
119
+ height: 100%;
120
+ }
121
+
122
+ .flow-node-title {
123
+ font-family: inherit;
124
+ font-size: 14px;
125
+ font-weight: 500;
126
+ color: var(--color-on-surface);
127
+ }
128
+
129
+ // --- Sockets / Handles ---
130
+ .handle {
131
+ position: absolute;
132
+ width: 12px;
133
+ height: 12px;
134
+ border-radius: 50%;
135
+ background: var(--color-surface, #ffffff);
136
+ border: 2px solid var(--color-outline, #75777c);
137
+ z-index: 10;
138
+ cursor: crosshair;
139
+ transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1),
140
+ background-color 150ms ease,
141
+ border-color 150ms ease,
142
+ box-shadow 150ms ease;
143
+
144
+ &:hover {
145
+ transform: scale(1.4);
146
+ background-color: var(--flow-hover-color);
147
+ border-color: var(--flow-hover-color);
148
+ box-shadow: 0 0 8px rgba(0, 95, 175, 0.5);
149
+ }
150
+
151
+ &:active {
152
+ transform: scale(1.2);
153
+ background-color: var(--flow-hover-color);
154
+ border-color: var(--flow-hover-color);
155
+ }
156
+ }
157
+
158
+ .handle-position-left {
159
+ left: -7px;
160
+ top: calc(50% - 6px);
161
+ }
162
+
163
+ .handle-position-right {
164
+ right: -7px;
165
+ top: calc(50% - 6px);
166
+ }
167
+
168
+ .handle-position-top {
169
+ top: -7px;
170
+ left: calc(50% - 6px);
171
+ }
172
+
173
+ .handle-position-bottom {
174
+ bottom: -7px;
175
+ left: calc(50% - 6px);
176
+ }
177
+
178
+ // --- Animations ---
179
+ @keyframes flow-dash-flow {
180
+ to {
181
+ stroke-dashoffset: -20;
182
+ }
183
+ }
184
+
185
+ .flow-node-custom {
186
+ background: transparent !important;
187
+ border-color: transparent !important;
188
+ box-shadow: none !important;
189
+ min-width: 0 !important;
190
+ min-height: 0 !important;
191
+
192
+ .flow-node-content {
193
+ padding: 0 !important;
194
+ }
195
+ }