sneat_rails 0.1.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.
Files changed (123) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +28 -0
  4. data/Rakefile +6 -0
  5. data/app/assets/builds/sneat_rails/application.css +3 -0
  6. data/app/assets/builds/sneat_rails/fonts/boxicons.eot +0 -0
  7. data/app/assets/builds/sneat_rails/fonts/boxicons.svg +1660 -0
  8. data/app/assets/builds/sneat_rails/fonts/boxicons.ttf +0 -0
  9. data/app/assets/builds/sneat_rails/fonts/boxicons.woff +0 -0
  10. data/app/assets/builds/sneat_rails/fonts/boxicons.woff2 +0 -0
  11. data/app/assets/builds/sneat_rails/sneat.css +43157 -0
  12. data/app/assets/builds/sneat_rails/sneat.css.map +1 -0
  13. data/app/assets/config/manifest.js +3 -0
  14. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_accordion.scss +56 -0
  15. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_alert.scss +9 -0
  16. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_badge.scss +18 -0
  17. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_breadcrumb.scss +47 -0
  18. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_button-group.scss +59 -0
  19. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_buttons.scss +127 -0
  20. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_card.scss +197 -0
  21. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_carousel.scss +42 -0
  22. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_close.scss +6 -0
  23. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_dropdown.scss +63 -0
  24. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_forms.scss +10 -0
  25. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_functions.scss +147 -0
  26. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_include.scss +13 -0
  27. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_list-group.scss +58 -0
  28. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_mixins.scss +16 -0
  29. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_modal.scss +110 -0
  30. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_nav.scss +327 -0
  31. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_navbar.scss +58 -0
  32. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_offcanvas.scss +10 -0
  33. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_pagination.scss +92 -0
  34. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_popover.scss +31 -0
  35. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_progress.scss +31 -0
  36. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_reboot.scss +32 -0
  37. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_root.scss +4 -0
  38. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_spinners.scss +21 -0
  39. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_tables.scss +106 -0
  40. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_toasts.scss +61 -0
  41. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_tooltip.scss +11 -0
  42. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_type.scss +2 -0
  43. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_utilities-ltr.scss +283 -0
  44. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_utilities.scss +1027 -0
  45. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/_variables.scss +935 -0
  46. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/forms/_floating-labels.scss +12 -0
  47. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/forms/_form-control.scss +15 -0
  48. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/forms/_form-range.scss +52 -0
  49. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/forms/_form-select.scss +11 -0
  50. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/forms/_input-group.scss +77 -0
  51. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/forms/_labels.scss +17 -0
  52. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/forms/_validation.scss +58 -0
  53. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_alert.scss +39 -0
  54. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_badge.scss +9 -0
  55. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_buttons.scss +190 -0
  56. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_caret.scss +42 -0
  57. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_dropdown.scss +26 -0
  58. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_forms.scss +281 -0
  59. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_list-group.scss +66 -0
  60. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_misc.scss +120 -0
  61. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_navs.scss +37 -0
  62. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_pagination.scss +21 -0
  63. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_progress.scss +19 -0
  64. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_table-variants.scss +31 -0
  65. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended/mixins/_toasts.scss +33 -0
  66. data/app/assets/stylesheets/sneat_rails/_bootstrap-extended.scss +39 -0
  67. data/app/assets/stylesheets/sneat_rails/_bootstrap.scss +44 -0
  68. data/app/assets/stylesheets/sneat_rails/_boxicons.scss +6944 -0
  69. data/app/assets/stylesheets/sneat_rails/_colors.scss +39 -0
  70. data/app/assets/stylesheets/sneat_rails/_components/_app-brand.scss +64 -0
  71. data/app/assets/stylesheets/sneat_rails/_components/_avatar.scss +126 -0
  72. data/app/assets/stylesheets/sneat_rails/_components/_base.scss +159 -0
  73. data/app/assets/stylesheets/sneat_rails/_components/_common.scss +232 -0
  74. data/app/assets/stylesheets/sneat_rails/_components/_footer.scss +39 -0
  75. data/app/assets/stylesheets/sneat_rails/_components/_include.scss +11 -0
  76. data/app/assets/stylesheets/sneat_rails/_components/_layout.scss +539 -0
  77. data/app/assets/stylesheets/sneat_rails/_components/_menu.scss +346 -0
  78. data/app/assets/stylesheets/sneat_rails/_components/_mixins.scss +6 -0
  79. data/app/assets/stylesheets/sneat_rails/_components/_text-divider.scss +89 -0
  80. data/app/assets/stylesheets/sneat_rails/_components/_variables.scss +93 -0
  81. data/app/assets/stylesheets/sneat_rails/_components/mixins/_app-brand.scss +33 -0
  82. data/app/assets/stylesheets/sneat_rails/_components/mixins/_avatar.scss +22 -0
  83. data/app/assets/stylesheets/sneat_rails/_components/mixins/_footer.scss +39 -0
  84. data/app/assets/stylesheets/sneat_rails/_components/mixins/_menu.scss +124 -0
  85. data/app/assets/stylesheets/sneat_rails/_components/mixins/_misc.scss +6 -0
  86. data/app/assets/stylesheets/sneat_rails/_components/mixins/_navbar.scss +90 -0
  87. data/app/assets/stylesheets/sneat_rails/_components/mixins/_text-divider.scss +16 -0
  88. data/app/assets/stylesheets/sneat_rails/_components.scss +11 -0
  89. data/app/assets/stylesheets/sneat_rails/_custom-variables/_bootstrap-extended.scss +7 -0
  90. data/app/assets/stylesheets/sneat_rails/_custom-variables/_components.scss +6 -0
  91. data/app/assets/stylesheets/sneat_rails/_custom-variables/_libs.scss +8 -0
  92. data/app/assets/stylesheets/sneat_rails/_custom-variables/_pages.scss +8 -0
  93. data/app/assets/stylesheets/sneat_rails/_custom-variables/_support.scss +9 -0
  94. data/app/assets/stylesheets/sneat_rails/_theme/_common.scss +49 -0
  95. data/app/assets/stylesheets/sneat_rails/_theme/_theme.scss +131 -0
  96. data/app/assets/stylesheets/sneat_rails/application.css +15 -0
  97. data/app/assets/stylesheets/sneat_rails/application.scss +9 -0
  98. data/app/assets/stylesheets/sneat_rails/core.scss +4 -0
  99. data/app/assets/stylesheets/sneat_rails/pages/page-account-settings.scss +13 -0
  100. data/app/assets/stylesheets/sneat_rails/pages/page-auth.scss +106 -0
  101. data/app/assets/stylesheets/sneat_rails/pages/page-icons.scss +46 -0
  102. data/app/assets/stylesheets/sneat_rails/pages/page-misc.scss +15 -0
  103. data/app/assets/stylesheets/sneat_rails/sneat.css +3 -0
  104. data/app/assets/stylesheets/sneat_rails/sneat.scss +6 -0
  105. data/app/assets/stylesheets/sneat_rails/theme-default.scss +111 -0
  106. data/app/controllers/sneat_rails/application_controller.rb +4 -0
  107. data/app/controllers/sneat_rails/dashboard_controller.rb +10 -0
  108. data/app/helpers/sneat_rails/application_helper.rb +4 -0
  109. data/app/jobs/sneat_rails/application_job.rb +4 -0
  110. data/app/mailers/sneat_rails/application_mailer.rb +6 -0
  111. data/app/models/sneat_rails/application_record.rb +5 -0
  112. data/app/views/layouts/sneat_rails/application.html.erb +30 -0
  113. data/app/views/sneat_rails/dashboard/index.html.erb +1 -0
  114. data/app/views/sneat_rails/shared/_navbar.html.erb +3 -0
  115. data/app/views/sneat_rails/shared/_sidebar.html.erb +3 -0
  116. data/config/dartsass.rb +3 -0
  117. data/config/routes.rb +3 -0
  118. data/lib/generators/sneat_rails/install/install_generator.rb +16 -0
  119. data/lib/sneat_rails/engine.rb +20 -0
  120. data/lib/sneat_rails/version.rb +3 -0
  121. data/lib/sneat_rails.rb +6 -0
  122. data/lib/tasks/sneat_rails_tasks.rake +4 -0
  123. metadata +193 -0
