@dereekb/dbx-web 13.10.7 → 13.10.8
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/docs/README.md +10 -0
- package/fesm2022/dereekb-dbx-web-calendar.mjs +9 -9
- package/fesm2022/dereekb-dbx-web-docs.mjs +146 -0
- package/fesm2022/dereekb-dbx-web-docs.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-web-mapbox.mjs +52 -52
- package/fesm2022/dereekb-dbx-web-table.mjs +77 -77
- package/fesm2022/dereekb-dbx-web.mjs +1438 -914
- package/fesm2022/dereekb-dbx-web.mjs.map +1 -1
- package/lib/action/snackbar/_snackbar.scss +5 -0
- package/lib/button/_button.scss +27 -0
- package/lib/error/_error.scss +5 -0
- package/lib/extension/pdf/_pdf.scss +19 -59
- package/lib/interaction/dialog/_dialog.scss +5 -0
- package/lib/interaction/popover/_popover.scss +5 -0
- package/lib/interaction/popup/_popup.scss +5 -0
- package/lib/interaction/prompt/_prompt.scss +4 -0
- package/lib/interaction/upload/_upload.scss +15 -2
- package/lib/layout/avatar/_avatar.scss +26 -0
- package/lib/layout/bar/_bar.scss +27 -0
- package/lib/layout/block/_block.scss +4 -0
- package/lib/layout/column/_column.scss +3 -0
- package/lib/layout/content/_content.scss +29 -0
- package/lib/layout/flex/_flex.scss +37 -0
- package/lib/layout/list/_list.scss +99 -0
- package/lib/layout/section/_section.scss +7 -0
- package/lib/layout/style/_style.scss +49 -0
- package/lib/layout/text/_text.scss +298 -14
- package/lib/loading/_loading.scss +6 -0
- package/package.json +27 -14
- package/types/dereekb-dbx-web-docs.d.ts +73 -0
- package/types/dereekb-dbx-web.d.ts +521 -147
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
// MARK: Mixin
|
|
6
6
|
@mixin core() {
|
|
7
|
+
/// @dbx-utility action-snackbar
|
|
8
|
+
/// @intent action-snackbar layout — flex row used by the `<dbx-action-snackbar>` host so the message and trailing button sit on one line
|
|
9
|
+
/// @role layout
|
|
10
|
+
/// @component DbxActionSnackbarComponent
|
|
11
|
+
/// @scope component-class
|
|
7
12
|
.dbx-action-snackbar {
|
|
8
13
|
display: flex;
|
|
9
14
|
align-items: center;
|
package/lib/button/_button.scss
CHANGED
|
@@ -10,6 +10,10 @@ $big-button-height: 46px; // 33% bigger
|
|
|
10
10
|
// MARK: Mixin
|
|
11
11
|
@mixin core() {
|
|
12
12
|
// increases the height of the mat-mdc-button
|
|
13
|
+
/// @dbx-utility button-big
|
|
14
|
+
/// @intent enlarge the inner `mat-mdc-button` height to 46px (33% taller than default)
|
|
15
|
+
/// @role layout
|
|
16
|
+
/// @see-also button-wide
|
|
13
17
|
.dbx-button-big,
|
|
14
18
|
.dbx-button-large {
|
|
15
19
|
.mdc-button.mat-mdc-button {
|
|
@@ -19,6 +23,9 @@ $big-button-height: 46px; // 33% bigger
|
|
|
19
23
|
|
|
20
24
|
// Neutral hover/pressed/focus state layer instead of the primary-colored default.
|
|
21
25
|
// Apply to buttons with custom background colors where the primary tint looks wrong.
|
|
26
|
+
/// @dbx-utility button-neutral-interaction-color
|
|
27
|
+
/// @intent neutralize Material's hover/pressed/focus/ripple state layer to `--mat-sys-on-surface` — use on buttons with a custom background where the primary-tinted state-layer would clash
|
|
28
|
+
/// @role state
|
|
22
29
|
.dbx-button-neutral-interaction-color {
|
|
23
30
|
.mdc-button,
|
|
24
31
|
&.mdc-button {
|
|
@@ -41,6 +48,10 @@ $big-button-height: 46px; // 33% bigger
|
|
|
41
48
|
}
|
|
42
49
|
}
|
|
43
50
|
|
|
51
|
+
/// @dbx-utility button-wide
|
|
52
|
+
/// @intent stretch the inner `.dbx-button` to a 120px minimum width (still capped by parent)
|
|
53
|
+
/// @role layout
|
|
54
|
+
/// @see-also button-grow
|
|
44
55
|
.dbx-button-wide {
|
|
45
56
|
.dbx-button {
|
|
46
57
|
min-width: 120px;
|
|
@@ -48,6 +59,10 @@ $big-button-height: 46px; // 33% bigger
|
|
|
48
59
|
}
|
|
49
60
|
}
|
|
50
61
|
|
|
62
|
+
/// @dbx-utility button-wrap-group
|
|
63
|
+
/// @intent group of buttons that wrap onto multiple rows — adds 6px right + bottom spacing between `<dbx-button>` / `<dbx-anchor>` / `<button>` / `<dbx-icon-button>` siblings
|
|
64
|
+
/// @role layout
|
|
65
|
+
/// @see-also button-column, dbx-flex-bar
|
|
51
66
|
.dbx-button-wrap-group {
|
|
52
67
|
> dbx-button,
|
|
53
68
|
> dbx-anchor {
|
|
@@ -84,6 +99,10 @@ $big-button-height: 46px; // 33% bigger
|
|
|
84
99
|
}
|
|
85
100
|
}
|
|
86
101
|
|
|
102
|
+
/// @dbx-utility grow-button
|
|
103
|
+
/// @intent stretch the `<dbx-button>` (and its inner `.dbx-button`) to the full width of its parent
|
|
104
|
+
/// @role layout
|
|
105
|
+
/// @see-also button-wide, dbx-w100
|
|
87
106
|
.dbx-grow-button {
|
|
88
107
|
width: 100%;
|
|
89
108
|
|
|
@@ -92,6 +111,10 @@ $big-button-height: 46px; // 33% bigger
|
|
|
92
111
|
}
|
|
93
112
|
}
|
|
94
113
|
|
|
114
|
+
/// @dbx-utility button-spacer
|
|
115
|
+
/// @intent right-padding spacer between buttons or beside a button — 6px right padding (use `<dbx-button-spacer>` to insert one inline)
|
|
116
|
+
/// @role spacing
|
|
117
|
+
/// @see-also chip-spacer, icon-spacer
|
|
95
118
|
.dbx-button-spacer {
|
|
96
119
|
padding-right: $button-spacer-width;
|
|
97
120
|
}
|
|
@@ -100,6 +123,10 @@ $big-button-height: 46px; // 33% bigger
|
|
|
100
123
|
margin-right: $button-spacer-width;
|
|
101
124
|
}
|
|
102
125
|
|
|
126
|
+
/// @dbx-utility button-column
|
|
127
|
+
/// @intent vertical button stack — flex column with 6px bottom spacing between children, left-aligned by default (compose with `.dbx-button-column-center` to center)
|
|
128
|
+
/// @role flex
|
|
129
|
+
/// @see-also button-wrap-group, dbx-flex-column
|
|
103
130
|
.dbx-button-column {
|
|
104
131
|
display: flex;
|
|
105
132
|
flex-direction: column;
|
package/lib/error/_error.scss
CHANGED
|
@@ -6,6 +6,11 @@ $error-message-button-margin: 12px;
|
|
|
6
6
|
|
|
7
7
|
// MARK: Mixin
|
|
8
8
|
@mixin core() {
|
|
9
|
+
/// @dbx-utility error
|
|
10
|
+
/// @intent error row — `<dbx-error>` body that lays out an icon + message in a centered flex row with an 8px top inset
|
|
11
|
+
/// @role layout
|
|
12
|
+
/// @component DbxErrorComponent
|
|
13
|
+
/// @scope component-class
|
|
9
14
|
.dbx-error {
|
|
10
15
|
padding-top: $error-padding;
|
|
11
16
|
display: flex;
|
|
@@ -3,21 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
// MARK: Mixin
|
|
5
5
|
@mixin core() {
|
|
6
|
-
.dbx-pdf-merge-editor {
|
|
7
|
-
display: block;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.dbx-pdf-merge-editor-upload {
|
|
11
|
-
display: block;
|
|
12
|
-
margin-bottom: 12px;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.dbx-pdf-merge-editor-error {
|
|
16
|
-
margin: 8px 0;
|
|
17
|
-
padding: 8px 12px;
|
|
18
|
-
border-radius: var(--mat-sys-corner-small);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
6
|
.dbx-pdf-merge-editor-actions {
|
|
22
7
|
display: flex;
|
|
23
8
|
align-items: center;
|
|
@@ -25,33 +10,34 @@
|
|
|
25
10
|
margin-top: 12px;
|
|
26
11
|
}
|
|
27
12
|
|
|
28
|
-
|
|
29
|
-
|
|
13
|
+
// Slot upload
|
|
14
|
+
.dbx-pdf-merge-editor-file-upload-header {
|
|
15
|
+
display: flex;
|
|
16
|
+
align-items: center;
|
|
17
|
+
gap: 8px;
|
|
18
|
+
min-height: 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.dbx-pdf-merge-editor-file-upload-header:not(:empty) {
|
|
22
|
+
margin-bottom: 6px;
|
|
30
23
|
}
|
|
31
24
|
|
|
32
|
-
.dbx-pdf-merge-editor-
|
|
33
|
-
|
|
25
|
+
.dbx-pdf-merge-editor-file-upload-label {
|
|
26
|
+
font-weight: 500;
|
|
34
27
|
}
|
|
35
28
|
|
|
36
|
-
.dbx-pdf-
|
|
37
|
-
display:
|
|
38
|
-
|
|
39
|
-
|
|
29
|
+
.dbx-pdf-merge-editor-file-upload-entries {
|
|
30
|
+
display: flex;
|
|
31
|
+
flex-direction: column;
|
|
32
|
+
gap: 4px;
|
|
33
|
+
margin-top: 6px;
|
|
40
34
|
}
|
|
41
35
|
|
|
42
36
|
.dbx-pdf-preview-frame {
|
|
43
|
-
display: block;
|
|
44
|
-
width: 100%;
|
|
45
|
-
height: 100%;
|
|
46
37
|
min-height: 480px;
|
|
47
38
|
}
|
|
48
39
|
|
|
49
40
|
// List
|
|
50
|
-
.dbx-pdf-merge-list-empty {
|
|
51
|
-
padding: 16px;
|
|
52
|
-
text-align: center;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
41
|
.dbx-pdf-merge-list-items {
|
|
56
42
|
display: flex;
|
|
57
43
|
flex-direction: column;
|
|
@@ -59,10 +45,6 @@
|
|
|
59
45
|
}
|
|
60
46
|
|
|
61
47
|
// Entry
|
|
62
|
-
.dbx-pdf-merge-entry {
|
|
63
|
-
display: block;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
48
|
.dbx-pdf-merge-entry-row {
|
|
67
49
|
display: flex;
|
|
68
50
|
align-items: center;
|
|
@@ -95,38 +77,16 @@
|
|
|
95
77
|
cursor: grabbing;
|
|
96
78
|
}
|
|
97
79
|
|
|
98
|
-
.dbx-pdf-merge-entry-icon
|
|
80
|
+
.dbx-pdf-merge-entry-icon,
|
|
81
|
+
.dbx-pdf-merge-entry-remove {
|
|
99
82
|
flex-shrink: 0;
|
|
100
83
|
}
|
|
101
84
|
|
|
102
|
-
.dbx-pdf-merge-entry-icon-error {
|
|
103
|
-
color: var(--mat-sys-error);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
.dbx-pdf-merge-entry-info {
|
|
107
|
-
flex: 1;
|
|
108
|
-
min-width: 0;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.dbx-pdf-merge-entry-name {
|
|
112
|
-
overflow: hidden;
|
|
113
|
-
white-space: nowrap;
|
|
114
|
-
text-overflow: ellipsis;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
85
|
.dbx-pdf-merge-entry-meta {
|
|
118
86
|
display: flex;
|
|
119
87
|
gap: 8px;
|
|
120
88
|
}
|
|
121
89
|
|
|
122
|
-
.dbx-pdf-merge-entry--error .dbx-pdf-merge-entry-status {
|
|
123
|
-
color: var(--mat-sys-error);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.dbx-pdf-merge-entry-remove {
|
|
127
|
-
flex-shrink: 0;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
90
|
// CDK animations
|
|
131
91
|
.cdk-drop-list-dragging .dbx-pdf-merge-entry-row:not(.cdk-drag-placeholder) {
|
|
132
92
|
transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
|
|
@@ -16,6 +16,11 @@ $dbx-dialog-content-close-right-offset: $dbx-dialog-content-close-edge-padding;
|
|
|
16
16
|
color: var(--mat-sys-on-surface);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
/// @dbx-utility dialog-content
|
|
20
|
+
/// @intent dialog body — `<dbx-dialog-content>` host that wraps mat-dialog content with the standard 18px inset; compose with `.dbx-dialog-content-with-header` to reserve room for a sticky header, `.dbx-dialog-content-100` to fill the dialog height, or `.dbx-p0` to strip the inset
|
|
21
|
+
/// @role layout
|
|
22
|
+
/// @component DbxDialogContentComponent
|
|
23
|
+
/// @scope component-class
|
|
19
24
|
.dbx-dialog-content {
|
|
20
25
|
display: block;
|
|
21
26
|
padding: $mat-dialog-container-padding;
|
|
@@ -7,6 +7,11 @@ $dbx-popover-header-height: 48px;
|
|
|
7
7
|
|
|
8
8
|
// MARK: Mixin
|
|
9
9
|
@mixin core() {
|
|
10
|
+
/// @dbx-utility popover-container
|
|
11
|
+
/// @intent popover surface — `<dbx-popover>` host that paints the `--mat-sys-surface` background with the `--mat-sys-corner-medium` border-radius
|
|
12
|
+
/// @role layout
|
|
13
|
+
/// @component DbxPopoverComponent
|
|
14
|
+
/// @scope component-class
|
|
10
15
|
.dbx-popover-container {
|
|
11
16
|
background: var(--mat-sys-surface);
|
|
12
17
|
border-radius: var(--mat-sys-corner-medium, 12px);
|
|
@@ -11,6 +11,11 @@ $dbx-popup-border-radius: 4px;
|
|
|
11
11
|
|
|
12
12
|
// MARK: Mixin
|
|
13
13
|
@mixin core() {
|
|
14
|
+
/// @dbx-utility popup-content
|
|
15
|
+
/// @intent popup body — `<dbx-popup-content>` host that caps the inner content at `app-height` and clips overflow; pair with `.dbx-popup-content-container` for the inner scroll region and `.dbx-popup-controls` for the header strip
|
|
16
|
+
/// @role layout
|
|
17
|
+
/// @component DbxPopupContentComponent
|
|
18
|
+
/// @scope component-class
|
|
14
19
|
.dbx-popup-content {
|
|
15
20
|
box-sizing: border-box;
|
|
16
21
|
overflow: hidden;
|
|
@@ -12,6 +12,10 @@ $dbx-popup-controls-height: 33px;
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
/// @dbx-utility prompt-box
|
|
16
|
+
/// @intent centered prompt panel — auto-margined max-width box with a 40px inset (compose with `.elevate` to lift it with elevation 2)
|
|
17
|
+
/// @role layout
|
|
18
|
+
/// @see-also content-box, content-elevate
|
|
15
19
|
.dbx-prompt-box {
|
|
16
20
|
margin: auto;
|
|
17
21
|
padding: 40px;
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
// Sections
|
|
4
4
|
@mixin core() {
|
|
5
|
+
.dbx-file-upload-area {
|
|
6
|
+
position: relative;
|
|
7
|
+
}
|
|
8
|
+
|
|
5
9
|
.dbx-file-upload-area-content {
|
|
6
10
|
display: flex;
|
|
7
11
|
flex-direction: column;
|
|
@@ -18,10 +22,18 @@
|
|
|
18
22
|
align-items: center;
|
|
19
23
|
}
|
|
20
24
|
|
|
25
|
+
/// @dbx-utility file-upload-area-rounded
|
|
26
|
+
/// @intent circle modifier for `.dbx-file-upload-area` — `border-radius: 50%`
|
|
27
|
+
/// @role layout
|
|
28
|
+
/// @see-also file-upload-area-square
|
|
21
29
|
.dbx-file-upload-area-rounded {
|
|
22
30
|
border-radius: 50%;
|
|
23
31
|
}
|
|
24
32
|
|
|
33
|
+
/// @dbx-utility file-upload-area-square
|
|
34
|
+
/// @intent rounded-square modifier for `.dbx-file-upload-area` — uses `--mat-sys-corner-medium` (override via `--dbx-file-upload-square-container-shape`)
|
|
35
|
+
/// @role layout
|
|
36
|
+
/// @see-also file-upload-area-rounded
|
|
25
37
|
.dbx-file-upload-area-square {
|
|
26
38
|
border-radius: var(--dbx-file-upload-square-container-shape, var(--mat-sys-corner-medium));
|
|
27
39
|
}
|
|
@@ -31,12 +43,13 @@
|
|
|
31
43
|
}
|
|
32
44
|
|
|
33
45
|
.dbx-file-upload-area-content-hint {
|
|
34
|
-
position:
|
|
35
|
-
|
|
46
|
+
position: absolute;
|
|
47
|
+
bottom: 8px;
|
|
36
48
|
left: 0;
|
|
37
49
|
right: 0;
|
|
38
50
|
text-align: center;
|
|
39
51
|
user-select: none;
|
|
52
|
+
pointer-events: none;
|
|
40
53
|
}
|
|
41
54
|
|
|
42
55
|
.dbx-file-upload-area-content {
|
|
@@ -5,6 +5,12 @@ $icon-to-avatar-size-ratio: 0.65;
|
|
|
5
5
|
|
|
6
6
|
// MARK: Mixin
|
|
7
7
|
@mixin core() {
|
|
8
|
+
/// @dbx-utility avatar-view
|
|
9
|
+
/// @intent fixed-size avatar surface — `<dbx-avatar-view>` body that shows a square 64px avatar (configurable via `--dbx-avatar-size`) and scales the inner `mat-icon` to 65% of that size
|
|
10
|
+
/// @role layout
|
|
11
|
+
/// @component DbxAvatarViewComponent
|
|
12
|
+
/// @scope component-class
|
|
13
|
+
/// @see-also avatar-small, avatar-large, avatar-view-circle, avatar-view-square
|
|
8
14
|
.dbx-avatar-view {
|
|
9
15
|
position: relative;
|
|
10
16
|
display: inline-flex;
|
|
@@ -25,6 +31,11 @@ $icon-to-avatar-size-ratio: 0.65;
|
|
|
25
31
|
display: none;
|
|
26
32
|
}
|
|
27
33
|
|
|
34
|
+
/// @dbx-utility avatar-small
|
|
35
|
+
/// @intent small avatar wrapper — overrides the inner `.dbx-avatar-view` size to 32px (configurable via `--dbx-avatar-small-size`)
|
|
36
|
+
/// @role layout
|
|
37
|
+
/// @parent avatar-view
|
|
38
|
+
/// @see-also avatar-view, avatar-large
|
|
28
39
|
.dbx-avatar-small .dbx-avatar-view {
|
|
29
40
|
width: var(#{theming.$dbx-avatar-small-size-var}, 32px);
|
|
30
41
|
height: var(#{theming.$dbx-avatar-small-size-var}, 32px);
|
|
@@ -36,6 +47,11 @@ $icon-to-avatar-size-ratio: 0.65;
|
|
|
36
47
|
}
|
|
37
48
|
}
|
|
38
49
|
|
|
50
|
+
/// @dbx-utility avatar-large
|
|
51
|
+
/// @intent large avatar wrapper — overrides the inner `.dbx-avatar-view` size to 128px (configurable via `--dbx-avatar-large-size`)
|
|
52
|
+
/// @role layout
|
|
53
|
+
/// @parent avatar-view
|
|
54
|
+
/// @see-also avatar-view, avatar-small
|
|
39
55
|
.dbx-avatar-large .dbx-avatar-view {
|
|
40
56
|
width: var(#{theming.$dbx-avatar-large-size-var}, 128px);
|
|
41
57
|
height: var(#{theming.$dbx-avatar-large-size-var}, 128px);
|
|
@@ -62,10 +78,20 @@ $icon-to-avatar-size-ratio: 0.65;
|
|
|
62
78
|
height: 100%;
|
|
63
79
|
}
|
|
64
80
|
|
|
81
|
+
/// @dbx-utility avatar-view-circle
|
|
82
|
+
/// @intent circle modifier for `.dbx-avatar-view` — `border-radius: 50%`
|
|
83
|
+
/// @role layout
|
|
84
|
+
/// @parent avatar-view
|
|
85
|
+
/// @see-also avatar-view, avatar-view-square
|
|
65
86
|
.dbx-avatar-view-circle {
|
|
66
87
|
border-radius: 50%;
|
|
67
88
|
}
|
|
68
89
|
|
|
90
|
+
/// @dbx-utility avatar-view-square
|
|
91
|
+
/// @intent rounded-square modifier for `.dbx-avatar-view` — uses `--mat-sys-corner-medium` (override via `--dbx-avatar-square-container-shape`)
|
|
92
|
+
/// @role layout
|
|
93
|
+
/// @parent avatar-view
|
|
94
|
+
/// @see-also avatar-view, avatar-view-circle
|
|
69
95
|
.dbx-avatar-view-square {
|
|
70
96
|
border-radius: var(--dbx-avatar-square-container-shape, var(--mat-sys-corner-medium));
|
|
71
97
|
}
|
package/lib/layout/bar/_bar.scss
CHANGED
|
@@ -19,6 +19,10 @@ $bar-fixed-height: 40px;
|
|
|
19
19
|
max-height: $content-navbar-height;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/// @dbx-utility bar
|
|
23
|
+
/// @intent compact horizontal bar — centered flex row with body-small typography (used for status/info strips)
|
|
24
|
+
/// @role layout
|
|
25
|
+
/// @see-also dbx-bar-background, dbx-bar-fixed-height, dbx-flex-bar
|
|
22
26
|
.dbx-bar {
|
|
23
27
|
box-sizing: border-box;
|
|
24
28
|
padding: $bar-vertical-padding;
|
|
@@ -32,11 +36,19 @@ $bar-fixed-height: 40px;
|
|
|
32
36
|
color: var(--mat-sys-on-surface);
|
|
33
37
|
}
|
|
34
38
|
|
|
39
|
+
/// @dbx-utility bar-background
|
|
40
|
+
/// @intent paint a `.dbx-bar` with the `--mat-sys-surface-container` background
|
|
41
|
+
/// @role layout
|
|
42
|
+
/// @see-also dbx-bar
|
|
35
43
|
.dbx-bar-background {
|
|
36
44
|
background: var(--mat-sys-surface-container);
|
|
37
45
|
color: var(--mat-sys-on-surface);
|
|
38
46
|
}
|
|
39
47
|
|
|
48
|
+
/// @dbx-utility bar-fixed-height
|
|
49
|
+
/// @intent pin a `.dbx-bar` to a fixed 40px height with overflow clipped
|
|
50
|
+
/// @role layout
|
|
51
|
+
/// @see-also dbx-bar
|
|
40
52
|
.dbx-bar-fixed-height {
|
|
41
53
|
height: $bar-fixed-height;
|
|
42
54
|
overflow: hidden;
|
|
@@ -46,21 +58,36 @@ $bar-fixed-height: 40px;
|
|
|
46
58
|
// Color classes applied by DbxPagebarComponent based on the color input.
|
|
47
59
|
// Uses Material toolbar CSS tokens for background and text color.
|
|
48
60
|
// Background uses color-mix with surface-container for consistent dark-mode contrast.
|
|
61
|
+
/// @dbx-utility bar-primary
|
|
62
|
+
/// @intent paint a `mat-toolbar`/`.dbx-pagebar` with the `--dbx-primary-color` palette via Material's toolbar tokens
|
|
63
|
+
/// @role layout
|
|
64
|
+
/// @see-also dbx-bar-accent, dbx-bar-warn
|
|
49
65
|
.dbx-bar-primary {
|
|
50
66
|
--mat-toolbar-container-background-color: var(--dbx-primary-color);
|
|
51
67
|
--mat-toolbar-container-text-color: var(--dbx-primary-color-contrast);
|
|
52
68
|
}
|
|
53
69
|
|
|
70
|
+
/// @dbx-utility bar-accent
|
|
71
|
+
/// @intent paint a `mat-toolbar`/`.dbx-pagebar` with the `--dbx-accent-color` palette via Material's toolbar tokens
|
|
72
|
+
/// @role layout
|
|
73
|
+
/// @see-also dbx-bar-primary, dbx-bar-warn
|
|
54
74
|
.dbx-bar-accent {
|
|
55
75
|
--mat-toolbar-container-background-color: var(--dbx-accent-color);
|
|
56
76
|
--mat-toolbar-container-text-color: var(--dbx-accent-color-contrast);
|
|
57
77
|
}
|
|
58
78
|
|
|
79
|
+
/// @dbx-utility bar-warn
|
|
80
|
+
/// @intent paint a `mat-toolbar`/`.dbx-pagebar` with the `--dbx-warn-color` palette via Material's toolbar tokens
|
|
81
|
+
/// @role layout
|
|
82
|
+
/// @see-also dbx-bar-primary, dbx-bar-accent
|
|
59
83
|
.dbx-bar-warn {
|
|
60
84
|
--mat-toolbar-container-background-color: var(--dbx-warn-color);
|
|
61
85
|
--mat-toolbar-container-text-color: var(--dbx-warn-color-contrast);
|
|
62
86
|
}
|
|
63
87
|
|
|
88
|
+
/// @dbx-utility pagebar-hide
|
|
89
|
+
/// @intent hide the direct-child `.dbx-pagebar` and reset the `--dbx-pagebar-height` layout token to `0px` so child sidenav heights recalculate (nested sidenav pagebars are restored)
|
|
90
|
+
/// @role state
|
|
64
91
|
.dbx-pagebar-hide {
|
|
65
92
|
// Reset pagebar height for layout calculations (page height = app height - navbar height)
|
|
66
93
|
#{$pagebar-height-var}: 0px;
|
|
@@ -10,6 +10,10 @@ $two-block-top-height-var: --dbx-two-block-top-height;
|
|
|
10
10
|
height: 100%;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
/// @dbx-utility two-block-content
|
|
14
|
+
/// @intent two-block stack content area — fixed-height region whose `.dbx-two-block-bottom` child fills the remaining height after a 50px (default) `.dbx-two-block-top`. Override the top height via `--dbx-two-block-top-height`.
|
|
15
|
+
/// @role layout
|
|
16
|
+
/// @see-also two-column
|
|
13
17
|
.dbx-two-block-content {
|
|
14
18
|
height: 100%;
|
|
15
19
|
#{$two-block-top-height-var}: $two-block-top-height-init-height;
|
|
@@ -8,6 +8,9 @@ $two-columns-right-padding-size: 6px;
|
|
|
8
8
|
|
|
9
9
|
// MARK: Mixin
|
|
10
10
|
@mixin core() {
|
|
11
|
+
/// @dbx-utility two-column
|
|
12
|
+
/// @intent two-column page layout — fixed-width left column with elevated right content area
|
|
13
|
+
/// @role layout
|
|
11
14
|
.dbx-two-column {
|
|
12
15
|
height: 100%;
|
|
13
16
|
max-width: 100%;
|
|
@@ -24,15 +24,27 @@ $dbx-content-pit-floating-button-margin: 8px;
|
|
|
24
24
|
$dbx-border-opacity-default: 20%;
|
|
25
25
|
|
|
26
26
|
@mixin core() {
|
|
27
|
+
/// @dbx-utility content-border
|
|
28
|
+
/// @intent dashed-border content frame — pads the inner content and draws a 3px dashed border via `--dbx-border-color` / `--dbx-border-opacity`
|
|
29
|
+
/// @role layout
|
|
30
|
+
/// @see-also dbx-content-elevate, dbx-content-pit
|
|
27
31
|
.dbx-content-border {
|
|
28
32
|
padding: $content-border-inner-padding;
|
|
29
33
|
}
|
|
30
34
|
|
|
35
|
+
/// @dbx-utility content-elevate
|
|
36
|
+
/// @intent padded content surface lifted with elevation 2 — combines inner padding with a Material elevation shadow
|
|
37
|
+
/// @role layout
|
|
38
|
+
/// @see-also dbx-content-border, dbx-content-pit
|
|
31
39
|
.dbx-content-elevate {
|
|
32
40
|
padding: $content-border-inner-padding;
|
|
33
41
|
@include theming.elevation(2);
|
|
34
42
|
}
|
|
35
43
|
|
|
44
|
+
/// @dbx-utility content-box
|
|
45
|
+
/// @intent centered box — auto-margined max-width content surface with a `padding-4` inset and `2vh` bottom margin (compose with `.dbx-content-box-wide` to remove the max-width)
|
|
46
|
+
/// @role layout
|
|
47
|
+
/// @see-also dbx-content-container, dbx-prompt-box
|
|
36
48
|
.dbx-content-box {
|
|
37
49
|
margin: auto;
|
|
38
50
|
padding: $box-padding;
|
|
@@ -44,10 +56,19 @@ $dbx-border-opacity-default: 20%;
|
|
|
44
56
|
}
|
|
45
57
|
}
|
|
46
58
|
|
|
59
|
+
/// @dbx-utility content-pit
|
|
60
|
+
/// @intent recessed surface pit — `--mat-sys-surface-container` background with a `padding-4` inset, used to visually nest content (e.g. logs, JSON, quoted blocks)
|
|
61
|
+
/// @role layout
|
|
62
|
+
/// @see-also dbx-content-pit-rounded, dbx-content-pit-scrollable, dbx-content-border, dbx-content-elevate
|
|
47
63
|
.dbx-content-pit {
|
|
48
64
|
padding: $pit-padding;
|
|
49
65
|
}
|
|
50
66
|
|
|
67
|
+
/// @dbx-utility content-pit-rounded
|
|
68
|
+
/// @intent rounded modifier for `.dbx-content-pit` — applies the `theming.$dbx-content-pit-rounded-border-radius` corner radius
|
|
69
|
+
/// @role layout
|
|
70
|
+
/// @parent content-pit
|
|
71
|
+
/// @see-also dbx-content-pit
|
|
51
72
|
.dbx-content-pit-rounded {
|
|
52
73
|
border-radius: theming.$dbx-content-pit-rounded-border-radius;
|
|
53
74
|
}
|
|
@@ -56,6 +77,11 @@ $dbx-border-opacity-default: 20%;
|
|
|
56
77
|
opacity: 0.66; // increase opacity slightly to make it easier to read against background
|
|
57
78
|
}
|
|
58
79
|
|
|
80
|
+
/// @dbx-utility content-pit-scrollable
|
|
81
|
+
/// @intent scrollable modifier for `.dbx-content-pit` — caps height at `theming.$dbx-content-pit-scrollable-max-height` and forces `overflow-y: scroll` for long inner content
|
|
82
|
+
/// @role layout
|
|
83
|
+
/// @parent content-pit
|
|
84
|
+
/// @see-also dbx-content-pit
|
|
59
85
|
.dbx-content-pit-scrollable {
|
|
60
86
|
max-height: theming.$dbx-content-pit-scrollable-max-height;
|
|
61
87
|
max-width: 100%;
|
|
@@ -103,6 +129,9 @@ $dbx-border-opacity-default: 20%;
|
|
|
103
129
|
padding: 0 2px; // Override padding
|
|
104
130
|
}
|
|
105
131
|
|
|
132
|
+
/// @dbx-utility content-container
|
|
133
|
+
/// @intent centered, padded content container with width-class and padding-class modifiers
|
|
134
|
+
/// @role layout
|
|
106
135
|
.dbx-content-container {
|
|
107
136
|
margin: auto;
|
|
108
137
|
padding: 0 $content-container-padding;
|
|
@@ -6,6 +6,10 @@ $dbx-flex-group-columns-count: 6;
|
|
|
6
6
|
|
|
7
7
|
// MARK: Mixin
|
|
8
8
|
@mixin core() {
|
|
9
|
+
/// @dbx-utility flex-bar
|
|
10
|
+
/// @intent horizontal action bar — flex row that scrolls horizontally before wrapping
|
|
11
|
+
/// @role flex
|
|
12
|
+
/// @see-also dbx-flex-center, dbx-flex-fill
|
|
9
13
|
.dbx-flex-bar {
|
|
10
14
|
display: flex;
|
|
11
15
|
align-items: center;
|
|
@@ -23,17 +27,50 @@ $dbx-flex-group-columns-count: 6;
|
|
|
23
27
|
--mat-fab-small-touch-target-size: 40px;
|
|
24
28
|
}
|
|
25
29
|
|
|
30
|
+
/// @dbx-utility flex-center
|
|
31
|
+
/// @intent center children both axes via flex
|
|
32
|
+
/// @role flex
|
|
33
|
+
/// @see-also dbx-flex-bar, dbx-flex-column
|
|
26
34
|
.dbx-flex-center {
|
|
27
35
|
display: flex;
|
|
28
36
|
align-items: center;
|
|
29
37
|
justify-content: center;
|
|
30
38
|
}
|
|
31
39
|
|
|
40
|
+
/// @dbx-utility flex-column
|
|
41
|
+
/// @intent vertical flex stack — children laid out top-to-bottom
|
|
42
|
+
/// @role flex
|
|
43
|
+
/// @see-also dbx-flex-bar
|
|
32
44
|
.dbx-flex-column {
|
|
33
45
|
display: flex;
|
|
34
46
|
flex-direction: column;
|
|
35
47
|
}
|
|
36
48
|
|
|
49
|
+
/// @dbx-utility flex-fill
|
|
50
|
+
/// @intent fill remaining space inside a flex container
|
|
51
|
+
/// @role flex
|
|
52
|
+
/// @see-also dbx-flex-fill-0
|
|
53
|
+
/// @anti-use Use dbx-flex-fill-0 when the fill child must also truncate or otherwise shrink below its intrinsic width.
|
|
54
|
+
.dbx-flex-fill {
|
|
55
|
+
flex: 1;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/// @dbx-utility flex-fill-0
|
|
59
|
+
/// @intent fill remaining flex space and allow the child to truncate (`min-width: 0` overrides the default flex-item `min-width: auto`)
|
|
60
|
+
/// @role flex
|
|
61
|
+
/// @see-also dbx-flex-fill, dbx-text-truncate
|
|
62
|
+
// `min-width: 0` lets the flex item shrink below its content's intrinsic
|
|
63
|
+
// width — required for child truncation (e.g. `.dbx-text-truncate`) to
|
|
64
|
+
// actually clip inside the fill region.
|
|
65
|
+
.dbx-flex-fill-0 {
|
|
66
|
+
flex: 1;
|
|
67
|
+
min-width: 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/// @dbx-utility flex-group
|
|
71
|
+
/// @intent responsive flex grid — children opt into widths via .dbx-flex-1 ... .dbx-flex-6
|
|
72
|
+
/// @role flex
|
|
73
|
+
/// @see-also dbx-flex-bar
|
|
37
74
|
.dbx-flex-group {
|
|
38
75
|
display: flex;
|
|
39
76
|
flex-wrap: wrap;
|