@inchurch/matcha-theme 20.0.8 → 20.0.11

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.
@@ -1,151 +1,105 @@
1
- @use "sass:map";
2
-
3
- // =============================================================================
4
- // matcha-text-editor.scss — Rich text editor wrapper (Tiptap)
5
- // Aligned with Figma matcha/text-editor:
6
- // Toolbar (icon-buttons) + Editor area (Tiptap content) + Footer (word count)
7
- // Angular: matcha-text-editor
8
- // =============================================================================
9
-
10
1
  @mixin matcha-text-editor-theme($theme) {
11
- $is-dark: map.get($theme, is-dark);
12
-
13
- .matcha-text-editor {
14
- background: var(--matcha-color-surface, #{getSurface($theme)});
15
- border-color: var(--matcha-color-border, #{getGrey($theme)});
16
-
17
- &:focus-within {
18
- border-color: var(--matcha-color-accent, #{getAccent($theme)});
19
- }
20
- }
21
-
22
- .matcha-text-editor__placeholder {
23
- color: var(--matcha-color-text-placeholder, #{getBlueGrey($theme)});
24
- }
25
-
26
- .matcha-text-editor__content {
27
- color: var(--matcha-color-fg, #{getForeground($theme)});
28
- }
29
-
30
- .matcha-text-editor__word-count {
31
- color: var(--matcha-color-text-hint, #{getBlueGrey($theme)});
32
- }
33
-
34
- .matcha-text-editor__toolbar-btn--active {
35
- background: var(--matcha-color-accent-alpha, #{getAccentAlpha($theme)});
36
- color: var(--matcha-color-accent, #{getAccent($theme)});
37
- }
38
-
39
- // ── ProseMirror color overrides (need $theme) ──
40
- .matcha-text-editor__content .ProseMirror {
41
- a {
42
- color: var(--matcha-color-accent, #{getAccent($theme)});
43
- }
44
-
45
- blockquote {
46
- border-left-color: var(--matcha-color-accent, #{getAccent($theme)});
2
+ matcha-text-editor .sun-editor,
3
+ matcha-text-editor .sun-editor-editable {
4
+ // ── Backgrounds ──────────────────────────────────────────────────────
5
+ --se-main-background-color: #{getBackground($theme)};
6
+ --se-edit-background-color: #{getSurface($theme)};
7
+ --se-edit-background-pre: #{getBackground($theme)};
8
+ --se-modal-background-color: #{getSurface($theme)};
9
+ --se-controller-background-color: #{getSurface($theme)};
10
+ --se-code-view-background-color: #{getBackground($theme)};
11
+ --se-code-view-line-background-color: #{getSurface($theme)};
12
+ --se-markdown-view-background-color: #{getBackground($theme)};
13
+ --se-markdown-view-line-background-color:#{getSurface($theme)};
14
+ --se-table-picker-color: #{getSurface($theme)};
15
+ --se-doc-background: #{getBackground($theme)};
16
+
17
+ // ── Text / foreground ─────────────────────────────────────────────
18
+ --se-main-color: #{getForeground($theme)};
19
+ --se-main-font-color: #{getForeground($theme)};
20
+ --se-main-color-lighter: #{getForegroundAlpha($theme)};
21
+ --se-edit-font-color: #{getForeground($theme)};
22
+ --se-edit-font-pre: #{getForegroundAlpha($theme)};
23
+ --se-edit-font-quote: #{getForegroundAlpha($theme)};
24
+ --se-modal-color: #{getForeground($theme)};
25
+ --se-controller-color: #{getForeground($theme)};
26
+ --se-dropdown-font-color: #{getForeground($theme)};
27
+ --se-statusbar-font-color: #{getForegroundAlpha($theme)};
28
+ --se-code-view-color: #{getForeground($theme)};
29
+ --se-code-view-line-color: #{getForegroundAlpha($theme)};
30
+ --se-markdown-view-color: #{getForeground($theme)};
31
+ --se-markdown-view-line-color:#{getForegroundAlpha($theme)};
32
+ --se-caret-color: #{getForeground($theme)};
33
+ --se-placeholder-color: #{getDisabled($theme)};
34
+
35
+ // ── Borders / dividers ────────────────────────────────────────────
36
+ --se-main-border-color: #{getDisabled($theme)};
37
+ --se-main-divider-color: #{getDisabled($theme)};
38
+ --se-main-outline-color: #{getDisabled($theme)};
39
+ --se-main-out-color: #{getDisabled($theme)};
40
+ --se-main-shadow-color: #{getDisabled($theme)};
41
+ --se-modal-border-color: #{getDisabled($theme)};
42
+ --se-controller-border-color: #{getDisabled($theme)};
43
+ --se-input-btn-border-color: #{getDisabled($theme)};
44
+ --se-edit-border-light: #{getDisabled($theme)};
45
+ --se-edit-border-dark: #{getDisabled($theme)};
46
+ --se-edit-border-dark-n1: #{getDisabled($theme)};
47
+ --se-edit-border-dark-n2: #{getDisabled($theme)};
48
+ --se-edit-border-table: #{getDisabled($theme)};
49
+ --se-edit-hr-color: #{getDisabled($theme)};
50
+ --se-table-picker-border-color: #{getDisabled($theme)};
51
+
52
+ // ── Active / accent ───────────────────────────────────────────────
53
+ --se-active-color: #{getAccent($theme)};
54
+ --se-active-hover-color: #{getAccent($theme)};
55
+ --se-active-dark-color: #{getAccent($theme)};
56
+ --se-active-dark2-color: #{getAccent($theme)};
57
+ --se-active-dark3-color: #{getAccent($theme)};
58
+ --se-active-dark4-color: #{getAccent($theme)};
59
+ --se-active-dark5-color: #{getAccent($theme)};
60
+ --se-active-light-color: #{getAccentAlpha($theme)};
61
+ --se-active-light2-color: #{getAccentAlpha($theme)};
62
+ --se-active-light3-color: #{getAccentAlpha($theme)};
63
+ --se-active-light4-color: #{getAccentAlpha($theme)};
64
+ --se-active-light5-color: #{getAccentAlpha($theme)};
65
+ --se-active-light6-color: #{getAccentAlpha($theme)};
66
+ --se-edit-active: #{getAccent($theme)};
67
+ --se-edit-hover: #{getAccentAlpha($theme)};
68
+ --se-edit-hr-on-back: #{getAccentAlpha($theme)};
69
+ --se-edit-anchor: #{getAccent($theme)};
70
+ --se-edit-anchor-on-back: #{getAccentAlpha($theme)};
71
+ --se-edit-anchor-on-font: #{getAccent($theme)};
72
+ --se-table-picker-highlight-color: #{getAccentAlpha($theme)};
73
+ --se-table-picker-highlight-border-color: #{getAccent($theme)};
74
+ --se-loading-color: #{getAccent($theme)};
75
+ --se-drag-caret-color: #{getAccent($theme)};
76
+
77
+ // ── Modals / overlays ─────────────────────────────────────────────
78
+ --se-modal-anchor-color: #{getAccent($theme)};
79
+ --se-overlay-background-color: #{getBackground($theme)};
80
+ --se-modal-file-input-background-color: #{getBackground($theme)};
81
+ --se-modal-input-disabled-background-color: #{getDisabled($theme)};
82
+ --se-modal-input-disabled-color: #{getForegroundAlpha($theme)};
83
+ --se-modal-preview-color: #{getForegroundAlpha($theme)};
84
+
85
+ // ── Hover states ──────────────────────────────────────────────────
86
+ --se-hover-color: #{getForeground($theme)};
87
+ --se-hover-dark-color: #{getForegroundAlpha($theme)};
88
+ --se-hover-dark2-color: #{getForegroundAlpha($theme)};
89
+ --se-hover-dark3-color: #{getForegroundAlpha($theme)};
90
+ --se-hover-light-color: #{getDisabled($theme)};
91
+ --se-hover-light2-color: #{getDisabled($theme)};
92
+ --se-hover-light3-color: #{getDisabled($theme)};
47
93
  }
48
- }
49
94
  }
50
95
 
51
- // ── Layout ──────────────────────────────────────────────────────────────────
52
-
53
- .matcha-text-editor {
54
- display: flex;
55
- flex-direction: column;
56
- width: 100%;
57
- border: var(--matcha-border-hairline, 1px) solid transparent;
58
- border-radius: var(--matcha-radius-lg, 8px);
59
- overflow: hidden;
60
- box-sizing: border-box;
61
- transition: border-color var(--matcha-duration-instant, 80ms) linear;
62
- }
63
-
64
- // ── Toolbar ──
65
- .matcha-text-editor__toolbar {
66
- display: flex;
67
- align-items: center;
68
- gap: var(--matcha-space-025, 2px);
69
- padding: var(--matcha-space-050, 4px) var(--matcha-space-100, 8px);
70
- flex-wrap: wrap;
71
- }
72
-
73
- .matcha-text-editor__toolbar-group {
74
- display: flex;
75
- align-items: center;
76
- gap: var(--matcha-space-025, 2px);
77
- }
96
+ // ── Estrutura (não depende de tema) ──────────────────────────────────────────
97
+ matcha-text-editor {
98
+ display: block;
99
+ width: 100%;
78
100
 
79
- .matcha-text-editor__toolbar-sep {
80
- width: 1px;
81
- height: var(--matcha-icon-size-md, 24px);
82
- margin: 0 var(--matcha-space-050, 4px);
83
- opacity: 0.2;
84
- }
85
-
86
- // ── Editor content ──
87
- .matcha-text-editor__content {
88
- flex: 1;
89
- min-height: 200px;
90
- padding: var(--matcha-space-200, 16px);
91
- font-family: var(--matcha-font-family);
92
- font-size: var(--matcha-text-body-md, 14px);
93
- line-height: var(--matcha-leading-body-md, 20px);
94
- outline: none;
95
-
96
- // Tiptap overrides
97
- .ProseMirror {
98
- outline: none;
99
- min-height: inherit;
100
-
101
- p { margin: 0 0 var(--matcha-space-100, 8px); }
102
- h1, h2, h3 { font-family: var(--matcha-font-family); font-weight: 700; }
103
- ul, ol { padding-left: var(--matcha-space-300, 24px); }
104
- a { color: var(--matcha-color-accent); text-decoration: underline; }
105
- blockquote {
106
- border-left: var(--matcha-border-medium, 4px) solid var(--matcha-color-accent);
107
- padding-left: var(--matcha-space-200, 16px);
108
- margin-left: 0;
109
- opacity: 0.8;
101
+ .sun-editor {
102
+ border-radius: 8px;
103
+ overflow: hidden;
110
104
  }
111
- }
112
- }
113
-
114
- .matcha-text-editor__placeholder {
115
- font-family: var(--matcha-font-family);
116
- font-size: var(--matcha-text-body-md, 14px);
117
- }
118
-
119
- // ── Footer ──
120
- .matcha-text-editor__footer {
121
- display: flex;
122
- align-items: center;
123
- justify-content: flex-end;
124
- padding: var(--matcha-space-100, 8px) var(--matcha-space-200, 16px);
125
- }
126
-
127
- .matcha-text-editor__word-count {
128
- font-family: var(--matcha-font-family);
129
- font-size: var(--matcha-text-caption, 11px);
130
- }
131
-
132
- // ── Responsive ──────────────────────────────────────────────────────────────
133
-
134
- @include media-breakpoint('xs') {
135
- .matcha-text-editor__content {
136
- min-height: 160px;
137
- padding: var(--matcha-space-150, 12px);
138
- }
139
-
140
- .matcha-text-editor__toolbar {
141
- padding: var(--matcha-space-050, 4px);
142
- }
143
- }
144
-
145
- // ── Reduced motion ──────────────────────────────────────────────────────────
146
-
147
- @media (prefers-reduced-motion: reduce) {
148
- .matcha-text-editor {
149
- transition: none;
150
- }
151
105
  }
@@ -0,0 +1,776 @@
1
+ // -----------------------------------------------------------------------------------------------------
2
+ // @Page Layouts Theming
3
+ // -----------------------------------------------------------------------------------------------------
4
+ @mixin matcha-page-layout-theme($theme) {
5
+ .page-layout {
6
+ // Theme
7
+ // Style
8
+ position: relative;
9
+ overflow: hidden;
10
+
11
+ &.carded {
12
+ // Theme
13
+ // Style
14
+ display: flex;
15
+ flex-direction: column;
16
+ flex: 1 0 auto;
17
+ width: 100%;
18
+ min-width: 100%;
19
+ // Top bg
20
+ .top-bg {
21
+ position: absolute;
22
+ z-index: 1;
23
+ top: 0;
24
+ right: 0;
25
+ left: 0;
26
+ height: 192px;
27
+ }
28
+
29
+ // Fullwidth
30
+ &.fullwidth {
31
+ .center {
32
+ // Theme
33
+ // Style
34
+ display: flex;
35
+ flex-direction: column;
36
+ flex: 1 0 auto;
37
+ position: relative;
38
+ z-index: 2;
39
+ // padding: 0 16px;
40
+ width: 100%;
41
+ min-width: 0;
42
+ max-width: 100%;
43
+ height: 100%;
44
+ max-height: 100%;
45
+
46
+ .header {
47
+ // Theme
48
+ // Style
49
+ height: calc(144px - 64px) !important;
50
+ min-height: calc(144px - 64px) !important;
51
+ max-height: calc(144px - 64px) !important;
52
+ margin: 24px 0 32px 0;
53
+
54
+ .title {
55
+ margin: 0px 24px;
56
+ span {
57
+ &[class^="i-matcha-"],
58
+ &[class*=" i-matcha-"] {
59
+ font-size: 32px;
60
+ line-height: 32px;
61
+ width: 32px;
62
+ height: 32px;
63
+ margin: 0px 16px 0 0px;
64
+ }
65
+ }
66
+ }
67
+
68
+ .header-options {
69
+ align-content: center;
70
+ display: flex;
71
+ flex-wrap: wrap;
72
+ align-items: stretch;
73
+ flex-direction: row;
74
+ justify-content: space-between;
75
+ width: 100%;
76
+ padding: 16px 24px;
77
+ border-radius: 8px;
78
+ background: getSurface($theme);
79
+ @include elevation(1);
80
+ button,
81
+ form {
82
+ &:nth-child(n):not(.float-btn-new):not(.btn-search-filter) {
83
+ margin: 0 0 0 16px;
84
+ }
85
+ &:first-child {
86
+ margin: 0;
87
+ }
88
+ }
89
+ .title {
90
+ margin: 0;
91
+ white-space: nowrap;
92
+ overflow: hidden;
93
+ text-overflow: ellipsis;
94
+ display: flex;
95
+ align-items: center;
96
+ }
97
+ .useful-options {
98
+ display: flex;
99
+ margin: 0;
100
+ flex-direction: row;
101
+ justify-content: flex-end;
102
+
103
+ .more-options {
104
+ display: none;
105
+ }
106
+
107
+ form {
108
+ min-width: 192px;
109
+ width: 100%;
110
+ height: 48px;
111
+ margin: -4px 0 0 0;
112
+ .mat-form-field-outline-end {
113
+ border-radius: 0 0 0 0;
114
+ }
115
+ &.single-field {
116
+ min-width: 192px;
117
+ width: 100%;
118
+ .mat-form-field-outline-end {
119
+ border-radius: 0 8px 8px 0;
120
+ }
121
+ }
122
+ }
123
+ .btn-search-filter {
124
+ margin: 0 0 0 -2px;
125
+ border-radius: 0 8px 8px 0;
126
+ }
127
+ }
128
+ .float-btn-new {
129
+ position: fixed;
130
+ z-index: 9999;
131
+ top: calc(100vh - 72px);
132
+ left: calc(100vw - 72px);
133
+ }
134
+ }
135
+ }
136
+
137
+ > .content-card {
138
+ // Theme
139
+ overflow: initial;
140
+ // background: map-get($background, background);
141
+ border-radius: 8px;
142
+ @include elevation(1);
143
+ // Style
144
+ display: flex;
145
+ flex-direction: column;
146
+ flex: 1 0 auto;
147
+ overflow: hidden;
148
+
149
+ &.card-flat {
150
+ @include elevation(0);
151
+ }
152
+ &.bg-card-view {
153
+ // Theme
154
+ @include elevation(0);
155
+ // Style
156
+ margin: 0 -16px;
157
+
158
+ .content {
159
+ // Theme
160
+ @include elevation(0);
161
+ // Style
162
+ background: transparent;
163
+ }
164
+ }
165
+ &.bg-list-view {
166
+ // Theme
167
+ @include elevation(0);
168
+ // Style
169
+ .content {
170
+ // Theme
171
+ @include elevation(0);
172
+ // Style
173
+ background: transparent;
174
+ }
175
+ }
176
+ > .toolbar {
177
+ // Theme
178
+ border-bottom-color: getDisabled($theme);
179
+ // Style
180
+ display: flex;
181
+ justify-content: flex-start;
182
+ align-items: center;
183
+ height: 64px;
184
+ min-height: 64px;
185
+ max-height: 64px;
186
+ }
187
+
188
+ > .content {
189
+ flex: 1 0 auto;
190
+ border-radius: 8px;
191
+ // overflow: hidden;
192
+ }
193
+ }
194
+ }
195
+
196
+ // Tabbed
197
+ &.tabbed {
198
+ > .center {
199
+ width: 100%;
200
+ min-width: 0;
201
+
202
+ > .header {
203
+ flex: 1 1 auto;
204
+ }
205
+
206
+ > .content-card {
207
+ > .content {
208
+ display: flex;
209
+
210
+ > .mat-tab-group {
211
+ overflow: hidden;
212
+ width: 100%;
213
+
214
+ .mat-tab-header {
215
+ .mat-tab-label {
216
+ height: 64px;
217
+ }
218
+ }
219
+
220
+ .mat-tab-body {
221
+ overflow: hidden;
222
+
223
+ .mat-tab-body-content {
224
+ overflow: hidden;
225
+
226
+ .tab-content {
227
+ position: relative;
228
+ width: 100%;
229
+ height: 100%;
230
+ }
231
+ }
232
+ }
233
+ }
234
+ }
235
+ }
236
+ }
237
+ }
238
+
239
+ // Inner scroll
240
+ &.inner-scroll {
241
+ flex: 1 1 auto;
242
+
243
+ > .center {
244
+ flex: 1 1 auto;
245
+
246
+ > .content-card {
247
+ flex: 1 1 auto;
248
+
249
+ > .content {
250
+ flex: 1 1 auto;
251
+ overflow: auto;
252
+ -webkit-overflow-scrolling: touch;
253
+ }
254
+ }
255
+ }
256
+
257
+ // Tabbed
258
+ &.tabbed {
259
+ > .center {
260
+ > .content-card {
261
+ > .content {
262
+ > .mat-tab-group {
263
+ .mat-tab-body {
264
+ .mat-tab-body-content {
265
+ .tab-content {
266
+ overflow: auto;
267
+ -webkit-overflow-scrolling: touch;
268
+ }
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
274
+ }
275
+ }
276
+ }
277
+ }
278
+
279
+ // Left / Right sidebar
280
+ &.left-sidebar,
281
+ &.right-sidebar {
282
+ flex-direction: row;
283
+
284
+ // Sidebar
285
+ .sidebar {
286
+ @include elevation(7);
287
+
288
+ display: flex;
289
+ flex-direction: column;
290
+ flex: 1 1 auto;
291
+ width: 240px;
292
+ min-width: 240px;
293
+ max-width: 240px;
294
+ height: auto;
295
+ overflow: hidden;
296
+
297
+ &.locked-open {
298
+ background: none;
299
+ box-shadow: none;
300
+
301
+ + .center {
302
+ z-index: 1001;
303
+ }
304
+
305
+ &.left-positioned {
306
+ + .center {
307
+ margin-left: 0;
308
+ }
309
+ }
310
+
311
+ &.right-positioned {
312
+ + .center {
313
+ margin-right: 0;
314
+ }
315
+ }
316
+ }
317
+
318
+ .header {
319
+ height: 192px;
320
+ min-height: 192px;
321
+ max-height: 192px;
322
+ }
323
+
324
+ .content {
325
+ background: transparent;
326
+ flex: 1 1 auto;
327
+ }
328
+ }
329
+ // Center
330
+ .center {
331
+ .content-card {
332
+ @include elevation(1);
333
+ background: getSurface($theme);
334
+ border-radius: 8px;
335
+ > .toolbar {
336
+ border-bottom-color: getDisabled($theme);
337
+ }
338
+ }
339
+
340
+ display: flex;
341
+ flex-direction: column;
342
+ flex: 1 1 auto;
343
+ position: relative;
344
+ z-index: 3;
345
+ margin-left: 32px;
346
+ margin-right: 32px;
347
+ width: 100%;
348
+ min-width: 0;
349
+
350
+ .header {
351
+ display: flex;
352
+ height: 192px;
353
+ min-height: 192px;
354
+ max-height: 192px;
355
+ }
356
+
357
+ .content-card {
358
+ display: flex;
359
+ flex-direction: column;
360
+ flex: 1 1 auto;
361
+ overflow: hidden;
362
+
363
+ .toolbar {
364
+ display: flex;
365
+ justify-content: flex-start;
366
+ align-items: center;
367
+ flex: 1 1 auto;
368
+ border-bottom: 1px solid;
369
+ height: 64px;
370
+ min-height: 64px;
371
+ max-height: 64px;
372
+
373
+ .sidebar-toggle {
374
+ margin: 0 8px 0 0 !important;
375
+ padding: 0 !important;
376
+ border-radius: 0;
377
+ }
378
+ }
379
+
380
+ .content {
381
+ flex: 1 1 auto;
382
+ }
383
+ }
384
+ }
385
+ // Tabbed
386
+ &.tabbed {
387
+ .center {
388
+ width: calc(100% - 32px);
389
+ min-width: 0;
390
+
391
+ .header {
392
+ flex: 1 1 auto;
393
+ }
394
+
395
+ .content-card {
396
+ .content {
397
+ display: flex;
398
+
399
+ .mat-tab-group {
400
+ overflow: hidden;
401
+
402
+ .mat-tab-header {
403
+ .mat-tab-label {
404
+ height: 64px;
405
+ }
406
+ }
407
+
408
+ .mat-tab-body {
409
+ overflow: hidden;
410
+
411
+ .mat-tab-body-content {
412
+ overflow: hidden;
413
+
414
+ .tab-content {
415
+ position: relative;
416
+ width: 100%;
417
+ height: 100%;
418
+ }
419
+ }
420
+ }
421
+ }
422
+ }
423
+ }
424
+ @include media-breakpoint("lt-lg") {
425
+ width: calc(100% - 64px);
426
+ }
427
+ }
428
+ }
429
+ // Inner scroll
430
+ &.inner-scroll {
431
+ flex: 1 1 auto;
432
+
433
+ .sidebar {
434
+ .content {
435
+ overflow: auto;
436
+ -webkit-overflow-scrolling: touch;
437
+ }
438
+ }
439
+
440
+ .center {
441
+ flex: 1 1 auto;
442
+
443
+ > .content-card {
444
+ flex: 1 1 auto;
445
+
446
+ > .content {
447
+ flex: 1 1 auto;
448
+ overflow: auto;
449
+ -webkit-overflow-scrolling: touch;
450
+ }
451
+ }
452
+ }
453
+
454
+ // Tabbed
455
+ &.tabbed {
456
+ .center {
457
+ .content-card {
458
+ .content {
459
+ .mat-tab-group {
460
+ .mat-tab-body {
461
+ .mat-tab-body-content {
462
+ .tab-content {
463
+ overflow: auto;
464
+ -webkit-overflow-scrolling: touch;
465
+ }
466
+ }
467
+ }
468
+ }
469
+ }
470
+ }
471
+ }
472
+ }
473
+ }
474
+ }
475
+
476
+ // Right sidebar specific
477
+ &.right-sidebar {
478
+ > .sidebar {
479
+ order: 2;
480
+ }
481
+
482
+ > .center {
483
+ order: 1;
484
+ }
485
+ }
486
+ }
487
+
488
+ // Simple layout
489
+ &.simple {
490
+ display: flex;
491
+ flex-direction: column;
492
+ flex: 1 0 auto;
493
+ width: 100%;
494
+ min-width: 100%;
495
+
496
+ // Fullwidth
497
+ &.fullwidth {
498
+ > .content {
499
+ flex: 1 1 auto;
500
+ min-width: 0;
501
+ }
502
+ }
503
+
504
+ &.fullwidth,
505
+ &.inner-sidebar {
506
+ > .header {
507
+ height: 120px;
508
+ min-height: 120px;
509
+ max-height: 120px;
510
+ }
511
+ }
512
+
513
+ // Left / Right sidebar
514
+ &.left-sidebar,
515
+ &.right-sidebar {
516
+ flex-direction: row;
517
+
518
+ // Center
519
+ > .center {
520
+ // Theme
521
+ @include elevation(1);
522
+
523
+ // Style
524
+ position: relative;
525
+ display: flex;
526
+ flex-direction: column;
527
+ flex: 1 1 auto;
528
+ z-index: 3;
529
+ min-width: 0;
530
+ width: 100%;
531
+
532
+ > .header {
533
+ height: 120px;
534
+ min-height: 120px;
535
+ max-height: 120px;
536
+ }
537
+
538
+ > .content {
539
+ // Theme
540
+ background: getSurface($theme);
541
+
542
+ // Style
543
+ flex: 1 0 auto;
544
+ }
545
+ }
546
+
547
+ // Sidebar
548
+ > .sidebar {
549
+ // Theme
550
+ @include elevation(7);
551
+
552
+ // Style
553
+ width: 240px;
554
+ min-width: 240px;
555
+ max-width: 240px;
556
+ overflow: hidden;
557
+
558
+ &.locked-open {
559
+ background: none;
560
+ box-shadow: none;
561
+
562
+ + .center {
563
+ z-index: 1001;
564
+ }
565
+
566
+ &.left-positioned {
567
+ + .center {
568
+ margin-left: 0;
569
+ }
570
+ }
571
+
572
+ &.right-positioned {
573
+ + .center {
574
+ margin-right: 0;
575
+ }
576
+ }
577
+ }
578
+
579
+ .content {
580
+ flex: 1 1 auto;
581
+ }
582
+ }
583
+
584
+ // Inner sidebar
585
+ &.inner-sidebar {
586
+ > .content {
587
+ > .center {
588
+ > .content {
589
+ background: getSurface($theme);
590
+ @include elevation(1);
591
+ }
592
+ }
593
+ }
594
+
595
+ flex-direction: column;
596
+ overflow: hidden;
597
+ height: 100%;
598
+
599
+ > .content {
600
+ display: flex;
601
+ min-height: 0;
602
+
603
+ > .sidebar {
604
+ &.locked-open {
605
+ background: none;
606
+ box-shadow: none;
607
+ }
608
+
609
+ .content {
610
+ overflow: auto;
611
+ -webkit-overflow-scrolling: touch;
612
+ }
613
+ }
614
+
615
+ > .center {
616
+ flex: 1 1 auto;
617
+ overflow: auto;
618
+ -webkit-overflow-scrolling: touch;
619
+
620
+ > .content {
621
+ border-radius: 8px;
622
+ }
623
+ }
624
+ }
625
+ }
626
+
627
+ // Inner scroll
628
+ &.inner-scroll {
629
+ flex: 1 1 auto;
630
+
631
+ > .sidebar {
632
+ .content {
633
+ overflow: auto;
634
+ -webkit-overflow-scrolling: touch;
635
+ }
636
+ }
637
+
638
+ > .center {
639
+ flex: 1 1 auto;
640
+ overflow: auto;
641
+ -webkit-overflow-scrolling: touch;
642
+ }
643
+ }
644
+ }
645
+
646
+ // Right sidebar specific
647
+ &.right-sidebar {
648
+ > .sidebar {
649
+ order: 2;
650
+ }
651
+
652
+ > .center {
653
+ order: 1;
654
+ }
655
+
656
+ // Inner sidebar
657
+ &.inner-sidebar {
658
+ > .content {
659
+ > .sidebar {
660
+ order: 2;
661
+ }
662
+
663
+ > .center {
664
+ order: 1;
665
+ }
666
+ }
667
+ }
668
+ }
669
+
670
+ // Tabbed
671
+ &.tabbed {
672
+ min-height: 100%;
673
+
674
+ > .header {
675
+ height: 120px;
676
+ min-height: 120px;
677
+ max-height: 120px;
678
+ }
679
+
680
+ > .content {
681
+ > .mat-tab-group {
682
+ .mat-tab-labels {
683
+ padding: 0 24px;
684
+ }
685
+ }
686
+ }
687
+ }
688
+ }
689
+
690
+ // Blank layout
691
+ &.blank {
692
+ width: 100%;
693
+ min-height: 100%;
694
+ }
695
+ }
696
+
697
+ // Small devices (Phones and Gadget, 0px and up < 600px )
698
+ @media screen and (max-width: 599px) {
699
+ .page-layout {
700
+ // Smaller margins
701
+ &.carded {
702
+ &.fullwidth {
703
+ > .center {
704
+ // padding: 0 0 0 0;
705
+ }
706
+ }
707
+
708
+ &.left-sidebar,
709
+ &.right-sidebar {
710
+ > .center {
711
+ margin: 0 24px;
712
+ }
713
+ }
714
+ }
715
+ // End - Smaller margins
716
+ }
717
+ }
718
+
719
+ // Medium devices (landscapes and tablets, 600px and up < 1024px )
720
+ @media screen and (min-width: 600px) {
721
+ }
722
+
723
+ // Large devices (tablets and small monitors, 1024px and up < 1440px)
724
+ @media screen and (min-width: 1024px) {
725
+ .page-layout {
726
+ // Carded layout
727
+ &.carded {
728
+ // Fullwidth
729
+ &.fullwidth {
730
+ .center {
731
+ // padding: 0 16px 0 0;
732
+ .header {
733
+ .header-options {
734
+ flex-wrap: nowrap;
735
+ align-items: center;
736
+
737
+ .title {
738
+ width: 100%;
739
+ margin: 0 16px 0 0;
740
+ line-height: 48px;
741
+ white-space: nowrap;
742
+ overflow: hidden;
743
+ }
744
+
745
+ .useful-options {
746
+ width: 100%;
747
+ justify-content: end;
748
+
749
+ .more-options {
750
+ display: flex;
751
+ margin: 0 0 0 0;
752
+ }
753
+ form {
754
+ height: 48px;
755
+ margin: -4px 0 0 16px;
756
+ max-width: 211px;
757
+ }
758
+ }
759
+ .float-btn-new {
760
+ display: none;
761
+ }
762
+ }
763
+ }
764
+ }
765
+ }
766
+ }
767
+ }
768
+ }
769
+ // X-Large devices (big desktops, 1440px and up < 1920)
770
+ @media screen and (min-width: 1440px) {
771
+ }
772
+
773
+ // XX-Large devices (larger desktops, 1920px and up)
774
+ @media screen and (min-width: 1920px) {
775
+ }
776
+ }
package/main.scss CHANGED
@@ -88,6 +88,9 @@
88
88
  @import "./components/matcha-flag.scss"; // matcha-flag-theme($theme)
89
89
  @import "./components/matcha-emoji.scss"; // matcha-emoji-theme($theme)
90
90
 
91
+ // LAYOUT
92
+ @import "./layout/matcha-page-layout.scss"; // matcha-page-layout-theme($theme)
93
+
91
94
  // VENDORS
92
95
  @import "./vendors/angular-editor.scss";
93
96
  @import "./vendors/angular-material-fixes.scss";
@@ -259,4 +262,5 @@
259
262
  @include matcha-profile-card-theme($theme);
260
263
  @include matcha-flag-theme($theme);
261
264
  @include matcha-emoji-theme($theme);
265
+ @include matcha-page-layout-theme($theme);
262
266
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inchurch/matcha-theme",
3
- "version": "20.0.8",
3
+ "version": "20.0.11",
4
4
  "description": "Themes for matcha-design-system",
5
5
  "main": "main.scss",
6
6
  "scripts": {