@silexlabs/silex 3.5.1-7 → 3.5.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,19 +6,60 @@
6
6
  }
7
7
 
8
8
 
9
+ // GrapesJS color utility classes - using CSS custom properties
9
10
  .#{$prefix} {
10
- @each $cnum, $ccol in (one, $primaryColor), (two, $secondaryColor), (three, $tertiaryColor), (four, $quaternaryColor) {
11
- &#{$cnum} {
12
- &-bg {
13
- background-color: $ccol;
11
+ &one {
12
+ &-bg {
13
+ background-color: var(--gjs-primary-color);
14
+ }
15
+
16
+ &-color {
17
+ color: var(--gjs-primary-color);
18
+
19
+ &-h:hover {
20
+ color: var(--gjs-primary-color);
14
21
  }
22
+ }
23
+ }
24
+
25
+ &two {
26
+ &-bg {
27
+ background-color: var(--gjs-secondary-color);
28
+ }
15
29
 
16
- &-color {
17
- color: $ccol;
30
+ &-color {
31
+ color: var(--gjs-secondary-color);
18
32
 
19
- &-h:hover {
20
- color: $ccol;
21
- }
33
+ &-h:hover {
34
+ color: var(--gjs-secondary-color);
35
+ }
36
+ }
37
+ }
38
+
39
+ &three {
40
+ &-bg {
41
+ background-color: var(--gjs-tertiary-color);
42
+ }
43
+
44
+ &-color {
45
+ color: var(--gjs-tertiary-color);
46
+
47
+ &-h:hover {
48
+ color: var(--gjs-tertiary-color);
49
+ }
50
+ }
51
+ }
52
+
53
+ &four {
54
+ &-bg {
55
+ background-color: var(--gjs-quaternary-color);
56
+ }
57
+
58
+ &-color {
59
+ color: var(--gjs-quaternary-color);
60
+
61
+ &-h:hover {
62
+ color: var(--gjs-quaternary-color);
22
63
  }
23
64
  }
24
65
  }
@@ -54,10 +95,11 @@
54
95
 
55
96
  // Dialogs
56
97
  .gjs-mdl-header {
57
- background-color: $primaryColor;
58
- color: $secondaryColor;
98
+ background-color: var(--silex-bg-main);
99
+ color: var(--silex-text-primary);
59
100
  padding: 20px;
60
- border-bottom: 1px solid $lighterPrimaryColor;
101
+ border-bottom: 1px solid var(--silex-border-color-strong);
102
+
61
103
  .gjs-mdl-btn-close {
62
104
  top: 15px;
63
105
  }
@@ -65,16 +107,22 @@
65
107
 
66
108
  // Inside the canvas
67
109
  .gjs-toolbar {
68
- background-color: $tertiaryColor;
110
+ background-color: var(--silex-accent-primary);
69
111
  }
112
+
70
113
  .gjs-resizer-h {
71
- border-color: $tertiaryColor;
114
+ border-color: var(--silex-accent-primary);
72
115
  }
73
- .gjs-com-badge, .gjs-com-badge-red, .gjs-badge {
74
- background-color: $tertiaryColor;
116
+
117
+ .gjs-com-badge,
118
+ .gjs-com-badge-red,
119
+ .gjs-badge {
120
+ background-color: var(--silex-accent-primary);
75
121
  }
76
- .gjs-cv-canvas .gjs-highlighter, .gjs-cv-canvas .gjs-highlighter-sel {
77
- outline: 1px solid $tertiaryColor;
122
+
123
+ .gjs-cv-canvas .gjs-highlighter,
124
+ .gjs-cv-canvas .gjs-highlighter-sel {
125
+ outline: 1px solid var(--silex-accent-primary);
78
126
  }
79
127
 
80
128
  .gjs-cv-canvas {
@@ -102,9 +150,9 @@
102
150
  .top-style-section {
103
151
  position: sticky;
104
152
  top: -1px; /* Fixes a visual gap on the top */
105
- border-bottom: solid $lighterPrimaryColor 1px;
106
- background-color: $primaryColor;
107
- box-shadow: 0 0 15px 0 #00000060;
153
+ border-bottom: solid var(--silex-border-color-strong) 1px;
154
+ background-color: var(--silex-bg-main);
155
+ box-shadow: var(--silex-shadow-lg);
108
156
  z-index: 999;
109
157
  }
110
158
  .gjs-clm-label-sel {
@@ -2,9 +2,12 @@
2
2
  @use "normalize.css/normalize";
3
3
 
4
4
  @use "_variables";
5
- //@use "light";
6
5
  @use "grapesjs/src/styles/scss/main";
7
6
 
7
+ /* Theme system */
8
+ @use "theme-base";
9
+ @use "theme-modern";
10
+
8
11
  /* Silex styles imports */
9
12
  @use "silex";
10
13
  @use "loader";
@@ -15,6 +18,8 @@
15
18
  @use "page-panel";
16
19
  @use "website-info";
17
20
  @use "grapesjs";
21
+ @use "panels";
22
+ @use "dialogs";
18
23
 
19
24
  //@use "grapesjs-light";
20
25
 
@@ -30,4 +35,3 @@
30
35
  background-position: center;
31
36
  background-repeat: no-repeat;
32
37
  }
33
-
@@ -5,46 +5,57 @@
5
5
  display: contents !important;
6
6
  height: fit-content;
7
7
  }
8
+
8
9
  .pages {
9
10
  display: flex;
10
11
  flex-direction: column;
11
12
  margin-bottom: 30px;
13
+
12
14
  .pages__main {
13
- flex: 1; // take the available space in height
14
- background-color: $primaryColor;
15
+ flex: 1;
16
+ background-color: var(--silex-bg-main);
15
17
  min-height: 20vh;
16
18
  }
19
+
17
20
  .pages__page {
18
21
  display: flex;
19
22
  align-items: center;
20
- background-color: $darkerPrimaryColor;
21
- border-bottom: 1px solid rgba(0, 0, 0, 0.25);
23
+ background-color: var(--silex-bg-darker);
24
+ border-bottom: 1px solid var(--silex-border-color);
22
25
  cursor: cursor;
23
26
  transition: opacity 0.2s ease, background-color 0.2s ease;
27
+
24
28
  &:hover {
25
- background-color: $primaryColor;
29
+ background-color: var(--silex-hover-bg);
30
+
26
31
  .pages__page-name {
27
- color: $quaternaryColor;
32
+ color: var(--silex-accent-secondary);
28
33
  }
29
34
  }
35
+
30
36
  &:active {
31
37
  cursor: grabbing;
32
38
  }
33
39
  }
40
+
34
41
  .pages__page-dragging {
35
42
  opacity: 0.4;
36
43
  cursor: grabbing !important;
37
44
  }
45
+
38
46
  .pages__page-selected {
39
- background-color: $lighterPrimaryColor;
47
+ background-color: var(--silex-active-bg);
40
48
  cursor: default;
49
+
41
50
  .pages__page-name {
42
- color: $quaternaryColor;
51
+ color: var(--silex-accent-secondary);
43
52
  }
44
53
  }
54
+
45
55
  .pages__main.pages__single-page .pages__remove-btn {
46
56
  visibility: hidden;
47
57
  }
58
+
48
59
  .pages__page-name {
49
60
  white-space: nowrap;
50
61
  overflow: hidden;
@@ -58,28 +69,29 @@
58
69
  align-items: center;
59
70
  gap: 4px;
60
71
  }
72
+
61
73
  .pages__icon {
62
74
  padding: 6px;
63
75
  cursor: pointer;
64
76
  font-size: 12px;
77
+
78
+ &:hover {
79
+ color: var(--silex-accent-secondary);
80
+ }
65
81
  }
66
- .pages__icon:hover {
67
- color: $quaternaryColor;
68
- }
82
+
69
83
  .pages__drag-handle {
70
84
  cursor: grab;
71
85
  opacity: 0.6;
72
86
  flex-shrink: 0;
87
+
73
88
  &:hover {
74
89
  opacity: 1;
75
90
  }
76
91
  }
77
92
  }
93
+
78
94
  .#{$pn-prefix}buttons {
79
95
  flex-direction: column;
80
- .#{$pn-prefix}btn {
81
- }
82
- .#{$pn-prefix}btn:first-child {
83
- }
84
96
  }
85
97
  }
@@ -0,0 +1,261 @@
1
+ /**
2
+ * PANELS.SCSS
3
+ * Unified styling for all left-side panels (Blocks, Pages, Symbols, Layers)
4
+ * Ensures consistent look and behavior across all project panels
5
+ */
6
+
7
+ @use "variables" as *;
8
+
9
+ // ============================================================
10
+ // UNIFIED PANEL STRUCTURE
11
+ // ============================================================
12
+
13
+ // All project panels share the same base styling
14
+ .#{$pn-prefix}project-bar-container {
15
+ .project-bar__panel {
16
+ // Consistent header styling
17
+ .project-bar__panel-header {
18
+ background-color: var(--silex-bg-lighter);
19
+ border-bottom: 1px solid var(--silex-border-color-strong);
20
+ min-height: 50px;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: space-between;
24
+ padding: 12px 16px;
25
+
26
+ .project-bar__panel-header-title {
27
+ font-size: 14px;
28
+ font-weight: 600;
29
+ color: var(--silex-text-primary);
30
+ letter-spacing: 0.02em;
31
+ }
32
+
33
+ .project-bar__panel-header-button {
34
+ opacity: 0.7;
35
+ transition: opacity var(--silex-transition-fast);
36
+
37
+ &:hover {
38
+ opacity: 1;
39
+ color: var(--silex-accent-primary);
40
+ }
41
+ }
42
+ }
43
+
44
+ // Consistent body styling
45
+ & > main,
46
+ & > .gjs-blocks-c,
47
+ & > *:not(header) {
48
+ background-color: var(--silex-bg-main);
49
+ padding: 8px;
50
+ }
51
+ }
52
+ }
53
+
54
+ // ============================================================
55
+ // BLOCKS PANEL SPECIFIC
56
+ // ============================================================
57
+
58
+ .gjs-blocks-c {
59
+ // Block categories
60
+ .gjs-block-category {
61
+ margin-bottom: 8px;
62
+
63
+ .gjs-title {
64
+ padding: 8px 12px;
65
+ background-color: var(--silex-bg-lighter);
66
+ border: 1px solid var(--silex-border-color);
67
+ border-radius: 6px;
68
+ font-size: 12px;
69
+ font-weight: 600;
70
+ text-transform: uppercase;
71
+ letter-spacing: 0.05em;
72
+ color: var(--silex-text-secondary);
73
+ cursor: pointer;
74
+ transition: all var(--silex-transition-fast);
75
+
76
+ &:hover {
77
+ background-color: var(--silex-hover-bg);
78
+ color: var(--silex-text-primary);
79
+ border-color: var(--silex-accent-primary);
80
+ }
81
+ }
82
+
83
+ .gjs-blocks-c {
84
+ padding: 8px 0;
85
+ }
86
+ }
87
+
88
+ // Individual blocks
89
+ .gjs-block {
90
+ margin: 6px;
91
+ padding: 12px;
92
+ background-color: var(--silex-bg-lighter);
93
+ border: 1px solid var(--silex-border-color);
94
+ border-radius: 6px;
95
+ transition: all var(--silex-transition-fast);
96
+
97
+ &:hover {
98
+ background-color: var(--silex-hover-bg);
99
+ border-color: var(--silex-accent-primary);
100
+ transform: translateY(-2px);
101
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
102
+ }
103
+
104
+ .gjs-block-label {
105
+ font-size: 11px;
106
+ color: var(--silex-text-secondary);
107
+ margin-top: 8px;
108
+ }
109
+
110
+ /* symbols */
111
+ &.symbols__symbol-selected {
112
+ border-color: var(--silex-accent-primary);
113
+ }
114
+ }
115
+ }
116
+
117
+ // ============================================================
118
+ // PAGES PANEL SPECIFIC
119
+ // ============================================================
120
+
121
+ .page-panel-container {
122
+ .pages {
123
+ .pages__main {
124
+ padding: 4px;
125
+ }
126
+
127
+ .pages__page {
128
+ margin: 2px 0;
129
+ padding: 10px 12px;
130
+ border-radius: 4px;
131
+ background-color: var(--silex-bg-darker);
132
+ border: 1px solid transparent;
133
+
134
+ &:hover {
135
+ background-color: var(--silex-hover-bg);
136
+ border-color: var(--silex-border-color);
137
+ }
138
+
139
+ &.pages__page-selected {
140
+ background-color: var(--silex-active-bg);
141
+ border-color: var(--silex-accent-primary);
142
+ border-left-width: 3px;
143
+ }
144
+ }
145
+
146
+ .pages__page-name {
147
+ font-size: 13px;
148
+ color: var(--silex-text-primary);
149
+ }
150
+
151
+ .pages__icon {
152
+ opacity: 0.6;
153
+ transition: opacity var(--silex-transition-fast);
154
+
155
+ &:hover {
156
+ opacity: 1;
157
+ color: var(--silex-accent-primary);
158
+ }
159
+ }
160
+ }
161
+
162
+ // Collection pages section
163
+ .pages__collection-section {
164
+ margin-top: 16px;
165
+ padding-top: 16px;
166
+ border-top: 1px solid var(--silex-border-color-strong);
167
+
168
+ h3 {
169
+ font-size: 12px;
170
+ font-weight: 600;
171
+ text-transform: uppercase;
172
+ letter-spacing: 0.05em;
173
+ color: var(--silex-text-secondary);
174
+ margin-bottom: 8px;
175
+ }
176
+ }
177
+ }
178
+
179
+ // ============================================================
180
+ // LAYERS PANEL SPECIFIC
181
+ // ============================================================
182
+
183
+ .gjs-layer-wrapper {
184
+ .gjs-layer {
185
+ padding: 6px 8px;
186
+ margin: 1px 0;
187
+ border-radius: 3px;
188
+ transition: background-color var(--silex-transition-fast);
189
+
190
+ &:hover {
191
+ background-color: var(--silex-hover-bg);
192
+ }
193
+
194
+ &.gjs-selected {
195
+ background-color: var(--silex-active-bg);
196
+ border-left: 3px solid var(--silex-accent-primary);
197
+ }
198
+
199
+ .gjs-layer-title {
200
+ font-size: 12px;
201
+ color: var(--silex-text-primary);
202
+ }
203
+
204
+ .gjs-layer-count {
205
+ font-size: 10px;
206
+ color: var(--silex-text-secondary);
207
+ }
208
+ }
209
+ }
210
+
211
+ // ============================================================
212
+ // SYMBOLS PANEL (if exists) - Same treatment
213
+ // ============================================================
214
+
215
+ .symbols-panel {
216
+ .symbol-item {
217
+ padding: 10px 12px;
218
+ margin: 4px 0;
219
+ background-color: var(--silex-bg-lighter);
220
+ border: 1px solid var(--silex-border-color);
221
+ border-radius: 4px;
222
+ transition: all var(--silex-transition-fast);
223
+
224
+ &:hover {
225
+ background-color: var(--silex-hover-bg);
226
+ border-color: var(--silex-accent-primary);
227
+ }
228
+
229
+ &.selected {
230
+ background-color: var(--silex-active-bg);
231
+ border-color: var(--silex-accent-primary);
232
+ border-left-width: 3px;
233
+ }
234
+ }
235
+ }
236
+
237
+ // ============================================================
238
+ // CONSISTENT SCROLLBARS FOR ALL PANELS
239
+ // ============================================================
240
+
241
+ .#{$pn-prefix}project-bar-container {
242
+ .project-bar__panel {
243
+ ::-webkit-scrollbar {
244
+ width: 8px;
245
+ height: 8px;
246
+ }
247
+
248
+ ::-webkit-scrollbar-track {
249
+ background: var(--silex-bg-main);
250
+ }
251
+
252
+ ::-webkit-scrollbar-thumb {
253
+ background: var(--silex-border-color-strong);
254
+ border-radius: 4px;
255
+
256
+ &:hover {
257
+ background: var(--silex-accent-secondary);
258
+ }
259
+ }
260
+ }
261
+ }
@@ -1,42 +1,43 @@
1
1
  @use "variables" as *;
