@appartmint/css-mint 0.0.20 → 0.0.21

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@appartmint/css-mint",
3
3
  "author": "App Art Mint LLC",
4
- "version": "0.0.20",
4
+ "version": "0.0.21",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "description": "Styles by App Art Mint",
@@ -0,0 +1,37 @@
1
+ /// _image.scss - Image styles
2
+ /// @author App Art Mint LLC
3
+ ///
4
+ /// @group Widget
5
+ @charset 'utf-8';
6
+
7
+ /// Imports
8
+ @use '../../util' as *;
9
+
10
+ /// A basic image
11
+ #{class(image)} {
12
+
13
+ /// A placeholder image warning
14
+ &#{class(error)} {
15
+ &::after {
16
+ content: '❌ Image failed to load. This is a placeholder.';
17
+ position: absolute;
18
+ bottom: 0;
19
+ left: 0;
20
+ width: 100%;
21
+ padding: 0 $image-shadow-size $image-shadow-size $image-shadow-size;
22
+ background: css-var($shadow-color);
23
+ box-shadow: 0 0 $image-shadow-size $image-shadow-size css-var($shadow-color);
24
+ text-align: center;
25
+ }
26
+ }
27
+
28
+ img {
29
+ display: block;
30
+ }
31
+ }
32
+
33
+ /// Banner images
34
+ #{class(banner)} {
35
+ position: relative;
36
+ width: 100%;
37
+ }
@@ -0,0 +1,321 @@
1
+ /// button.scss - Button styles
2
+ /// @author App Art Mint LLC
3
+ ///
4
+ /// @group UI
5
+ @charset 'utf-8';
6
+
7
+ /// Imports
8
+ @use '../../util' as *;
9
+
10
+ :root {
11
+ @include css-var(btn-pv, calc(css-var(gap) * 2));
12
+ @include css-var(btn-ph, calc(css-var(gap) * 4));
13
+ @include css-var-ref(btn-br, br);
14
+ @include css-var-ref(btn-bw, bw);
15
+ @include css-var-ref(btn-bc, brand-4);
16
+ @include css-var-ref(btn-fg, fg);
17
+ @include css-var-ref(btn-fg-hover, back);
18
+ @include css-var-ref(btn-fg-alt, btn-bc);
19
+ @include css-var-ref(btn-fg-alt-hover, btn-fg-hover);
20
+ @include css-var-ref(btn-bg, brand-2);
21
+ @include css-var-ref(btn-bg-hover, btn-bc);
22
+ @include css-var-ref(btn-bg-alt, clear);
23
+ @include css-var-ref(btn-bg-alt-hover, accent-2);
24
+
25
+ @include css-var(pill-pv, 0);
26
+ @include css-var(pill-ph, calc(css-var(gap) * 3));
27
+ @include css-var-ref(pill-br, br);
28
+ }
29
+
30
+ button,
31
+ a[routerLink] {
32
+ cursor: pointer;
33
+ }
34
+
35
+ a,
36
+ button,
37
+ #{class(btn)},
38
+ #{class(btn-icon)},
39
+ #{class(pill)} {
40
+ font-size: inherit;
41
+
42
+ &[disabled] {
43
+ filter: grayscale(1) brightness(0.75) !important;
44
+ pointer-events: none !important;
45
+
46
+ &#{class(fall-in)}#{neg(class(show))} {
47
+ filter: grayscale(1) brightness(0.75) opacity(0%) !important;
48
+ }
49
+ }
50
+
51
+ i {
52
+ &:first-child {
53
+ margin-right: 0.5em;
54
+ }
55
+
56
+ &:last-child {
57
+ margin-left: 0.5em;
58
+ }
59
+
60
+ &:only-child {
61
+ margin: 0;
62
+ }
63
+ }
64
+ }
65
+
66
+ /// All buttons
67
+ #{class(btn)},
68
+ #{class(pill)},
69
+ #{class(btn-group)},
70
+ #{class(btn-icon)} {
71
+ flex-shrink: 0;
72
+ }
73
+
74
+ #{class(btn)},
75
+ #{class(btn-group)} {
76
+ border-radius: css-var(btn-br);
77
+ }
78
+
79
+ #{class(btn)},
80
+ #{class(pill)},
81
+ #{class(btn-icon)} {
82
+ width: fit-content;
83
+ max-width: 100%;
84
+ text-decoration: none;
85
+ text-overflow: ellipsis;
86
+ white-space: nowrap;
87
+ overflow: hidden;
88
+ user-select: none;
89
+ transition-property: color, background-color, border-color;
90
+ transition-duration: time(default);
91
+ }
92
+
93
+ #{class(btn)},
94
+ #{class(pill)},
95
+ #{class(btn-group)} {
96
+ display: inline-block;
97
+ color: css-var(btn-fg);
98
+ background: css-var(btn-bg);
99
+ border: css-var(btn-bw) solid css-var(btn-bc);
100
+ text-align: center;
101
+
102
+ @include break(xs) {
103
+ width: fit-content;
104
+ }
105
+
106
+ @include states(hover, focus, active, mint-active) {
107
+ color: css-var(btn-fg-hover);
108
+ background: css-var(btn-bg-hover);
109
+
110
+ i {
111
+ color: inherit !important;
112
+ }
113
+ }
114
+
115
+ &#{class(reverse)} {
116
+ color: css-var(btn-fg-hover);
117
+ background: css-var(btn-bg-hover);
118
+
119
+ @include states(hover, focus, active, mint-active) {
120
+ color: css-var(btn-fg);
121
+ background: css-var(btn-bg);
122
+ }
123
+ }
124
+
125
+ &#{class(alt)} {
126
+ color: css-var(btn-fg-alt);
127
+ background: css-var(btn-bg-alt);
128
+
129
+ @include states(hover, focus, active, mint-active) {
130
+ color: css-var(btn-fg-alt-hover);
131
+ background: css-var(btn-bg-alt-hover);
132
+ border-color: css-var(btn-bg-alt-hover);
133
+ }
134
+
135
+ &#{class(reverse)} {
136
+ color: css-var(btn-fg-alt-hover);
137
+ background: css-var(btn-bg-alt-hover);
138
+ border-color: css-var(btn-bg-alt-hover);
139
+
140
+ @include states(hover, focus, active, mint-active) {
141
+ color: css-var(btn-bc);
142
+ background: css-var(btn-bg-alt);
143
+ border-color: css-var(btn-bg-alt);
144
+ }
145
+ }
146
+ }
147
+
148
+ /// Fix for browsers injecting their own tel links
149
+ a {
150
+ color: inherit;
151
+
152
+ &:hover {
153
+ color: inherit;
154
+ }
155
+
156
+ i {
157
+ display: none;
158
+ }
159
+ }
160
+ }
161
+
162
+ /// Default buttons
163
+ #{class(btn)} {
164
+ padding: css-var(btn-pv) css-var(btn-ph);
165
+ cursor: pointer;
166
+
167
+ /// Icon buttons
168
+ &-icon {
169
+ display: block;
170
+ text-align: center;
171
+ background: none;
172
+ border: none;
173
+
174
+ @include states(hover, focus, active, mint-active) {
175
+ i {
176
+ color: css-var(btn-bg-alt-hover);
177
+ }
178
+ }
179
+
180
+ @include break(xs) {
181
+ display: inline-block;
182
+ }
183
+
184
+ &#{class(lg)} {
185
+ i {
186
+ font-size: 4rem;
187
+ }
188
+ }
189
+
190
+ i {
191
+ display: inline-flex;
192
+ align-items: center;
193
+ margin: 0 !important;
194
+ color: css-var(btn-bc);
195
+ font-size: 1.5rem;
196
+
197
+ &::before {
198
+ transition: color time(default);
199
+ padding: 2px;
200
+ }
201
+ }
202
+ }
203
+
204
+ /// Button groups
205
+ &-group {
206
+ display: flex;
207
+ width: fit-content;
208
+ max-width: 100%;
209
+ margin: auto;
210
+ padding: 0;
211
+ overflow: visible;
212
+ transition: all time(default);
213
+
214
+ & > * {
215
+ &:first-child {
216
+ &, & button {
217
+ padding: css-var(btn-pv) 0 css-var(btn-pv) css-var(btn-ph);
218
+ border-top-left-radius: css-var(btn-br);
219
+ border-bottom-left-radius: css-var(btn-br);
220
+ }
221
+ }
222
+
223
+ &:last-child {
224
+ &, & button {
225
+ padding: css-var(btn-pv) css-var(btn-ph) css-var(btn-pv) 0;
226
+ border-top-right-radius: css-var(btn-br);
227
+ border-bottom-right-radius: css-var(btn-br);
228
+ }
229
+ }
230
+ }
231
+
232
+ button {
233
+ width: 100%;
234
+ border: none;
235
+ color: inherit;
236
+ background: transparent;
237
+
238
+ @include states(hover, focus, active, mint-active) {
239
+ background: css-var(brand-5);
240
+ }
241
+ }
242
+ }
243
+
244
+ /// Submit buttons
245
+ &-submit {
246
+ &#{class(success)} {
247
+ &[disabled] {
248
+ filter: none !important;
249
+ }
250
+ }
251
+ }
252
+ }
253
+
254
+ /// Select button
255
+ #{class(select)} {
256
+ @extend #{class(btn)};
257
+ }
258
+
259
+ /// Pill buttons
260
+ #{class(pill)} {
261
+ padding: css-var(pill-pv) css-var(pill-ph);
262
+ border-radius: css-var(pill-br);
263
+ line-height: 2;
264
+ }
265
+
266
+ a, button {
267
+ &#{class(pill)} {
268
+ min-width: 5rem;
269
+ }
270
+ }
271
+
272
+ p {
273
+ #{class(pill)}, #{class(btn)} {
274
+ line-height: 1.5rem;
275
+ vertical-align: middle;
276
+ }
277
+ }
278
+
279
+ /// A list of buttons
280
+ #{class(buttons)} {
281
+ display: flex;
282
+ align-items: center;
283
+ justify-content: center;
284
+ flex-wrap: wrap;
285
+ gap: 1rem;
286
+ overflow: hidden;
287
+
288
+ @include break(xs) {
289
+ justify-content: flex-start;
290
+ }
291
+
292
+ & > * {
293
+ width: 100%;
294
+
295
+ #{class(btn)}, #{class(pill)} {
296
+ display: block;
297
+ }
298
+
299
+ @include break(xs) {
300
+ width: auto;
301
+ }
302
+ }
303
+
304
+ #{class(buttons)} {
305
+ #{class(pill)} {
306
+ width: 100%;
307
+ }
308
+ }
309
+ }
310
+
311
+ #{class(grid)}#{class('3')},
312
+ #{class(grid)}#{class('4')} {
313
+ #{class(buttons)} {
314
+ & > * {
315
+ @include break(xs) {
316
+ width: 100%;
317
+ margin: 0.5rem 0;
318
+ }
319
+ }
320
+ }
321
+ }
@@ -1 +1,2 @@
1
+ @use './button';
1
2
  //@use './tooltip';