@@ -0,0 +1,281 @@
1
+ // * Form controls
2
+ // *******************************************************************************
3
+
4
+ // Form control
5
+ @mixin template-form-control-theme($color) {
6
+ .form-control:focus,
7
+ .form-select:focus {
8
+ border-color: $color !important;
9
+ }
10
+
11
+ // Using :focus-within to apply focus border color to default and merged input-group
12
+ .input-group {
13
+ &:focus-within {
14
+ .form-control,
15
+ .input-group-text {
16
+ border-color: $color !important;
17
+ }
18
+ }
19
+ }
20
+ }
21
+
22
+ // Float labels
23
+ @mixin template-float-label-theme($color) {
24
+ .form-floating {
25
+ > .form-control:focus,
26
+ > .form-control:not(:placeholder-shown),
27
+ > .form-select {
28
+ ~ label {
29
+ color: $color;
30
+ }
31
+ }
32
+
33
+ > .form-control:-webkit-autofill {
34
+ ~ label {
35
+ color: $color;
36
+ }
37
+ }
38
+ }
39
+ }
40
+
41
+ // Form Switch
42
+ @mixin template-form-switch-theme($background) {
43
+ $focus-color: $background;
44
+ $focus-bg-image: str-replace(
45
+ str-replace($form-switch-focus-bg-image, '#{$form-switch-focus-color}', $focus-color),
46
+ '#',
47
+ '%23'
48
+ );
49
+
50
+ $checked-color: $component-active-color;
51
+ $checked-bg-image: str-replace(
52
+ str-replace($form-switch-checked-bg-image, '#{$form-switch-checked-color}', $checked-color),
53
+ '#',
54
+ '%23'
55
+ );
56
+
57
+ .form-switch {
58
+ .form-check-input {
59
+ &:focus {
60
+ background-image: escape-svg($focus-bg-image);
61
+ }
62
+
63
+ &:checked {
64
+ @if $enable-gradients {
65
+ background-image: escape-svg($checked-bg-image), var(--#{$variable-prefix}gradient);
66
+ } @else {
67
+ background-image: escape-svg($checked-bg-image);
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }
73
+
74
+ // File Input
75
+ @mixin template-file-input-theme($color) {
76
+ .form-control:focus ~ .form-label {
77
+ border-color: $color;
78
+
79
+ &::after {
80
+ border-color: inherit;
81
+ }
82
+ }
83
+ }
84
+
85
+ // Form Check
86
+ @mixin template-form-check-variant($parent, $background, $color: null) {
87
+ $color: if($color, $color, color-contrast($background));
88
+ $focus-border: $background;
89
+
90
+ #{$parent} .form-check-input {
91
+ &:focus {
92
+ border-color: $focus-border;
93
+ box-shadow: 0 2px 4px 0 rgba($background, 0.4);
94
+ }
95
+
96
+ &:disabled {
97
+ background-color: $form-check-input-disabled-bg;
98
+ }
99
+
100
+ &:checked,
101
+ &[type='checkbox']:indeterminate {
102
+ background-color: $background;
103
+ border-color: $background;
104
+ box-shadow: 0 2px 4px 0 rgba($background, 0.4);
105
+ }
106
+ }
107
+
108
+ // Custom options
109
+ #{$parent}.custom-option {
110
+ &.checked {
111
+ border: 1px solid $background;
112
+ }
113
+ }
114
+ }
115
+
116
+ @mixin template-form-check-theme($background, $color: null) {
117
+ @include template-form-check-variant('', $background, $color);
118
+ }
119
+
120
+ // Form Validation
121
+
122
+ @mixin form-validation-state(
123
+ $state: null,
124
+ $color: null,
125
+ $icon: null,
126
+ $tooltip-color: null,
127
+ $tooltip-bg-color: null,
128
+ $focus-box-shadow: null,
129
+ $border-color: null
130
+ ) {
131
+ }
132
+
133
+ @mixin template-form-validation-state(
134
+ $state,
135
+ $color,
136
+ $icon,
137
+ $tooltip-color: color-contrast($color),
138
+ $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),
139
+ $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity),
140
+ $border-color: $color
141
+ ) {
142
+ .#{$state}-feedback {
143
+ display: none;
144
+ width: 100%;
145
+ margin-top: $form-feedback-margin-top;
146
+ @include font-size($form-feedback-font-size);
147
+ font-style: $form-feedback-font-style;
148
+ color: $color;
149
+ }
150
+
151
+ .#{$state}-tooltip {
152
+ position: absolute;
153
+ top: 100%;
154
+ z-index: 5;
155
+ display: none;
156
+ max-width: 100%; // Contain to parent when possible
157
+ padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
158
+ margin-top: 0.1rem;
159
+ @include font-size($form-feedback-tooltip-font-size);
160
+ line-height: $form-feedback-tooltip-line-height;
161
+ color: $tooltip-color;
162
+ background-color: $tooltip-bg-color;
163
+ @include border-radius($form-feedback-tooltip-border-radius);
164
+ }
165
+
166
+ @include form-validation-state-selector($state) {
167
+ ~ .#{$state}-feedback,
168
+ ~ .#{$state}-tooltip {
169
+ display: block;
170
+ }
171
+ }
172
+
173
+ .form-control {
174
+ @include form-validation-state-selector($state) {
175
+ border-color: $color !important;
176
+
177
+ .dark-style & {
178
+ border-color: $color !important;
179
+ }
180
+
181
+ @if $enable-validation-icons {
182
+ background-image: escape-svg($icon);
183
+ background-repeat: no-repeat;
184
+ background-size: $input-height-inner-half $input-height-inner-half;
185
+
186
+ @include ltr-style {
187
+ padding-right: $input-height-inner;
188
+ background-position: right $input-height-inner-quarter center;
189
+ }
190
+ }
191
+
192
+ &:focus {
193
+ border-color: $color !important;
194
+ box-shadow: $focus-box-shadow;
195
+ }
196
+ }
197
+ }
198
+
199
+ // stylelint-disable-next-line selector-no-qualifying-type
200
+ textarea.form-control {
201
+ @include form-validation-state-selector($state) {
202
+ @if $enable-validation-icons {
203
+ @include ltr-style {
204
+ padding-right: $input-height-inner;
205
+ background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
206
+ }
207
+ }
208
+ }
209
+ }
210
+
211
+ .form-select {
212
+ @include form-validation-state-selector($state) {
213
+ border-color: $color !important;
214
+ @if $enable-validation-icons {
215
+ background-size: $form-select-bg-size, $form-select-feedback-icon-size;
216
+ @include ltr-style {
217
+ background-image: escape-svg($form-select-indicator), escape-svg($icon);
218
+ padding-right: $form-select-feedback-icon-padding-end;
219
+ background-position: $form-select-bg-position, $form-select-feedback-icon-position;
220
+ }
221
+ }
222
+
223
+ &:focus {
224
+ border-color: $color;
225
+ box-shadow: $focus-box-shadow;
226
+ }
227
+ }
228
+ }
229
+
230
+ .form-check-input {
231
+ @include form-validation-state-selector($state) {
232
+ border-color: $color;
233
+
234
+ &:checked {
235
+ background-color: $color;
236
+ border-color: $color;
237
+ }
238
+
239
+ &:focus {
240
+ box-shadow: $focus-box-shadow;
241
+ border-color: $color;
242
+ }
243
+
244
+ ~ .form-check-label {
245
+ color: $color;
246
+ }
247
+ }
248
+ }
249
+ .form-check-inline .form-check-input {
250
+ ~ .#{$state}-feedback {
251
+ @include ltr-style {
252
+ margin-left: 0.5em;
253
+ }
254
+ }
255
+ }
256
+ // On validation .input-group & .input-group-merged, setup proper border color & box-shadow
257
+ .input-group {
258
+ .form-control {
259
+ @include form-validation-state-selector($state) {
260
+ ~ .input-group-text {
261
+ border-color: $color !important;
262
+ }
263
+ &:focus {
264
+ border-color: $color !important;
265
+ box-shadow: none;
266
+ // ? .input-group has .input-group-text last/sibling
267
+ ~ .input-group-text {
268
+ border-color: $color;
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
274
+
275
+ .input-group .form-control,
276
+ .input-group .form-select {
277
+ @include form-validation-state-selector($state) {
278
+ z-index: 3;
279
+ }
280
+ }
281
+ }
@@ -0,0 +1,66 @@
1
+ // List groups
2
+ // *******************************************************************************
3
+
4
+ @mixin list-group-item-variant($state: null, $background: null, $color: null) {
5
+ }
6
+
7
+ // Basic List groups
8
+ @mixin template-list-group-item-variant($parent, $background, $color: null) {
9
+ $background-color: if(
10
+ $dark-style,
11
+ shift-color($background, -$list-group-item-bg-scale, $card-bg),
12
+ shift-color($background, $list-group-item-bg-scale, $card-bg)
13
+ );
14
+ $border-color: if(
15
+ $dark-style,
16
+ if(
17
+ $parent == '.list-group-item-dark',
18
+ color-contrast($background),
19
+ shift-color($background, -$list-group-item-color-scale, $card-bg)
20
+ ),
21
+ shift-color($background, $list-group-item-color-scale, $card-bg)
22
+ );
23
+ $color: if(
24
+ $parent == '.list-group-item-dark' and $dark-style,
25
+ color-contrast($background),
26
+ shift-color($background, $list-group-item-color-scale)
27
+ );
28
+ $hover-background: shade-color($background-color, $list-group-item-bg-hover-scale);
29
+ #{$parent} {
30
+ border-color: $border-color;
31
+ background-color: $background-color;
32
+ color: $color !important;
33
+ }
34
+
35
+ a#{$parent},
36
+ button#{$parent} {
37
+ color: $color;
38
+ &:hover,
39
+ &:focus {
40
+ border-color: $border-color;
41
+ background-color: $hover-background;
42
+ color: $color;
43
+ }
44
+
45
+ &.active {
46
+ border-color: $border-color !important;
47
+ background-color: $background !important;
48
+ // color: if($color, $color, color-contrast($background));
49
+ color: color-contrast($background) !important;
50
+ }
51
+ }
52
+ }
53
+
54
+ @mixin template-list-group-theme($background, $color: null) {
55
+ @include template-list-group-item-variant('.list-group-item-primary', $background);
56
+
57
+ .list-group-item.active {
58
+ &,
59
+ &:hover,
60
+ &:focus {
61
+ border-color: $background;
62
+ background-color: $background;
63
+ color: color-contrast($background);
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,120 @@
1
+ // * Light/Dark layout
2
+ // *******************************************************************************
3
+ @mixin light-layout-only() {
4
+ @if $dark-style {
5
+ html:not(.dark-style) {
6
+ @content;
7
+ }
8
+ } @else {
9
+ @content;
10
+ }
11
+ }
12
+
13
+ // * RTL/LTR
14
+ // *******************************************************************************
15
+
16
+ @mixin ltr-only() {
17
+ @if $rtl-support {
18
+ html:not([dir='rtl']) {
19
+ @content;
20
+ }
21
+ } @else {
22
+ @content;
23
+ }
24
+ }
25
+
26
+ @mixin ltr-style() {
27
+ @if $rtl-support {
28
+ html:not([dir='rtl']) & {
29
+ @content;
30
+ }
31
+ } @else {
32
+ @content;
33
+ }
34
+ }
35
+
36
+ // * Keyframes
37
+ // *******************************************************************************
38
+
39
+ @mixin keyframes($name) {
40
+ @-webkit-keyframes #{$name} {
41
+ @content;
42
+ }
43
+
44
+ @-moz-keyframes #{$name} {
45
+ @content;
46
+ }
47
+
48
+ @keyframes #{$name} {
49
+ @content;
50
+ }
51
+ }
52
+
53
+ // * Colors
54
+ // *******************************************************************************
55
+
56
+ @mixin bg-color-variant($parent, $color, $rth-color: #000) {
57
+ #{$parent} {
58
+ background-color: $color !important;
59
+ }
60
+
61
+ a#{$parent} {
62
+ &:hover,
63
+ &:focus {
64
+ background-color: rgba-to-hex(rgba($color, 0.95), $background: $rth-color) !important;
65
+ }
66
+ }
67
+
68
+ //! Fix: Dropdown notification read badge bg color
69
+ .dropdown-notifications-item:not(.mark-as-read) {
70
+ .dropdown-notifications-read span {
71
+ background-color: $color;
72
+ }
73
+ }
74
+ }
75
+
76
+ @mixin bg-variant($parent, $color, $rth-color: #000) {
77
+ @include bg-color-variant($parent, $color);
78
+ }
79
+
80
+ // BG Label
81
+ @mixin bg-label-variant($parent, $background, $color: $background) {
82
+ $label-background: if(
83
+ $dark-style,
84
+ shade-color($background, $btn-label-bg-shade-amount, $card-bg),
85
+ tint-color($background, $btn-label-bg-tint-amount, $card-bg)
86
+ );
87
+ #{$parent} {
88
+ background-color: $label-background !important;
89
+ color: if($color, $color, color-contrast($bg)) !important;
90
+ }
91
+ }
92
+
93
+ // Border Label
94
+ @mixin border-label-variant($parent, $background) {
95
+ $label-background: if(
96
+ $dark-style,
97
+ shade-color($background, $border-shade-amount),
98
+ tint-color($background, $border-tint-amount)
99
+ );
100
+ #{$parent} {
101
+ border: 3px solid $label-background !important;
102
+ }
103
+ }
104
+
105
+ // Border Light
106
+ @mixin border-light-variant($parent, $background) {
107
+ #{$parent} {
108
+ border: 3px solid rgba($background, 0.08);
109
+ }
110
+ }
111
+
112
+ @mixin text-variant($parent, $color) {
113
+ #{$parent} {
114
+ color: $color !important;
115
+ }
116
+ //! Fix: text-body hover color
117
+ .text-body[href]:hover {
118
+ color: shift-color($color, $link-shade-percentage) !important;
119
+ }
120
+ }
@@ -0,0 +1,37 @@
1
+ // Navs
2
+ // *******************************************************************************
3
+
4
+ @mixin template-nav-size($padding-y, $padding-x, $font-size, $line-height) {
5
+ > .nav .nav-link,
6
+ &.nav .nav-link {
7
+ padding: $padding-y $padding-x;
8
+ font-size: $font-size;
9
+ line-height: $line-height;
10
+ }
11
+ }
12
+
13
+ @mixin template-nav-variant($parent, $background, $color: null) {
14
+ // .nav-link class hover theme color for basic nav
15
+ .nav .nav-link {
16
+ &:hover,
17
+ &:focus {
18
+ color: shift-color($background, $link-shade-percentage);
19
+ }
20
+ }
21
+
22
+ $pills-selector: if($parent== '', '.nav-pills', '#{$parent}.nav-pills, #{$parent} > .nav-pills');
23
+
24
+ #{$pills-selector} .nav-link.active {
25
+ &,
26
+ &:hover,
27
+ &:focus {
28
+ background-color: $background;
29
+ color: if($color, $color, color-contrast($background));
30
+ box-shadow: 0 2px 4px 0 rgba($background, 0.4);
31
+ }
32
+ }
33
+ }
34
+
35
+ @mixin template-nav-theme($background, $color: null) {
36
+ @include template-nav-variant('', $background, $color);
37
+ }
@@ -0,0 +1,21 @@
1
+ // Pagination
2
+ // *******************************************************************************
3
+
4
+ // Basic Pagination
5
+ @mixin template-pagination-variant($parent, $background, $color: null) {
6
+ #{$parent} .page-item.active .page-link,
7
+ #{$parent}.pagination li.active > a:not(.page-link) {
8
+ &,
9
+ &:hover,
10
+ &:focus {
11
+ border-color: $background;
12
+ background-color: $background;
13
+ color: if($color, $color, color-contrast($background));
14
+ box-shadow: 0 0.125rem 0.25rem rgba(rgba-to-hex($background, $rgba-to-hex-bg), 0.4);
15
+ }
16
+ }
17
+ }
18
+
19
+ @mixin template-pagination-theme($background, $color: null) {
20
+ @include template-pagination-variant('', $background, $color);
21
+ }
@@ -0,0 +1,19 @@
1
+ // Progress bars
2
+ // *******************************************************************************
3
+
4
+ @mixin template-progress-bar-theme($background, $color: null) {
5
+ .progress-bar {
6
+ background-color: $background;
7
+ color: if($color, $color, color-contrast($background));
8
+ box-shadow: 0 2px 4px 0 rgba($background, 0.4);
9
+ }
10
+ }
11
+
12
+ @mixin template-progress-bar-shadow-variant($parent, $background-shadow) {
13
+ $background-shadow: $background-shadow;
14
+ .progress-bar {
15
+ &#{$parent} {
16
+ box-shadow: 0 2px 4px 0 rgba($background-shadow, 0.4);
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,31 @@
1
+ // Tables
2
+ // *******************************************************************************
3
+
4
+ @mixin template-table-variant($parent, $background, $layout-color: $white) {
5
+ .table-#{$parent} {
6
+ $color: color-contrast(opaque($body-bg, $background));
7
+ $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));
8
+ $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));
9
+ $active-bg: mix($color, $background, percentage($table-active-bg-factor));
10
+ $dark-border-color: if($parent == 'dark', mix($color, $background, percentage($table-border-factor)), inherit);
11
+
12
+ --#{$variable-prefix}table-bg: #{$background};
13
+ --#{$variable-prefix}table-striped-bg: #{$striped-bg};
14
+ --#{$variable-prefix}table-striped-color: #{color-contrast($striped-bg)};
15
+ --#{$variable-prefix}table-active-bg: #{$active-bg};
16
+ --#{$variable-prefix}table-active-color: #{color-contrast($active-bg)};
17
+ --#{$variable-prefix}table-hover-bg: #{$hover-bg};
18
+ --#{$variable-prefix}table-hover-color: #{color-contrast($hover-bg)};
19
+
20
+ color: $color;
21
+ border-color: mix($color, $background, percentage($table-border-factor));
22
+ // Highlight border color between thead, tbody and tfoot.
23
+ th {
24
+ border-bottom-color: $dark-border-color !important;
25
+ }
26
+
27
+ .btn-icon {
28
+ color: $color;
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,33 @@
1
+ // * Toast
2
+ // *******************************************************************************
3
+
4
+ @mixin template-toast-variant($parent, $background, $color: null) {
5
+ $label-color: if($color, $color, $background);
6
+ $color: if($color, $color, color-contrast($background));
7
+
8
+ #{$parent} {
9
+ &.toast,
10
+ &.bs-toast {
11
+ color: $white;
12
+ background-color: rgba($background, $toast-bg-factor) !important;
13
+ box-shadow: 0 0.25rem 1rem rgba($background, 0.4);
14
+
15
+ .toast-header {
16
+ color: $white;
17
+ .btn-close {
18
+ background-color: $background !important;
19
+ background-image: str-replace(
20
+ str-replace(str-replace($btn-close-bg, '#{$btn-close-color}', $white), '#', '%23'),
21
+ "fill-opacity='0.5'",
22
+ "fill-opacity='1'"
23
+ );
24
+ box-shadow: 0 0.1875rem 0.375rem 0 rgba($background, 0.4) !important;
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }
30
+
31
+ @mixin template-toast-theme($parent, $background, $color: null) {
32
+ @include template-toast-variant($parent, $background, $color);
33
+ }
@@ -0,0 +1,39 @@
1
+ @import '_bootstrap-extended/include';
2
+
3
+ // Import bootstrap extended scss
4
+ @import '_bootstrap-extended/root';
5
+ @import '_bootstrap-extended/reboot';
6
+ @import '_bootstrap-extended/type';
7
+ @import '_bootstrap-extended/utilities';
8
+ @import '_bootstrap-extended/tables';
9
+ @import '_bootstrap-extended/buttons';
10
+ @import '_bootstrap-extended/button-group';
11
+ @import '_bootstrap-extended/badge';
12
+ @import '_bootstrap-extended/dropdown';
13
+ @import '_bootstrap-extended/nav';
14
+ @import '_bootstrap-extended/pagination';
15
+ @import '_bootstrap-extended/alert';
16
+ @import '_bootstrap-extended/tooltip';
17
+ @import '_bootstrap-extended/popover';
18
+ @import '_bootstrap-extended/forms';
19
+ @import '_bootstrap-extended/modal';
20
+ @import '_bootstrap-extended/progress';
21
+ @import '_bootstrap-extended/breadcrumb';
22
+ @import '_bootstrap-extended/list-group';
23
+ @import '_bootstrap-extended/navbar';
24
+ @import '_bootstrap-extended/card';
25
+ @import '_bootstrap-extended/accordion';
26
+ @import '_bootstrap-extended/close';
27
+ @import '_bootstrap-extended/toasts';
28
+ @import '_bootstrap-extended/carousel';
29
+ @import '_bootstrap-extended/spinners';
30
+ @import '_bootstrap-extended/offcanvas';
31
+
32
+ // Common Utilities
33
+ @import 'bootstrap/scss/utilities/api';
34
+
35
+ // LTR Utilities
36
+ @include ltr-only {
37
+ @import '_bootstrap-extended/utilities-ltr';
38
+ @import 'bootstrap/scss/utilities/api';
39
+ }
@@ -0,0 +1,44 @@
1
+ // @import 'bootstrap/scss/mixins/banner';
2
+ @import "bootstrap/scss/mixins/banner";
3
+ @include bsBanner('');
4
+
5
+ @import '_bootstrap-extended/include';
6
+
7
+ // Import bootstrap core scss from node_module
8
+ // ! Utilities are customized and added in bootstrap-extended
9
+
10
+ // Layout & components
11
+ @import 'bootstrap/scss/root';
12
+ @import 'bootstrap/scss/reboot';
13
+ @import 'bootstrap/scss/type';
14
+ @import 'bootstrap/scss/images';
15
+ @import 'bootstrap/scss/containers';
16
+ @import 'bootstrap/scss/grid';
17
+ @import 'bootstrap/scss/tables';
18
+ @import 'bootstrap/scss/forms';
19
+ @import 'bootstrap/scss/buttons';
20
+ @import 'bootstrap/scss/transitions';
21
+ @import 'bootstrap/scss/dropdown';
22
+ @import 'bootstrap/scss/button-group';
23
+ @import 'bootstrap/scss/nav';
24
+ @import 'bootstrap/scss/navbar';
25
+ @import 'bootstrap/scss/card';
26
+ @import 'bootstrap/scss/accordion';
27
+ @import 'bootstrap/scss/breadcrumb';
28
+ @import 'bootstrap/scss/pagination';
29
+ @import 'bootstrap/scss/badge';
30
+ @import 'bootstrap/scss/alert';
31
+ @import 'bootstrap/scss/progress';
32
+ @import 'bootstrap/scss/list-group';
33
+ @import 'bootstrap/scss/close';
34
+ @import 'bootstrap/scss/toasts';
35
+ @import 'bootstrap/scss/modal';
36
+ @import 'bootstrap/scss/tooltip';
37
+ @import 'bootstrap/scss/popover';
38
+ @import 'bootstrap/scss/carousel';
39
+ @import 'bootstrap/scss/spinners';
40
+ @import 'bootstrap/scss/offcanvas';
41
+ @import 'bootstrap/scss/placeholders';
42
+
43
+ // Helpers
44
+ @import 'bootstrap/scss/helpers';