tiny-essentials 1.29.0 → 1.29.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/changelog/1/29/1.md +11 -0
  2. package/changelog/1/29/2.md +82 -0
  3. package/dist/v1/TinyBasicsEs.min.js +1 -1
  4. package/dist/v1/TinyEssentials.min.js +1 -1
  5. package/dist/v1/TinyFetchLoader.min.js +1 -0
  6. package/dist/v1/TinyImageLoader.min.js +1 -0
  7. package/dist/v1/TinyMediaCache.min.js +1 -0
  8. package/dist/v1/TinyMediaLoader.min.js +1 -0
  9. package/dist/v1/basics/index.cjs +5 -0
  10. package/dist/v1/basics/index.d.mts +2 -1
  11. package/dist/v1/basics/index.d.mts.map +1 -1
  12. package/dist/v1/basics/index.mjs +2 -1
  13. package/dist/v1/basics/media/youtube.cjs +275 -0
  14. package/dist/v1/basics/media/youtube.d.mts +107 -0
  15. package/dist/v1/basics/media/youtube.d.mts.map +1 -0
  16. package/dist/v1/basics/media/youtube.mjs +214 -0
  17. package/dist/v1/index.cjs +13 -0
  18. package/dist/v1/index.d.mts +6 -1
  19. package/dist/v1/index.d.mts.map +1 -1
  20. package/dist/v1/index.mjs +7 -2
  21. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.cjs +0 -1
  22. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts +0 -1
  23. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts.map +1 -1
  24. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.mjs +0 -1
  25. package/dist/v1/libs/fs/plugins/OPFS/index.cjs +0 -8
  26. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts +0 -8
  27. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts.map +1 -1
  28. package/dist/v1/libs/fs/plugins/OPFS/index.mjs +0 -8
  29. package/dist/v1/libs/html/TinyHtml.cjs +1 -1
  30. package/dist/v1/libs/html/TinyHtml.d.mts +2 -2
  31. package/dist/v1/libs/html/TinyHtml.d.mts.map +1 -1
  32. package/dist/v1/libs/html/TinyHtml.mjs +1 -1
  33. package/dist/v1/libs/html/loader/TinyMediaLoader.cjs +1999 -0
  34. package/dist/v1/libs/html/loader/TinyMediaLoader.d.mts +999 -0
  35. package/dist/v1/libs/html/loader/TinyMediaLoader.d.mts.map +1 -0
  36. package/dist/v1/libs/html/loader/TinyMediaLoader.mjs +1852 -0
  37. package/dist/v1/libs/html/loader/beta/formats/TinyAudioLoader.cjs +77 -0
  38. package/dist/v1/libs/html/loader/beta/formats/TinyAudioLoader.d.mts +103 -0
  39. package/dist/v1/libs/html/loader/beta/formats/TinyAudioLoader.d.mts.map +1 -0
  40. package/dist/v1/libs/html/loader/beta/formats/TinyAudioLoader.mjs +67 -0
  41. package/dist/v1/libs/html/loader/beta/formats/TinyContentLoader.cjs +630 -0
  42. package/dist/v1/libs/html/loader/beta/formats/TinyContentLoader.d.mts +138 -0
  43. package/dist/v1/libs/html/loader/beta/formats/TinyContentLoader.d.mts.map +1 -0
  44. package/dist/v1/libs/html/loader/beta/formats/TinyContentLoader.mjs +576 -0
  45. package/dist/v1/libs/html/loader/beta/formats/TinyVideoLoader.cjs +70 -0
  46. package/dist/v1/libs/html/loader/beta/formats/TinyVideoLoader.d.mts +100 -0
  47. package/dist/v1/libs/html/loader/beta/formats/TinyVideoLoader.d.mts.map +1 -0
  48. package/dist/v1/libs/html/loader/beta/formats/TinyVideoLoader.mjs +60 -0
  49. package/dist/v1/libs/html/loader/beta/probe/TinyMediaProbe.cjs +946 -0
  50. package/dist/v1/libs/html/loader/beta/probe/TinyMediaProbe.d.mts +67 -0
  51. package/dist/v1/libs/html/loader/beta/probe/TinyMediaProbe.d.mts.map +1 -0
  52. package/dist/v1/libs/html/loader/beta/probe/TinyMediaProbe.mjs +896 -0
  53. package/dist/v1/libs/html/loader/formats/TinyFetchLoader.cjs +225 -0
  54. package/dist/v1/libs/html/loader/formats/TinyFetchLoader.d.mts +149 -0
  55. package/dist/v1/libs/html/loader/formats/TinyFetchLoader.d.mts.map +1 -0
  56. package/dist/v1/libs/html/loader/formats/TinyFetchLoader.mjs +197 -0
  57. package/dist/v1/libs/html/loader/formats/TinyImageLoader.cjs +1454 -0
  58. package/dist/v1/libs/html/loader/formats/TinyImageLoader.d.mts +200 -0
  59. package/dist/v1/libs/html/loader/formats/TinyImageLoader.d.mts.map +1 -0
  60. package/dist/v1/libs/html/loader/formats/TinyImageLoader.mjs +1317 -0
  61. package/dist/v1/libs/html/loader/probe/TinyImageProbe.cjs +668 -0
  62. package/dist/v1/libs/html/loader/probe/TinyImageProbe.d.mts +83 -0
  63. package/dist/v1/libs/html/loader/probe/TinyImageProbe.d.mts.map +1 -0
  64. package/dist/v1/libs/html/loader/probe/TinyImageProbe.mjs +626 -0
  65. package/dist/v1/libs/html/loader/utils/TinyBufferReader.cjs +277 -0
  66. package/dist/v1/libs/html/loader/utils/TinyBufferReader.d.mts +118 -0
  67. package/dist/v1/libs/html/loader/utils/TinyBufferReader.d.mts.map +1 -0
  68. package/dist/v1/libs/html/loader/utils/TinyBufferReader.mjs +247 -0
  69. package/dist/v1/libs/html/loader/utils/TinyIsoBox.cjs +128 -0
  70. package/dist/v1/libs/html/loader/utils/TinyIsoBox.d.mts +49 -0
  71. package/dist/v1/libs/html/loader/utils/TinyIsoBox.d.mts.map +1 -0
  72. package/dist/v1/libs/html/loader/utils/TinyIsoBox.mjs +116 -0
  73. package/dist/v1/libs/html/loader/utils/TinyMediaCache.cjs +796 -0
  74. package/dist/v1/libs/html/loader/utils/TinyMediaCache.d.mts +354 -0
  75. package/dist/v1/libs/html/loader/utils/TinyMediaCache.d.mts.map +1 -0
  76. package/dist/v1/libs/html/loader/utils/TinyMediaCache.mjs +734 -0
  77. package/dist/v1/libs/html/loader/utils/TinyMediaMirror.cjs +302 -0
  78. package/dist/v1/libs/html/loader/utils/TinyMediaMirror.d.mts +256 -0
  79. package/dist/v1/libs/html/loader/utils/TinyMediaMirror.d.mts.map +1 -0
  80. package/dist/v1/libs/html/loader/utils/TinyMediaMirror.mjs +280 -0
  81. package/dist/v1/libs/html/loader/utils/TinyMediaProgress.cjs +194 -0
  82. package/dist/v1/libs/html/loader/utils/TinyMediaProgress.d.mts +138 -0
  83. package/dist/v1/libs/html/loader/utils/TinyMediaProgress.d.mts.map +1 -0
  84. package/dist/v1/libs/html/loader/utils/TinyMediaProgress.mjs +175 -0
  85. package/dist/v1/libs/tools/TinyPkgExportValidator.cjs +359 -55
  86. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts +64 -6
  87. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts.map +1 -1
  88. package/dist/v1/libs/tools/TinyPkgExportValidator.mjs +320 -57
  89. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.cjs +0 -1
  90. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts +0 -1
  91. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts.map +1 -1
  92. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.mjs +0 -1
  93. package/dist/v1/webTemplates/bootstrap/5.3/scss/background/_background-grid.scss +15 -0
  94. package/dist/v1/webTemplates/bootstrap/5.3/scss/components/buttons/_buttons-contrast.scss +208 -0
  95. package/dist/v1/webTemplates/bootstrap/5.3/scss/components/buttons/_buttons-ghost.scss +89 -0
  96. package/dist/v1/webTemplates/bootstrap/5.3/scss/components/icon/_cube-icon.scss +65 -0
  97. package/dist/v1/webTemplates/bootstrap/5.3/scss/components/icon/_sphere-pulse.scss +39 -0
  98. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_badges.scss +90 -0
  99. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_bootstrap-overrides.scss +495 -0
  100. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_buttons.scss +390 -0
  101. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_colors.scss +213 -0
  102. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_effects.scss +153 -0
  103. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_forms-tones.scss +69 -0
  104. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_forms.scss +323 -0
  105. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_global.scss +31 -0
  106. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_links.scss +47 -0
  107. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_tables.scss +25 -0
  108. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_theme.scss +21 -0
  109. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_tokens.scss +161 -0
  110. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_utilities.scss +81 -0
  111. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/_variables.scss +63 -0
  112. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/plugins/_form-tone-mixins.scss +236 -0
  113. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/plugins/_sizing.scss +68 -0
  114. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/plugins/_tone-mixins.scss +392 -0
  115. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/plugins/_typography.scss +112 -0
  116. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/plugins/background/_tiny_gradient_1.scss +131 -0
  117. package/dist/v1/webTemplates/bootstrap/5.3/scss/themes/deepstrap/plugins/colors/_pink.scss +47 -0
  118. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.cjs +2 -2
  119. package/docs/v1/Exports.md +33 -2
  120. package/docs/v1/README.md +9 -0
  121. package/docs/v1/basics/youtube.md +204 -0
  122. package/docs/v1/libs/html/loader/TinyFetchLoader.md +114 -0
  123. package/docs/v1/libs/html/loader/TinyImageLoader.md +141 -0
  124. package/docs/v1/libs/html/loader/TinyMediaCache.md +166 -0
  125. package/docs/v1/libs/html/loader/TinyMediaLoader.md +300 -0
  126. package/docs/v1/libs/tools/TinyPkgExportValidator.md +55 -0
  127. package/docs/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters.md +0 -4
  128. package/docs/v1/webTemplates/bootstrap/5.3/DeepStrap.md +177 -0
  129. package/package.json +281 -17
  130. /package/dist/v1/webTemplates/bootstrap/5.3/scss/input/{Placeholder-Colors-Fix.scss → _placeholder-colors-fix.scss} +0 -0
  131. /package/dist/v1/webTemplates/bootstrap/5.3/scss/spacing/{Spacing-Plus.scss → _spacing-plus.scss} +0 -0