@@ -1,7 +1,7 @@
1
1
  /// tooltip.scss - Tooltip styles
2
2
  /// @author App Art Mint LLC
3
3
  ///
4
- /// @group Ui
4
+ /// @group UI
5
5
  @charset 'utf-8';
6
6
 
7
7
  /// Imports
@@ -0,0 +1,104 @@
1
+ /// _panel.scss - Panel styles
2
+ /// @author App Art Mint LLC
3
+ ///
4
+ /// @group Widget
5
+ @charset 'utf-8';
6
+
7
+ /// Imports
8
+ @use 'sass:math';
9
+ @use '../../util' as *;
10
+
11
+ /// Panel Styles
12
+ #{class(panel)} {
13
+ &#{class(right)} {
14
+ #{class(panel-wrapper)} {
15
+ top: css-var(header-height);
16
+ right: -100%;
17
+ left: unset;
18
+
19
+ &#{class(open)} {
20
+ right: 0;
21
+ }
22
+ }
23
+ }
24
+
25
+ &#{class(bottom)} {
26
+ #{class(panel-wrapper)} {
27
+ top: unset;
28
+ bottom: -100%;
29
+
30
+ &#{class(open)} {
31
+ top: unset;
32
+ bottom: 0;
33
+ }
34
+ }
35
+ }
36
+
37
+ &#{class(left)} {
38
+ #{class(panel-wrapper)} {
39
+ top: css-var(header-height);
40
+ left: -100%;
41
+
42
+ &#{class(open)} {
43
+ left: 0;
44
+ }
45
+ }
46
+ }
47
+
48
+ &#{class(tray)} {
49
+ #{class(panel-wrapper)} {
50
+ gap: 1rem;
51
+
52
+ @include break(sm) {
53
+ max-width: break(xs);
54
+ }
55
+ }
56
+ }
57
+
58
+ #{class(panel-wrapper)} {
59
+ display: flex;
60
+ flex-direction: column;
61
+ position: fixed;
62
+ top: -100%;
63
+ left: 0;
64
+ width: 100%;
65
+ height: calc(100vh - css-var(header-height));
66
+ height: calc(100dvh - css-var(header-height));
67
+ z-index: -2;
68
+ background: css-var(header-back);
69
+ transition-duration: time(default);
70
+ transition-property: top, right, bottom, left;
71
+ overflow: auto;
72
+
73
+ &#{class(open)} {
74
+ top: css-var(header-height);
75
+ }
76
+
77
+ nav {
78
+ flex-grow: 1;
79
+ height: auto;
80
+ overflow: visible;
81
+ background: css-var(back);
82
+
83
+ @include break(xl) {
84
+ display: flex;
85
+ align-items: center;
86
+ justify-content: center;
87
+ }
88
+
89
+ &> :last-child {
90
+ margin-bottom: 0;
91
+ }
92
+ }
93
+ }
94
+
95
+ #{class(title)} {
96
+ display: flex;
97
+ align-items: flex-start;
98
+ justify-content: space-between;
99
+
100
+ & > * {
101
+ margin: 0;
102
+ }
103
+ }
104
+ }
@@ -0,0 +1,29 @@
1
+ /// _table.scss - Table styles
2
+ /// @author App Art Mint LLC
3
+ ///
4
+ /// @group Widget
5
+ @charset 'utf-8';
6
+
7
+ /// Imports
8
+ @use '../../util' as *;
9
+
10
+ /// Table
11
+ #{class(table)} {
12
+ &-wrap {
13
+ max-height: 50vh;
14
+ overflow-y: auto;
15
+ }
16
+
17
+ &.mat-mdc-table {
18
+ thead {
19
+ background: css-var(back);
20
+ }
21
+ }
22
+
23
+ #{class(actions)} {
24
+ display: flex;
25
+ align-items: center;
26
+ justify-content: flex-end;
27
+ gap: 1rem;
28
+ }
29
+ }
@@ -0,0 +1,106 @@
1
+ /// _tooltip.scss - Tooltip styles
2
+ /// @author App Art Mint LLC
3
+ ///
4
+ /// @group Widget
5
+ @charset 'utf-8';
6
+
7
+ /// Imports
8
+ @use '../../util' as *;
9
+
10
+ #{class(tooltip)} {
11
+ position: absolute;
12
+ max-width: css-var(tooltip-max-width);
13
+ border-radius: css-var(tooltip-radius);
14
+ padding: css-var(tooltip-padding);
15
+ opacity: 0;
16
+ color: css-var(tooltip-fore);
17
+ background: css-var(tooltip-back);
18
+ box-shadow: css-var(tooltip-shadow-color) css-var(tooltip-shadow-size);
19
+ font-size: css-var(tooltip-font-size);
20
+ line-height: css-var(tooltip-line-height);
21
+ transition: opacity 0.3s;
22
+ user-select: none;
23
+ pointer-events: none;
24
+ white-space: nowrap;
25
+
26
+ &#{class(top)}, &#{class(bottom)} {
27
+ &::after {
28
+ border-left: solid css-var(tooltip-arrow-size) transparent;
29
+ border-right: solid css-var(tooltip-arrow-size) transparent;
30
+ }
31
+ }
32
+ &#{class(left)}, &#{class(right)} {
33
+ &::after {
34
+ border-top: solid css-var(tooltip-arrow-size) transparent;
35
+ border-bottom: solid css-var(tooltip-arrow-size) transparent;
36
+ }
37
+ }
38
+
39
+ &#{class(top)} {
40
+ bottom: calc(100% + css-var(tooltip-arrow-size) + css-var(tooltip-distance));
41
+ left: 50%;
42
+ transform: translateX(-50%);
43
+
44
+ &::after {
45
+ bottom: calc(-1 * css-var(tooltip-arrow-size) + 1px);
46
+ left: 50%;
47
+ transform: translateX(-50%);
48
+ border-top: solid css-var(tooltip-arrow-size) css-var(tooltip-back);
49
+ }
50
+ }
51
+ &#{class(left)} {
52
+ right: calc(100% + css-var(tooltip-arrow-size) + css-var(tooltip-distance));
53
+ top: 50%;
54
+ transform: translateY(-50%);
55
+
56
+ &::after {
57
+ right: calc(-1 * css-var(tooltip-arrow-size) + 1px);
58
+ top: 50%;
59
+ transform: translateY(-50%);
60
+ border-left: solid css-var(tooltip-arrow-size) css-var(tooltip-back);
61
+ }
62
+ }
63
+ &#{class(bottom)} {
64
+ top: calc(100% + css-var(tooltip-arrow-size) + css-var(tooltip-distance));
65
+ left: 50%;
66
+ transform: translateX(-50%);
67
+
68
+ &::after {
69
+ top: calc(-1 * css-var(tooltip-arrow-size) + 1px);
70
+ left: 50%;
71
+ transform: translateX(-50%);
72
+ border-bottom: solid css-var(tooltip-arrow-size) css-var(tooltip-back);
73
+ }
74
+ }
75
+ &#{class(right)} {
76
+ left: calc(100% + css-var(tooltip-arrow-size) + css-var(tooltip-distance));
77
+ top: 50%;
78
+ transform: translateY(-50%);
79
+
80
+ &::after {
81
+ left: calc(-1 * css-var(tooltip-arrow-size) + 1px);
82
+ top: 50%;
83
+ transform: translateY(-50%);
84
+ border-right: solid css-var(tooltip-arrow-size) css-var(tooltip-back);
85
+ }
86
+ }
87
+
88
+ &::after {
89
+ content: '';
90
+ position: absolute;
91
+ width: 0;
92
+ height: 0;
93
+ }
94
+
95
+ &ped {
96
+ display: inline-flex;
97
+ position: relative;
98
+ width: fit-content;
99
+
100
+ @include states(hover) {
101
+ #{class(tooltip)} {
102
+ opacity: 1;
103
+ }
104
+ }
105
+ }
106
+ }
@@ -0,0 +1,20 @@
1
+ /// accordion.scss - Accordion styles
2
+ /// @author App Art Mint LLC
3
+ ///
4
+ /// @group Widget
5
+ @charset 'utf-8';
6
+
7
+ /// Imports
8
+ @use '../../util' as *;
9
+
10
+ /// Accordion styles
11
+ #{class(accordion)} {
12
+ #{class(item)} {
13
+ cursor: pointer;
14
+
15
+ #{class(wrapper)} {
16
+ transition: height 0.3s ease;
17
+ overflow: hidden;
18
+ }
19
+ }
20
+ }
@@ -250,7 +250,7 @@
250
250
  opacity: 0.75;
