@expressivecss/expressive 0.1.0-alpha.3

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 (105) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +82 -0
  3. package/dist/css/expressive.css +9914 -0
  4. package/dist/css/expressive.min.css +1 -0
  5. package/dist/js/components/autocomplete.d.ts +152 -0
  6. package/dist/js/components/buttons.d.ts +66 -0
  7. package/dist/js/components/cards.d.ts +50 -0
  8. package/dist/js/components/carousel.d.ts +131 -0
  9. package/dist/js/components/chips.d.ts +135 -0
  10. package/dist/js/components/collapsible.d.ts +74 -0
  11. package/dist/js/components/datepicker.d.ts +336 -0
  12. package/dist/js/components/dropdown.d.ts +148 -0
  13. package/dist/js/components/index.d.ts +21 -0
  14. package/dist/js/components/materialbox.d.ts +97 -0
  15. package/dist/js/components/modal.d.ts +45 -0
  16. package/dist/js/components/parallax.d.ts +40 -0
  17. package/dist/js/components/pushpin.d.ts +51 -0
  18. package/dist/js/components/scrollspy.d.ts +80 -0
  19. package/dist/js/components/sidenav.d.ts +125 -0
  20. package/dist/js/components/slider.d.ts +101 -0
  21. package/dist/js/components/tabs.d.ts +80 -0
  22. package/dist/js/components/tap-target.d.ts +58 -0
  23. package/dist/js/components/timepicker.d.ts +207 -0
  24. package/dist/js/components/toast.d.ts +93 -0
  25. package/dist/js/components/tooltip.d.ts +117 -0
  26. package/dist/js/components/waves.d.ts +15 -0
  27. package/dist/js/expressive.js +8239 -0
  28. package/dist/js/expressive.js.map +1 -0
  29. package/dist/js/expressive.min.js +2 -0
  30. package/dist/js/expressive.min.js.map +1 -0
  31. package/dist/js/expressive.mjs +8206 -0
  32. package/dist/js/expressive.mjs.map +1 -0
  33. package/dist/js/forms/character-counter.d.ts +36 -0
  34. package/dist/js/forms/forms.d.ts +17 -0
  35. package/dist/js/forms/index.d.ts +4 -0
  36. package/dist/js/forms/range.d.ts +40 -0
  37. package/dist/js/forms/select.d.ts +77 -0
  38. package/dist/js/foundation/component.d.ts +73 -0
  39. package/dist/js/foundation/index.d.ts +2 -0
  40. package/dist/js/foundation/utils.d.ts +122 -0
  41. package/dist/js/index.d.ts +52 -0
  42. package/dist/js/plugins/docked-display.d.ts +34 -0
  43. package/dist/js/plugins/index.d.ts +1 -0
  44. package/package.json +71 -0
  45. package/src/scss/components/_appbar.scss +454 -0
  46. package/src/scss/components/_badges.scss +77 -0
  47. package/src/scss/components/_breadcrumb.scss +27 -0
  48. package/src/scss/components/_buttons.scss +412 -0
  49. package/src/scss/components/_cards.scss +267 -0
  50. package/src/scss/components/_carousel.scss +93 -0
  51. package/src/scss/components/_chips.scss +147 -0
  52. package/src/scss/components/_collapsible.scss +84 -0
  53. package/src/scss/components/_collection.scss +114 -0
  54. package/src/scss/components/_date-picker.scss +268 -0
  55. package/src/scss/components/_dropdown.scss +98 -0
  56. package/src/scss/components/_index.scss +28 -0
  57. package/src/scss/components/_material-box.scss +42 -0
  58. package/src/scss/components/_material-icons.scss +6 -0
  59. package/src/scss/components/_modal.scss +84 -0
  60. package/src/scss/components/_pagination.scss +45 -0
  61. package/src/scss/components/_parallax.scss +26 -0
  62. package/src/scss/components/_preloader.scss +422 -0
  63. package/src/scss/components/_pulse.scss +35 -0
  64. package/src/scss/components/_sidenav.scss +229 -0
  65. package/src/scss/components/_slider.scss +119 -0
  66. package/src/scss/components/_table-of-contents.scss +32 -0
  67. package/src/scss/components/_tabs.scss +176 -0
  68. package/src/scss/components/_tap-target.scss +102 -0
  69. package/src/scss/components/_time-picker.scss +294 -0
  70. package/src/scss/components/_toast.scss +70 -0
  71. package/src/scss/components/_tooltip.scss +49 -0
  72. package/src/scss/components/_transitions.scss +19 -0
  73. package/src/scss/components/_video.scss +15 -0
  74. package/src/scss/expressive.scss +7 -0
  75. package/src/scss/forms/_checkboxes.scss +199 -0
  76. package/src/scss/forms/_file-input.scss +41 -0
  77. package/src/scss/forms/_index.scss +17 -0
  78. package/src/scss/forms/_input-fields.scss +360 -0
  79. package/src/scss/forms/_radio-buttons.scss +114 -0
  80. package/src/scss/forms/_range.scss +148 -0
  81. package/src/scss/forms/_select.scss +108 -0
  82. package/src/scss/forms/_switches.scss +127 -0
  83. package/src/scss/foundation/_base.scss +71 -0
  84. package/src/scss/foundation/_color-palette.scss +402 -0
  85. package/src/scss/foundation/_index.scss +10 -0
  86. package/src/scss/foundation/_mixins.scss +198 -0
  87. package/src/scss/foundation/_motion.scss +70 -0
  88. package/src/scss/foundation/_normalize.scss +349 -0
  89. package/src/scss/foundation/_shape.scss +30 -0
  90. package/src/scss/foundation/_state-layers.scss +68 -0
  91. package/src/scss/foundation/_theme.scss +238 -0
  92. package/src/scss/foundation/_tokens.scss +511 -0
  93. package/src/scss/foundation/_variables.scss +57 -0
  94. package/src/scss/layout/_footer.scss +26 -0
  95. package/src/scss/layout/_grid.scss +172 -0
  96. package/src/scss/layout/_index.scss +3 -0
  97. package/src/scss/layout/_table.scss +119 -0
  98. package/src/scss/utilities/_a11y.scss +77 -0
  99. package/src/scss/utilities/_colors.scss +74 -0
  100. package/src/scss/utilities/_elevation.scss +63 -0
  101. package/src/scss/utilities/_helpers.scss +50 -0
  102. package/src/scss/utilities/_index.scss +7 -0
  103. package/src/scss/utilities/_responsive.scss +62 -0
  104. package/src/scss/utilities/_spacing.scss +38 -0
  105. package/src/scss/utilities/_typography.scss +115 -0