@@ -0,0 +1,495 @@
1
+ @use 'sass:map';
2
+ @use 'colors' as *;
3
+
4
+ // ------------------------------------------------------------------ navbar --
5
+ .navbar {
6
+ --bs-navbar-color: var(--tone-ink-soft, var(--ui-text-muted));
7
+ --bs-navbar-hover-color: var(--tone-ink, var(--ui-heading));
8
+ --bs-navbar-active-color: var(--tone-ink, var(--ui-heading));
9
+ --bs-navbar-brand-color: var(--tone-ink, var(--ui-heading));
10
+ --bs-navbar-brand-hover-color: var(--tone-ink, var(--ui-heading));
11
+ --bs-navbar-toggler-border-color: var(--ui-border);
12
+
13
+ border-bottom: 1px solid var(--ui-hairline);
14
+ @include glass('default', 'surface');
15
+ @include hairline-top();
16
+
17
+ .nav-link {
18
+ position: relative;
19
+ transition: color var(--ui-duration) var(--ui-ease);
20
+
21
+ &:not(.dropdown-toggle) {
22
+ @include nav-underline('after');
23
+ }
24
+
25
+ &.dropdown-toggle {
26
+ @include nav-underline('before');
27
+ }
28
+ }
29
+
30
+ &.bg-warning {
31
+ background-color: var(--ui-warn-bright) !important;
32
+ }
33
+
34
+ .text-warning {
35
+ color: var(--ui-warn-bright) !important;
36
+ }
37
+ }
38
+
39
+ // -------------------------------------------------------------------- card --
40
+ .card {
41
+ --bs-card-bg: transparent;
42
+ --bs-card-border-color: var(--ui-border);
43
+ --bs-card-color: var(--tone-ink, var(--ui-text));
44
+ --bs-card-cap-bg: var(--ui-overlay-1);
45
+ --bs-card-cap-color: var(--tone-ink, var(--ui-heading));
46
+ --bs-card-inner-border-color: var(--ui-hairline);
47
+
48
+ @include surface(0.86);
49
+ }
50
+
51
+ .card-header,
52
+ .card-footer {
53
+ border-color: var(--ui-hairline);
54
+ }
55
+
56
+ // ---------------------------------------------------------------- dropdown --
57
+ .dropdown-menu {
58
+ --bs-dropdown-bg: rgb(var(--ui-surface-rgb) / 0.98);
59
+ --bs-dropdown-border-color: var(--ui-border);
60
+ --bs-dropdown-link-color: var(--ui-text);
61
+ --bs-dropdown-link-hover-bg: var(--ui-overlay-2);
62
+ --bs-dropdown-link-hover-color: var(--ui-heading);
63
+ --bs-dropdown-link-active-bg: rgb(var(--ui-accent-rgb) / 0.16);
64
+ --bs-dropdown-link-active-color: var(--ui-heading);
65
+ --bs-dropdown-divider-bg: var(--ui-hairline);
66
+ --bs-dropdown-header-color: var(--ui-text-muted);
67
+
68
+ @include elevation(3);
69
+ }
70
+
71
+ .dropdown-item {
72
+ border-radius: calc(var(--bs-border-radius-sm) - 2px);
73
+ }
74
+
75
+ // ------------------------------------------------------------------- modal --
76
+ .modal-content {
77
+ --bs-modal-bg: transparent;
78
+ --bs-modal-border-color: transparent;
79
+ --bs-modal-header-border-color: var(--ui-hairline);
80
+ --bs-modal-footer-border-color: var(--ui-hairline);
81
+
82
+ @include surface(0.98);
83
+ }
84
+
85
+ .modal-backdrop {
86
+ backdrop-filter: blur(4px) saturate(120%);
87
+ -webkit-backdrop-filter: blur(4px) saturate(120%);
88
+
89
+ &::before {
90
+ inset: 0;
91
+ content: '';
92
+ background-color: rgb(var(--ui-scrim-base) / 0.72);
93
+ }
94
+ }
95
+
96
+ // --------------------------------------------------------------- offcanvas --
97
+ .offcanvas {
98
+ --bs-offcanvas-bg: var(--ui-surface);
99
+ --bs-offcanvas-color: var(--ui-text);
100
+ --bs-offcanvas-border-color: var(--ui-border);
101
+ }
102
+
103
+ // -------------------------------------------------------------------- tabs --
104
+ .nav-tabs {
105
+ --bs-nav-tabs-border-color: var(--ui-border);
106
+ --bs-nav-link-color: var(--ui-text-muted);
107
+ --bs-nav-link-hover-color: var(--ui-heading);
108
+ --bs-nav-link-active-color: var(--ui-heading);
109
+
110
+ .nav-link {
111
+ border: 1px solid transparent;
112
+ border-bottom: 0;
113
+ border-radius: var(--bs-border-radius-sm) var(--bs-border-radius-sm) 0 0;
114
+ transition:
115
+ color var(--ui-duration) var(--ui-ease),
116
+ background-color var(--ui-duration) var(--ui-ease),
117
+ border-color var(--ui-duration) var(--ui-ease);
118
+
119
+ &:hover {
120
+ border-color: transparent;
121
+ }
122
+
123
+ &.active {
124
+ color: var(--bs-nav-link-active-color);
125
+ background: var(--ui-surface);
126
+ border-color: var(--ui-border);
127
+ border-bottom-color: var(--ui-surface);
128
+ margin-bottom: -1px;
129
+ }
130
+ }
131
+ }
132
+
133
+ .nav-pills {
134
+ --bs-nav-pills-link-active-bg: rgb(var(--ui-accent-rgb) / 0.16);
135
+ --bs-nav-pills-link-active-color: var(--ui-heading);
136
+
137
+ .nav-link {
138
+ border-radius: var(--bs-border-radius-sm);
139
+ transition: background var(--ui-duration) var(--ui-ease);
140
+ }
141
+ }
142
+
143
+ // ------------------------------------------------------------------- table --
144
+ .table {
145
+ --bs-table-bg: transparent;
146
+ --bs-table-color: var(--ui-heading);
147
+ --bs-table-border-color: var(--ui-border);
148
+
149
+ --bs-table-striped-color: var(--ui-heading);
150
+ --bs-table-striped-bg: rgb(var(--ui-heading-rgb) / 0.05);
151
+
152
+ --bs-table-active-color: var(--ui-heading);
153
+ --bs-table-active-bg: rgb(var(--ui-heading-rgb) / 0.1);
154
+
155
+ --bs-table-hover-color: var(--ui-heading);
156
+ --bs-table-hover-bg: rgb(var(--ui-heading-rgb) / 0.075);
157
+ --bs-table-header-color: var(--ui-table-header-ink);
158
+
159
+ thead th {
160
+ color: var(--bs-table-header-color);
161
+ }
162
+ }
163
+
164
+ // ------------------------------------------------------------------ alerts --
165
+ @each $name, $token in $subtle-tokens {
166
+ @include tone-alert($name, $token);
167
+ }
168
+
169
+ // ------------------------------------------------------------------- toast --
170
+ .toast {
171
+ --bs-toast-bg: rgb(var(--ui-surface-rgb) / 0.98);
172
+ --bs-toast-border-color: var(--ui-border);
173
+ --bs-toast-color: var(--ui-text);
174
+ --bs-toast-header-color: var(--ui-heading);
175
+
176
+ @include elevation(3);
177
+ }
178
+
179
+ // --------------------------------------------------------------- accordion --
180
+ .accordion {
181
+ --accordion-chevron: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3e%3cpath d='M4 6l4 4 4-4'/%3e%3c/svg%3e");
182
+
183
+ --bs-accordion-bg: transparent;
184
+ --bs-accordion-color: var(--ui-text);
185
+ --bs-accordion-border-color: var(--ui-border);
186
+ --bs-accordion-btn-color: var(--ui-heading);
187
+ --bs-accordion-btn-bg: transparent;
188
+ --bs-accordion-btn-focus-box-shadow: 0 0 0 3px rgb(var(--ui-accent-rgb) / 0.2);
189
+ --bs-accordion-active-color: var(--ui-heading);
190
+ --bs-accordion-active-bg: var(--ui-overlay-1);
191
+
192
+ .accordion-button {
193
+ transition:
194
+ background-color var(--ui-duration) var(--ui-ease),
195
+ color var(--ui-duration) var(--ui-ease);
196
+
197
+ &::after {
198
+ background-image: none;
199
+ background-color: currentColor;
200
+ mask: var(--accordion-chevron) center / contain no-repeat;
201
+ -webkit-mask: var(--accordion-chevron) center / contain no-repeat;
202
+ transition: transform var(--ui-duration) var(--ui-ease);
203
+ }
204
+
205
+ &:not(.collapsed) {
206
+ color: var(--bs-accordion-active-color);
207
+ background-color: var(--bs-accordion-active-bg);
208
+ box-shadow: inset 0 -1px 0 var(--ui-hairline);
209
+ }
210
+ }
211
+
212
+ .accordion-body {
213
+ color: var(--ui-text);
214
+ }
215
+ }
216
+
217
+ // ---------------------------------------------------------------- overlays --
218
+ .tooltip {
219
+ --bs-tooltip-bg: var(--ui-surface-raised);
220
+ --bs-tooltip-color: var(--ui-heading);
221
+ }
222
+
223
+ .popover {
224
+ --bs-popover-bg: var(--ui-surface);
225
+ --bs-popover-border-color: var(--ui-border);
226
+ --bs-popover-header-bg: var(--ui-overlay-1);
227
+ --bs-popover-header-color: var(--ui-heading);
228
+ }
229
+
230
+ // ---------------------------------------------------------------- progress --
231
+ .progress,
232
+ .progress-stacked {
233
+ --bs-progress-bg: color-mix(in srgb, var(--ui-border) 55%, transparent);
234
+ }
235
+
236
+ // -------------------------------------------------------------- pagination --
237
+ .pagination {
238
+ --bs-pagination-bg: transparent;
239
+ --bs-pagination-border-color: var(--ui-border);
240
+ --bs-pagination-color: var(--ui-text);
241
+ --bs-pagination-hover-bg: var(--ui-overlay-2);
242
+ --bs-pagination-hover-color: var(--ui-heading);
243
+ --bs-pagination-hover-border-color: var(--ui-border-strong);
244
+ --bs-pagination-active-bg: var(--ui-accent);
245
+ --bs-pagination-active-border-color: var(--ui-accent);
246
+ --bs-pagination-disabled-bg: transparent;
247
+ --bs-pagination-disabled-color: var(--ui-text-muted);
248
+ }
249
+
250
+ // -------------------------------------------------------------- breadcrumb --
251
+ .breadcrumb {
252
+ --bs-breadcrumb-divider-color: var(--ui-text-muted);
253
+ --bs-breadcrumb-item-active-color: var(--ui-heading);
254
+ }
255
+
256
+ // -------------------------------------------------------------- list-group --
257
+ .list-group {
258
+ --bs-list-group-bg: transparent;
259
+ --bs-list-group-color: var(--ui-text);
260
+ --bs-list-group-border-color: var(--ui-border);
261
+ --bs-list-group-action-hover-bg: var(--ui-overlay-1);
262
+ --bs-list-group-action-hover-color: var(--ui-heading);
263
+ --bs-list-group-active-bg: rgb(var(--ui-accent-rgb) / 0.16);
264
+ --bs-list-group-active-border-color: var(--ui-accent);
265
+ --bs-list-group-active-color: var(--ui-heading);
266
+ }
267
+
268
+ // ---------------------------------------------------------------- surfaces --
269
+ .bg-body {
270
+ background-color: var(--ui-canvas) !important;
271
+ }
272
+
273
+ .bg-body-secondary {
274
+ background-color: var(--ui-surface) !important;
275
+ }
276
+
277
+ .bg-body-tertiary {
278
+ background-color: var(--ui-surface-raised) !important;
279
+ }
280
+
281
+ .bg-body-quaternary {
282
+ background-color: var(--ui-input) !important;
283
+ }
284
+
285
+ // -------------------------------------------------------------------- misc --
286
+ hr {
287
+ color: var(--ui-border);
288
+ opacity: 1;
289
+ }
290
+
291
+ ::placeholder {
292
+ color: var(--ui-text-muted);
293
+ opacity: 0.65;
294
+ }
295
+
296
+ .text-muted {
297
+ color: var(--ui-text-muted) !important;
298
+ }
299
+
300
+ .border,
301
+ .border-top,
302
+ .border-bottom,
303
+ .border-start,
304
+ .border-end {
305
+ border-color: var(--ui-border) !important;
306
+ }
307
+
308
+ // ---------------------------------------------------------------- carousel --
309
+ .carousel {
310
+ --carousel-caption-color: var(--ui-scrim-caption);
311
+ --carousel-scrim: linear-gradient(
312
+ 180deg,
313
+ rgb(var(--ui-scrim-base) / 0) 0%,
314
+ rgb(var(--ui-scrim-base) / 0.55) 55%,
315
+ rgb(var(--ui-scrim-base) / 0.82) 100%
316
+ );
317
+ --carousel-code-color: color-mix(in srgb, var(--ui-info) 35%, var(--ui-scrim-ink));
318
+ --carousel-control-filter: none;
319
+ --carousel-indicator-bg: rgb(var(--ui-scrim-indicator) / 0.45);
320
+ --carousel-indicator-active-bg: #{ui-color('carousel-indicator')};
321
+
322
+ border-radius: var(--bs-border-radius);
323
+ }
324
+
325
+ [data-bs-theme='light'] .carousel {
326
+ --carousel-code-color: color-mix(in srgb, var(--ui-info) 70%, var(--ui-scrim-ink));
327
+ --carousel-control-filter: invert(1);
328
+ --carousel-indicator-bg: rgb(var(--ui-scrim-indicator) / 0.28);
329
+ }
330
+
331
+ [data-bs-theme='dark'] .carousel {
332
+ --carousel-control-filter: invert(0) grayscale(100);
333
+ }
334
+
335
+ .carousel-caption {
336
+ right: 0;
337
+ bottom: 0;
338
+ left: 0;
339
+ margin: 0;
340
+ background: var(--carousel-scrim);
341
+ border-radius: 0;
342
+
343
+ --bs-code-color: var(--carousel-code-color);
344
+ }
345
+
346
+ [data-bs-theme='dark'],
347
+ [data-bs-theme='light'] {
348
+ .carousel,
349
+ &.carousel {
350
+ .carousel-caption {
351
+ color: var(--carousel-caption-color);
352
+ }
353
+ }
354
+ }
355
+
356
+ .carousel-indicators [data-bs-target] {
357
+ background-color: var(--carousel-indicator-bg);
358
+ border: 0;
359
+ border-radius: 999px;
360
+ opacity: 1;
361
+ transition:
362
+ opacity var(--ui-duration) var(--ui-ease),
363
+ background-color var(--ui-duration) var(--ui-ease);
364
+ }
365
+
366
+ .carousel-indicators .active {
367
+ background-color: var(--carousel-indicator-active-bg);
368
+ }
369
+
370
+ .carousel-control-prev,
371
+ .carousel-control-next {
372
+ opacity: 0.6;
373
+ transition: opacity var(--ui-duration) var(--ui-ease);
374
+
375
+ &:hover,
376
+ &:focus {
377
+ opacity: 1;
378
+ }
379
+ }
380
+
381
+ [data-bs-theme='dark'],
382
+ [data-bs-theme='light'] {
383
+ .carousel {
384
+ .carousel-control-prev-icon,
385
+ .carousel-control-next-icon {
386
+ filter: var(--carousel-control-filter);
387
+ }
388
+ }
389
+ }
390
+
391
+ .carousel .carousel-indicators [data-bs-target],
392
+ [data-bs-theme] .carousel .carousel-indicators [data-bs-target] {
393
+ background-color: var(--carousel-indicator-bg);
394
+ }
395
+
396
+ .carousel .carousel-indicators .active,
397
+ [data-bs-theme] .carousel .carousel-indicators .active {
398
+ background-color: var(--carousel-indicator-active-bg);
399
+ }
400
+
401
+ // --------------------------------------------------------------- spinners --
402
+ .spinner-border,
403
+ .spinner-grow {
404
+ color: var(--ui-accent);
405
+ }
406
+
407
+ .btn .spinner-border,
408
+ .btn .spinner-grow {
409
+ color: inherit;
410
+ }
411
+
412
+ // ----------------------------------------------------------- placeholders --
413
+ .placeholder {
414
+ background-color: var(--ui-border-strong);
415
+ opacity: 0.5;
416
+ }
417
+
418
+ @keyframes placeholder-glow {
419
+ 50% {
420
+ opacity: 0.2;
421
+ }
422
+ }
423
+
424
+ // -------------------------------------------------------------- scrollspy --
425
+ .nav-link.active[href^='#'],
426
+ .list-group-item.active[href^='#'] {
427
+ color: var(--ui-heading);
428
+ }
429
+
430
+ // ----------------------------------------------------------- close button --
431
+ .btn-close {
432
+ --bs-btn-close-color: var(--ui-text-muted);
433
+ --bs-btn-close-hover-color: var(--ui-heading);
434
+ --bs-btn-close-opacity: 0.6;
435
+ --bs-btn-close-hover-opacity: 1;
436
+ --bs-btn-close-focus-shadow: 0 0 0 3px rgb(var(--ui-accent-rgb) / 0.2);
437
+
438
+ transition:
439
+ opacity var(--ui-duration) var(--ui-ease),
440
+ filter var(--ui-duration) var(--ui-ease);
441
+
442
+ &:hover {
443
+ color: var(--ui-heading);
444
+ }
445
+ }
446
+
447
+ // --------------------------------------------------------------- accordion --
448
+ .accordion {
449
+ --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{svg-color('control-icon')}' stroke-width='2' stroke-linecap='round'%3e%3cpath d='M4 6l4 4 4-4'/%3e%3c/svg%3e");
450
+ --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{svg-color('control-icon-active')}' stroke-width='2' stroke-linecap='round'%3e%3cpath d='M4 6l4 4 4-4'/%3e%3c/svg%3e");
451
+
452
+ .accordion-button {
453
+ transition:
454
+ background-color var(--ui-duration) var(--ui-ease),
455
+ color var(--ui-duration) var(--ui-ease);
456
+
457
+ &:not(.collapsed) {
458
+ box-shadow: inset 0 -1px 0 var(--ui-hairline);
459
+ }
460
+ }
461
+
462
+ .accordion-body {
463
+ color: var(--ui-text);
464
+ }
465
+ }
466
+
467
+ // ------------------------------------------------------------------ motion --
468
+ .progress-bar {
469
+ transition: width 240ms var(--ui-ease);
470
+ }
471
+
472
+ .collapsing {
473
+ transition: height 220ms var(--ui-ease);
474
+ }
475
+
476
+ @media (prefers-reduced-motion: reduce) {
477
+ .progress-bar,
478
+ .collapsing {
479
+ transition: none;
480
+ }
481
+ }
482
+
483
+ $tone-foregrounds: map.merge(
484
+ $subtle-tokens,
485
+ (
486
+ 'light': 'neutral-light',
487
+ 'dark': 'neutral-dark',
488
+ )
489
+ );
490
+
491
+ @each $name, $token in $tone-foregrounds {
492
+ .border-#{$name} {
493
+ border-color: rgba(var(--bs-#{$name}-rgb), var(--bs-border-opacity, 1)) !important;
494
+ }
495
+ }