@nulllogic/scssleon 1.0.1 → 1.0.2

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 (69) hide show
  1. package/package.json +1 -1
  2. package/scss/_base.scss +31 -0
  3. package/scss/_config.scss +109 -0
  4. package/scss/_content.scss +24 -0
  5. package/scss/_functions.scss +97 -0
  6. package/scss/_mixins.scss +22 -0
  7. package/scss/_reset.scss +347 -0
  8. package/scss/_root.scss +36 -0
  9. package/scss/_utilities.scss +356 -0
  10. package/scss/animations/_placeholder.scss +12 -0
  11. package/scss/components/_accordion.scss +15 -0
  12. package/scss/components/_alert.scss +15 -0
  13. package/scss/components/_badge.scss +15 -0
  14. package/scss/components/_breadcrumb.scss +15 -0
  15. package/scss/components/_button.scss +15 -0
  16. package/scss/components/_button_group.scss +15 -0
  17. package/scss/components/_card.scss +15 -0
  18. package/scss/components/_container.scss +39 -0
  19. package/scss/components/_dropdown.scss +5 -0
  20. package/scss/components/_form.scss +50 -0
  21. package/scss/components/_loader.scss +15 -0
  22. package/scss/components/_modal.scss +15 -0
  23. package/scss/components/_nav.scss +15 -0
  24. package/scss/components/_navbar.scss +16 -0
  25. package/scss/components/_overlay.scss +15 -0
  26. package/scss/components/_pagination.scss +15 -0
  27. package/scss/components/_placeholder.scss +33 -0
  28. package/scss/components/_sidecap.scss +15 -0
  29. package/scss/components/_table.scss +78 -0
  30. package/scss/forms/_checkbox.scss +33 -0
  31. package/scss/forms/_input-group.scss +121 -0
  32. package/scss/forms/_input.scss +34 -0
  33. package/scss/forms/_label.scss +15 -0
  34. package/scss/forms/_radio.scss +34 -0
  35. package/scss/forms/_range.scss +7 -0
  36. package/scss/forms/_select.scss +34 -0
  37. package/scss/forms/_switch.scss +18 -0
  38. package/scss/forms/_validation.scss +12 -0
  39. package/scss/helpers/_clearfix.scss +5 -0
  40. package/scss/helpers/_screen_reader.scss +11 -0
  41. package/scss/helpers/_text_truncate.scss +5 -0
  42. package/scss/mixins/_border-radius.scss +3 -0
  43. package/scss/mixins/_box-shadow.scss +16 -0
  44. package/scss/mixins/_breakpoints.scss +10 -0
  45. package/scss/mixins/_clearfix.scss +9 -0
  46. package/scss/mixins/_forms.scss +152 -0
  47. package/scss/mixins/_gradients.scss +6 -0
  48. package/scss/mixins/_grid.scss +93 -0
  49. package/scss/mixins/_transition.scss +30 -0
  50. package/scss/mixins/_utilities.scss +15 -0
  51. package/scss/mixins/generators/_color-sheme.scss +17 -0
  52. package/scss/mixins/generators/_components.scss +33 -0
  53. package/scss/mixins/generators/_properties.scss +110 -0
  54. package/scss/mixins/generators/_wrapper.scss +16 -0
  55. package/scss/mixins/variants/_alert.scss +24 -0
  56. package/scss/mixins/variants/_button.scss +122 -0
  57. package/scss/scssleon.scss +205 -0
  58. package/scss/themes/_default.scss +874 -0
  59. package/scss/themes/_wordpress_admin.scss +0 -0
  60. package/scss/utilities/_api.scss +24 -0
  61. package/.dockerignore +0 -2
  62. package/.eslintignore +0 -2
  63. package/.prettierignore +0 -1
  64. package/Dockerfile +0 -29
  65. package/Makefile +0 -22
  66. package/dist/css/scssleon.css +0 -1830
  67. package/dist/css/scssleon.css.map +0 -1
  68. /package/{CHANGELOG.md → scss/components/_icon.scss} +0 -0
  69. /package/{CONTRIBUTING.md → scss/themes/_shopify_app.scss} +0 -0