@@ -0,0 +1,172 @@
1
+ @use "sass:math";
2
+ @use '../foundation/variables' as *;
3
+
4
+ .container {
5
+ margin: 0 auto;
6
+ max-width: 1280px;
7
+ width: 90%;
8
+ }
9
+
10
+ @media #{$medium-and-up} {
11
+ .container {
12
+ width: 85%;
13
+ }
14
+ }
15
+
16
+ @media #{$large-and-up} {
17
+ .container {
18
+ width: 70%;
19
+ }
20
+ }
21
+
22
+ .section {
23
+ padding: 1rem 0;
24
+ }
25
+
26
+ // Mixins to eliminate code repetition
27
+ @mixin reset-offset {
28
+ margin-left: auto;
29
+ left: auto;
30
+ right: auto;
31
+ }
32
+
33
+ @mixin grid-classes($size, $i, $perc) {
34
+ &.offset-#{$size}#{$i} {
35
+ margin-left: $perc;
36
+ }
37
+ &.pull-#{$size}#{$i} {
38
+ right: $perc;
39
+ }
40
+ &.push-#{$size}#{$i} {
41
+ left: $perc;
42
+ }
43
+ }
44
+
45
+ body {
46
+ --gap-size: 1.5rem; // default
47
+ }
48
+
49
+ .row {
50
+ display: grid;
51
+ grid-template-columns: repeat(12, 1fr);
52
+ gap: var(--gap-size);
53
+
54
+ //--- S
55
+ .s1 { grid-column: auto / span 1; }
56
+ .s2 { grid-column: auto / span 2; }
57
+ .s3 { grid-column: auto / span 3; }
58
+ .s4 { grid-column: auto / span 4; }
59
+ .s5 { grid-column: auto / span 5; }
60
+ .s6 { grid-column: auto / span 6; }
61
+ .s7 { grid-column: auto / span 7; }
62
+ .s8 { grid-column: auto / span 8; }
63
+ .s9 { grid-column: auto / span 9; }
64
+ .s10 { grid-column: auto / span 10; }
65
+ .s11 { grid-column: auto / span 11; }
66
+ .s12 { grid-column: auto / span 12; }
67
+
68
+ .offset-s1 { grid-column-start: 3; }
69
+ .offset-s2 { grid-column-start: 2; }
70
+ .offset-s3 { grid-column-start: 4; }
71
+ .offset-s4 { grid-column-start: 5; }
72
+ .offset-s5 { grid-column-start: 6; }
73
+ .offset-s6 { grid-column-start: 7; }
74
+ .offset-s7 { grid-column-start: 8; }
75
+ .offset-s8 { grid-column-start: 9; }
76
+ .offset-s9 { grid-column-start: 10; }
77
+ .offset-s10 { grid-column-start: 11; }
78
+ .offset-s11 { grid-column-start: 12; }
79
+
80
+ //--- M
81
+ @media #{$medium-and-up} {
82
+ .m1 { grid-column: auto / span 1; }
83
+ .m2 { grid-column: auto / span 2; }
84
+ .m3 { grid-column: auto / span 3; }
85
+ .m4 { grid-column: auto / span 4; }
86
+ .m5 { grid-column: auto / span 5; }
87
+ .m6 { grid-column: auto / span 6; }
88
+ .m7 { grid-column: auto / span 7; }
89
+ .m8 { grid-column: auto / span 8; }
90
+ .m9 { grid-column: auto / span 9; }
91
+ .m10 { grid-column: auto / span 10; }
92
+ .m11 { grid-column: auto / span 11; }
93
+ .m12 { grid-column: auto / span 12; }
94
+
95
+ .offset-m1 { grid-column-start: 2; }
96
+ .offset-m2 { grid-column-start: 3; }
97
+ .offset-m3 { grid-column-start: 4; }
98
+ .offset-m4 { grid-column-start: 5; }
99
+ .offset-m5 { grid-column-start: 6; }
100
+ .offset-m6 { grid-column-start: 7; }
101
+ .offset-m7 { grid-column-start: 8; }
102
+ .offset-m8 { grid-column-start: 9; }
103
+ .offset-m9 { grid-column-start: 10; }
104
+ .offset-m10 { grid-column-start: 11; }
105
+ .offset-m11 { grid-column-start: 12; }
106
+ }
107
+
108
+ //--- L
109
+ @media #{$large-and-up} {
110
+ .l1 { grid-column: auto / span 1; }
111
+ .l2 { grid-column: auto / span 2; }
112
+ .l3 { grid-column: auto / span 3; }
113
+ .l4 { grid-column: auto / span 4; }
114
+ .l5 { grid-column: auto / span 5; }
115
+ .l6 { grid-column: auto / span 6; }
116
+ .l7 { grid-column: auto / span 7; }
117
+ .l8 { grid-column: auto / span 8; }
118
+ .l9 { grid-column: auto / span 9; }
119
+ .l10 { grid-column: auto / span 10; }
120
+ .l11 { grid-column: auto / span 11; }
121
+ .l12 { grid-column: auto / span 12; }
122
+
123
+ .offset-l1 { grid-column-start: 2; }
124
+ .offset-l2 { grid-column-start: 3; }
125
+ .offset-l3 { grid-column-start: 4; }
126
+ .offset-l4 { grid-column-start: 5; }
127
+ .offset-l5 { grid-column-start: 6; }
128
+ .offset-l6 { grid-column-start: 7; }
129
+ .offset-l7 { grid-column-start: 8; }
130
+ .offset-l8 { grid-column-start: 9; }
131
+ .offset-l9 { grid-column-start: 10; }
132
+ .offset-l10 { grid-column-start: 11; }
133
+ .offset-l11 { grid-column-start: 12; }
134
+ }
135
+
136
+ //--- XL
137
+ @media #{$extra-large-and-up} {
138
+ .xl1 { grid-column: auto / span 1; }
139
+ .xl2 { grid-column: auto / span 2; }
140
+ .xl3 { grid-column: auto / span 3; }
141
+ .xl4 { grid-column: auto / span 4; }
142
+ .xl5 { grid-column: auto / span 5; }
143
+ .xl6 { grid-column: auto / span 6; }
144
+ .xl7 { grid-column: auto / span 7; }
145
+ .xl8 { grid-column: auto / span 8; }
146
+ .xl9 { grid-column: auto / span 9; }
147
+ .xl10 { grid-column: auto / span 10; }
148
+ .xl11 { grid-column: auto / span 11; }
149
+ .xl12 { grid-column: auto / span 12; }
150
+
151
+ .offset-xl1 { grid-column-start: 2; }
152
+ .offset-xl2 { grid-column-start: 3; }
153
+ .offset-xl3 { grid-column-start: 4; }
154
+ .offset-xl4 { grid-column-start: 5; }
155
+ .offset-xl5 { grid-column-start: 6; }
156
+ .offset-xl6 { grid-column-start: 7; }
157
+ .offset-xl7 { grid-column-start: 8; }
158
+ .offset-xl8 { grid-column-start: 9; }
159
+ .offset-xl9 { grid-column-start: 10; }
160
+ .offset-xl10 { grid-column-start: 11; }
161
+ .offset-xl11 { grid-column-start: 12; }
162
+ }
163
+
164
+ }
165
+
166
+ //--- Gap
167
+ .g-0 { gap: 0; }
168
+ .g-1 { gap: calc(0.25 * var(--gap-size)); }
169
+ .g-2 { gap: calc(0.5 * var(--gap-size)); }
170
+ .g-3 { gap: calc(1 * var(--gap-size)); }
171
+ .g-4 { gap: calc(1.5 * var(--gap-size)); }
172
+ .g-5 { gap: calc(3 * var(--gap-size)); }
@@ -0,0 +1,3 @@
1
+ @forward 'grid';
2
+ @forward 'footer';
3
+ @forward 'table';
@@ -0,0 +1,119 @@
1
+ @use '../foundation/variables' as *;
2
+
3
+ // Tables
4
+ table, th, td {
5
+ border: none;
6
+ }
7
+
8
+ table {
9
+ width: 100%;
10
+ display: table;
11
+ border-collapse: collapse;
12
+ border-spacing: 0;
13
+
14
+ &.striped {
15
+ tr {
16
+ border-bottom: none;
17
+ }
18
+ tbody > tr:nth-child(odd) {
19
+ background-color: rgba(0, 0, 0, 0.08);
20
+ }
21
+ }
22
+
23
+ &.highlight > tbody > tr {
24
+ transition: background-color .25s ease;
25
+
26
+ &:hover {
27
+ background-color: rgba(0, 0, 0, 0.04);
28
+ }
29
+ }
30
+
31
+ thead {
32
+ color: var(--md-sys-color-on-surface-variant);
33
+ }
34
+
35
+ &.centered {
36
+ thead tr th, tbody tr td {
37
+ text-align: center;
38
+ }
39
+ }
40
+ }
41
+
42
+ tr {
43
+ border-bottom: 1px solid var(--md-sys-color-outline-variant);
44
+ }
45
+
46
+ td, th {
47
+ padding: 15px 5px;
48
+ display: table-cell;
49
+ text-align: left;
50
+ vertical-align: middle;
51
+ border-radius: 0;
52
+ }
53
+
54
+ // Responsive Table
55
+ @media #{$medium-and-down} {
56
+
57
+ table.responsive-table {
58
+ width: 100%;
59
+ border-collapse: collapse;
60
+ border-spacing: 0;
61
+ display: block;
62
+ position: relative;
63
+
64
+ td:empty:before {
65
+ content: '\00a0';
66
+ }
67
+ th,
68
+ td {
69
+ margin: 0;
70
+ vertical-align: top;
71
+ }
72
+ th {
73
+ text-align: left;
74
+ }
75
+ thead {
76
+ display: block;
77
+ float: left;
78
+
79
+ tr {
80
+ display: block;
81
+ padding: 0 10px 0 0;
82
+
83
+ th::before {
84
+ content: "\00a0";
85
+ }
86
+ }
87
+ }
88
+ tbody {
89
+ display: block;
90
+ width: auto;
91
+ position: relative;
92
+ overflow-x: auto;
93
+ white-space: nowrap;
94
+
95
+ tr {
96
+ display: inline-block;
97
+ vertical-align: top;
98
+ }
99
+ }
100
+ th {
101
+ display: block;
102
+ text-align: right;
103
+ }
104
+ td {
105
+ display: block;
106
+ min-height: 1.25em;
107
+ text-align: left;
108
+ }
109
+ tr {
110
+ border-bottom: none;
111
+ padding: 0 10px;
112
+ }
113
+ /* sort out borders */
114
+ thead {
115
+ border: 0;
116
+ border-right: 1px solid var(--md-sys-color-outline-variant);
117
+ }
118
+ }
119
+ }
@@ -0,0 +1,77 @@
1
+ // Accessibility Utilities
2
+
3
+ // Screen reader only — visually hidden but accessible
4
+ .sr-only {
5
+ position: absolute;
6
+ width: 1px;
7
+ height: 1px;
8
+ padding: 0;
9
+ margin: -1px;
10
+ overflow: hidden;
11
+ clip: rect(0, 0, 0, 0);
12
+ white-space: nowrap;
13
+ border: 0;
14
+ }
15
+
16
+ // Undo sr-only
17
+ .not-sr-only {
18
+ position: static;
19
+ width: auto;
20
+ height: auto;
21
+ padding: 0;
22
+ margin: 0;
23
+ overflow: visible;
24
+ clip: auto;
25
+ white-space: normal;
26
+ }
27
+
28
+ // Explicit focus ring
29
+ .focus-ring {
30
+ &:focus-visible {
31
+ outline: 3px solid var(--md-sys-color-secondary);
32
+ outline-offset: 2px;
33
+ }
34
+ }
35
+
36
+ // Skip to content link
37
+ .skip-link {
38
+ position: absolute;
39
+ top: -100%;
40
+ left: 16px;
41
+ z-index: 10000;
42
+ padding: 8px 16px;
43
+ background-color: var(--md-sys-color-surface);
44
+ color: var(--md-sys-color-on-surface);
45
+ border-radius: var(--md-sys-shape-corner-small, 8px);
46
+ box-shadow: var(--md-sys-elevation-level2, 0 1px 2px 0 rgba(0, 0, 0, 0.3), 0 2px 6px 2px rgba(0, 0, 0, 0.15));
47
+ text-decoration: none;
48
+ font-weight: 500;
49
+
50
+ &:focus {
51
+ top: 16px;
52
+ }
53
+ }
54
+
55
+ // High contrast mode support
56
+ @media (forced-colors: active) {
57
+ .elevation-1,
58
+ .elevation-2,
59
+ .elevation-3,
60
+ .elevation-4,
61
+ .elevation-5,
62
+ .z-depth-1,
63
+ .z-depth-2,
64
+ .z-depth-3,
65
+ .z-depth-4,
66
+ .z-depth-5 {
67
+ border: 1px solid CanvasText;
68
+ }
69
+ }
70
+
71
+ // Prefer more contrast
72
+ @media (prefers-contrast: more) {
73
+ :root {
74
+ --md-sys-color-outline: var(--md-ref-palette-neutral-variant30);
75
+ --md-sys-color-outline-variant: var(--md-ref-palette-neutral-variant50);
76
+ }
77
+ }
@@ -0,0 +1,74 @@
1
+ .primary { background-color: var(--md-sys-color-primary); }
2
+ .primary-text { color: var(--md-sys-color-primary); }
3
+ .on-primary { background-color: var(--md-sys-color-on-primary); }
4
+ .on-primary-text { color: var(--md-sys-color-on-primary); }
5
+ .primary-container { background-color: var(--md-sys-color-primary-container); }
6
+ .primary-container-text { color: var(--md-sys-color-primary-container); }
7
+ .on-primary-container { background-color: var(--md-sys-color-on-primary-container); }
8
+ .on-primary-container-text { color: var(--md-sys-color-on-primary-container); }
9
+
10
+ .secondary { background-color: var(--md-sys-color-secondary); }
11
+ .secondary-text { color: var(--md-sys-color-secondary); }
12
+ .on-secondary { background-color: var(--md-sys-color-on-secondary); }
13
+ .on-secondary-text { color: var(--md-sys-color-on-secondary); }
14
+ .secondary-container { background-color: var(--md-sys-color-secondary-container); }
15
+ .secondary-container-text { color: var(--md-sys-color-secondary-container); }
16
+ .on-secondary-container { background-color: var(--md-sys-color-on-secondary-container); }
17
+ .on-secondary-container-text { color: var(--md-sys-color-on-secondary-container); }
18
+
19
+ .tertiary { background-color: var(--md-sys-color-tertiary); }
20
+ .tertiary-text { color: var(--md-sys-color-tertiary); }
21
+ .on-tertiary { background-color: var(--md-sys-color-on-tertiary); }
22
+ .on-tertiary-text { color: var(--md-sys-color-on-tertiary); }
23
+ .tertiary-container { background-color: var(--md-sys-color-tertiary-container); }
24
+ .tertiary-container-text { color: var(--md-sys-color-tertiary-container); }
25
+ .on-tertiary-container { background-color: var(--md-sys-color-on-tertiary-container); }
26
+ .on-tertiary-container-text { color: var(--md-sys-color-on-tertiary-container); }
27
+
28
+ .error { background-color: var(--md-sys-color-error); }
29
+ .error-text { color: var(--md-sys-color-error); }
30
+ .on-error { background-color: var(--md-sys-color-on-error); }
31
+ .on-error-text { color: var(--md-sys-color-on-error); }
32
+ .error-container { background-color: var(--md-sys-color-error-container); }
33
+ .error-container-text { color: var(--md-sys-color-error-container); }
34
+ .on-error-container { background-color: var(--md-sys-color-on-error-container); }
35
+ .on-error-container-text { color: var(--md-sys-color-on-error-container); }
36
+
37
+ .background { background-color: var(--md-sys-color-background); }
38
+ .background-text { color: var(--md-sys-color-background); }
39
+ .on-background { background-color: var(--md-sys-color-on-background); }
40
+ .on-background-text { color: var(--md-sys-color-on-background); }
41
+
42
+ .surface { background-color: var(--md-sys-color-surface); }
43
+ .surface-text { color: var(--md-sys-color-surface); }
44
+ .on-surface { background-color: var(--md-sys-color-on-surface); }
45
+ .on-surface-text { color: var(--md-sys-color-on-surface); }
46
+
47
+ .surface-variant { background-color: var(--md-sys-color-surface-variant); }
48
+ .surface-variant-text { color: var(--md-sys-color-surface-variant); }
49
+ .on-surface-variant { background-color: var(--md-sys-color-on-surface-variant); }
50
+ .on-surface-variant-text { color: var(--md-sys-color-on-surface-variant); }
51
+
52
+ .outline { background-color: var(--md-sys-color-outline); }
53
+ .outline-text { color: var(--md-sys-color-outline); }
54
+
55
+ .inverse-on-surface { background-color: var(--md-sys-color-inverse-on-surface); }
56
+ .inverse-on-surface-text { color: var(--md-sys-color-inverse-on-surface); }
57
+
58
+ .inverse-surface { background-color: var(--md-sys-color-inverse-surface); }
59
+ .inverse-surface-text { color: var(--md-sys-color-inverse-surface); }
60
+
61
+ .inverse-primary { background-color: var(--md-sys-color-inverse-primary); }
62
+ .inverse-primary-text { color: var(--md-sys-color-inverse-primary); }
63
+
64
+ .shadow { background-color: var(--md-sys-color-shadow); }
65
+ .shadow-text { color: var(--md-sys-color-shadow); }
66
+
67
+ .surface-tint { background-color: var(--md-sys-color-surface-tint); }
68
+ .surface-tint-text { color: var(--md-sys-color-surface-tint); }
69
+
70
+ .outline-variant { background-color: var(--md-sys-color-outline-variant); }
71
+ .outline-variant-text { color: var(--md-sys-color-outline-variant); }
72
+
73
+ .scrim { background-color: var(--md-sys-color-scrim); }
74
+ .scrim-text { color: var(--md-sys-color-scrim); }
@@ -0,0 +1,63 @@
1
+ // M3 Elevation System
2
+ // Combines shadow elevation with tonal surface tint.
3
+
4
+ // M3 Elevation classes (new canonical names)
5
+ .elevation-0 {
6
+ box-shadow: var(--md-sys-elevation-level0, none);
7
+ }
8
+
9
+ .elevation-1 {
10
+ box-shadow: var(--md-sys-elevation-level1, 0 1px 2px 0 rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.15));
11
+ }
12
+
13
+ .elevation-2 {
14
+ box-shadow: var(--md-sys-elevation-level2, 0 1px 2px 0 rgba(0, 0, 0, 0.3), 0 2px 6px 2px rgba(0, 0, 0, 0.15));
15
+ }
16
+
17
+ .elevation-3 {
18
+ box-shadow: var(--md-sys-elevation-level3, 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15));
19
+ }
20
+
21
+ .elevation-4 {
22
+ box-shadow: var(--md-sys-elevation-level4, 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 6px 10px 4px rgba(0, 0, 0, 0.15));
23
+ }
24
+
25
+ .elevation-5 {
26
+ box-shadow: var(--md-sys-elevation-level5, 0 4px 4px 0 rgba(0, 0, 0, 0.3), 0 8px 12px 6px rgba(0, 0, 0, 0.15));
27
+ }
28
+
29
+ // Deprecated aliases — will be removed in next major version
30
+ .z-depth-0 {
31
+ box-shadow: none !important;
32
+ }
33
+
34
+ .z-depth-1 {
35
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.15);
36
+ }
37
+
38
+ .z-depth-1-half {
39
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 2px 6px 2px rgba(0, 0, 0, 0.15);
40
+ }
41
+
42
+ .z-depth-2 {
43
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.3), 0 2px 6px 2px rgba(0, 0, 0, 0.15);
44
+ }
45
+
46
+ .z-depth-3 {
47
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15);
48
+ }
49
+
50
+ .z-depth-4 {
51
+ box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 6px 10px 4px rgba(0, 0, 0, 0.15);
52
+ }
53
+
54
+ .z-depth-5 {
55
+ box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.3), 0 8px 12px 6px rgba(0, 0, 0, 0.15);
56
+ }
57
+
58
+ .hoverable {
59
+ transition: box-shadow var(--md-sys-motion-duration-medium1, 250ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1));
60
+ &:hover {
61
+ box-shadow: var(--md-sys-elevation-level3, 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15));
62
+ }
63
+ }
@@ -0,0 +1,50 @@
1
+ // Positioning
2
+ .valign-wrapper { display: flex; align-items: center; }
3
+
4
+ .clearfix { clear: both; }
5
+
6
+ // Dividers
7
+ .divider {
8
+ height: 1px;
9
+ overflow: hidden;
10
+ background-color: var(--md-sys-color-outline-variant);
11
+ }
12
+
13
+ // Pushpin
14
+ .pin-top, .pin-bottom {
15
+ position: relative;
16
+ }
17
+
18
+ .pinned {
19
+ position: fixed !important;
20
+ }
21
+
22
+ /*******************
23
+ Utility Classes
24
+ *******************/
25
+
26
+ .hide { display: none !important; }
27
+
28
+ // Text Align
29
+ .left-align { text-align: left; }
30
+ .right-align { text-align: right }
31
+ .center, .center-align { text-align: center; }
32
+
33
+ // TODO: Remove this
34
+ .left { float: left !important; }
35
+ .right { float: right !important; }
36
+
37
+ // No Text Select
38
+ .no-select { user-select: none; }
39
+ .circle { border-radius: 50%; }
40
+ .center-block { display: block; margin-left: auto; margin-right: auto; }
41
+ .truncate { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
42
+ .no-padding { padding: 0 !important; }
43
+
44
+ // Docked display
45
+ .display-docked {
46
+ position: absolute;
47
+ opacity: 0;
48
+ z-index: 9999;
49
+ visibility: hidden;
50
+ }
@@ -0,0 +1,7 @@
1
+ @forward 'colors';
2
+ @forward 'typography';
3
+ @forward 'elevation';
4
+ @forward 'spacing';
5
+ @forward 'responsive';
6
+ @forward 'helpers';
7
+ @forward 'a11y';
@@ -0,0 +1,62 @@
1
+ @use '../foundation/variables' as *;
2
+
3
+ /*********************
4
+ Media Query Classes
5
+ **********************/
6
+ .hide-on-small-only, .hide-on-small-and-down {
7
+ @media #{$small-and-down} { display: none !important; }
8
+ }
9
+
10
+ .hide-on-med-and-down {
11
+ @media #{$medium-and-down} { display: none !important; }
12
+ }
13
+
14
+ .hide-on-med-and-up {
15
+ @media #{$medium-and-up} { display: none !important; }
16
+ }
17
+
18
+ .hide-on-med-only {
19
+ @media only screen and (min-width: $small-screen-up) and (max-width: $medium-screen) {
20
+ display: none !important;
21
+ }
22
+ }
23
+
24
+ .hide-on-large-only {
25
+ @media #{$large-and-up} { display: none !important; }
26
+ }
27
+
28
+ .hide-on-extra-large-only {
29
+ @media #{$extra-large-and-up} { display: none !important; }
30
+ }
31
+
32
+ .show-on-extra-large {
33
+ @media #{$extra-large-and-up} { display: block !important; }
34
+ }
35
+
36
+ .show-on-large {
37
+ @media #{$large-and-up} { display: block !important; }
38
+ }
39
+
40
+ .show-on-medium {
41
+ @media only screen and (min-width: $small-screen-up) and (max-width: $medium-screen) {
42
+ display: block !important;
43
+ }
44
+ }
45
+
46
+ .show-on-small {
47
+ @media #{$small-and-down} { display: block !important; }
48
+ }
49
+
50
+ .show-on-medium-and-up {
51
+ @media #{$medium-and-up} { display: block !important; }
52
+ }
53
+
54
+ .show-on-medium-and-down {
55
+ @media #{$medium-and-down} { display: block !important; }
56
+ }
57
+
58
+
59
+ // Center text on mobile
60
+ .center-on-small-only {
61
+ @media #{$small-and-down} { text-align: center; }
62
+ }
@@ -0,0 +1,38 @@
1
+ /**************************
2
+ Utility Spacing Classes
3
+ **************************/
4
+
5
+ $spacing-shortcuts: ("margin": "m", "padding": "p") !default;
6
+ $spacing-directions: ("top": "t", "right": "r", "bottom": "b", "left": "l") !default;
7
+ $spacing-horizontal: "x" !default;
8
+ $spacing-vertical: "y" !default;
9
+ $spacing-values: ("0": 0, "1": 0.25rem, "2": 0.5rem, "3": 0.75rem, "4": 1rem, "5": 1.5rem, "6": 3rem, "auto": auto) !default;
10
+
11
+ @each $property, $shortcut in $spacing-shortcuts{
12
+ @each $name, $value in $spacing-values{
13
+ // All direction spacing
14
+ .#{$shortcut}-#{$name}{
15
+ #{$property}: $value !important;
16
+ }
17
+ // (t, b, r, l) spacing
18
+ @each $direction, $suffix in $spacing-directions{
19
+ .#{$shortcut}#{$suffix}-#{$name}{
20
+ #{$property}-#{$direction}: $value !important
21
+ }
22
+ }
23
+ // x spacing
24
+ @if $spacing-horizontal != null{
25
+ .#{$shortcut}#{$spacing-horizontal}-#{$name}{
26
+ #{$property}-left: $value !important;
27
+ #{$property}-right: $value !important;
28
+ }
29
+ }
30
+ // y spacing
31
+ @if $spacing-vertical != null{
32
+ .#{$shortcut}#{$spacing-vertical}-#{$name}{
33
+ #{$property}-top: $value !important;
34
+ #{$property}-bottom: $value !important;
35
+ }
36
+ }
37
+ }
38
+ }