2
2
 
3
- // squeeze the stage iframe when panel is open
4
- //.silex-squeeze-left .gjs-frame-wrapper {
5
- // margin-left: 18%;
6
- // width: auto;
7
- //}
3
+ // Squeeze the stage iframe when panel is open
8
4
  .silex-squeeze-left .gjs-cv-canvas {
9
5
  left: calc(var(--viewsProjectPanelWidth) + 35px);
10
6
  width: auto;
11
7
  right: var(--viewsPanelWidth);
12
8
  }
13
9
 
14
-
15
- // button bar
10
+ // Button bar
16
11
  .#{$pn-prefix}project-bar-panel {
17
12
  width: $projectBarWidth;
18
13
  padding: 0;
14
+
19
15
  .#{$pn-prefix}buttons {
20
16
  flex-direction: column;
21
17
  min-height: 100vh;
22
18
  justify-content: flex-start;
19
+
23
20
  .project-bar-spacer {
24
21
  flex: 1;
25
22
  }
23
+
26
24
  .#{$pn-prefix}btn {
27
25
  margin: 5px 0 5px 0px;
28
26
  padding: 5px;
27
+
29
28
  &.#{$pn-prefix}active {
30
- background-color: $lighterPrimaryColor;
29
+ background-color: var(--silex-active-bg);
31
30
  width: $projectBarWidth;
