@oardi/css-utils 0.55.0 → 0.57.0

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,6 +1,6 @@
1
1
  {
2
2
  "name": "@oardi/css-utils",
3
- "version": "0.55.0",
3
+ "version": "0.57.0",
4
4
  "author": "Ardian Shala",
5
5
  "homepage": "https://css-utils.oardi.com",
6
6
  "description": "Powerful set of semantic css classes with support for breakpoints, directions and spacings",
@@ -87,6 +87,95 @@
87
87
  }
88
88
  }
89
89
 
90
+ @layer components {
91
+ .form-select {
92
+ --form-select-bg-color: var(--bg-surface);
93
+ --form-select-border-width: var(--border-width);
94
+ --form-select-border-color: var(--border-color);
95
+ --form-select-border-radius: var(--border-radius);
96
+
97
+ --form-select-padding-y: var(--spacer-2);
98
+ --form-select-padding-x: var(--spacer-3);
99
+ --form-select-indicator-padding: var(--spacer-5);
100
+
101
+ --form-select-font-size: var(--font-size);
102
+ --form-select-font-weight: 400;
103
+
104
+ --form-select-disabled-text-color: var(--disabled-text-color);
105
+ --form-select-disabled-bg-color: var(--disabled-bg-color);
106
+ --form-select-disabled-border-color: var(--disabled-border-color);
107
+
108
+ --form-select-focus-border-color: var(--primary-hover);
109
+ --form-select-focus-outline-width: var(--focus-outline-width);
110
+ --form-select-focus-outline-style: var(--focus-outline-style);
111
+ --form-select-focus-outline-color: var(--focus-outline-color);
112
+ --form-select-focus-outline-offset: var(--focus-offset);
113
+
114
+ --form-select-transition-duration: var(--transition-duration);
115
+ --form-select-transition-easing: var(--transition-easing);
116
+
117
+ display: block;
118
+ width: 100%;
119
+ max-width: 100%;
120
+ padding: var(--form-select-padding-y) var(--form-select-indicator-padding) var(--form-select-padding-y)
121
+ var(--form-select-padding-x);
122
+ font-size: var(--form-select-font-size);
123
+ font-weight: var(--form-select-font-weight);
124
+ line-height: var(--line-height);
125
+ color: var(--text-color);
126
+ background-color: var(--form-select-bg-color);
127
+ background-image:
128
+ linear-gradient(45deg, transparent 50%, currentColor 50%),
129
+ linear-gradient(135deg, currentColor 50%, transparent 50%);
130
+ background-position:
131
+ calc(100% - 1rem) 50%,
132
+ calc(100% - 0.75rem) 50%;
133
+ background-size:
134
+ 0.25rem 0.25rem,
135
+ 0.25rem 0.25rem;
136
+ background-repeat: no-repeat;
137
+ border: var(--form-select-border-width) solid var(--form-select-border-color);
138
+ border-radius: var(--form-select-border-radius);
139
+ appearance: none;
140
+
141
+ transition:
142
+ color var(--form-select-transition-duration) var(--form-select-transition-easing),
143
+ background-color var(--form-select-transition-duration) var(--form-select-transition-easing),
144
+ box-shadow var(--form-select-transition-duration) var(--form-select-transition-easing),
145
+ border-color var(--form-select-transition-duration) var(--form-select-transition-easing),
146
+ outline-offset var(--form-select-transition-duration) var(--form-select-transition-easing);
147
+
148
+ &:focus {
149
+ border-color: var(--form-select-focus-border-color);
150
+ outline: var(--form-select-focus-outline-width) var(--form-select-focus-outline-style)
151
+ var(--form-select-focus-outline-color);
152
+ outline-offset: var(--form-select-focus-outline-offset);
153
+ }
154
+
155
+ &.is-invalid {
156
+ color: var(--error);
157
+ border-color: var(--error);
158
+
159
+ &:focus {
160
+ outline: var(--focus-outline-error);
161
+ outline-offset: var(--form-select-focus-outline-offset);
162
+ }
163
+ }
164
+
165
+ &:disabled,
166
+ &[disabled] {
167
+ opacity: 1;
168
+ cursor: not-allowed;
169
+ pointer-events: none;
170
+ box-shadow: none;
171
+ outline: 0;
172
+ color: var(--form-select-disabled-text-color);
173
+ background-color: var(--form-select-disabled-bg-color);
174
+ border-color: var(--form-select-disabled-border-color);
175
+ }
176
+ }
177
+ }
178
+
90
179
  @layer components {
91
180
  .form-check {
92
181
  --form-check-gap: var(--spacer-2);
@@ -133,7 +222,7 @@
133
222
  border-color: var(--form-check-input-checked-border-color);
134
223
  }
135
224
 
136
- &:checked::after {
225
+ &[type='checkbox']:checked::after {
137
226
  content: '';
138
227
  position: absolute;
139
228
  inset-inline-start: 0.25rem;
@@ -145,6 +234,23 @@
145
234
  transform: rotate(45deg);
146
235
  }
147
236
 
237
+ &[type='radio'] {
238
+ border-radius: 9999px;
239
+ }
240
+
241
+ &[type='radio']:checked::after {
242
+ content: '';
243
+ position: absolute;
244
+ inset-block-start: 50%;
245
+ inset-inline-start: 50%;
246
+ width: 0.5rem;
247
+ height: 0.5rem;
248
+ background-color: var(--form-check-input-checked-color);
249
+ border: 0;
250
+ border-radius: 9999px;
251
+ transform: translate(-50%, -50%);
252
+ }
253
+
148
254
  &:focus-visible {
149
255
  border-color: var(--primary-hover);
150
256
  outline: var(--focus-outline-width) var(--focus-outline-style) var(--focus-outline-color);
@@ -202,3 +308,122 @@
202
308
  color: var(--error);
203
309
  }
204
310
  }
311
+
312
+ @layer components {
313
+ .form-switch {
314
+ --form-switch-gap: var(--spacer-2);
315
+
316
+ --form-switch-input-width: 2.5rem;
317
+ --form-switch-input-height: 1.25rem;
318
+ --form-switch-input-padding: 0.125rem;
319
+
320
+ --form-switch-input-bg-color: var(--bg-highlight);
321
+ --form-switch-input-border-width: var(--border-width);
322
+ --form-switch-input-border-color: var(--border-color);
323
+ --form-switch-input-border-radius: 9999px;
324
+
325
+ --form-switch-input-checked-bg-color: var(--primary);
326
+ --form-switch-input-checked-border-color: var(--primary);
327
+
328
+ --form-switch-thumb-size: 1rem;
329
+ --form-switch-thumb-bg-color: var(--bg-surface);
330
+ --form-switch-thumb-box-shadow: var(--shadow-sm);
331
+
332
+ --form-switch-disabled-bg-color: var(--disabled-bg-color);
333
+ --form-switch-disabled-border-color: var(--disabled-border-color);
334
+ --form-switch-disabled-thumb-bg-color: var(--disabled-text-color);
335
+
336
+ --form-switch-focus-outline-width: var(--focus-outline-width);
337
+ --form-switch-focus-outline-style: var(--focus-outline-style);
338
+ --form-switch-focus-outline-color: var(--focus-outline-color);
339
+ --form-switch-focus-outline-offset: var(--focus-offset);
340
+
341
+ --form-switch-transition-duration: var(--transition-duration);
342
+ --form-switch-transition-easing: var(--transition-easing);
343
+
344
+ display: flex;
345
+ align-items: center;
346
+ gap: var(--form-switch-gap);
347
+
348
+ .form-switch-input {
349
+ box-sizing: border-box;
350
+ display: inline-flex;
351
+ align-items: center;
352
+ flex-shrink: 0;
353
+ width: var(--form-switch-input-width);
354
+ height: var(--form-switch-input-height);
355
+ margin: 0;
356
+ padding: var(--form-switch-input-padding);
357
+ appearance: none;
358
+ cursor: pointer;
359
+ background-color: var(--form-switch-input-bg-color);
360
+ border: var(--form-switch-input-border-width) solid var(--form-switch-input-border-color);
361
+ border-radius: var(--form-switch-input-border-radius);
362
+
363
+ transition:
364
+ background-color var(--form-switch-transition-duration) var(--form-switch-transition-easing),
365
+ border-color var(--form-switch-transition-duration) var(--form-switch-transition-easing),
366
+ box-shadow var(--form-switch-transition-duration) var(--form-switch-transition-easing);
367
+
368
+ &::after {
369
+ content: '';
370
+ display: block;
371
+ flex: 0 0 var(--form-switch-thumb-size);
372
+ width: var(--form-switch-thumb-size);
373
+ height: var(--form-switch-thumb-size);
374
+ background-color: var(--form-switch-thumb-bg-color);
375
+ border-radius: 9999px;
376
+ box-shadow: var(--form-switch-thumb-box-shadow);
377
+ transform: translateX(0);
378
+
379
+ transition:
380
+ transform var(--form-switch-transition-duration) var(--form-switch-transition-easing),
381
+ background-color var(--form-switch-transition-duration) var(--form-switch-transition-easing);
382
+ }
383
+
384
+ &:checked {
385
+ background-color: var(--form-switch-input-checked-bg-color);
386
+ border-color: var(--form-switch-input-checked-border-color);
387
+
388
+ &::after {
389
+ transform: translateX(
390
+ calc(
391
+ var(--form-switch-input-width) - var(--form-switch-thumb-size) -
392
+ (var(--form-switch-input-padding) * 2) - (var(--form-switch-input-border-width) * 2)
393
+ )
394
+ );
395
+ }
396
+ }
397
+
398
+ &:focus-visible {
399
+ outline: var(--form-switch-focus-outline-width) var(--form-switch-focus-outline-style)
400
+ var(--form-switch-focus-outline-color);
401
+ outline-offset: var(--form-switch-focus-outline-offset);
402
+ }
403
+
404
+ &.is-invalid {
405
+ border-color: var(--error);
406
+
407
+ &:focus-visible {
408
+ outline: var(--focus-outline-error);
409
+ outline-offset: var(--form-switch-focus-outline-offset);
410
+ }
411
+ }
412
+
413
+ &:disabled,
414
+ &[disabled] {
415
+ cursor: not-allowed;
416
+ background-color: var(--form-switch-disabled-bg-color);
417
+ border-color: var(--form-switch-disabled-border-color);
418
+
419
+ &::after {
420
+ background-color: var(--form-switch-disabled-thumb-bg-color);
421
+ }
422
+ }
423
+ }
424
+
425
+ .form-label {
426
+ margin-bottom: 0;
427
+ }
428
+ }
429
+ }
package/scss/flex.scss CHANGED
@@ -114,40 +114,6 @@
114
114
  .flex-nowrap {
115
115
  flex-wrap: nowrap;
116
116
  }
117
-
118
- // order
119
- .order-0 {
120
- order: 0;
121
- }
122
-
123
- .order-1 {
124
- order: 1;
125
- }
126
-
127
- .order-2 {
128
- order: 2;
129
- }
130
-
131
- .order-3 {
132
- order: 3;
133
- }
134
-
135
- .order-4 {
136
- order: 4;
137
- }
138
-
139
- .order-5 {
140
- order: 5;
141
- }
142
-
143
- .order-first {
144
- order: -1;
145
- }
146
-
147
- .order-last {
148
- order: 6;
149
- }
150
-
151
117
  // align-content
152
118
  // TODO
153
119
  }
