browser-extension-manager 1.0.13 → 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} +3 -2
  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 +87 -92
  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 +216 -27
  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,5 @@
1
+ // ============================================
2
+ // Options Component Styles
3
+ // ============================================
4
+
5
+ // No styles defined - add your options-specific styles here
@@ -0,0 +1,5 @@
1
+ // ============================================
2
+ // Index Page Styles
3
+ // ============================================
4
+
5
+ // No styles defined - add your index page-specific styles here
@@ -0,0 +1,5 @@
1
+ // ============================================
2
+ // Popup Component Styles
3
+ // ============================================
4
+
5
+ // No styles defined - add your popup-specific styles here
@@ -0,0 +1,64 @@
1
+ // ============================================
2
+ // Animations
3
+ // ============================================
4
+ // Common animations for browser extensions
5
+
6
+ // Fade in animation
7
+ @keyframes fadeIn {
8
+ from {
9
+ opacity: 0;
10
+ }
11
+ to {
12
+ opacity: 1;
13
+ }
14
+ }
15
+
16
+ .fade-in {
17
+ animation: fadeIn 0.3s ease-in-out;
18
+ }
19
+
20
+ // Slide down animation
21
+ @keyframes slideDown {
22
+ from {
23
+ opacity: 0;
24
+ transform: translateY(-10px);
25
+ }
26
+ to {
27
+ opacity: 1;
28
+ transform: translateY(0);
29
+ }
30
+ }
31
+
32
+ .slide-down {
33
+ animation: slideDown 0.3s ease-in-out;
34
+ }
35
+
36
+ // Slide up animation
37
+ @keyframes slideUp {
38
+ from {
39
+ opacity: 0;
40
+ transform: translateY(10px);
41
+ }
42
+ to {
43
+ opacity: 1;
44
+ transform: translateY(0);
45
+ }
46
+ }
47
+
48
+ .slide-up {
49
+ animation: slideUp 0.3s ease-in-out;
50
+ }
51
+
52
+ // Pulse animation
53
+ @keyframes pulse {
54
+ 0%, 100% {
55
+ opacity: 1;
56
+ }
57
+ 50% {
58
+ opacity: 0.5;
59
+ }
60
+ }
61
+
62
+ .pulse {
63
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
64
+ }
@@ -0,0 +1,23 @@
1
+ // ============================================
2
+ // Core Initialization
3
+ // ============================================
4
+ // Base styles and resets for browser extensions
5
+
6
+ // Box sizing reset
7
+ // *,
8
+ // *::before,
9
+ // *::after {
10
+ // box-sizing: border-box;
11
+ // }
12
+
13
+ // // Body reset
14
+ // body {
15
+ // margin: 0;
16
+ // padding: 0;
17
+ // }
18
+
19
+ // // Images
20
+ // img {
21
+ // max-width: 100%;
22
+ // height: auto;
23
+ // }
@@ -0,0 +1,80 @@
1
+ // Core Utility Styles
2
+ // Common utility classes and helpers
3
+
4
+ // ============================================
5
+ // Display Utilities
6
+ // ============================================
7
+
8
+ // Properly hide things
9
+ .hidden, [hidden] {
10
+ display: none !important;
11
+ }
12
+
13
+ .disabled,
14
+ [disabled],
15
+ :disabled,
16
+ [data-page-loading] button.btn,
17
+ [data-page-loading] .btn-action {
18
+ cursor: not-allowed !important;
19
+ pointer-events: all !important;
20
+
21
+ // Disable pointer events on all children inside disabled buttons and links
22
+ // This helps fix event bubbling issues for click listeners
23
+ * {
24
+ pointer-events: none !important;
25
+ }
26
+ }
27
+
28
+ [data-page-loading] button.btn,
29
+ [data-page-loading] .btn-action {
30
+ opacity: var(--bs-btn-disabled-opacity);
31
+ color: var(--bs-btn-disabled-color);
32
+ }
33
+
34
+ // Prevent pointer events on all children inside buttons and links
35
+ // This helps fix event bubbling issues for click listeners
36
+ button *, a * {
37
+ pointer-events: none !important;
38
+ }
39
+
40
+ // ============================================
41
+ // Filter Utilities
42
+ // ============================================
43
+
44
+ // Filter white
45
+ .filter-white {
46
+ filter: brightness(0) invert(1);
47
+ }
48
+
49
+ // Filter black
50
+ .filter-black {
51
+ filter: brightness(0);
52
+ }
53
+
54
+ // ============================================
55
+ // Adaptive Theming
56
+ // ============================================
57
+ .filter-adaptive {
58
+ @extend .filter-black;
59
+ }
60
+
61
+ [data-bs-theme="dark"] .filter-adaptive {
62
+ @extend .filter-white;
63
+ }
64
+
65
+ // .filter-adaptive-inverse {
66
+ // @extend .filter-white;
67
+ // }
68
+
69
+ // [data-bs-theme="dark"] .filter-adaptive-inverse {
70
+ // @extend .filter-black;
71
+ // }
72
+
73
+ // ============================================
74
+ // Opacity Utilities
75
+ // ============================================
76
+ @for $i from 0 through 10 {
77
+ .opacity-#{$i * 10} {
78
+ opacity: $i * 0.1 !important;
79
+ }
80
+ }
@@ -0,0 +1,5 @@
1
+ // Import the theme entry point
2
+ import './js/__INDEX__.js';
3
+
4
+ // Add any custom code here
5
+ // ...
@@ -0,0 +1,5 @@
1
+ // Import the theme entry point
2
+ @use './scss/__INDEX__.scss' as *;
3
+
4
+ // Add any custom code here
5
+ // ...
@@ -0,0 +1,16 @@
1
+ // Import the theme entry point
2
+ import bootstrap from './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('Bootstrap theme loaded successfully (assets/themes/bootstrap/_theme.js)');
11
+ }
12
+ /* @dev-only:end */
13
+
14
+ // Add any custom code here
15
+ // ...
16
+
@@ -0,0 +1,232 @@
1
+ // Import the theme entry point
2
+ @use './scss/bootstrap.scss' as *;
3
+
4
+ // Add any custom code here
5
+ // ...
6
+
7
+ // Adaptive button that uses light styles in light mode and dark styles in dark mode
8
+ .btn-adaptive {
9
+ @extend .btn-dark;
10
+ }
11
+
12
+ [data-bs-theme="dark"] .btn-adaptive {
13
+ @extend .btn-light;
14
+ }
15
+
16
+ // Do the same for btn-outline-light, btn-outline-dark,
17
+ .btn-outline-adaptive {
18
+ @extend .btn-outline-dark;
19
+ }
20
+
21
+ [data-bs-theme="dark"] .btn-outline-adaptive {
22
+ @extend .btn-outline-light;
23
+ }
24
+
25
+ // If nav-link is active, give it an underline
26
+ .nav-link.active {
27
+ text-decoration: underline !important;
28
+ }
29
+
30
+ // Make a link-muted class that looks like text-muted
31
+ .link-muted {
32
+ --bs-text-opacity: 1;
33
+ color: var(--bs-secondary-color) !important;
34
+ text-decoration: none;
35
+ transition: opacity 0.15s ease-in-out;
36
+
37
+ &:hover,
38
+ &:focus {
39
+ color: var(--bs-secondary-color) !important;
40
+ text-decoration: underline;
41
+ opacity: 0.75;
42
+ }
43
+ }
44
+
45
+ // Padding - Extend to p-8
46
+ $spacer: 1rem;
47
+ @for $i from 6 through 8 {
48
+ $size: if($i == 6, 4, if($i == 7, 4.5, 5));
49
+
50
+ .p-#{$i} { padding: $spacer * $size !important; }
51
+ .pt-#{$i} { padding-top: $spacer * $size !important; }
52
+ .pb-#{$i} { padding-bottom: $spacer * $size !important; }
53
+ .ps-#{$i} { padding-left: $spacer * $size !important; }
54
+ .pe-#{$i} { padding-right: $spacer * $size !important; }
55
+ .px-#{$i} {
56
+ padding-left: $spacer * $size !important;
57
+ padding-right: $spacer * $size !important;
58
+ }
59
+ .py-#{$i} {
60
+ padding-top: $spacer * $size !important;
61
+ padding-bottom: $spacer * $size !important;
62
+ }
63
+ }
64
+
65
+ // Avatar sizes map
66
+ $avatar-sizes: (
67
+ null: 3rem, // default
68
+ xs: 1.5rem,
69
+ sm: 2rem,
70
+ md: 2.5rem,
71
+ lg: 3.5rem,
72
+ xl: 5rem,
73
+ xxl: 7.5rem
74
+ );
75
+
76
+ // Avatar base styles
77
+ .avatar {
78
+ display: inline-block;
79
+ height: map-get($avatar-sizes, null);
80
+ position: relative;
81
+ width: map-get($avatar-sizes, null);
82
+
83
+ img {
84
+ height: 100%;
85
+ -o-object-fit: cover;
86
+ object-fit: cover;
87
+ width: 100%;
88
+ }
89
+ }
90
+
91
+ // Generate avatar size classes
92
+ @each $size, $dimension in $avatar-sizes {
93
+ @if $size != null {
94
+ .avatar-#{$size} {
95
+ height: $dimension;
96
+ width: $dimension;
97
+ }
98
+ }
99
+ }
100
+
101
+ // Soft color utilities for all theme colors
102
+ $theme-colors: (
103
+ "primary": var(--bs-primary),
104
+ "secondary": var(--bs-secondary),
105
+ "success": var(--bs-success),
106
+ "info": var(--bs-info),
107
+ "warning": var(--bs-warning),
108
+ "danger": var(--bs-danger),
109
+ "light": var(--bs-light),
110
+ "dark": var(--bs-dark)
111
+ );
112
+
113
+ @each $color-name, $color-value in $theme-colors {
114
+ // Soft background colors (10% opacity)
115
+ .bg-#{$color-name}-soft {
116
+ background-color: rgba(var(--bs-#{$color-name}-rgb), 0.5) !important;
117
+ }
118
+
119
+ // Soft text colors (more vibrant for readability)
120
+ .text-#{$color-name}-soft {
121
+ color: rgba(var(--bs-#{$color-name}-rgb), 0.8) !important;
122
+ }
123
+
124
+ // Soft border colors
125
+ .border-#{$color-name}-soft {
126
+ border-color: rgba(var(--bs-#{$color-name}-rgb), 0.2) !important;
127
+ }
128
+
129
+ // Soft buttons - background with hover states
130
+ .btn-#{$color-name}-soft {
131
+ color: var(--bs-#{$color-name});
132
+ background-color: rgba(var(--bs-#{$color-name}-rgb), 0.1);
133
+ border-color: rgba(var(--bs-#{$color-name}-rgb), 0.1);
134
+
135
+ &:hover {
136
+ color: var(--bs-#{$color-name});
137
+ background-color: rgba(var(--bs-#{$color-name}-rgb), 0.2);
138
+ border-color: rgba(var(--bs-#{$color-name}-rgb), 0.2);
139
+ }
140
+
141
+ &:focus,
142
+ &:active,
143
+ &.active {
144
+ color: var(--bs-#{$color-name});
145
+ background-color: rgba(var(--bs-#{$color-name}-rgb), 0.25);
146
+ border-color: rgba(var(--bs-#{$color-name}-rgb), 0.25);
147
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-#{$color-name}-rgb), 0.15);
148
+ }
149
+
150
+ &:disabled,
151
+ &.disabled {
152
+ color: rgba(var(--bs-#{$color-name}-rgb), 0.5);
153
+ background-color: rgba(var(--bs-#{$color-name}-rgb), 0.05);
154
+ border-color: rgba(var(--bs-#{$color-name}-rgb), 0.05);
155
+ }
156
+ }
157
+
158
+ // Soft outline buttons
159
+ .btn-outline-#{$color-name}-soft {
160
+ color: var(--bs-#{$color-name});
161
+ background-color: transparent;
162
+ border-color: rgba(var(--bs-#{$color-name}-rgb), 0.3);
163
+
164
+ &:hover {
165
+ color: var(--bs-#{$color-name});
166
+ background-color: rgba(var(--bs-#{$color-name}-rgb), 0.1);
167
+ border-color: rgba(var(--bs-#{$color-name}-rgb), 0.4);
168
+ }
169
+
170
+ &:focus,
171
+ &:active,
172
+ &.active {
173
+ color: var(--bs-#{$color-name});
174
+ background-color: rgba(var(--bs-#{$color-name}-rgb), 0.15);
175
+ border-color: rgba(var(--bs-#{$color-name}-rgb), 0.5);
176
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-#{$color-name}-rgb), 0.15);
177
+ }
178
+ }
179
+
180
+ // Soft badges
181
+ .badge-#{$color-name}-soft {
182
+ color: var(--bs-#{$color-name});
183
+ background-color: rgba(var(--bs-#{$color-name}-rgb), 0.1);
184
+ }
185
+
186
+ // Soft alerts
187
+ .alert-#{$color-name}-soft {
188
+ color: var(--bs-#{$color-name});
189
+ background-color: rgba(var(--bs-#{$color-name}-rgb), 0.1);
190
+ border-color: rgba(var(--bs-#{$color-name}-rgb), 0.2);
191
+
192
+ .alert-link {
193
+ color: var(--bs-#{$color-name});
194
+ text-decoration: underline;
195
+ }
196
+ }
197
+ }
198
+
199
+ /* Blog post card image height only - using Bootstrap's object-fit-cover class */
200
+ .blog-post-card-image {
201
+ height: 240px;
202
+ width: 100%;
203
+ }
204
+
205
+ @media (max-width: 991.98px) {
206
+ .blog-post-card-image {
207
+ height: 240px;
208
+ }
209
+ }
210
+
211
+ @media (max-width: 575.98px) {
212
+ .blog-post-card-image {
213
+ height: 200px;
214
+ }
215
+ }
216
+
217
+ /* Blog post image height only - using Bootstrap's object-fit-cover class */
218
+ .blog-post-image {
219
+ max-height: 480px;
220
+ width: 100%;
221
+ }
222
+
223
+ @media (max-width: 991.98px) {
224
+ .blog-post-image {
225
+ max-height: 360px;
226
+ }
227
+ }
228
+ @media (max-width: 575.98px) {
229
+ .blog-post-image {
230
+ max-height: 240px;
231
+ }
232
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap index.esm.js
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ export { default as Alert } from './src/alert.js'
9
+ export { default as Button } from './src/button.js'
10
+ export { default as Carousel } from './src/carousel.js'
11
+ export { default as Collapse } from './src/collapse.js'
12
+ export { default as Dropdown } from './src/dropdown.js'
13
+ export { default as Modal } from './src/modal.js'
14
+ export { default as Offcanvas } from './src/offcanvas.js'
15
+ export { default as Popover } from './src/popover.js'
16
+ export { default as ScrollSpy } from './src/scrollspy.js'
17
+ export { default as Tab } from './src/tab.js'
18
+ export { default as Toast } from './src/toast.js'
19
+ export { default as Tooltip } from './src/tooltip.js'
@@ -0,0 +1,34 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap index.umd.js
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ import Alert from './src/alert.js'
9
+ import Button from './src/button.js'
10
+ import Carousel from './src/carousel.js'
11
+ import Collapse from './src/collapse.js'
12
+ import Dropdown from './src/dropdown.js'
13
+ import Modal from './src/modal.js'
14
+ import Offcanvas from './src/offcanvas.js'
15
+ import Popover from './src/popover.js'
16
+ import ScrollSpy from './src/scrollspy.js'
17
+ import Tab from './src/tab.js'
18
+ import Toast from './src/toast.js'
19
+ import Tooltip from './src/tooltip.js'
20
+
21
+ export default {
22
+ Alert,
23
+ Button,
24
+ Carousel,
25
+ Collapse,
26
+ Dropdown,
27
+ Modal,
28
+ Offcanvas,
29
+ Popover,
30
+ ScrollSpy,
31
+ Tab,
32
+ Toast,
33
+ Tooltip
34
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap alert.js
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ import BaseComponent from './base-component.js'
9
+ import EventHandler from './dom/event-handler.js'
10
+ import { enableDismissTrigger } from './util/component-functions.js'
11
+ import { defineJQueryPlugin } from './util/index.js'
12
+
13
+ /**
14
+ * Constants
15
+ */
16
+
17
+ const NAME = 'alert'
18
+ const DATA_KEY = 'bs.alert'
19
+ const EVENT_KEY = `.${DATA_KEY}`
20
+
21
+ const EVENT_CLOSE = `close${EVENT_KEY}`
22
+ const EVENT_CLOSED = `closed${EVENT_KEY}`
23
+ const CLASS_NAME_FADE = 'fade'
24
+ const CLASS_NAME_SHOW = 'show'
25
+
26
+ /**
27
+ * Class definition
28
+ */
29
+
30
+ class Alert extends BaseComponent {
31
+ // Getters
32
+ static get NAME() {
33
+ return NAME
34
+ }
35
+
36
+ // Public
37
+ close() {
38
+ const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)
39
+
40
+ if (closeEvent.defaultPrevented) {
41
+ return
42
+ }
43
+
44
+ this._element.classList.remove(CLASS_NAME_SHOW)
45
+
46
+ const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)
47
+ this._queueCallback(() => this._destroyElement(), this._element, isAnimated)
48
+ }
49
+
50
+ // Private
51
+ _destroyElement() {
52
+ this._element.remove()
53
+ EventHandler.trigger(this._element, EVENT_CLOSED)
54
+ this.dispose()
55
+ }
56
+
57
+ // Static
58
+ static jQueryInterface(config) {
59
+ return this.each(function () {
60
+ const data = Alert.getOrCreateInstance(this)
61
+
62
+ if (typeof config !== 'string') {
63
+ return
64
+ }
65
+
66
+ if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
67
+ throw new TypeError(`No method named "${config}"`)
68
+ }
69
+
70
+ data[config](this)
71
+ })
72
+ }
73
+ }
74
+
75
+ /**
76
+ * Data API implementation
77
+ */
78
+
79
+ enableDismissTrigger(Alert, 'close')
80
+
81
+ /**
82
+ * jQuery
83
+ */
84
+
85
+ defineJQueryPlugin(Alert)
86
+
87
+ export default Alert
@@ -0,0 +1,86 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap base-component.js
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ import Data from './dom/data.js'
9
+ import EventHandler from './dom/event-handler.js'
10
+ import Config from './util/config.js'
11
+ import { executeAfterTransition, getElement } from './util/index.js'
12
+
13
+ /**
14
+ * Constants
15
+ */
16
+
17
+ const VERSION = '5.3.6'
18
+
19
+ /**
20
+ * Class definition
21
+ */
22
+
23
+ class BaseComponent extends Config {
24
+ constructor(element, config) {
25
+ super()
26
+
27
+ element = getElement(element)
28
+ if (!element) {
29
+ return
30
+ }
31
+
32
+ this._element = element
33
+ this._config = this._getConfig(config)
34
+
35
+ Data.set(this._element, this.constructor.DATA_KEY, this)
36
+ }
37
+
38
+ // Public
39
+ dispose() {
40
+ Data.remove(this._element, this.constructor.DATA_KEY)
41
+ EventHandler.off(this._element, this.constructor.EVENT_KEY)
42
+
43
+ for (const propertyName of Object.getOwnPropertyNames(this)) {
44
+ this[propertyName] = null
45
+ }
46
+ }
47
+
48
+ // Private
49
+ _queueCallback(callback, element, isAnimated = true) {
50
+ executeAfterTransition(callback, element, isAnimated)
51
+ }
52
+
53
+ _getConfig(config) {
54
+ config = this._mergeConfigObj(config, this._element)
55
+ config = this._configAfterMerge(config)
56
+ this._typeCheckConfig(config)
57
+ return config
58
+ }
59
+
60
+ // Static
61
+ static getInstance(element) {
62
+ return Data.get(getElement(element), this.DATA_KEY)
63
+ }
64
+
65
+ static getOrCreateInstance(element, config = {}) {
66
+ return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)
67
+ }
68
+
69
+ static get VERSION() {
70
+ return VERSION
71
+ }
72
+
73
+ static get DATA_KEY() {
74
+ return `bs.${this.NAME}`
75
+ }
76
+
77
+ static get EVENT_KEY() {
78
+ return `.${this.DATA_KEY}`
79
+ }
80
+
81
+ static eventName(name) {
82
+ return `${name}${this.EVENT_KEY}`
83
+ }
84
+ }
85
+
86
+ export default BaseComponent