32
31
  box-shadow: none;
33
32
  }
34
33
  }
34
+
35
35
  .#{$pn-prefix}btn.project-bar__dirty {
36
- background-color: $quaternaryColor;
37
- color: white;
36
+ background-color: var(--silex-accent-secondary);
37
+ color: var(--silex-text-inverse);
38
38
  }
39
39
  }
40
+
40
41
  .logo {
41
42
  background-image: url('../assets/logo-silex-small.png');
42
43
  background-repeat: no-repeat;
@@ -47,71 +48,82 @@
47
48
  }
48
49
 
49
50
  // Resize options project panel button
50
- .viewsOptionsProjectPanel__size-btn::before {
51
- content: '→';
52
- }
53
51
  .viewsOptionsProjectPanel__size-btn {
54
52
  z-index: $z-views-options-buttons;
55
53
  right: auto;
56
54
  left: 0;
55
+
56
+ &::before {
57
+ content: '→';
58
+ }
57
59
  }
58
- // For fixed block size after project panel resizing (instead of default value 45%)
60
+
61
+ // Fixed block size after project panel resizing
59
62
  .gjs-block {
60
63
  width: 84px;
61
64
  }
62
65
 
63
- // panels
66
+ // Panels
64
67
  .#{$pn-prefix}project-bar-container {