package/scss/index.scss CHANGED
@@ -18,6 +18,9 @@
18
18
  @forward './gap.scss';
19
19
  @forward './gap-responsive.scss';
20
20
 
21
+ @forward './order.scss';
22
+ @forward './order-responsive.scss';
23
+
21
24
  @forward './borders.scss';
22
25
 
23
26
  @forward './components/alert.scss';
@@ -0,0 +1,42 @@
1
+ @use 'sass:map';
2
+ @use './theme.scss' as theme;
3
+
4
+ // Order utilities work with flex and grid items.
5
+
6
+ @layer utilities {
7
+ @each $bp, $bp-value in map.get(theme.$theme, breakpoints) {
8
+ @media (min-width: #{$bp-value}) {
9
+ .order-#{$bp}-0 {
10
+ order: 0;
11
+ }
12
+
13
+ .order-#{$bp}-1 {
14
+ order: 1;
15
+ }
16
+
17
+ .order-#{$bp}-2 {
18
+ order: 2;
19
+ }
20
+
21
+ .order-#{$bp}-3 {
22
+ order: 3;
23
+ }
24
+
25
+ .order-#{$bp}-4 {
26
+ order: 4;
27
+ }
28
+
29
+ .order-#{$bp}-5 {
30
+ order: 5;
31
+ }
32
+
33
+ .order-#{$bp}-first {
34
+ order: -1;
35
+ }
36
+
37
+ .order-#{$bp}-last {
38
+ order: 6;
39
+ }
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,35 @@
1
+ // Order utilities work with flex and grid items.
2
+
3
+ @layer utilities {
4
+ .order-0 {
5
+ order: 0;
6
+ }
7
+
8
+ .order-1 {
9
+ order: 1;
10
+ }
11
+
12
+ .order-2 {
13
+ order: 2;
14
+ }
15
+
16
+ .order-3 {
17
+ order: 3;
18
+ }
19
+
20
+ .order-4 {
21
+ order: 4;
22
+ }
23
+
24
+ .order-5 {
25
+ order: 5;
26
+ }
27
+
28
+ .order-first {
29
+ order: -1;
30
+ }
31
+
32
+ .order-last {
33
+ order: 6;
34
+ }
35
+ }