251
251
  mask-image: none;
252
252
  background: linear-gradient(0deg, black, rgba(0,0,0,70%) 66%, css-var(shadow-0));
253
- transition: opacity delay(default) ease-in-out;
253
+ transition: opacity time(default) ease-in-out;
254
254
  z-index: -1;
255
255
  }
256
256
  }
@@ -1,2 +1,3 @@
1
+ @use 'accordion';
1
2
  @use 'card';
2
3
  @use 'modal';
@@ -1,3 +1,4 @@
1
1
  @use './colors';
2
2
  @use './fonts';
3
3
  @use './structure';
4
+ @use './time';
package/src/util.scss CHANGED
@@ -77,31 +77,31 @@ $sub-menu-buttons: #{'button'}#{$has-controls};
77
77
  /// @type String
78
78
  $sub-menu: #{$sub-menu-buttons}#{' + ul'}#{$has-id};
79
79
 
80
- /// Value added to all delay variables
80
+ /// Value added to all time variables
81
81
  /// @group Variables
82
82
  /// @type Number
83
- $delay-base: 0 !default;
83
+ $time-base: 0 !default;
84
84
 
85
- /// Value added to all delay variables
85
+ /// Value added to all time variables
86
86
  /// @group Variables
87
87
  /// @type Number
88
- $delay-step: 100 !default;
88
+ $time-step: 100 !default;
89
89
 
