browser-extension-manager 1.0.14 → 1.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 (242) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/CLAUDE.md +672 -0
  3. package/TODO.md +3 -0
  4. package/dist/assets/css/browser-extension-manager.scss +18 -0
  5. package/dist/assets/css/components/content/index.scss +5 -0
  6. package/dist/assets/css/components/options/index.scss +5 -0
  7. package/dist/assets/css/components/pages/index.scss +5 -0
  8. package/dist/assets/css/components/popup/index.scss +5 -0
  9. package/dist/assets/css/core/_animations.scss +64 -0
  10. package/dist/assets/css/core/_initialize.scss +23 -0
  11. package/dist/assets/css/core/_utilities.scss +80 -0
  12. package/dist/assets/themes/_template/_theme.js +5 -0
  13. package/dist/assets/themes/_template/_theme.scss +5 -0
  14. package/dist/assets/themes/bootstrap/_theme.js +16 -0
  15. package/dist/assets/themes/bootstrap/_theme.scss +232 -0
  16. package/dist/assets/themes/bootstrap/js/index.esm.js +19 -0
  17. package/dist/assets/themes/bootstrap/js/index.umd.js +34 -0
  18. package/dist/assets/themes/bootstrap/js/src/alert.js +87 -0
  19. package/dist/assets/themes/bootstrap/js/src/base-component.js +86 -0
  20. package/dist/assets/themes/bootstrap/js/src/button.js +72 -0
  21. package/dist/assets/themes/bootstrap/js/src/carousel.js +474 -0
  22. package/dist/assets/themes/bootstrap/js/src/collapse.js +297 -0
  23. package/dist/assets/themes/bootstrap/js/src/dom/data.js +55 -0
  24. package/dist/assets/themes/bootstrap/js/src/dom/event-handler.js +317 -0
  25. package/dist/assets/themes/bootstrap/js/src/dom/manipulator.js +71 -0
  26. package/dist/assets/themes/bootstrap/js/src/dom/selector-engine.js +126 -0
  27. package/dist/assets/themes/bootstrap/js/src/dropdown.js +458 -0
  28. package/dist/assets/themes/bootstrap/js/src/modal.js +378 -0
  29. package/dist/assets/themes/bootstrap/js/src/offcanvas.js +282 -0
  30. package/dist/assets/themes/bootstrap/js/src/popover.js +97 -0
  31. package/dist/assets/themes/bootstrap/js/src/scrollspy.js +296 -0
  32. package/dist/assets/themes/bootstrap/js/src/tab.js +315 -0
  33. package/dist/assets/themes/bootstrap/js/src/toast.js +224 -0
  34. package/dist/assets/themes/bootstrap/js/src/tooltip.js +632 -0
  35. package/dist/assets/themes/bootstrap/js/src/util/backdrop.js +151 -0
  36. package/dist/assets/themes/bootstrap/js/src/util/component-functions.js +35 -0
  37. package/dist/assets/themes/bootstrap/js/src/util/config.js +65 -0
  38. package/dist/assets/themes/bootstrap/js/src/util/focustrap.js +115 -0
  39. package/dist/assets/themes/bootstrap/js/src/util/index.js +306 -0
  40. package/dist/assets/themes/bootstrap/js/src/util/sanitizer.js +117 -0
  41. package/dist/assets/themes/bootstrap/js/src/util/scrollbar.js +114 -0
  42. package/dist/assets/themes/bootstrap/js/src/util/swipe.js +146 -0
  43. package/dist/assets/themes/bootstrap/js/src/util/template-factory.js +160 -0
  44. package/dist/assets/themes/bootstrap/scss/_accordion.scss +153 -0
  45. package/dist/assets/themes/bootstrap/scss/_alert.scss +68 -0
  46. package/dist/assets/themes/bootstrap/scss/_badge.scss +38 -0
  47. package/dist/assets/themes/bootstrap/scss/_breadcrumb.scss +40 -0
  48. package/dist/assets/themes/bootstrap/scss/_button-group.scss +147 -0
  49. package/dist/assets/themes/bootstrap/scss/_buttons.scss +216 -0
  50. package/dist/assets/themes/bootstrap/scss/_card.scss +238 -0
  51. package/dist/assets/themes/bootstrap/scss/_carousel.scss +226 -0
  52. package/dist/assets/themes/bootstrap/scss/_close.scss +66 -0
  53. package/dist/assets/themes/bootstrap/scss/_containers.scss +41 -0
  54. package/dist/assets/themes/bootstrap/scss/_dropdown.scss +250 -0
  55. package/dist/assets/themes/bootstrap/scss/_forms.scss +9 -0
  56. package/dist/assets/themes/bootstrap/scss/_functions.scss +302 -0
  57. package/dist/assets/themes/bootstrap/scss/_grid.scss +39 -0
  58. package/dist/assets/themes/bootstrap/scss/_helpers.scss +12 -0
  59. package/dist/assets/themes/bootstrap/scss/_images.scss +42 -0
  60. package/dist/assets/themes/bootstrap/scss/_list-group.scss +199 -0
  61. package/dist/assets/themes/bootstrap/scss/_maps.scss +174 -0
  62. package/dist/assets/themes/bootstrap/scss/_mixins.scss +42 -0
  63. package/dist/assets/themes/bootstrap/scss/_modal.scss +240 -0
  64. package/dist/assets/themes/bootstrap/scss/_nav.scss +197 -0
  65. package/dist/assets/themes/bootstrap/scss/_navbar.scss +289 -0
  66. package/dist/assets/themes/bootstrap/scss/_offcanvas.scss +147 -0
  67. package/dist/assets/themes/bootstrap/scss/_pagination.scss +109 -0
  68. package/dist/assets/themes/bootstrap/scss/_placeholders.scss +51 -0
  69. package/dist/assets/themes/bootstrap/scss/_popover.scss +196 -0
  70. package/dist/assets/themes/bootstrap/scss/_progress.scss +68 -0
  71. package/dist/assets/themes/bootstrap/scss/_reboot.scss +611 -0
  72. package/dist/assets/themes/bootstrap/scss/_root.scss +187 -0
  73. package/dist/assets/themes/bootstrap/scss/_spinners.scss +85 -0
  74. package/dist/assets/themes/bootstrap/scss/_tables.scss +171 -0
  75. package/dist/assets/themes/bootstrap/scss/_toasts.scss +73 -0
  76. package/dist/assets/themes/bootstrap/scss/_tooltip.scss +119 -0
  77. package/dist/assets/themes/bootstrap/scss/_transitions.scss +27 -0
  78. package/dist/assets/themes/bootstrap/scss/_type.scss +106 -0
  79. package/dist/assets/themes/bootstrap/scss/_utilities.scss +806 -0
  80. package/dist/assets/themes/bootstrap/scss/_variables-dark.scss +102 -0
  81. package/dist/assets/themes/bootstrap/scss/_variables.scss +1753 -0
  82. package/dist/assets/themes/bootstrap/scss/bootstrap-grid.scss +62 -0
  83. package/dist/assets/themes/bootstrap/scss/bootstrap-reboot.scss +10 -0
  84. package/dist/assets/themes/bootstrap/scss/bootstrap-utilities.scss +19 -0
  85. package/dist/assets/themes/bootstrap/scss/bootstrap.scss +52 -0
  86. package/dist/assets/themes/bootstrap/scss/forms/_floating-labels.scss +97 -0
  87. package/dist/assets/themes/bootstrap/scss/forms/_form-check.scss +189 -0
  88. package/dist/assets/themes/bootstrap/scss/forms/_form-control.scss +214 -0
  89. package/dist/assets/themes/bootstrap/scss/forms/_form-range.scss +91 -0
  90. package/dist/assets/themes/bootstrap/scss/forms/_form-select.scss +80 -0
  91. package/dist/assets/themes/bootstrap/scss/forms/_form-text.scss +11 -0
  92. package/dist/assets/themes/bootstrap/scss/forms/_input-group.scss +132 -0
  93. package/dist/assets/themes/bootstrap/scss/forms/_labels.scss +36 -0
  94. package/dist/assets/themes/bootstrap/scss/forms/_validation.scss +12 -0
  95. package/dist/assets/themes/bootstrap/scss/helpers/_clearfix.scss +3 -0
  96. package/dist/assets/themes/bootstrap/scss/helpers/_color-bg.scss +7 -0
  97. package/dist/assets/themes/bootstrap/scss/helpers/_colored-links.scss +30 -0
  98. package/dist/assets/themes/bootstrap/scss/helpers/_focus-ring.scss +5 -0
  99. package/dist/assets/themes/bootstrap/scss/helpers/_icon-link.scss +25 -0
  100. package/dist/assets/themes/bootstrap/scss/helpers/_position.scss +36 -0
  101. package/dist/assets/themes/bootstrap/scss/helpers/_ratio.scss +26 -0
  102. package/dist/assets/themes/bootstrap/scss/helpers/_stacks.scss +15 -0
  103. package/dist/assets/themes/bootstrap/scss/helpers/_stretched-link.scss +15 -0
  104. package/dist/assets/themes/bootstrap/scss/helpers/_text-truncation.scss +7 -0
  105. package/dist/assets/themes/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
  106. package/dist/assets/themes/bootstrap/scss/helpers/_vr.scss +8 -0
  107. package/dist/assets/themes/bootstrap/scss/mixins/_alert.scss +18 -0
  108. package/dist/assets/themes/bootstrap/scss/mixins/_backdrop.scss +14 -0
  109. package/dist/assets/themes/bootstrap/scss/mixins/_banner.scss +7 -0
  110. package/dist/assets/themes/bootstrap/scss/mixins/_border-radius.scss +78 -0
  111. package/dist/assets/themes/bootstrap/scss/mixins/_box-shadow.scss +18 -0
  112. package/dist/assets/themes/bootstrap/scss/mixins/_breakpoints.scss +127 -0
  113. package/dist/assets/themes/bootstrap/scss/mixins/_buttons.scss +70 -0
  114. package/dist/assets/themes/bootstrap/scss/mixins/_caret.scss +69 -0
  115. package/dist/assets/themes/bootstrap/scss/mixins/_clearfix.scss +9 -0
  116. package/dist/assets/themes/bootstrap/scss/mixins/_color-mode.scss +21 -0
  117. package/dist/assets/themes/bootstrap/scss/mixins/_color-scheme.scss +7 -0
  118. package/dist/assets/themes/bootstrap/scss/mixins/_container.scss +11 -0
  119. package/dist/assets/themes/bootstrap/scss/mixins/_deprecate.scss +10 -0
  120. package/dist/assets/themes/bootstrap/scss/mixins/_forms.scss +163 -0
  121. package/dist/assets/themes/bootstrap/scss/mixins/_gradients.scss +47 -0
  122. package/dist/assets/themes/bootstrap/scss/mixins/_grid.scss +151 -0
  123. package/dist/assets/themes/bootstrap/scss/mixins/_image.scss +16 -0
  124. package/dist/assets/themes/bootstrap/scss/mixins/_list-group.scss +26 -0
  125. package/dist/assets/themes/bootstrap/scss/mixins/_lists.scss +7 -0
  126. package/dist/assets/themes/bootstrap/scss/mixins/_pagination.scss +10 -0
  127. package/dist/assets/themes/bootstrap/scss/mixins/_reset-text.scss +17 -0
  128. package/dist/assets/themes/bootstrap/scss/mixins/_resize.scss +6 -0
  129. package/dist/assets/themes/bootstrap/scss/mixins/_table-variants.scss +24 -0
  130. package/dist/assets/themes/bootstrap/scss/mixins/_text-truncate.scss +8 -0
  131. package/dist/assets/themes/bootstrap/scss/mixins/_transition.scss +26 -0
  132. package/dist/assets/themes/bootstrap/scss/mixins/_utilities.scss +97 -0
  133. package/dist/assets/themes/bootstrap/scss/mixins/_visually-hidden.scss +38 -0
  134. package/dist/assets/themes/bootstrap/scss/tests/jasmine.js +16 -0
  135. package/dist/assets/themes/bootstrap/scss/tests/mixins/_auto-import-of-variables-dark.test.scss +7 -0
  136. package/dist/assets/themes/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
  137. package/dist/assets/themes/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
  138. package/dist/assets/themes/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
  139. package/dist/assets/themes/bootstrap/scss/tests/sass-true/register.js +14 -0
  140. package/dist/assets/themes/bootstrap/scss/tests/sass-true/runner.js +17 -0
  141. package/dist/assets/themes/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
  142. package/dist/assets/themes/bootstrap/scss/utilities/_api.scss +47 -0
  143. package/dist/assets/themes/bootstrap/scss/vendor/_rfs.scss +348 -0
  144. package/dist/assets/themes/classy/README.md +75 -0
  145. package/dist/assets/themes/classy/_config.scss +185 -0
  146. package/dist/assets/themes/classy/_theme.js +29 -0
  147. package/dist/assets/themes/classy/_theme.scss +34 -0
  148. package/dist/assets/themes/classy/css/base/_animations.scss +27 -0
  149. package/dist/assets/themes/classy/css/base/_backgrounds.scss +191 -0
  150. package/dist/assets/themes/classy/css/base/_borders.scss +65 -0
  151. package/dist/assets/themes/classy/css/base/_root.scss +58 -0
  152. package/dist/assets/themes/classy/css/base/_soft-colors.scss +92 -0
  153. package/dist/assets/themes/classy/css/base/_spacing.scss +64 -0
  154. package/dist/assets/themes/classy/css/base/_typography.scss +179 -0
  155. package/dist/assets/themes/classy/css/base/_utilities.scss +77 -0
  156. package/dist/assets/themes/classy/css/components/_accordion.scss +33 -0
  157. package/dist/assets/themes/classy/css/components/_avatars.scss +32 -0
  158. package/dist/assets/themes/classy/css/components/_badges.scss +25 -0
  159. package/dist/assets/themes/classy/css/components/_buttons.scss +397 -0
  160. package/dist/assets/themes/classy/css/components/_cards.scss +33 -0
  161. package/dist/assets/themes/classy/css/components/_carousel.scss +41 -0
  162. package/dist/assets/themes/classy/css/components/_forms.scss +115 -0
  163. package/dist/assets/themes/classy/css/components/_links.scss +19 -0
  164. package/dist/assets/themes/classy/css/components/_logo-scroll.scss +57 -0
  165. package/dist/assets/themes/classy/css/components/_spinners.scss +19 -0
  166. package/dist/assets/themes/classy/css/components/_text.scss +41 -0
  167. package/dist/assets/themes/classy/css/layout/_blog.scss +42 -0
  168. package/dist/assets/themes/classy/css/layout/_general.scss +139 -0
  169. package/dist/assets/themes/classy/css/layout/_navigation.scss +576 -0
  170. package/dist/assets/themes/classy/css/layout/_team.scss +18 -0
  171. package/dist/assets/themes/classy/js/logo-scroll.js +83 -0
  172. package/dist/assets/themes/classy/js/navbar-scroll.js +65 -0
  173. package/dist/background.js +236 -260
  174. package/dist/build.js +93 -4
  175. package/dist/commands/setup.js +0 -268
  176. package/dist/config/manifest.json +11 -3
  177. package/dist/config/page-template.html +21 -0
  178. package/dist/defaults/.nvmrc +1 -1
  179. package/dist/defaults/CLAUDE.md +8 -0
  180. package/dist/defaults/config/browser-extension-manager.json +37 -0
  181. package/dist/defaults/src/assets/css/components/content/index.scss +11 -0
  182. package/dist/defaults/src/assets/css/components/options/index.scss +14 -0
  183. package/dist/defaults/src/assets/css/components/pages/index.scss +10 -0
  184. package/dist/defaults/src/assets/css/components/popup/index.scss +10 -0
  185. package/dist/defaults/src/assets/css/components/sidepanel/index.scss +6 -0
  186. package/dist/defaults/src/assets/css/main.scss +32 -0
  187. package/dist/defaults/src/assets/js/components/background/index.js +22 -0
  188. package/dist/defaults/src/assets/js/components/content/index.js +22 -0
  189. package/dist/defaults/src/assets/js/components/options/index.js +22 -0
  190. package/dist/defaults/src/assets/js/components/pages/index.js +22 -0
  191. package/dist/defaults/src/assets/js/components/popup/index.js +22 -0
  192. package/dist/defaults/src/assets/js/components/sidepanel/index.js +20 -0
  193. package/dist/defaults/src/assets/vendor/.gitkeep +0 -0
  194. package/dist/defaults/src/manifest.json +11 -6
  195. package/dist/defaults/src/views/options/index.html +8 -0
  196. package/dist/defaults/src/views/pages/index.html +10 -0
  197. package/dist/defaults/src/views/popup/index.html +4 -0
  198. package/dist/defaults/src/views/sidepanel/index.html +4 -0
  199. package/dist/gulp/main.js +11 -5
  200. package/dist/gulp/plugins/webpack/strip-dev-blocks.js +53 -0
  201. package/dist/gulp/tasks/{_package.js → BU/_package.js} +1 -1
  202. package/dist/gulp/tasks/{developmentRebuild.js → BU/developmentRebuild.js} +1 -1
  203. package/dist/gulp/tasks/{themes.js → BU/themes.js} +2 -1
  204. package/dist/gulp/tasks/{test.js → _.js} +3 -3
  205. package/dist/gulp/tasks/audit.js +154 -0
  206. package/dist/gulp/tasks/defaults.js +308 -0
  207. package/dist/gulp/tasks/distribute.js +71 -78
  208. package/dist/gulp/tasks/html.js +150 -0
  209. package/dist/gulp/tasks/icons.js +3 -2
  210. package/dist/gulp/tasks/package.js +202 -13
  211. package/dist/gulp/tasks/sass.js +188 -43
  212. package/dist/gulp/tasks/serve.js +1 -0
  213. package/dist/gulp/tasks/utils/template-transform.js +50 -0
  214. package/dist/gulp/tasks/webpack.js +338 -134
  215. package/dist/index.js +34 -34
  216. package/dist/options.js +40 -0
  217. package/dist/page.js +40 -0
  218. package/dist/popup.js +40 -0
  219. package/dist/sidepanel.js +40 -0
  220. package/firebase-debug.log +322 -0
  221. package/package.json +25 -18
  222. package/dist/assets/css/main.scss +0 -3
  223. package/dist/assets/themes/bootstrap/5.3.3/css/bootstrap.css +0 -12057
  224. package/dist/assets/themes/bootstrap/5.3.3/css/bootstrap.css.map +0 -1
  225. package/dist/assets/themes/bootstrap/5.3.3/js/bootstrap.bundle.js +0 -6314
  226. package/dist/assets/themes/bootstrap/5.3.3/js/bootstrap.bundle.js.map +0 -1
  227. package/dist/assets/themes/bootstrap/5.3.3/js/bootstrap.js +0 -4494
  228. package/dist/assets/themes/bootstrap/5.3.3/js/bootstrap.js.map +0 -1
  229. package/dist/defaults/src/assets/css/content.scss +0 -2
  230. package/dist/defaults/src/assets/css/options.scss +0 -11
  231. package/dist/defaults/src/assets/css/popup.scss +0 -14
  232. package/dist/defaults/src/assets/js/background.js +0 -18
  233. package/dist/defaults/src/assets/js/content.js +0 -15
  234. package/dist/defaults/src/assets/js/options.js +0 -17
  235. package/dist/defaults/src/assets/js/popup.js +0 -17
  236. package/dist/defaults/src/pages/options.html +0 -26
  237. package/dist/defaults/src/pages/popup.html +0 -26
  238. /package/dist/{defaults/src/assets/images/_ → assets/css/bundles/.gitkeep} +0 -0
  239. /package/dist/assets/css/{fontawesome.scss → core/_fontawesome.scss} +0 -0
  240. /package/dist/defaults/src/assets/{vendor/_ → images/.gitkeep} +0 -0
  241. /package/dist/gulp/tasks/{_importer.js → BU/_importer.js} +0 -0
  242. /package/dist/gulp/tasks/{_vendor.js → BU/_vendor.js} +0 -0
