@acontplus/ng-components 2.1.29 → 2.1.31

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 (54) hide show
  1. package/fesm2022/acontplus-ng-components.mjs +5713 -3552
  2. package/fesm2022/acontplus-ng-components.mjs.map +1 -1
  3. package/package.json +21 -20
  4. package/src/_index.scss +22 -0
  5. package/src/core/color/_all-color.scss +16 -0
  6. package/src/core/density/_all-density.scss +38 -0
  7. package/src/core/style/_elevation.scss +207 -0
  8. package/src/core/theming/_all-theme.scss +50 -0
  9. package/src/core/theming/_config-validation.scss +171 -0
  10. package/src/core/theming/_definition.scss +158 -0
  11. package/src/core/theming/_palettes.scss +1060 -0
  12. package/src/core/tokens/_m3-tokens.scss +141 -0
  13. package/src/core/tokens/_m3-utils.scss +36 -0
  14. package/src/core/tokens/_system.scss +395 -0
  15. package/src/core/tokens/_token-utils.scss +117 -0
  16. package/src/core/tokens/m3/_index.scss +7 -0
  17. package/src/core/tokens/m3/_md-sys-color.scss +150 -0
  18. package/src/core/tokens/m3/_md-sys-elevation.scss +8 -0
  19. package/src/core/tokens/m3/_md-sys-motion.scss +35 -0
  20. package/src/core/tokens/m3/_md-sys-shape.scss +31 -0
  21. package/src/core/tokens/m3/_md-sys-state.scss +13 -0
  22. package/src/core/tokens/m3/_md-sys-typescale.scss +131 -0
  23. package/src/core/tokens/m3/_theme.scss +41 -0
  24. package/src/core/typography/_all-typography.scss +34 -0
  25. package/src/lib/components/alert/_alert-theme.scss +57 -0
  26. package/src/lib/components/alert/_m3-alert.scss +72 -0
  27. package/src/lib/components/alert/alert.scss +60 -0
  28. package/src/lib/components/autocomplete-wrapper/autocomplete-wrapper.scss +667 -0
  29. package/src/lib/components/button/button.scss +297 -0
  30. package/src/lib/components/cards/dynamic-card/dynamic-card.scss +131 -0
  31. package/src/lib/components/data-grid/_grid-theme.scss +53 -0
  32. package/src/lib/components/data-grid/_m3-grid.scss +34 -0
  33. package/src/lib/components/data-grid/cell/cell.scss +38 -0
  34. package/src/lib/components/data-grid/column-menu/column-menu.scss +117 -0
  35. package/src/lib/components/data-grid/column-resize/_column-resize.scss +126 -0
  36. package/src/lib/components/data-grid/grid.scss +245 -0
  37. package/src/lib/components/date-range-input/calendar/date-range-calendar.scss +29 -0
  38. package/src/lib/components/date-range-input/date-range-input.scss +194 -0
  39. package/src/lib/components/dialog-wrapper/dialog-wrapper.scss +36 -0
  40. package/src/lib/components/drawer/_drawer-theme.scss +57 -0
  41. package/src/lib/components/drawer/_m3-drawer.scss +24 -0
  42. package/src/lib/components/drawer/drawer-container.scss +97 -0
  43. package/src/lib/components/icons/svg-icon/svg-icon.scss +16 -0
  44. package/src/lib/components/icons/user-icon/user-icon.scss +0 -0
  45. package/src/lib/components/input-chip/input-chip.scss +0 -0
  46. package/src/lib/components/popover/_m3-popover.scss +24 -0
  47. package/src/lib/components/popover/_popover-theme.scss +57 -0
  48. package/src/lib/components/popover/popover.scss +239 -0
  49. package/src/lib/components/spinner/spinner.scss +6 -0
  50. package/src/lib/components/tables/tabulator-table/tabulator-table.scss +68 -0
  51. package/src/lib/components/theme-toggle/theme-toggle.scss +3 -0
  52. package/src/lib/styles/_elevation.scss +168 -0
  53. package/src/lib/styles/_token-utils.scss +115 -0
  54. package/types/acontplus-ng-components.d.ts +920 -536