65
68
  top: $topBarHeight;
66
69
  width: $projectPanelWidth;
67
70
  min-width: $projectPanelMinWidth;
68
71
  height: calc(100% - $topBarHeight - $footerHeight);
69
- background-color: $lighterPrimaryColor;
72
+ background-color: var(--silex-bg-lighter);
73
+
70
74
  &:not(.gjs-hidden) {
71
- display: flex; // let the child take the whole height
75
+ display: flex;
72
76
  flex-direction: column;
73
77
  }
78
+
74
79
  .project-bar__panel:not(.gjs-hidden) {
75
80
  flex: 1;
76
- display: flex; // let the child take the whole height
81
+ display: flex;
77
82
  flex-direction: column;
78
- background-color: $primaryColor;
83
+ background-color: var(--silex-bg-main);
79
84
  overflow: auto;
85
+
80
86
  .gjs-layer {
81
- background-color: $primaryColor;
87
+ background-color: var(--silex-bg-main);
82
88
  }
83
89
  }
90
+
84
91
  .project-bar__panel > *:not(header) {
85
92
  flex: 1;
86
93
  display: initial;
87
- }
88
- .project-bar__panel-header {
89
- display: flex;
90
- justify-content: center;
91
- align-items: center;
92
- padding: 5px;
93
- border-bottom: 1px solid $lighterPrimaryColor;
94
- .project-bar__panel-header-title {
95
- flex: 1 1 auto;
96
- overflow-x: hidden;
97
- text-overflow: ellipsis;
98
- white-space: nowrap;
99
- padding: 3px 0;
100
- margin: 0;
101
- font-size: large;
102
- font-weight: 600;
103
- }
104
- .project-bar__panel-header-button {
105
- cursor: pointer;
106
- span {
107
- background-color: #444;
108
- border-radius: 100%;
109
- display: inline-block;
110
- line-height: 13px;
111
- }
94
+ }
95
+
96
+ .project-bar__panel-header {
97
+ display: flex;
98
+ justify-content: center;
99
+ align-items: center;
100
+ padding: 5px;
101
+ border-bottom: 1px solid var(--silex-border-color-strong);
102
+
103
+ .project-bar__panel-header-title {
104
+ flex: 1 1 auto;
105
+ overflow-x: hidden;
106
+ text-overflow: ellipsis;
107
+ white-space: nowrap;
108
+ padding: 3px 0;
109
+ margin: 0;
110
+ font-size: large;
111
+ font-weight: 600;
112
+ }
113
+
114
+ .project-bar__panel-header-button {
115
+ cursor: pointer;
116
+
117
+ span {
118
+ background-color: var(--silex-bg-darker);
119
+ border-radius: 100%;
120
+ display: inline-block;
121
+ line-height: 13px;
112
122
  }
113
- .project-bar__panel-header-button:hover {
114
- color: $quaternaryColor;
123
+
124
+ &:hover {
125
+ color: var(--silex-accent-secondary);
115
126
  }
116
127
  }
117
128
  }
129
+ }