@@ -0,0 +1,348 @@
1
+ // stylelint-disable scss/dimension-no-non-numeric-values
2
+
3
+ // SCSS RFS mixin
4
+ //
5
+ // Automated responsive values for font sizes, paddings, margins and much more
6
+ //
7
+ // Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)
8
+
9
+ // Configuration
10
+
11
+ // Base value
12
+ $rfs-base-value: 1.25rem !default;
13
+ $rfs-unit: rem !default;
14
+
15
+ @if $rfs-unit != rem and $rfs-unit != px {
16
+ @error "`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.";
17
+ }
18
+
19
+ // Breakpoint at where values start decreasing if screen width is smaller
20
+ $rfs-breakpoint: 1200px !default;
21
+ $rfs-breakpoint-unit: px !default;
22
+
23
+ @if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {
24
+ @error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.";
25
+ }
26
+
27
+ // Resize values based on screen height and width
28
+ $rfs-two-dimensional: false !default;
29
+
30
+ // Factor of decrease
31
+ $rfs-factor: 10 !default;
32
+
33
+ @if type-of($rfs-factor) != number or $rfs-factor <= 1 {
34
+ @error "`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.";
35
+ }
36
+
37
+ // Mode. Possibilities: "min-media-query", "max-media-query"
38
+ $rfs-mode: min-media-query !default;
39
+
40
+ // Generate enable or disable classes. Possibilities: false, "enable" or "disable"
41
+ $rfs-class: false !default;
42
+
43
+ // 1 rem = $rfs-rem-value px
44
+ $rfs-rem-value: 16 !default;
45
+
46
+ // Safari iframe resize bug: https://github.com/twbs/rfs/issues/14
47
+ $rfs-safari-iframe-resize-bug-fix: false !default;
48
+
49
+ // Disable RFS by setting $enable-rfs to false
50
+ $enable-rfs: true !default;
51
+
52
+ // Cache $rfs-base-value unit
53
+ $rfs-base-value-unit: unit($rfs-base-value);
54
+
55
+ @function divide($dividend, $divisor, $precision: 10) {
56
+ $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
57
+ $dividend: abs($dividend);
58
+ $divisor: abs($divisor);
59
+ @if $dividend == 0 {
60
+ @return 0;
61
+ }
62
+ @if $divisor == 0 {
63
+ @error "Cannot divide by 0";
64
+ }
65
+ $remainder: $dividend;
66
+ $result: 0;
67
+ $factor: 10;
68
+ @while ($remainder > 0 and $precision >= 0) {
69
+ $quotient: 0;
70
+ @while ($remainder >= $divisor) {
71
+ $remainder: $remainder - $divisor;
72
+ $quotient: $quotient + 1;
73
+ }
74
+ $result: $result * 10 + $quotient;
75
+ $factor: $factor * .1;
76
+ $remainder: $remainder * 10;
77
+ $precision: $precision - 1;
78
+ @if ($precision < 0 and $remainder >= $divisor * 5) {
79
+ $result: $result + 1;
80
+ }
81
+ }
82
+ $result: $result * $factor * $sign;
83
+ $dividend-unit: unit($dividend);
84
+ $divisor-unit: unit($divisor);
85
+ $unit-map: (
86
+ "px": 1px,
87
+ "rem": 1rem,
88
+ "em": 1em,
89
+ "%": 1%
90
+ );
91
+ @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
92
+ $result: $result * map-get($unit-map, $dividend-unit);
93
+ }
94
+ @return $result;
95
+ }
96
+
97
+ // Remove px-unit from $rfs-base-value for calculations
98
+ @if $rfs-base-value-unit == px {
99
+ $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);
100
+ }
101
+ @else if $rfs-base-value-unit == rem {
102
+ $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));
103
+ }
104
+
105
+ // Cache $rfs-breakpoint unit to prevent multiple calls
106
+ $rfs-breakpoint-unit-cache: unit($rfs-breakpoint);
107
+
108
+ // Remove unit from $rfs-breakpoint for calculations
109
+ @if $rfs-breakpoint-unit-cache == px {
110
+ $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);
111
+ }
112
+ @else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == "em" {
113
+ $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));
114
+ }
115
+
116
+ // Calculate the media query value
117
+ $rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});
118
+ $rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);
119
+ $rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);
120
+
121
+ // Internal mixin used to determine which media query needs to be used
122
+ @mixin _rfs-media-query {
123
+ @if $rfs-two-dimensional {
124
+ @if $rfs-mode == max-media-query {
125
+ @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {
126
+ @content;
127
+ }
128
+ }
129
+ @else {
130
+ @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {
131
+ @content;
132
+ }
133
+ }
134
+ }
135
+ @else {
136
+ @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {
137
+ @content;
138
+ }
139
+ }
140
+ }
141
+
142
+ // Internal mixin that adds disable classes to the selector if needed.
143
+ @mixin _rfs-rule {
144
+ @if $rfs-class == disable and $rfs-mode == max-media-query {
145
+ // Adding an extra class increases specificity, which prevents the media query to override the property
146
+ &,
147
+ .disable-rfs &,
148
+ &.disable-rfs {
149
+ @content;
150
+ }
151
+ }
152
+ @else if $rfs-class == enable and $rfs-mode == min-media-query {
153
+ .enable-rfs &,
154
+ &.enable-rfs {
155
+ @content;
156
+ }
157
+ } @else {
158
+ @content;
159
+ }
160
+ }
161
+
162
+ // Internal mixin that adds enable classes to the selector if needed.
163
+ @mixin _rfs-media-query-rule {
164
+
165
+ @if $rfs-class == enable {
166
+ @if $rfs-mode == min-media-query {
167
+ @content;
168
+ }
169
+
170
+ @include _rfs-media-query () {
171
+ .enable-rfs &,
172
+ &.enable-rfs {
173
+ @content;
174
+ }
175
+ }
176
+ }
177
+ @else {
178
+ @if $rfs-class == disable and $rfs-mode == min-media-query {
179
+ .disable-rfs &,
180
+ &.disable-rfs {
181
+ @content;
182
+ }
183
+ }
184
+ @include _rfs-media-query () {
185
+ @content;
186
+ }
187
+ }
188
+ }
189
+
190
+ // Helper function to get the formatted non-responsive value
191
+ @function rfs-value($values) {
192
+ // Convert to list
193
+ $values: if(type-of($values) != list, ($values,), $values);
194
+
195
+ $val: "";
196
+
197
+ // Loop over each value and calculate value
198
+ @each $value in $values {
199
+ @if $value == 0 {
200
+ $val: $val + " 0";
201
+ }
202
+ @else {
203
+ // Cache $value unit
204
+ $unit: if(type-of($value) == "number", unit($value), false);
205
+
206
+ @if $unit == px {
207
+ // Convert to rem if needed
208
+ $val: $val + " " + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);
209
+ }
210
+ @else if $unit == rem {
211
+ // Convert to px if needed
212
+ $val: $val + " " + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);
213
+ } @else {
214
+ // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
215
+ $val: $val + " " + $value;
216
+ }
217
+ }
218
+ }
219
+
220
+ // Remove first space
221
+ @return unquote(str-slice($val, 2));
222
+ }
223
+
224
+ // Helper function to get the responsive value calculated by RFS
225
+ @function rfs-fluid-value($values) {
226
+ // Convert to list
227
+ $values: if(type-of($values) != list, ($values,), $values);
228
+
229
+ $val: "";
230
+
231
+ // Loop over each value and calculate value
232
+ @each $value in $values {
233
+ @if $value == 0 {
234
+ $val: $val + " 0";
235
+ } @else {
236
+ // Cache $value unit
237
+ $unit: if(type-of($value) == "number", unit($value), false);
238
+
239
+ // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
240
+ @if not $unit or $unit != px and $unit != rem {
241
+ $val: $val + " " + $value;
242
+ } @else {
243
+ // Remove unit from $value for calculations
244
+ $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));
245
+
246
+ // Only add the media query if the value is greater than the minimum value
247
+ @if abs($value) <= $rfs-base-value or not $enable-rfs {
248
+ $val: $val + " " + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);
249
+ }
250
+ @else {
251
+ // Calculate the minimum value
252
+ $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);
253
+
254
+ // Calculate difference between $value and the minimum value
255
+ $value-diff: abs($value) - $value-min;
256
+
257
+ // Base value formatting
258
+ $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);
259
+
260
+ // Use negative value if needed
261
+ $min-width: if($value < 0, -$min-width, $min-width);
262
+
263
+ // Use `vmin` if two-dimensional is enabled
264
+ $variable-unit: if($rfs-two-dimensional, vmin, vw);
265
+
266
+ // Calculate the variable width between 0 and $rfs-breakpoint
267
+ $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};
268
+
269
+ // Return the calculated value
270
+ $val: $val + " calc(" + $min-width + if($value < 0, " - ", " + ") + $variable-width + ")";
271
+ }
272
+ }
273
+ }
274
+ }
275
+
276
+ // Remove first space
277
+ @return unquote(str-slice($val, 2));
278
+ }
279
+
280
+ // RFS mixin
281
+ @mixin rfs($values, $property: font-size) {
282
+ @if $values != null {
283
+ $val: rfs-value($values);
284
+ $fluid-val: rfs-fluid-value($values);
285
+
286
+ // Do not print the media query if responsive & non-responsive values are the same
287
+ @if $val == $fluid-val {
288
+ #{$property}: $val;
289
+ }
290
+ @else {
291
+ @include _rfs-rule () {
292
+ #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);
293
+
294
+ // Include safari iframe resize fix if needed
295
+ min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);
296
+ }
297
+
298
+ @include _rfs-media-query-rule () {
299
+ #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);
300
+ }
301
+ }
302
+ }
303
+ }
304
+
305
+ // Shorthand helper mixins
306
+ @mixin font-size($value) {
307
+ @include rfs($value);
308
+ }
309
+
310
+ @mixin padding($value) {
311
+ @include rfs($value, padding);
312
+ }
313
+
314
+ @mixin padding-top($value) {
315
+ @include rfs($value, padding-top);
316
+ }
317
+
318
+ @mixin padding-right($value) {
319
+ @include rfs($value, padding-right);
320
+ }
321
+
322
+ @mixin padding-bottom($value) {
323
+ @include rfs($value, padding-bottom);
324
+ }
325
+
326
+ @mixin padding-left($value) {
327
+ @include rfs($value, padding-left);
328
+ }
329
+
330
+ @mixin margin($value) {
331
+ @include rfs($value, margin);
332
+ }
333
+
334
+ @mixin margin-top($value) {
335
+ @include rfs($value, margin-top);
336
+ }
337
+
338
+ @mixin margin-right($value) {
339
+ @include rfs($value, margin-right);
340
+ }
341
+
342
+ @mixin margin-bottom($value) {
343
+ @include rfs($value, margin-bottom);
344
+ }
345
+
346
+ @mixin margin-left($value) {
347
+ @include rfs($value, margin-left);
348
+ }
@@ -0,0 +1,75 @@
1
+ # Classy Theme Customization Guide
2
+
3
+ ## How to Customize in Your Consuming Project
4
+
5
+ The Classy theme is designed to be fully customizable. All theme variables use `!default` which means you can override them BEFORE importing the theme.
6
+
7
+ ### Example: Customizing Colors in Your Project
8
+
9
+ In your consuming project's `src/assets/css/main.scss`:
10
+
11
+ ```scss
12
+ // 1. Override Classy theme variables BEFORE importing the theme
13
+ $primary: #FF0000; // Change primary color to red
14
+ $classy-bg-light: #F5F5F5; // Change light mode background
15
+ $classy-bg-dark: #1A1A1A; // Change dark mode background
16
+ $font-family-sans-serif: 'Inter', sans-serif; // Change font
17
+
18
+ // 2. Now import the Classy theme - it will use YOUR values
19
+ @import '~ultimate-jekyll-manager/src/assets/themes/classy/theme';
20
+
21
+ // 3. Add your custom styles below
22
+ .my-custom-class {
23
+ // Your custom CSS
24
+ }
25
+ ```
26
+
27
+ ## Available Customizable Variables
28
+
29
+ See `_config.scss` for the full list of variables you can override:
30
+
31
+ ### Bootstrap Colors
32
+ - `$primary` - Primary brand color
33
+ - `$secondary` - Secondary color
34
+ - `$success`, `$info`, `$warning`, `$danger` - Utility colors
35
+ - `$light`, `$dark` - Light and dark variants
36
+
37
+ ### Background Colors
38
+ - `$classy-bg-light` - Light mode background
39
+ - `$classy-bg-dark` - Dark mode background
40
+
41
+ ### Typography
42
+ - `$font-family-sans-serif` - Main font family
43
+ - `$headings-font-weight` - Heading font weight
44
+
45
+ ### Border Radius
46
+ - `$border-radius` - Default border radius
47
+ - `$border-radius-sm`, `$border-radius-lg` - Size variants
48
+
49
+ ### Gradients
50
+ - `$classy-gradient-primary`, `$classy-gradient-aurora`, etc.
51
+
52
+ ## File Structure
53
+
54
+ ```
55
+ classy/
56
+ ├── _config.scss ← All customizable variables with !default
57
+ ├── _theme.scss ← Main entry point, imports config then Bootstrap
58
+ ├── css/base/
59
+ │ ├── _variables.scss ← Internal non-customizable values
60
+ │ └── _root.scss ← CSS custom property overrides
61
+ └── ...
62
+ ```
63
+
64
+ ## How It Works
65
+
66
+ 1. **`_config.scss`**: Defines all variables with `!default` (can be overridden)
67
+ 2. **Your `main.scss`**: Sets custom values BEFORE importing theme
68
+ 3. **`_theme.scss`**: Imports config (uses your values or defaults), then Bootstrap
69
+ 4. **`_root.scss`**: Converts SCSS variables to CSS custom properties for runtime
70
+
71
+ This ensures:
72
+ - ✅ You can customize anything
73
+ - ✅ Bootstrap gets configured with your colors
74
+ - ✅ CSS custom properties update for light/dark mode
75
+ - ✅ No need to modify theme files
@@ -0,0 +1,185 @@
1
+ // Classy Theme Configuration
2
+ // ALL customizable variables are defined here with !default
3
+ // Consuming projects can override any of these using @use ... with ()
4
+
5
+ // ============================================
6
+ // Bootstrap Color Overrides
7
+ // ============================================
8
+ $primary: #5B47FB !default;
9
+ $secondary: #6C757D !default;
10
+ $success: #10B981 !default;
11
+ $info: #00D4FF !default;
12
+ $warning: #FFB800 !default;
13
+ $danger: #DC3545 !default;
14
+ $light: #F8F9FA !default;
15
+ $dark: #1A1A23 !default;
16
+
17
+ // ============================================
18
+ // Typography
19
+ // ============================================
20
+ $font-family-sans-serif: 'Lexend', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif !default;
21
+ $headings-font-weight: 700 !default;
22
+ $classy-font-mono: monospace !default;
23
+ $classy-font-accent: 'Instrument Serif', serif !default;
24
+ // $classy-font-accent: 'DM Serif Display', serif !default;
25
+ // $classy-font-accent: 'Crimson Pro', serif !default;
26
+
27
+ // ============================================
28
+ // Border Radius
29
+ // ============================================
30
+ $border-radius: 0.5rem !default;
31
+ $border-radius-sm: 0.375rem !default;
32
+ $border-radius-lg: 0.75rem !default;
33
+ $border-radius-xl: 1rem !default;
34
+ $border-radius-2xl: 1.5rem !default;
35
+ $border-radius-pill: 50rem !default;
36
+
37
+ // Classy-specific border radius aliases
38
+ $classy-radius-sm: $border-radius-sm !default;
39
+ $classy-radius-md: $border-radius !default;
40
+ $classy-radius-lg: $border-radius-lg !default;
41
+ $classy-radius-xl: $border-radius-xl !default;
42
+ $classy-radius-2xl: $border-radius-2xl !default;
43
+ $classy-radius-full: 9999px !default;
44
+
45
+ // ============================================
46
+ // Background Colors (Light Mode)
47
+ // ============================================
48
+ $classy-bg-light: #ffffff !default; // Main body background
49
+ $classy-bg-light-secondary: #f6f6f6 !default; // Secondary backgrounds (cards, sidebars)
50
+ $classy-bg-light-tertiary: #f0f0f0 !default; // Tertiary backgrounds (hover states)
51
+
52
+ // ============================================
53
+ // Background Colors (Dark Mode)
54
+ // ============================================
55
+ $classy-bg-dark: #121212 !default; // Main body background
56
+ $classy-bg-dark-secondary: #171717 !default; // Secondary backgrounds (cards, sidebars)
57
+ $classy-bg-dark-tertiary: #212121 !default; // Tertiary backgrounds (hover states)
58
+
59
+ // ============================================
60
+ // Classy-Specific Colors
61
+ // ============================================
62
+ $classy-primary: $primary !default;
63
+ $classy-primary-dark: darken($primary, 10%) !default;
64
+ $classy-primary-light: lighten($primary, 10%) !default;
65
+ $classy-primary-soft: mix($primary, white, 10%) !default;
66
+
67
+ $classy-secondary: $secondary !default;
68
+ $classy-secondary-dark: darken($secondary, 5%) !default;
69
+ $classy-secondary-light: lighten($secondary, 5%) !default;
70
+
71
+ $classy-accent: $info !default;
72
+ $classy-accent-dark: darken($info, 10%) !default;
73
+ $classy-accent-light: lighten($info, 10%) !default;
74
+
75
+ $classy-dark: $dark !default;
76
+ $classy-dark-900: lighten($dark, 5%) !default;
77
+ $classy-dark-800: lighten($dark, 10%) !default;
78
+ $classy-dark-700: lighten($dark, 15%) !default;
79
+ $classy-dark-600: lighten($dark, 20%) !default;
80
+
81
+ $classy-gray: #6B7280 !default;
82
+ $classy-gray-light: #9CA3AF !default;
83
+ $classy-gray-lighter: #D1D5DB !default;
84
+ $classy-gray-lightest: #F3F4F6 !default;
85
+
86
+ $classy-white: #FFFFFF !default;
87
+ $classy-off-white: #FAFBFC !default;
88
+ $classy-cream: #FFF9F5 !default;
89
+
90
+ // ============================================
91
+ // Gradient Definitions
92
+ // ============================================
93
+ $classy-gradient-primary: linear-gradient(135deg, $classy-primary 0%, $classy-accent 100%) !default;
94
+ $classy-gradient-dark: linear-gradient(135deg, $classy-dark 0%, $classy-dark-800 100%) !default;
95
+ $classy-gradient-light: linear-gradient(135deg, $classy-white 0%, $classy-off-white 100%) !default;
96
+ $classy-gradient-sunset: linear-gradient(135deg, #FF6B6B 0%, #FFB84D 100%) !default;
97
+ $classy-gradient-aurora: linear-gradient(135deg, #5B47FB 0%, #00D4FF 50%, #FF6B6B 100%) !default;
98
+ $classy-gradient-rainbow: linear-gradient(60deg, #f79533, #f37055, #ef4e7b, #a166ab, #5073b8, #1098ad, #07b39b, #6fba82) !default;
99
+
100
+ // ============================================
101
+ // Typography Scale
102
+ // ============================================
103
+ $classy-font-size-xs: 0.75rem !default;
104
+ $classy-font-size-sm: 0.875rem !default;
105
+ $classy-font-size-base: 1rem !default;
106
+ $classy-font-size-lg: 1.125rem !default;
107
+ $classy-font-size-xl: 1.25rem !default;
108
+ $classy-font-size-2xl: 1.5rem !default;
109
+ $classy-font-size-3xl: 1.875rem !default;
110
+ $classy-font-size-4xl: 2.25rem !default;
111
+ $classy-font-size-5xl: 3rem !default;
112
+ $classy-font-size-6xl: 3.75rem !default;
113
+
114
+ // ============================================
115
+ // Spacing Scale
116
+ // ============================================
117
+ $classy-spacing-xs: 0.25rem !default;
118
+ $classy-spacing-sm: 0.5rem !default;
119
+ $classy-spacing-md: 1rem !default;
120
+ $classy-spacing-lg: 1.5rem !default;
121
+ $classy-spacing-xl: 2rem !default;
122
+ $classy-spacing-2xl: 3rem !default;
123
+ $classy-spacing-3xl: 4rem !default;
124
+ $classy-spacing-4xl: 6rem !default;
125
+
126
+ // ============================================
127
+ // Shadow System
128
+ // ============================================
129
+ $classy-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !default;
130
+ $classy-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !default;
131
+ $classy-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !default;
132
+ $classy-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !default;
133
+ $classy-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !default;
134
+ $classy-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !default;
135
+ $classy-shadow-glow: 0 0 40px rgba(91, 71, 251, 0.15) !default;
136
+
137
+ // ============================================
138
+ // Transition Timing
139
+ // ============================================
140
+ $classy-transition-fast: all 0.15s cubic-bezier(.2,.3,0,1) !default;
141
+ $classy-transition-base: all 0.3s cubic-bezier(.2,.3,0,1) !default;
142
+ $classy-transition-slow: all 0.5s cubic-bezier(.2,.3,0,1) !default;
143
+ $classy-transition-bounce: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55) !default;
144
+
145
+ // ============================================
146
+ // Responsive Breakpoints
147
+ // ============================================
148
+ // Bootstrap-compatible breakpoint values
149
+ $classy-breakpoint-sm: 576px !default;
150
+ $classy-breakpoint-md: 768px !default;
151
+ $classy-breakpoint-lg: 992px !default;
152
+ $classy-breakpoint-xl: 1200px !default;
153
+ $classy-breakpoint-xxl: 1400px !default;
154
+
155
+ // ============================================
156
+ // Component Sizing
157
+ // ============================================
158
+ // Avatar sizes map
159
+ $avatar-sizes: (
160
+ null: 3rem, // default
161
+ 2xs: 0.5rem,
162
+ xs: 1.5rem,
163
+ sm: 2rem,
164
+ md: 2.5rem,
165
+ lg: 3.5rem,
166
+ xl: 5rem,
167
+ 2xl: 7.5rem
168
+ ) !default;
169
+
170
+ // Forward Bootstrap with our configuration
171
+ @forward '../bootstrap/scss/bootstrap.scss' with (
172
+ $primary: $primary,
173
+ $secondary: $secondary,
174
+ $success: $success,
175
+ $info: $info,
176
+ $warning: $warning,
177
+ $danger: $danger,
178
+ $light: $light,
179
+ $dark: $dark,
180
+ $font-family-sans-serif: $font-family-sans-serif,
181
+ $headings-font-weight: $headings-font-weight,
182
+ $border-radius: $border-radius,
183
+ $border-radius-sm: $border-radius-sm,
184
+ $border-radius-lg: $border-radius-lg
185
+ );
@@ -0,0 +1,29 @@
1
+ // Import the theme entry point
2
+ import bootstrap from '../bootstrap/js/index.umd.js';
3
+
4
+ // Make Bootstrap available globally
5
+ window.bootstrap = bootstrap;
6
+
7
+ // Log that we've MADE IT
8
+ /* @dev-only:start */
9
+ {
10
+ console.log('Classy theme loaded successfully (assets/themes/classy/_theme.js)');
11
+ }
12
+ /* @dev-only:end */
13
+
14
+ // Import navbar scroll functionality
15
+ import setupNavbarScroll from './js/navbar-scroll.js';
16
+ // Import logo scroll functionality
17
+ import setupLogoScroll from './js/logo-scroll.js';
18
+
19
+ // Initialize navbar scroll effect when DOM is ready
20
+ if (document.readyState === 'loading') {
21
+ document.addEventListener('DOMContentLoaded', () => {
22
+ setupNavbarScroll();
23
+ setupLogoScroll();
24
+ });
25
+ } else {
26
+ setupNavbarScroll();
27
+ setupLogoScroll();
28
+ }
29
+
@@ -0,0 +1,34 @@
1
+ // Forward theme configuration (allows consuming project to override)
2
+ @forward 'config';
3
+ @use 'config' as *;
4
+
5
+ // Import root overrides (CSS custom properties)
6
+ @import 'css/base/root';
7
+
8
+ // Import base styles
9
+ @import 'css/base/animations';
10
+ @import 'css/base/backgrounds';
11
+ @import 'css/base/borders';
12
+ @import 'css/base/soft-colors';
13
+ @import 'css/base/spacing';
14
+ @import 'css/base/typography';
15
+ @import 'css/base/utilities';
16
+
17
+ // Import layout styles
18
+ @import 'css/layout/blog';
19
+ @import 'css/layout/general';
20
+ @import 'css/layout/navigation';
21
+ @import 'css/layout/team';
22
+
23
+ // Import component styles
24
+ @import 'css/components/accordion';
25
+ @import 'css/components/avatars';
26
+ @import 'css/components/badges';
27
+ @import 'css/components/buttons';
28
+ @import 'css/components/cards';
29
+ @import 'css/components/carousel';
30
+ @import 'css/components/forms';
31
+ @import 'css/components/links';
32
+ @import 'css/components/logo-scroll';
33
+ @import 'css/components/spinners';
34
+ @import 'css/components/text';
@@ -0,0 +1,27 @@
1
+ // Classy Animation Utilities
2
+ // Keyframes and animation classes for dynamic effects
3
+
4
+ // ============================================
5
+ // Keyframe Animations
6
+ // ============================================
7
+
8
+ @keyframes gradient-shimmer {
9
+ 0% {
10
+ background-position: 0% 50%;
11
+ }
12
+ 50% {
13
+ background-position: 100% 50%;
14
+ }
15
+ 100% {
16
+ background-position: 0% 50%;
17
+ }
18
+ }
19
+
20
+ // ============================================
21
+ // Animation Classes
22
+ // ============================================
23
+
24
+ // Gradient animation modifier - works with all rainbow gradient classes
25
+ .gradient-animated {
26
+ animation: gradient-shimmer 5s ease-out infinite alternate !important;
27
+ }