@@ -0,0 +1,33 @@
1
+ /*
2
+ ┌─┐┬ ┌─┐┌─┐┌─┐┬ ┬┌─┐┬ ┌┬┐┌─┐┬─┐┌─┐
3
+ ├─┘│ ├─┤│ ├┤ ├─┤│ ││ ││├┤ ├┬┘└─┐
4
+ ┴ ┴─┘┴ ┴└─┘└─┘┴ ┴└─┘┴─┘─┴┘└─┘┴└─└─┘
5
+ */
6
+
7
+ /* Load settings and functions */
8
+ @use "../mixins" as mixins;
9
+ @use "../functions" as functions;
10
+
11
+ /* SCSS variables definition requirement */
12
+ $config: nil !default;
13
+ $theme: nil !default;
14
+
15
+ @include mixins.generate-component(
16
+ "placeholder",
17
+ "placeholder",
18
+ $config,
19
+ $theme
20
+ );
21
+
22
+ @keyframes placeholder-glow {
23
+ 50% {
24
+ opacity: 0.5;
25
+ }
26
+ }
27
+
28
+ @keyframes placeholder-wave {
29
+ 100% {
30
+ mask-position: -200% 0;
31
+ -webkit-mask-position: -200% 0;
32
+ }
33
+ }
@@ -0,0 +1,15 @@
1
+ /*
2
+ ┌─┐┬┌┬┐┌─┐┌─┐┌─┐┌─┐
3
+ └─┐│ ││├┤ │ ├─┤├─┘
4
+ └─┘┴─┴┘└─┘└─┘┴ ┴┴
5
+ */
6
+
7
+ /* Load settings and functions */
8
+ @use "../mixins" as mixins;
9
+ @use "../functions" as functions;
10
+
11
+ /* SCSS variables definition requirement */
12
+ $config: nil !default;
13
+ $theme: nil !default;
14
+
15
+ @include mixins.generate-component("sidecap", "sidecap", $config, $theme);
@@ -0,0 +1,78 @@
1
+ /*
2
+ ┌┬┐┌─┐┌┐ ┬ ┌─┐
3
+ │ ├─┤├┴┐│ ├┤
4
+ ┴ ┴ ┴└─┘┴─┘└─┘
5
+ */
6
+
7
+ /* Load settings and functions */
8
+ @use "../mixins" as mixins;
9
+ @use "../functions" as functions;
10
+
11
+ /* SCSS variables definition requirement */
12
+ $config: nil !default;
13
+ $theme: nil !default;
14
+
15
+ .table {
16
+ width: 100%;
17
+ color: inherit;
18
+ vertical-align: middle;
19
+ border-color: inherit;
20
+
21
+ > :not(caption) > * > * {
22
+ padding: 5px;
23
+ border-bottom-width: 1px;
24
+ }
25
+
26
+ > tbody {
27
+ vertical-align: inherit;
28
+ }
29
+
30
+ > thead {
31
+ vertical-align: bottom;
32
+ }
33
+ }
34
+
35
+ .table-group-divider {
36
+ border-top: 1px solid #ccc;
37
+ }
38
+
39
+ // Border versions
40
+ .table-bordered {
41
+ > :not(caption) > * {
42
+ border-width: 1px;
43
+
44
+ > * {
45
+ border-width: 1px;
46
+ }
47
+ }
48
+ }
49
+
50
+ .table-borderless {
51
+ > :not(caption) > * > * {
52
+ border-bottom-width: 0;
53
+ }
54
+
55
+ > :not(:first-child) {
56
+ border-top-width: 0;
57
+ }
58
+ }
59
+
60
+ // Zebra-striping
61
+ .table-striped {
62
+ > tbody > tr:nth-of-type(odd) > * {
63
+ color: inherit;
64
+ }
65
+ }
66
+
67
+ // For columns
68
+ .table-striped-columns {
69
+ > :not(caption) > tr > :nth-child(even) {
70
+ color: inherit;
71
+ }
72
+ }
73
+
74
+ .table-hover {
75
+ > tbody > tr:hover > * {
76
+ color: inherit;
77
+ }
78
+ }
@@ -0,0 +1,33 @@
1
+ @use '../themes/default' as theme;
2
+ @use '../functions' as functions;
3
+ @use '../mixins' as mixins;
4
+
5
+ $config: nil !default;
6
+ $theme: nil !default;
7
+
8
+ $prefix: functions.get-config($config, 'prefix');
9
+ $color_scheme: functions.get-config($config, 'color-scheme');
10
+
11
+ $is_shadow_enabled: functions.get-config($config, 'shadow');
12
+ $is_border_radius_enabled: functions.get-config($config, 'border-radius');
13
+
14
+ $label-component: functions.get-theme($theme, 'components.form.checkbox');
15
+
16
+ .checkbox {
17
+ @include mixins.generate-properties('checkbox', $label-component, $config);
18
+
19
+ background: var(--#{$prefix}-select-background);
20
+ color: var(--#{$prefix}-select-color);
21
+ padding: var(--#{$prefix}-select-padding);
22
+ border: var(--#{$prefix}-select-border);
23
+
24
+ @if($is_border_radius_enabled) {
25
+ @include mixins.border-radius(var(--#{$prefix}-select-border-radius));
26
+ }
27
+
28
+ @if($is_shadow_enabled) {
29
+ @include mixins.box-shadow(var(--#{$prefix}-select-box-shadow));
30
+ }
31
+
32
+ }
33
+
@@ -0,0 +1,121 @@
1
+ //
2
+ // Base styles
3
+ //
4
+
5
+ .input-group {
6
+ // position: relative;
7
+ // display: flex;
8
+ // flex-wrap: wrap; // For form validation feedback
9
+ // align-items: stretch;
10
+ // width: 100%;
11
+ //
12
+ // > .form-control,
13
+ // > .form-select {
14
+ // position: relative; // For focus state's z-index
15
+ // flex: 1 1 auto;
16
+ // width: 1%;
17
+ // min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size
18
+ // }
19
+ //
20
+ // // Bring the "active" form control to the top of surrounding elements
21
+ // > .form-control:focus,
22
+ // > .form-select:focus {
23
+ // z-index: 3;
24
+ // }
25
+ //
26
+ // // Ensure buttons are always above inputs for more visually pleasing borders.
27
+ // // This isn't needed for `.input-group-text` since it shares the same border-color
28
+ // // as our inputs.
29
+ // .btn {
30
+ // position: relative;
31
+ // z-index: 2;
32
+ //
33
+ // &:focus {
34
+ // z-index: 3;
35
+ // }
36
+ // }
37
+ //}
38
+ //
39
+ //
40
+ //// Textual addons
41
+ ////
42
+ //// Serves as a catch-all element for any text or radio/checkbox input you wish
43
+ //// to prepend or append to an input.
44
+ //
45
+ //.input-group-text {
46
+ // display: flex;
47
+ // align-items: center;
48
+ // padding: $input-group-addon-padding-y $input-group-addon-padding-x;
49
+ // font-size: $input-font-size; // Match inputs
50
+ // font-weight: $input-group-addon-font-weight;
51
+ // line-height: $input-line-height;
52
+ // color: $input-group-addon-color;
53
+ // text-align: center;
54
+ // white-space: nowrap;
55
+ // background-color: $input-group-addon-bg;
56
+ // border: $input-border-width solid $input-group-addon-border-color;
57
+ // @include border-radius($input-border-radius);
58
+ //}
59
+ //
60
+ //
61
+ //// Sizing
62
+ ////
63
+ //// Remix the default form control sizing classes into new ones for easier
64
+ //// manipulation.
65
+ //
66
+ //.input-group-lg > .form-control,
67
+ //.input-group-lg > .form-select,
68
+ //.input-group-lg > .input-group-text,
69
+ //.input-group-lg > .btn {
70
+ // padding: $input-padding-y-lg $input-padding-x-lg;
71
+ // font-size: $input-font-size-lg;
72
+ // @include border-radius($input-border-radius-lg);
73
+ //}
74
+ //
75
+ //.input-group-sm > .form-control,
76
+ //.input-group-sm > .form-select,
77
+ //.input-group-sm > .input-group-text,
78
+ //.input-group-sm > .btn {
79
+ // padding: $input-padding-y-sm $input-padding-x-sm;
80
+ // font-size : $input-font-size-sm;
81
+ // @include border-radius($input-border-radius-sm);
82
+ //}
83
+ //
84
+ //.input-group-lg > .form-select,
85
+ //.input-group-sm > .form-select {
86
+ // padding-right: $form-select-padding-x + $form-select-indicator-padding;
87
+ //}
88
+ //
89
+ //
90
+ //// Rounded corners
91
+ ////
92
+ //// These rulesets must come after the sizing ones to properly override sm and lg
93
+ //// border-radius values when extending. They're more specific than we'd like
94
+ //// with the `.input-group >` part, but without it, we cannot override the sizing.
95
+ //
96
+ //// stylelint-disable-next-line no-duplicate-selectors
97
+ //.input-group {
98
+ // &:not(.has-validation) {
99
+ // > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),
100
+ // > .dropdown-toggle:nth-last-child(n + 3) {
101
+ // @include border-end-radius(0);
102
+ // }
103
+ // }
104
+ //
105
+ // &.has-validation {
106
+ // > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu),
107
+ // > .dropdown-toggle:nth-last-child(n + 4) {
108
+ // @include border-end-radius(0);
109
+ // }
110
+ // }
111
+ //
112
+ // $validation-messages: "";
113
+ // @each $state in map-keys($form-validation-states) {
114
+ // $validation-messages: $validation-messages + ":not(." + unquote($state) + "-tooltip)" + ":not(." + unquote($state) + "-feedback)";
115
+ // }
116
+ //
117
+ // > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
118
+ // margin-left: -$input-border-width;
119
+ // @include border-start-radius(0);
120
+ // }
121
+ }
@@ -0,0 +1,34 @@
1
+ @use '../themes/default' as theme;
2
+ @use '../functions' as functions;
3
+ @use '../mixins' as mixins;
4
+
5
+ $config: nil !default;
6
+ $theme: nil !default;
7
+
8
+ $prefix: functions.get-config($config, 'prefix');
9
+ $color_scheme: functions.get-config($config, 'color-scheme');
10
+
11
+ $is_shadow_enabled: functions.get-config($config, 'shadow');
12
+ $is_border_radius_enabled: functions.get-config($config, 'border-radius');
13
+
14
+ $label-component: functions.get-theme($theme, 'components.form.input');
15
+
16
+ .input {
17
+ @include mixins.generate-properties('input', $label-component, $config);
18
+
19
+ background: var(--#{$prefix}-input-background);
20
+ color: var(--#{$prefix}-input-color);
21
+ padding: var(--#{$prefix}-input-padding);
22
+ border: var(--#{$prefix}-input-border);
23
+
24
+ @if($is_border_radius_enabled) {
25
+ @include mixins.border-radius(var(--#{$prefix}-input-border-radius));
26
+ }
27
+
28
+ @if($is_shadow_enabled) {
29
+ @include mixins.box-shadow(var(--#{$prefix}-input-box-shadow));
30
+ }
31
+
32
+
33
+ }
34
+
@@ -0,0 +1,15 @@
1
+ @use '../themes/default' as theme;
2
+ @use '../functions' as functions;
3
+ @use '../mixins' as mixins;
4
+
5
+ $config: nil !default;
6
+ $theme: nil !default;
7
+
8
+ $prefix: functions.get-config($config, 'prefix');
9
+ $color_scheme: functions.get-config($config, 'color-scheme');
10
+
11
+ $label-component: functions.get-theme($theme, 'components.form.label');
12
+
13
+ .label {
14
+ @include mixins.generate-properties('label', $label-component, $config);
15
+ }
@@ -0,0 +1,34 @@
1
+ @use '../themes/default' as theme;
2
+ @use '../functions' as functions;
3
+ @use '../mixins' as mixins;
4
+
5
+ $config: nil !default;
6
+ $theme: nil !default;
7
+
8
+ $prefix: functions.get-config($config, 'prefix');
9
+ $color_scheme: functions.get-config($config, 'color-scheme');
10
+
11
+ $is_shadow_enabled: functions.get-config($config, 'shadow');
12
+ $is_border_radius_enabled: functions.get-config($config, 'border-radius');
13
+
14
+ $label-component: functions.get-theme($theme, 'components.form.radio');
15
+
16
+ .radio {
17
+ @include mixins.generate-properties('radio', $label-component, $config);
18
+
19
+ background: var(--#{$prefix}-select-background);
20
+ color: var(--#{$prefix}-select-color);
21
+ padding: var(--#{$prefix}-select-padding);
22
+ border: var(--#{$prefix}-select-border);
23
+
24
+ @if($is_border_radius_enabled) {
25
+ @include mixins.border-radius(var(--#{$prefix}-select-border-radius));
26
+ }
27
+
28
+ @if($is_shadow_enabled) {
29
+ @include mixins.box-shadow(var(--#{$prefix}-select-box-shadow));
30
+ }
31
+
32
+ }
33
+
34
+
@@ -0,0 +1,7 @@
1
+ @use '../themes/default' as theme;
2
+ @use '../functions' as functions;
3
+ @use '../mixins' as mixins;
4
+
5
+ $config: nil !default;
6
+ $theme: nil !default;
7
+
@@ -0,0 +1,34 @@
1
+ @use '../themes/default' as theme;
2
+ @use '../functions' as functions;
3
+ @use '../mixins' as mixins;
4
+
5
+ $config: nil !default;
6
+ $theme: nil !default;
7
+
8
+ $prefix: functions.get-config($config, 'prefix');
9
+ $color_scheme: functions.get-config($config, 'color-scheme');
10
+
11
+ $is_shadow_enabled: functions.get-config($config, 'shadow');
12
+ $is_border_radius_enabled: functions.get-config($config, 'border-radius');
13
+
14
+ $label-component: functions.get-theme($theme, 'components.form.select');
15
+
16
+ .select {
17
+ @include mixins.generate-properties('select', $label-component, $config);
18
+
19
+ background: var(--#{$prefix}-select-background);
20
+ color: var(--#{$prefix}-select-color);
21
+ padding: var(--#{$prefix}-select-padding);
22
+ border: var(--#{$prefix}-select-border);
23
+ appearance: none;
24
+ -webkit-appearance: none;
25
+
26
+ @if($is_border_radius_enabled) {
27
+ @include mixins.border-radius(var(--#{$prefix}-select-border-radius));
28
+ }
29
+
30
+ @if($is_shadow_enabled) {
31
+ @include mixins.box-shadow(var(--#{$prefix}-select-box-shadow));
32
+ }
33
+
34
+ }
@@ -0,0 +1,18 @@
1
+ @use '../themes/default' as theme;
2
+ @use '../functions' as functions;
3
+ @use '../mixins' as mixins;
4
+
5
+ $config: nil !default;
6
+ $theme: nil !default;
7
+
8
+ $prefix: functions.get-config($config, 'prefix');
9
+ $color_scheme: functions.get-config($config, 'color-scheme');
10
+
11
+ $is_shadow_enabled: functions.get-config($config, 'shadow');
12
+ $is_border_radius_enabled: functions.get-config($config, 'border-radius');
13
+
14
+ $label-component: functions.get-theme($theme, 'components.form.input');
15
+
16
+ .switch {
17
+
18
+ }
@@ -0,0 +1,12 @@
1
+ // Form validation
2
+ //
3
+ // Provide feedback to users when form field values are valid or invalid. Works
4
+ // primarily for client-side validation via scoped `:invalid` and `:valid`
5
+ // pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
6
+ // server-side validation.
7
+
8
+ // scss-docs-start form-validation-states-loop
9
+ //@each $state, $data in $form-validation-states {
10
+ // @include form-validation-state($state, $data...);
11
+ //}
12
+ // scss-docs-end form-validation-states-loop
@@ -0,0 +1,5 @@
1
+ @use '../mixins' as mixins;
2
+
3
+ .clearfix {
4
+ @include mixins.clearfix();
5
+ }
@@ -0,0 +1,11 @@
1
+ .sr {
2
+ position: absolute;
3
+ width: 1px;
4
+ height: 1px;
5
+ padding: 0;
6
+ margin: -1px;
7
+ overflow: hidden;
8
+ clip: rect(0, 0, 0, 0);
9
+ white-space: nowrap;
10
+ border-width: 0;
11
+ }
@@ -0,0 +1,5 @@
1
+ .text-truncate {
2
+ overflow: hidden;
3
+ text-overflow: ellipsis;
4
+ white-space: nowrap;
5
+ }
@@ -0,0 +1,3 @@
1
+ @mixin border-radius($radius) {
2
+ border-radius: $radius;
3
+ }
@@ -0,0 +1,16 @@
1
+ @mixin box-shadow($shadow...) {
2
+ $result: ();
3
+
4
+ @each $value in $shadow {
5
+ @if $value != null {
6
+ $result: append($result, $value, "comma");
7
+ }
8
+ @if $value == none and length($shadow) > 1 {
9
+ @warn "The keyword 'none' must be used as a single argument.";
10
+ }
11
+ }
12
+
13
+ @if (length($result) > 0) {
14
+ box-shadow: $result;
15
+ }
16
+ }
@@ -0,0 +1,10 @@
1
+ @use 'sass:map';
2
+ @use '../functions' as functions;
3
+
4
+ @mixin breakpoint($size, $type) {
5
+
6
+ @media (screen and min-width: $size) {
7
+ @content;
8
+ }
9
+
10
+ }
@@ -0,0 +1,9 @@
1
+ // scss-docs-start clearfix
2
+ @mixin clearfix() {
3
+ &::after {
4
+ display: block;
5
+ clear: both;
6
+ content: "";
7
+ }
8
+ }
9
+ // scss-docs-end clearfix
@@ -0,0 +1,152 @@
1
+ // This mixin uses an `if()` technique to be compatible with Dart Sass
2
+ // See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details
3
+
4
+ // scss-docs-start form-validation-mixins
5
+ @mixin form-validation-state-selector($state) {
6
+ @if ($state == "valid" or $state == "invalid") {
7
+ .was-validated #{if(&, "&", "")}:#{$state},
8
+ #{if(&, "&", "")}.is-#{$state} {
9
+ @content;
10
+ }
11
+ } @else {
12
+ #{if(&, "&", "")}.is-#{$state} {
13
+ @content;
14
+ }
15
+ }
16
+ }
17
+
18
+ @mixin form-validation-state(
19
+ $state,
20
+ $color,
21
+ $icon,
22
+ $tooltip-color: color-contrast($color),
23
+ $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),
24
+ $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)
25
+ ) {
26
+ .#{$state}-feedback {
27
+ display: none;
28
+ width: 100%;
29
+ margin-top: $form-feedback-margin-top;
30
+ font-size : $form-feedback-font-size;
31
+ font-style: $form-feedback-font-style;
32
+ color: $color;
33
+ }
34
+
35
+ .#{$state}-tooltip {
36
+ position: absolute;
37
+ top: 100%;
38
+ z-index: 5;
39
+ display: none;
40
+ max-width: 100%; // Contain to parent when possible
41
+ padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
42
+ margin-top: .1rem;
43
+ font-size : $form-feedback-tooltip-font-size;
44
+ line-height: $form-feedback-tooltip-line-height;
45
+ color: $tooltip-color;
46
+ background-color: $tooltip-bg-color;
47
+ @include border-radius($form-feedback-tooltip-border-radius);
48
+ }
49
+
50
+ @include form-validation-state-selector($state) {
51
+ ~ .#{$state}-feedback,
52
+ ~ .#{$state}-tooltip {
53
+ display: block;
54
+ }
55
+ }
56
+
57
+ .form-control {
58
+ @include form-validation-state-selector($state) {
59
+ border-color: $color;
60
+
61
+ @if $enable-validation-icons {
62
+ padding-right: $input-height-inner;
63
+ background-image: escape-svg($icon);
64
+ background-repeat: no-repeat;
65
+ background-position: right $input-height-inner-quarter center;
66
+ background-size: $input-height-inner-half $input-height-inner-half;
67
+ }
68
+
69
+ &:focus {
70
+ border-color: $color;
71
+ box-shadow: $focus-box-shadow;
72
+ }
73
+ }
74
+ }
75
+
76
+ // stylelint-disable-next-line selector-no-qualifying-type
77
+ textarea.form-control {
78
+ @include form-validation-state-selector($state) {
79
+ @if $enable-validation-icons {
80
+ padding-right: $input-height-inner;
81
+ background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
82
+ }
83
+ }
84
+ }
85
+
86
+ .form-select {
87
+ @include form-validation-state-selector($state) {
88
+ border-color: $color;
89
+
90
+ @if $enable-validation-icons {
91
+ &:not([multiple]):not([size]),
92
+ &:not([multiple])[size="1"] {
93
+ padding-right: $form-select-feedback-icon-padding-end;
94
+ background-image: escape-svg($form-select-indicator), escape-svg($icon);
95
+ background-position: $form-select-bg-position, $form-select-feedback-icon-position;
96
+ background-size: $form-select-bg-size, $form-select-feedback-icon-size;
97
+ }
98
+ }
99
+
100
+ &:focus {
101
+ border-color: $color;
102
+ box-shadow: $focus-box-shadow;
103
+ }
104
+ }
105
+ }
106
+
107
+ .form-control-color {
108
+ @include form-validation-state-selector($state) {
109
+ @if $enable-validation-icons {
110
+ width: add($form-color-width, $input-height-inner);
111
+ }
112
+ }
113
+ }
114
+
115
+ .form-check-input {
116
+ @include form-validation-state-selector($state) {
117
+ border-color: $color;
118
+
119
+ &:checked {
120
+ background-color: $color;
121
+ }
122
+
123
+ &:focus {
124
+ box-shadow: $focus-box-shadow;
125
+ }
126
+
127
+ ~ .form-check-label {
128
+ color: $color;
129
+ }
130
+ }
131
+ }
132
+ .form-check-inline .form-check-input {
133
+ ~ .#{$state}-feedback {
134
+ margin-left: .5em;
135
+ }
136
+ }
137
+
138
+ .input-group .form-control,
139
+ .input-group .form-select {
140
+ @include form-validation-state-selector($state) {
141
+ @if $state == "valid" {
142
+ z-index: 1;
143
+ } @else if $state == "invalid" {
144
+ z-index: 2;
145
+ }
146
+ &:focus {
147
+ z-index: 3;
148
+ }
149
+ }
150
+ }
151
+ }
152
+ // scss-docs-end form-validation-mixins
@@ -0,0 +1,6 @@
1
+ // Gradients
2
+ // scss-docs-start gradient-bg-mixin
3
+ @mixin gradient-bg($color: null) {
4
+ background-color: $color;
5
+ }
6
+ // scss-docs-end gradient-bg-mixin