@@ -0,0 +1,126 @@
1
+ @use 'sass:map';
2
+ @use '@angular/material' as mat;
3
+ @use './../../../../core/tokens/token-utils';
4
+ @use './../m3-grid';
5
+
6
+ $fallbacks: m3-grid.get-tokens();
7
+
8
+ // Required for resizing to work properly.
9
+ .mat-column-resize-table.cdk-column-resize-with-resized-column {
10
+ table-layout: fixed;
11
+ }
12
+
13
+ .mat-column-resize-flex {
14
+ .mat-mdc-header-cell,
15
+ .mat-mdc-cell {
16
+ box-sizing: border-box;
17
+ min-width: 32px;
18
+ }
19
+ }
20
+
21
+ .mat-mdc-header-cell {
22
+ position: relative;
23
+ }
24
+
25
+ .mat-resizable {
26
+ box-sizing: border-box;
27
+ }
28
+
29
+ .mat-mdc-header-cell:not(.mat-resizable)::after,
30
+ .mat-resizable-handle {
31
+ position: absolute;
32
+ bottom: 0;
33
+ top: 0;
34
+ right: 0;
35
+ width: 1px;
36
+ background: transparent;
37
+ transition: background mat.$private-swift-ease-in-duration
38
+ mat.$private-swift-ease-in-timing-function;
39
+ }
40
+
41
+ .mat-mdc-header-cell:not(.mat-resizable)::after {
42
+ content: '';
43
+ }
44
+
45
+ [dir='rtl'] {
46
+ .mat-mdc-header-cell:not(.mat-resizable)::after,
47
+ .mat-resizable-handle {
48
+ left: 0;
49
+ right: auto;
50
+ }
51
+
52
+ .mat-mdc-header-row.cdk-column-resize-hover-or-active {
53
+ .mat-header-cell,
54
+ .mat-mdc-header-cell {
55
+ border-left: none;
56
+ }
57
+ }
58
+ }
59
+
60
+ .mat-mdc-header-row.cdk-column-resize-hover-or-active {
61
+ .mat-mdc-header-cell {
62
+ border-right: none;
63
+ }
64
+
65
+ .mat-mdc-header-cell:not(.mat-resizable)::after {
66
+ background-color: token-utils.slot(grid-resizable-handle-disabled-background-color, $fallbacks);
67
+ }
68
+
69
+ .mat-resizable-handle {
70
+ background-color: token-utils.slot(grid-resizable-handle-hover-background-color, $fallbacks);
71
+ }
72
+ }
73
+
74
+ .mat-resizable.cdk-resizable-overlay-thumb-active > .mat-resizable-handle {
75
+ opacity: 0;
76
+ transition: none;
77
+ }
78
+
79
+ .mat-resizable-handle:focus,
80
+ .mat-mdc-header-row.cdk-column-resize-hover-or-active .mat-resizable-handle:focus {
81
+ outline: none;
82
+ background-color: token-utils.slot(grid-resizable-handle-active-background-color, $fallbacks);
83
+ }
84
+
85
+ .mat-column-resize-overlay-thumb {
86
+ background: transparent;
87
+ cursor: col-resize;
88
+ width: 100%;
89
+ height: 100%;
90
+ transition: background mat.$private-swift-ease-in-duration
91
+ mat.$private-swift-ease-in-timing-function;
92
+
93
+ @include mat.private-user-select(none);
94
+
95
+ &:active {
96
+ will-change: transform;
97
+
98
+ $bg-color: token-utils.slot(grid-resizable-handle-active-background-color, $fallbacks);
99
+
100
+ background: linear-gradient(
101
+ 90deg,
102
+ transparent,
103
+ transparent 7px,
104
+ $bg-color 7px,
105
+ $bg-color 9px,
106
+ transparent 9px,
107
+ transparent
108
+ );
109
+
110
+ .mat-column-resize-overlay-thumb-top {
111
+ background: linear-gradient(
112
+ 90deg,
113
+ transparent,
114
+ transparent 4px,
115
+ $bg-color 4px,
116
+ $bg-color 12px,
117
+ transparent 12px,
118
+ transparent
119
+ );
120
+ }
121
+ }
122
+ }
123
+
124
+ .mat-column-resize-overlay-thumb-top {
125
+ width: 100%;
126
+ }
@@ -0,0 +1,245 @@
1
+ @use './../../../core/tokens/token-utils';
2
+ @use './m3-grid';
3
+ @use './column-resize/column-resize';
4
+
5
+ $fallbacks: m3-grid.get-tokens();
6
+
7
+ .acp-grid {
8
+ position: relative;
9
+ display: flex;
10
+ flex-direction: column;
11
+ width: 100%;
12
+ overflow: hidden;
13
+ border: 1px solid token-utils.slot(grid-outline-color, $fallbacks);
14
+ border-radius: token-utils.slot(grid-container-shape, $fallbacks);
15
+
16
+ .mat-mdc-table {
17
+ --mat-table-row-item-outline-color: #{token-utils.slot(grid-outline-color, $fallbacks)};
18
+
19
+ &.mat-table-striped .mat-row-odd {
20
+ background-color: token-utils.slot(grid-table-row-striped-background-color, $fallbacks);
21
+ }
22
+
23
+ &.mat-table-hover {
24
+ .mat-mdc-row:hover {
25
+ background-color: token-utils.slot(grid-table-row-hover-background-color, $fallbacks);
26
+ }
27
+
28
+ .mat-mdc-row.selected:hover {
29
+ background-color: token-utils.slot(
30
+ grid-table-row-selected-hover-background-color,
31
+ $fallbacks
32
+ );
33
+ }
34
+ }
35
+
36
+ .mat-mdc-row.selected {
37
+ background-color: token-utils.slot(grid-table-row-selected-background-color, $fallbacks);
38
+ }
39
+
40
+ .mat-mdc-cell.selected {
41
+ box-shadow: inset 0 0 0 1px
42
+ token-utils.slot(grid-table-cell-selected-outline-color, $fallbacks);
43
+ }
44
+ }
45
+
46
+ .mat-table-container {
47
+ overflow: auto;
48
+
49
+ &.mat-table-with-data {
50
+ flex: 1;
51
+ }
52
+ }
53
+
54
+ .mat-mdc-table:not(.mat-column-resize-table) {
55
+ min-width: 100%;
56
+ border-collapse: separate;
57
+
58
+ .mat-mdc-header-cell,
59
+ .mat-mdc-footer-cell,
60
+ .mat-mdc-cell {
61
+ &:not(.acp-grid-checkbox-cell) {
62
+ min-width: token-utils.slot(grid-table-cell-min-width, $fallbacks);
63
+ }
64
+ }
65
+ }
66
+
67
+ .mat-table-sticky-left {
68
+ border-right: 1px solid var(--mat-table-row-item-outline-color);
69
+
70
+ [dir='rtl'] & {
71
+ border-right-width: 0;
72
+ border-left: 1px solid var(--mat-table-row-item-outline-color);
73
+ }
74
+ }
75
+
76
+ .mat-table-sticky-right {
77
+ border-left: 1px solid var(--mat-table-row-item-outline-color);
78
+
79
+ [dir='rtl'] & {
80
+ border-left-width: 0;
81
+ border-right: 1px solid var(--mat-table-row-item-outline-color);
82
+ }
83
+ }
84
+
85
+ .mat-mdc-footer-cell {
86
+ border-top: 1px solid var(--mat-table-row-item-outline-color);
87
+ background-color: token-utils.slot(grid-table-footer-background-color, $fallbacks);
88
+ }
89
+
90
+ .mat-mdc-row.acp-grid-expansion {
91
+ height: 0;
92
+ overflow: hidden;
93
+
94
+ .mat-mdc-cell {
95
+ padding-top: 0;
96
+ padding-bottom: 0;
97
+ }
98
+
99
+ &.collapsed .mat-mdc-cell {
100
+ border-bottom-width: 0;
101
+ }
102
+ }
103
+
104
+ .mat-sort-header-icon {
105
+ margin-left: 4px;
106
+
107
+ [dir='rtl'] & {
108
+ margin-left: 0;
109
+ margin-right: 4px;
110
+ }
111
+ }
112
+
113
+ .mat-header-cell-inner {
114
+ display: inline-flex;
115
+ align-items: center;
116
+ vertical-align: middle;
117
+ }
118
+
119
+ .mat-mdc-paginator {
120
+ border-top: 1px solid token-utils.slot(grid-outline-color, $fallbacks);
121
+ border-bottom-left-radius: token-utils.slot(grid-container-shape, $fallbacks);
122
+ border-bottom-right-radius: token-utils.slot(grid-container-shape, $fallbacks);
123
+ }
124
+
125
+ .mat-paginator-hidden {
126
+ display: none;
127
+ }
128
+
129
+ .acp-grid-checkbox-cell {
130
+ width: 60px;
131
+ min-width: 60px;
132
+ padding: 0 calc((60px - var(--mat-checkbox-state-layer-size, 40px)) / 2);
133
+ }
134
+ }
135
+
136
+ .acp-grid-progress {
137
+ position: absolute;
138
+ top: 0;
139
+ z-index: 120;
140
+ width: 100%;
141
+ }
142
+
143
+ .acp-grid-toolbar {
144
+ display: flex;
145
+ justify-content: space-between;
146
+ align-items: center;
147
+ min-height: var(--mat-table-header-container-height, 56px);
148
+ padding: 8px;
149
+ box-sizing: border-box;
150
+ border-bottom: 1px solid token-utils.slot(grid-outline-color, $fallbacks);
151
+ }
152
+
153
+ .acp-grid-toolbar-content {
154
+ flex: 1;
155
+ width: 0;
156
+ padding: 0 8px;
157
+ }
158
+
159
+ .acp-grid-layout {
160
+ display: flex;
161
+ flex: 1 1 auto;
162
+ overflow: auto;
163
+ }
164
+
165
+ .acp-grid-content {
166
+ flex-direction: column;
167
+ width: 0;
168
+ }
169
+
170
+ .acp-grid-sidebar {
171
+ max-width: 50%;
172
+ border-left: 1px solid token-utils.slot(grid-outline-color, $fallbacks);
173
+
174
+ [dir='rtl'] & {
175
+ border-left-width: 0;
176
+ border-right: 1px solid token-utils.slot(grid-outline-color, $fallbacks);
177
+ }
178
+ }
179
+
180
+ .acp-grid-footer {
181
+ position: relative;
182
+ z-index: 1;
183
+ }
184
+
185
+ .acp-grid-statusbar {
186
+ display: flex;
187
+ align-items: center;
188
+ min-height: var(--mat-table-header-container-height, 56px);
189
+ padding: 8px;
190
+ box-sizing: border-box;
191
+ border-top: 1px solid token-utils.slot(grid-outline-color, $fallbacks);
192
+ }
193
+
194
+ .acp-grid-no-result {
195
+ display: flex;
196
+ justify-content: center;
197
+ align-items: center;
198
+ flex: 1;
199
+ min-height: 150px;
200
+ }
201
+
202
+ .acp-grid-expansion-placeholder {
203
+ display: inline-block;
204
+ vertical-align: middle;
205
+ width: var(
206
+ --mat-icon-button-state-layer-size,
207
+ token-utils.slot(grid-row-expand-button-size, $fallbacks)
208
+ );
209
+ height: var(
210
+ --mat-icon-button-state-layer-size,
211
+ token-utils.slot(grid-row-expand-button-size, $fallbacks)
212
+ );
213
+ }
214
+
215
+ .acp-grid-expansion-detail-wrapper {
216
+ display: grid;
217
+ grid-template-rows: 0fr;
218
+ grid-template-columns: 100%;
219
+ padding: 0;
220
+ overflow: hidden;
221
+
222
+ .acp-grid-expansion.expanded & {
223
+ grid-template-rows: 1fr;
224
+ padding: calc((var(--mat-table-row-item-container-height, 52px) - 20px) / 2) 0;
225
+ }
226
+ }
227
+
228
+ .acp-grid-expansion-detail {
229
+ min-height: 0;
230
+ }
231
+
232
+ .acp-grid-animations-enabled .acp-grid-expansion-detail-wrapper {
233
+ transition: all 225ms cubic-bezier(0.4, 0, 0.2, 1);
234
+ }
235
+
236
+ .acp-grid-row-expand-button {
237
+ &.expanded .acp-grid-row-expand-icon {
238
+ transform: rotate(90deg);
239
+ }
240
+
241
+ &.mat-mdc-icon-button,
242
+ + acp-grid-cell {
243
+ vertical-align: middle;
244
+ }
245
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * AcpDateRangeCalendar Component Styles
3
+ *
4
+ * Styling for the dual-calendar view with responsive layout.
5
+ * @author AcontPlus S.A.S
6
+ * @version 2.0.0
7
+ */
8
+ .mat-calendar {
9
+ min-width: 250px;
10
+ }
11
+
12
+ .calendar-container {
13
+ width: 100%;
14
+ display: flex;
15
+ }
16
+
17
+ .first-view,
18
+ .second-view {
19
+ flex: 1 1 50%;
20
+ min-width: 0; /* allow each calendar to shrink within its half */
21
+ margin-top: 0.5rem;
22
+ }
23
+
24
+ @media (max-width: 490px) {
25
+ /* Stack the two calendar views; align-items: stretch makes each full width. */
26
+ .calendar-container {
27
+ flex-direction: column;
28
+ }
29
+ }
@@ -0,0 +1,194 @@
1
+ /**
2
+ * AcpDateRangeInput Component Styles
3
+ * @author AcontPlus S.A.S
4
+ * @version 1.0.0
5
+ *
6
+ * Styling for the comprehensive date range picker component.
7
+ * Uses Material Design 3 theming system with CSS custom properties.
8
+ */
9
+
10
+ @use '@angular/material' as mat;
11
+
12
+ // Disable Backdrop css
13
+ ::ng-deep.cdk-overlay-dark-backdrop {
14
+ background: none;
15
+ }
16
+
17
+ mat-list-item.mat-mdc-list-item {
18
+ height: 40px;
19
+ }
20
+
21
+ // Make the selected (activated) option clearly visible - the M3 theme leaves
22
+ // the activated state of an action-list item unstyled. Consumers can override
23
+ // via the --ndp-selected-option-bg custom property.
24
+ mat-list-item.mdc-list-item--activated {
25
+ background-color: var(
26
+ --ndp-selected-option-bg,
27
+ var(--mat-sys-secondary-container, rgba(0, 0, 0, 0.08))
28
+ );
29
+ }
30
+
31
+ ::ng-deep.cdk-overlay-pane:has(.custom-ckd-container),
32
+ ::ng-deep.cdk-overlay-pane:has(.ndp-cdk-container) {
33
+ width: 100%;
34
+ background-color: var(--mat-sys-surface-container);
35
+ max-height: 100vh;
36
+ overflow-y: auto;
37
+ overflow-x: hidden;
38
+ max-width: 700px;
39
+ margin-top: -22px;
40
+ border: 1px solid var(--mat-sys-surface-container);
41
+ }
42
+
43
+ ::ng-deep.cdk-overlay-pane:has(.range-input) {
44
+ max-width: 250px;
45
+ }
46
+
47
+ .br-top {
48
+ border-top: 1px solid var(--mat-sys-surface-container);
49
+ }
50
+
51
+ .br-right {
52
+ border-right: 1px solid var(--mat-sys-surface-container);
53
+ }
54
+
55
+ .disabled {
56
+ pointer-events: none;
57
+ opacity: 0.5;
58
+ }
59
+
60
+ .mat-button,
61
+ .mdc-button {
62
+ font-family: var(--mat-list-list-item-label-text-font);
63
+ line-height: var(--mat-list-list-item-label-text-line-height);
64
+ font-size: var(--mat-list-list-item-label-text-size);
65
+ font-weight: var(--mat-list-list-item-label-text-weight);
66
+ letter-spacing: var(--mat-list-list-item-label-text-tracking);
67
+ }
68
+
69
+ .w-full {
70
+ width: 100%;
71
+ }
72
+
73
+ .display-hidden {
74
+ display: none;
75
+ }
76
+
77
+ .custom-calendar-container,
78
+ .ndp-calendar-container {
79
+ width: 100%;
80
+ }
81
+
82
+ .row-1,
83
+ .row-2 {
84
+ width: 100%;
85
+ box-sizing: border-box;
86
+ }
87
+
88
+ // Flex layout lets the divider between the columns stretch to the row's
89
+ // full height automatically (align-items: stretch), so differing column
90
+ // heights never leave a gap.
91
+ .row-1 {
92
+ display: flex;
93
+ align-items: stretch;
94
+ }
95
+
96
+ .row-2 {
97
+ padding: 16px;
98
+ }
99
+
100
+ // Full-height divider between the options column and the calendar.
101
+ // As a flex child it stretches to the row height with no positioning hacks.
102
+ .ndp-column-separator {
103
+ flex: 0 0 1px;
104
+ background-color: var(--mat-sys-surface-container);
105
+ }
106
+
107
+ .footer-content,
108
+ .ndp-footer-content {
109
+ align-items: center;
110
+ display: flex;
111
+ text-align: right;
112
+ justify-content: end;
113
+ gap: 16px; // Gap between label and buttons
114
+ text-overflow: ellipsis;
115
+
116
+ .buttons {
117
+ display: flex;
118
+ gap: 8px; // Gap between buttons
119
+ }
120
+ }
121
+
122
+ // Editable start/end inputs shown in the footer when enableEditableDates is on.
123
+ .ndp-date-inputs {
124
+ display: flex;
125
+ gap: 8px;
126
+ margin-right: auto; // keep the inputs left, push the buttons to the right
127
+ align-items: flex-start; // don't stretch one field to match the other's error height
128
+ }
129
+
130
+ .ndp-date-field {
131
+ width: 150px;
132
+ }
133
+
134
+ .column-1 {
135
+ flex: 0 0 25%;
136
+ overflow: auto;
137
+ }
138
+
139
+ .column-2 {
140
+ flex: 1 1 auto;
141
+ min-width: 0; // allow the calendar column to shrink below its content size
142
+ }
143
+
144
+ // When default options are hidden, column-1 and the separator aren't
145
+ // rendered, so column-2's `flex: 1 1 auto` fills the row on its own.
146
+ .without-default-opt {
147
+ .column-1 {
148
+ display: none;
149
+ }
150
+ }
151
+
152
+ @media (max-width: 400px) {
153
+ .footer-content,
154
+ .ndp-footer-content {
155
+ display: block;
156
+
157
+ .buttons {
158
+ justify-content: flex-end;
159
+ margin-top: 20px;
160
+ }
161
+ }
162
+
163
+ #range-label-text {
164
+ margin-right: 1.5rem;
165
+ }
166
+ }
167
+
168
+ @media (max-width: 650px) {
169
+ // Stack the columns; align-items: stretch then makes each full width.
170
+ .row-1 {
171
+ flex-direction: column;
172
+ }
173
+
174
+ .column-1 {
175
+ flex-basis: auto;
176
+ }
177
+
178
+ .column-separator {
179
+ display: none;
180
+ }
181
+ }
182
+
183
+ .pe-0 {
184
+ padding-right: 0;
185
+ }
186
+
187
+ .ps-0 {
188
+ padding-left: 0;
189
+ }
190
+
191
+ button.checked {
192
+ color: var(--mat-sys-primary);
193
+ border-radius: 4px;
194
+ }
@@ -0,0 +1,36 @@
1
+ .acp-dialog-header {
2
+ cursor: move;
3
+ //padding: 12px 24px;
4
+ border-bottom: 1px solid var(--mat-sys-outline-variant, #dee2e6);
5
+ color: var(--mat-sys-on-surface, #212529);
6
+ position: relative;
7
+ }
8
+
9
+ h6[mat-dialog-title].acp-dialog-title {
10
+ display: flex;
11
+ align-items: center;
12
+ font-size: 1.2rem;
13
+ font-weight: 500;
14
+ margin: 0;
15
+ width: 100%;
16
+ padding-right: 48px;
17
+ }
18
+
19
+ .acp-dialog-title-icon {
20
+ margin-right: 12px;
21
+ vertical-align: middle;
22
+ }
23
+
24
+ h6[mat-dialog-title].acp-dialog-title span {
25
+ flex-grow: 1;
26
+ }
27
+
28
+ mat-dialog-content {
29
+ padding: 24px;
30
+ }
31
+
32
+ .acp-dialog-close-btn {
33
+ position: absolute;
34
+ top: 8px;
35
+ right: 16px;
36
+ }
@@ -0,0 +1,57 @@
1
+ @use 'sass:map';
2
+ @use '@angular/material' as mat;
3
+ @use './../../../core/tokens/token-utils';
4
+ @use './m3-drawer';
5
+
6
+ @mixin base($theme) {
7
+ $tokens: map.get(m3-drawer.get-tokens($theme), base);
8
+
9
+ @include token-utils.values($tokens);
10
+ }
11
+
12
+ @mixin color($theme) {
13
+ $tokens: map.get(m3-drawer.get-tokens($theme), color);
14
+
15
+ @include token-utils.values($tokens);
16
+ }
17
+
18
+ @mixin typography($theme) {
19
+ $tokens: map.get(m3-drawer.get-tokens($theme), typography);
20
+
21
+ @include token-utils.values($tokens);
22
+ }
23
+
24
+ @mixin density($theme) {
25
+ $tokens: map.get(m3-drawer.get-tokens($theme), density);
26
+
27
+ @include token-utils.values($tokens);
28
+ }
29
+
30
+ /// Defines the tokens that will be available in the `overrides` mixin and for docs extraction.
31
+ @function _define-overrides() {
32
+ @return ((namespace: drawer, tokens: token-utils.get-overrides(m3-drawer.get-tokens(), drawer)));
33
+ }
34
+
35
+ @mixin overrides($tokens: ()) {
36
+ @include token-utils.batch-create-token-values($tokens, _define-overrides()...);
37
+ }
38
+
39
+ @mixin theme($theme, $color-variant: null) {
40
+ @if mat.get-theme-version($theme) == 1 {
41
+ @include base($theme);
42
+ @include color($theme);
43
+ @include density($theme);
44
+ @include typography($theme);
45
+ } @else {
46
+ @include base($theme);
47
+ @if mat.theme-has($theme, color) {
48
+ @include color($theme);
49
+ }
50
+ @if mat.theme-has($theme, density) {
51
+ @include density($theme);
52
+ }
53
+ @if mat.theme-has($theme, typography) {
54
+ @include typography($theme);
55
+ }
56
+ }
57
+ }
@@ -0,0 +1,24 @@
1
+ @use 'sass:map';
2
+ @use './../../../core/style/elevation';
3
+ @use './../../../core/tokens/m3-utils';
4
+ @use './../../../core/tokens/m3';
5
+
6
+ /// Generates custom tokens for the mtx-drawer.
7
+ @function get-tokens($theme: m3.$sys-theme) {
8
+ $system: m3-utils.get-system($theme);
9
+
10
+ $tokens: (
11
+ base: (
12
+ drawer-container-shape: map.get($system, corner-large),
13
+ drawer-container-elevation-shadow: elevation.get-box-shadow(2),
14
+ ),
15
+ color: (
16
+ drawer-container-background-color: map.get($system, surface),
17
+ drawer-container-text-color: map.get($system, on-surface-variant),
18
+ ),
19
+ typography: (),
20
+ density: (),
21
+ );
22
+
23
+ @return $tokens;
24
+ }