90
- /// Delay variables
90
+ /// Time variables
91
91
  /// @group Maps
92
- /// @prop {Number} $delay.instant [0] - Instant: the quickest delay; close or equal to 0
93
- /// @prop {Number} $delay.fast [100] - Fast: delays that happen quickly
94
- /// @prop {Number} $delay.med-fast [200] - Med-Fast: delays that happen faster
95
- /// @prop {Number} $delay.default [300] - Default: delays that are average
96
- /// @prop {Number} $delay.med-slow [400] - Med-Slow: delays that happen slower
97
- /// @prop {Number} $delay.slow [500] - Slow: delays that happen slowly
98
- $delay: (
99
- instant: $delay-base + $delay-step * 0,
100
- fast: $delay-base + $delay-step * 1,
101
- med-fast: $delay-base + $delay-step * 2,
102
- default: $delay-base + $delay-step * 3,
103
- med-slow: $delay-base + $delay-step * 4,
104
- slow: $delay-base + $delay-step * 5
92
+ /// @prop {Number} $time.instant [0] - Instant: the quickest time; close or equal to 0
93
+ /// @prop {Number} $time.faster [100] - Faster: times that happen faster
94
+ /// @prop {Number} $time.fast [200] - Fast: times that happen quickly
95
+ /// @prop {Number} $time.default [300] - Default: times that are average
96
+ /// @prop {Number} $time.slow [400] - Slow: times that happen slower
97
+ /// @prop {Number} $time.slower [500] - Slower: times that happen slowly
98
+ $time: (
99
+ instant: $time-base + $time-step * 0,
100
+ faster: $time-base + $time-step * 1,
101
+ fast: $time-base + $time-step * 2,
102
+ default: $time-base + $time-step * 3,
103
+ slow: $time-base + $time-step * 4,
104
+ slower: $time-base + $time-step * 5
105
105
  ) !default;
106
106
 
107
107
  /// Breakpoint variables
@@ -338,17 +338,17 @@ $break: (
338
338
  @return math.div($dividend * 100%, $divisor);
339
339
  }
340
340
 
341
- /// Returns the requested delay value as ms
341
+ /// Returns the requested time value as ms
342
342
  /// @group Functions
343
343
  ///
344
- /// @param {Number} $key - the key of the delay to use
345
- /// @return {Number} - the delay value as ms
346
- @function delay($key) {
347
- @if not(map.has-key($delay, $key)) {
348
- @error 'The delay function requires one of the following values: #{map-keys($delay)}';
344
+ /// @param {Number} $key - the key of the time to use
345
+ /// @return {Number} - the time value as ms
346
+ @function time($key) {
347
+ @if not(map.has-key($time, $key)) {
348
+ @error 'The time function requires one of the following values: #{map-keys($time)}';
349
349
  }
350
350
 
351
- @return ms(map.get($delay, $key));
351
+ @return ms(map.get($time, $key));
352
352
  }
353
353
 
354
354
  /// Returns the requested breakpoint value as px