@vuecs/theme-bootstrap 4.0.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.
@@ -0,0 +1,472 @@
1
+ /*!
2
+ * @vuecs/theme-bootstrap — Design-token bridge
3
+ *
4
+ * Wires Bootstrap 5.3+'s CSS variables onto vuecs design-system tokens
5
+ * (`--vc-color-*`). Importing this file alongside Bootstrap and
6
+ * `@vuecs/design/index.css` makes Bootstrap's buttons, alerts, badges,
7
+ * background utilities, etc. respond to `setColorPalette()` / `.dark` just
8
+ * like the Tailwind theme.
9
+ *
10
+ * Import order:
11
+ * 1. Bootstrap CSS (provides the default --bs-* values).
12
+ * 2. @vuecs/design/index.css (provides --vc-color-*).
13
+ * 3. This bridge (overrides --bs-* to reference --vc-color-*).
14
+ *
15
+ * What this covers:
16
+ * - The global `--bs-primary` / `-secondary` / `-success` / `-warning`
17
+ * / `-danger` / `-info` tokens — read directly by some utilities
18
+ * and by anything you reference via `var(--bs-primary)` yourself.
19
+ * - The per-variant button vars (`.btn-primary { --bs-btn-bg: … }`)
20
+ * for default / hover / active / disabled states. Bootstrap 5.3+
21
+ * hardcodes hex values in each `.btn-<variant>` block, so just
22
+ * overriding `--bs-primary` doesn't reach buttons; we have to
23
+ * redeclare the per-variant chain here.
24
+ * - The `.bg-<variant>` / `.text-<variant>` / `.border-<variant>`
25
+ * utility classes — each gets its `background-color` / `color` /
26
+ * `border-color` rebound to the matching `--vc-color-*`.
27
+ * - The `.badge.text-bg-<variant>` background for chip-style badges.
28
+ *
29
+ * Limitations:
30
+ * - `--bs-<color>-rgb` triplets are NOT bridged (CSS has no
31
+ * hex→rgb-triplet conversion). Bootstrap features that rely on
32
+ * `rgba(var(--bs-primary-rgb), α)` — focus-ring translucency,
33
+ * soft hovers — keep their original Bootstrap palette. The
34
+ * workaround is a JS hook that writes the triplet at palette
35
+ * change; not provided by this bridge.
36
+ * - Bootstrap's `[data-bs-theme="dark"]` palette is not touched;
37
+ * this bridge uses the `.dark` class (same toggle as the rest of
38
+ * the vuecs design-system). Pick one source of truth.
39
+ */
40
+
41
+ :root {
42
+ --bs-primary: var(--vc-color-primary-500);
43
+ --bs-secondary: var(--vc-color-neutral-500);
44
+ --bs-success: var(--vc-color-success-500);
45
+ --bs-info: var(--vc-color-info-500);
46
+ --bs-warning: var(--vc-color-warning-500);
47
+ --bs-danger: var(--vc-color-error-500);
48
+
49
+ --bs-body-bg: var(--vc-color-bg);
50
+ --bs-body-color: var(--vc-color-fg);
51
+ --bs-border-color: var(--vc-color-border);
52
+ --bs-link-color: var(--vc-color-primary-600);
53
+ --bs-link-hover-color: var(--vc-color-primary-700);
54
+ }
55
+
56
+ .dark {
57
+ /* Bootstrap expects a slightly brighter primary on dark bg — use the
58
+ 400 shade, matching the design-system's own `--vc-color-ring`
59
+ dark-mode flip. */
60
+ --bs-primary: var(--vc-color-primary-400);
61
+ --bs-secondary: var(--vc-color-neutral-400);
62
+ --bs-success: var(--vc-color-success-400);
63
+ --bs-info: var(--vc-color-info-400);
64
+ --bs-warning: var(--vc-color-warning-400);
65
+ --bs-danger: var(--vc-color-error-400);
66
+
67
+ --bs-body-bg: var(--vc-color-bg);
68
+ --bs-body-color: var(--vc-color-fg);
69
+ --bs-border-color: var(--vc-color-border);
70
+ --bs-link-color: var(--vc-color-primary-400);
71
+ --bs-link-hover-color: var(--vc-color-primary-300);
72
+ }
73
+
74
+ /* ────────────────────────────────────────────────────────────────────────────
75
+ * Per-variant button vars (Bootstrap 5.3+).
76
+ * Bootstrap hardcodes hex values in each `.btn-<variant>` block, so we
77
+ * need to redeclare the per-variant token chain — overriding
78
+ * `--bs-primary` alone doesn't reach `.btn-primary`'s bg.
79
+ * ──────────────────────────────────────────────────────────────────────── */
80
+
81
+ .btn-primary {
82
+ --bs-btn-bg: var(--vc-color-primary-600);
83
+ --bs-btn-border-color: var(--vc-color-primary-600);
84
+ --bs-btn-hover-bg: var(--vc-color-primary-700);
85
+ --bs-btn-hover-border-color: var(--vc-color-primary-700);
86
+ --bs-btn-active-bg: var(--vc-color-primary-700);
87
+ --bs-btn-active-border-color: var(--vc-color-primary-700);
88
+ --bs-btn-disabled-bg: var(--vc-color-primary-400);
89
+ --bs-btn-disabled-border-color: var(--vc-color-primary-400);
90
+ }
91
+
92
+ .btn-secondary {
93
+ --bs-btn-bg: var(--vc-color-neutral-600);
94
+ --bs-btn-border-color: var(--vc-color-neutral-600);
95
+ --bs-btn-hover-bg: var(--vc-color-neutral-700);
96
+ --bs-btn-hover-border-color: var(--vc-color-neutral-700);
97
+ --bs-btn-active-bg: var(--vc-color-neutral-700);
98
+ --bs-btn-active-border-color: var(--vc-color-neutral-700);
99
+ --bs-btn-disabled-bg: var(--vc-color-neutral-400);
100
+ --bs-btn-disabled-border-color: var(--vc-color-neutral-400);
101
+ }
102
+
103
+ .btn-success {
104
+ --bs-btn-bg: var(--vc-color-success-600);
105
+ --bs-btn-border-color: var(--vc-color-success-600);
106
+ --bs-btn-hover-bg: var(--vc-color-success-700);
107
+ --bs-btn-hover-border-color: var(--vc-color-success-700);
108
+ --bs-btn-active-bg: var(--vc-color-success-700);
109
+ --bs-btn-active-border-color: var(--vc-color-success-700);
110
+ --bs-btn-disabled-bg: var(--vc-color-success-400);
111
+ --bs-btn-disabled-border-color: var(--vc-color-success-400);
112
+ }
113
+
114
+ .btn-warning {
115
+ --bs-btn-bg: var(--vc-color-warning-600);
116
+ --bs-btn-border-color: var(--vc-color-warning-600);
117
+ --bs-btn-hover-bg: var(--vc-color-warning-700);
118
+ --bs-btn-hover-border-color: var(--vc-color-warning-700);
119
+ --bs-btn-active-bg: var(--vc-color-warning-700);
120
+ --bs-btn-active-border-color: var(--vc-color-warning-700);
121
+ --bs-btn-disabled-bg: var(--vc-color-warning-400);
122
+ --bs-btn-disabled-border-color: var(--vc-color-warning-400);
123
+ }
124
+
125
+ .btn-danger {
126
+ --bs-btn-bg: var(--vc-color-error-600);
127
+ --bs-btn-border-color: var(--vc-color-error-600);
128
+ --bs-btn-hover-bg: var(--vc-color-error-700);
129
+ --bs-btn-hover-border-color: var(--vc-color-error-700);
130
+ --bs-btn-active-bg: var(--vc-color-error-700);
131
+ --bs-btn-active-border-color: var(--vc-color-error-700);
132
+ --bs-btn-disabled-bg: var(--vc-color-error-400);
133
+ --bs-btn-disabled-border-color: var(--vc-color-error-400);
134
+ }
135
+
136
+ .btn-info {
137
+ --bs-btn-bg: var(--vc-color-info-600);
138
+ --bs-btn-border-color: var(--vc-color-info-600);
139
+ --bs-btn-hover-bg: var(--vc-color-info-700);
140
+ --bs-btn-hover-border-color: var(--vc-color-info-700);
141
+ --bs-btn-active-bg: var(--vc-color-info-700);
142
+ --bs-btn-active-border-color: var(--vc-color-info-700);
143
+ --bs-btn-disabled-bg: var(--vc-color-info-400);
144
+ --bs-btn-disabled-border-color: var(--vc-color-info-400);
145
+ }
146
+
147
+ /* `btn-outline-*` — inverse: transparent bg, colored text + border, then
148
+ solid colored bg on hover. */
149
+ .btn-outline-primary {
150
+ --bs-btn-color: var(--vc-color-primary-600);
151
+ --bs-btn-border-color: var(--vc-color-primary-600);
152
+ --bs-btn-hover-bg: var(--vc-color-primary-600);
153
+ --bs-btn-hover-border-color: var(--vc-color-primary-600);
154
+ --bs-btn-active-bg: var(--vc-color-primary-700);
155
+ --bs-btn-active-border-color: var(--vc-color-primary-700);
156
+ --bs-btn-disabled-color: var(--vc-color-primary-400);
157
+ --bs-btn-disabled-border-color: var(--vc-color-primary-400);
158
+ }
159
+
160
+ .btn-outline-secondary {
161
+ --bs-btn-color: var(--vc-color-neutral-600);
162
+ --bs-btn-border-color: var(--vc-color-neutral-600);
163
+ --bs-btn-hover-bg: var(--vc-color-neutral-600);
164
+ --bs-btn-hover-border-color: var(--vc-color-neutral-600);
165
+ --bs-btn-active-bg: var(--vc-color-neutral-700);
166
+ --bs-btn-active-border-color: var(--vc-color-neutral-700);
167
+ --bs-btn-disabled-color: var(--vc-color-neutral-400);
168
+ --bs-btn-disabled-border-color: var(--vc-color-neutral-400);
169
+ }
170
+
171
+ .btn-outline-success {
172
+ --bs-btn-color: var(--vc-color-success-600);
173
+ --bs-btn-border-color: var(--vc-color-success-600);
174
+ --bs-btn-hover-bg: var(--vc-color-success-600);
175
+ --bs-btn-hover-border-color: var(--vc-color-success-600);
176
+ --bs-btn-active-bg: var(--vc-color-success-700);
177
+ --bs-btn-active-border-color: var(--vc-color-success-700);
178
+ }
179
+
180
+ .btn-outline-warning {
181
+ --bs-btn-color: var(--vc-color-warning-600);
182
+ --bs-btn-border-color: var(--vc-color-warning-600);
183
+ --bs-btn-hover-bg: var(--vc-color-warning-600);
184
+ --bs-btn-hover-border-color: var(--vc-color-warning-600);
185
+ --bs-btn-active-bg: var(--vc-color-warning-700);
186
+ --bs-btn-active-border-color: var(--vc-color-warning-700);
187
+ }
188
+
189
+ .btn-outline-danger {
190
+ --bs-btn-color: var(--vc-color-error-600);
191
+ --bs-btn-border-color: var(--vc-color-error-600);
192
+ --bs-btn-hover-bg: var(--vc-color-error-600);
193
+ --bs-btn-hover-border-color: var(--vc-color-error-600);
194
+ --bs-btn-active-bg: var(--vc-color-error-700);
195
+ --bs-btn-active-border-color: var(--vc-color-error-700);
196
+ }
197
+
198
+ .btn-outline-info {
199
+ --bs-btn-color: var(--vc-color-info-600);
200
+ --bs-btn-border-color: var(--vc-color-info-600);
201
+ --bs-btn-hover-bg: var(--vc-color-info-600);
202
+ --bs-btn-hover-border-color: var(--vc-color-info-600);
203
+ --bs-btn-active-bg: var(--vc-color-info-700);
204
+ --bs-btn-active-border-color: var(--vc-color-info-700);
205
+ }
206
+
207
+ /* ────────────────────────────────────────────────────────────────────────────
208
+ * Background / text / border utility classes.
209
+ * Bootstrap's `.bg-primary`, `.text-primary`, `.border-primary` etc.
210
+ * resolve through `var(--bs-primary-rgb)` (which we can't bridge in
211
+ * pure CSS) — so override the final color directly.
212
+ * ──────────────────────────────────────────────────────────────────────── */
213
+
214
+ .bg-primary { background-color: var(--vc-color-primary-600) !important; }
215
+ .bg-secondary { background-color: var(--vc-color-neutral-600) !important; }
216
+ .bg-success { background-color: var(--vc-color-success-600) !important; }
217
+ .bg-warning { background-color: var(--vc-color-warning-600) !important; }
218
+ .bg-danger { background-color: var(--vc-color-error-600) !important; }
219
+ .bg-info { background-color: var(--vc-color-info-600) !important; }
220
+
221
+ .text-primary { color: var(--vc-color-primary-600) !important; }
222
+ .text-secondary { color: var(--vc-color-neutral-600) !important; }
223
+ .text-success { color: var(--vc-color-success-600) !important; }
224
+ .text-warning { color: var(--vc-color-warning-600) !important; }
225
+ .text-danger { color: var(--vc-color-error-600) !important; }
226
+ .text-info { color: var(--vc-color-info-600) !important; }
227
+
228
+ .border-primary { border-color: var(--vc-color-primary-600) !important; }
229
+ .border-secondary { border-color: var(--vc-color-neutral-600) !important; }
230
+ .border-success { border-color: var(--vc-color-success-600) !important; }
231
+ .border-warning { border-color: var(--vc-color-warning-600) !important; }
232
+ .border-danger { border-color: var(--vc-color-error-600) !important; }
233
+ .border-info { border-color: var(--vc-color-info-600) !important; }
234
+
235
+ /* `text-bg-*` is the chip-style combined utility used on badges. */
236
+ .text-bg-primary { background-color: var(--vc-color-primary-600) !important; color: var(--vc-color-on-primary) !important; }
237
+ .text-bg-secondary { background-color: var(--vc-color-neutral-600) !important; color: var(--vc-color-on-neutral) !important; }
238
+ .text-bg-success { background-color: var(--vc-color-success-600) !important; color: var(--vc-color-on-success) !important; }
239
+ .text-bg-warning { background-color: var(--vc-color-warning-600) !important; color: var(--vc-color-on-warning) !important; }
240
+ .text-bg-danger { background-color: var(--vc-color-error-600) !important; color: var(--vc-color-on-error) !important; }
241
+ .text-bg-info { background-color: var(--vc-color-info-600) !important; color: var(--vc-color-on-info) !important; }
242
+
243
+ /* ────────────────────────────────────────────────────────────────────────────
244
+ * Subtle / tinted variants (Bootstrap 5.3+).
245
+ * Used by soft-button styles, slider track backgrounds, alert tints, etc.
246
+ * Bootstrap defines these with hardcoded hex values per variant; mirror
247
+ * them to the `-100` / `-200` design-system shades.
248
+ * ──────────────────────────────────────────────────────────────────────── */
249
+
250
+ .bg-primary-subtle { background-color: var(--vc-color-primary-100) !important; }
251
+ .bg-secondary-subtle { background-color: var(--vc-color-neutral-100) !important; }
252
+ .bg-success-subtle { background-color: var(--vc-color-success-100) !important; }
253
+ .bg-warning-subtle { background-color: var(--vc-color-warning-100) !important; }
254
+ .bg-danger-subtle { background-color: var(--vc-color-error-100) !important; }
255
+ .bg-info-subtle { background-color: var(--vc-color-info-100) !important; }
256
+ .bg-light { background-color: var(--vc-color-bg-muted) !important; }
257
+ .bg-light-subtle { background-color: var(--vc-color-bg) !important; }
258
+
259
+ .border-primary-subtle { border-color: var(--vc-color-primary-200) !important; }
260
+ .border-secondary-subtle { border-color: var(--vc-color-neutral-200) !important; }
261
+ .border-success-subtle { border-color: var(--vc-color-success-200) !important; }
262
+ .border-warning-subtle { border-color: var(--vc-color-warning-200) !important; }
263
+ .border-danger-subtle { border-color: var(--vc-color-error-200) !important; }
264
+ .border-info-subtle { border-color: var(--vc-color-info-200) !important; }
265
+
266
+ .text-primary-emphasis { color: var(--vc-color-primary-700) !important; }
267
+ .text-secondary-emphasis { color: var(--vc-color-neutral-700) !important; }
268
+ .text-success-emphasis { color: var(--vc-color-success-700) !important; }
269
+ .text-warning-emphasis { color: var(--vc-color-warning-700) !important; }
270
+ .text-danger-emphasis { color: var(--vc-color-error-700) !important; }
271
+ .text-info-emphasis { color: var(--vc-color-info-700) !important; }
272
+
273
+ /* ────────────────────────────────────────────────────────────────────────────
274
+ * Alert variants — same chain as buttons. Bootstrap hardcodes the alert
275
+ * colors per variant block; redeclare against design tokens.
276
+ * ──────────────────────────────────────────────────────────────────────── */
277
+
278
+ .alert-primary {
279
+ --bs-alert-color: var(--vc-color-primary-700);
280
+ --bs-alert-bg: var(--vc-color-primary-100);
281
+ --bs-alert-border-color: var(--vc-color-primary-200);
282
+ --bs-alert-link-color: var(--vc-color-primary-800);
283
+ }
284
+ .alert-secondary {
285
+ --bs-alert-color: var(--vc-color-neutral-700);
286
+ --bs-alert-bg: var(--vc-color-neutral-100);
287
+ --bs-alert-border-color: var(--vc-color-neutral-200);
288
+ --bs-alert-link-color: var(--vc-color-neutral-800);
289
+ }
290
+ .alert-success {
291
+ --bs-alert-color: var(--vc-color-success-700);
292
+ --bs-alert-bg: var(--vc-color-success-100);
293
+ --bs-alert-border-color: var(--vc-color-success-200);
294
+ --bs-alert-link-color: var(--vc-color-success-800);
295
+ }
296
+ .alert-warning {
297
+ --bs-alert-color: var(--vc-color-warning-700);
298
+ --bs-alert-bg: var(--vc-color-warning-100);
299
+ --bs-alert-border-color: var(--vc-color-warning-200);
300
+ --bs-alert-link-color: var(--vc-color-warning-800);
301
+ }
302
+ .alert-danger {
303
+ --bs-alert-color: var(--vc-color-error-700);
304
+ --bs-alert-bg: var(--vc-color-error-100);
305
+ --bs-alert-border-color: var(--vc-color-error-200);
306
+ --bs-alert-link-color: var(--vc-color-error-800);
307
+ }
308
+ .alert-info {
309
+ --bs-alert-color: var(--vc-color-info-700);
310
+ --bs-alert-bg: var(--vc-color-info-100);
311
+ --bs-alert-border-color: var(--vc-color-info-200);
312
+ --bs-alert-link-color: var(--vc-color-info-800);
313
+ }
314
+
315
+ /* ────────────────────────────────────────────────────────────────────────────
316
+ * Form controls — `.form-control`, `.form-select`, `.form-check-input`.
317
+ * Bootstrap reads `--bs-border-color` (already bridged at :root) for the
318
+ * default border. Focus states use `--bs-primary` (bridged) but the
319
+ * focus-ring shadow uses `--bs-primary-rgb` which can't be bridged in
320
+ * pure CSS — focus-ring color stays bootstrap-default. The `accent-color`
321
+ * for native checkbox/radio respects `--bs-form-check-bg-image-checked`
322
+ * which encodes the SVG fill as a hardcoded data URI, so native checked
323
+ * indicators stay bootstrap-blue without a JS hook.
324
+ * ──────────────────────────────────────────────────────────────────────── */
325
+
326
+ .form-control:focus,
327
+ .form-select:focus,
328
+ .form-check-input:focus {
329
+ border-color: var(--vc-color-primary-500);
330
+ }
331
+
332
+ .form-check-input:checked {
333
+ background-color: var(--vc-color-primary-600);
334
+ border-color: var(--vc-color-primary-600);
335
+ }
336
+
337
+ /* ────────────────────────────────────────────────────────────────────────────
338
+ * Pagination, list-group, nav-pills active states — common cases that
339
+ * read `--bs-primary` directly.
340
+ * ──────────────────────────────────────────────────────────────────────── */
341
+
342
+ .page-link {
343
+ --bs-pagination-color: var(--vc-color-primary-600);
344
+ --bs-pagination-hover-color: var(--vc-color-primary-700);
345
+ --bs-pagination-focus-color: var(--vc-color-primary-700);
346
+ --bs-pagination-active-bg: var(--vc-color-primary-600);
347
+ --bs-pagination-active-border-color: var(--vc-color-primary-600);
348
+ }
349
+
350
+ .list-group {
351
+ --bs-list-group-active-color: var(--vc-color-on-primary);
352
+ --bs-list-group-active-bg: var(--vc-color-primary-600);
353
+ --bs-list-group-active-border-color: var(--vc-color-primary-600);
354
+ }
355
+
356
+ .nav-pills {
357
+ --bs-nav-pills-link-active-bg: var(--vc-color-primary-600);
358
+ --bs-nav-link-color: var(--vc-color-primary-600);
359
+ --bs-nav-link-hover-color: var(--vc-color-primary-700);
360
+ }
361
+
362
+ /* ────────────────────────────────────────────────────────────────────────────
363
+ * Progress bars — `--bs-progress-bar-bg` defaults to `--bs-primary`-derived.
364
+ * ──────────────────────────────────────────────────────────────────────── */
365
+
366
+ .progress, .progress-stacked {
367
+ --bs-progress-bar-bg: var(--vc-color-primary-600);
368
+ }
369
+
370
+ /* ────────────────────────────────────────────────────────────────────────────
371
+ * @vuecs/list shorthand-mode wrappers — `<VCList>` always emits
372
+ * `<VCListHeader>` / `<VCListBody>` / `<VCListFooter>` in shorthand mode
373
+ * (per Q10), even when the consumer only supplied a subset of slots.
374
+ * Hide empty wrappers so the layout doesn't sprout extra rows. The
375
+ * Tailwind theme uses `empty:hidden` for the same effect.
376
+ * ──────────────────────────────────────────────────────────────────────── */
377
+
378
+ .vc-list-header:empty,
379
+ .vc-list-body:empty,
380
+ .vc-list-footer:empty {
381
+ display: none;
382
+ }
383
+
384
+ /* ────────────────────────────────────────────────────────────────────────────
385
+ * @vuecs/overlays Modal — Bootstrap's `.modal-sm` / `.modal-lg` /
386
+ * `.modal-xl` sizing relies on a `.modal-dialog` wrapper to read
387
+ * `--bs-modal-width` and apply `max-width`. Reka's DialogContent renders
388
+ * a single positioned element (no `.modal-dialog`), so applying the size
389
+ * class on `.modal-content` was previously a no-op. Re-implement the
390
+ * width contract here so the Bootstrap theme's size variants take
391
+ * effect on our compound shape. Defaults match Bootstrap 5 (sm=300,
392
+ * lg=800, xl=1140); md keeps the unsized default which centers via
393
+ * the theme's `position-fixed top-50 start-50 translate-middle`.
394
+ * ──────────────────────────────────────────────────────────────────────── */
395
+
396
+ .vc-modal-content.modal-sm { max-width: 300px; width: calc(100% - 1rem); }
397
+ .vc-modal-content.modal-lg { max-width: 800px; width: calc(100% - 1rem); }
398
+ .vc-modal-content.modal-xl { max-width: 1140px; width: calc(100% - 1rem); }
399
+
400
+ /* ────────────────────────────────────────────────────────────────────────────
401
+ * @vuecs/navigation Stepper — Bootstrap utility classes can't carry
402
+ * `[data-state=…]` attribute selectors, so the theme entry's `bg-light`
403
+ * / `border-secondary-subtle` / `text-muted` apply uniformly. Add CSS
404
+ * here to differentiate active + completed steps. Both states use the
405
+ * primary color so the trail of progress reads as one continuous run
406
+ * (matches the Tailwind theme).
407
+ *
408
+ * `!important` is required because Bootstrap's `.bg-*` / `.border-*` /
409
+ * `.text-*` utility classes ship with `!important` themselves — without
410
+ * matching that, the higher-specificity attribute selector still loses
411
+ * to the `!important` on the utility.
412
+ * ──────────────────────────────────────────────────────────────────────── */
413
+
414
+ .vc-stepper-item[data-state="active"] .vc-stepper-indicator,
415
+ .vc-stepper-item[data-state="completed"] .vc-stepper-indicator {
416
+ background-color: var(--vc-color-primary-600) !important;
417
+ border-color: var(--vc-color-primary-600) !important;
418
+ color: var(--vc-color-on-primary) !important;
419
+ }
420
+
421
+ .vc-stepper-item[data-state="active"] .vc-stepper-title,
422
+ .vc-stepper-item[data-state="completed"] .vc-stepper-title {
423
+ color: var(--vc-color-fg) !important;
424
+ }
425
+
426
+ /* Bootstrap renders the separator via `border-top` (1px-tall element +
427
+ border-top edge), so colorize via `border-top-color` not `background`. */
428
+ .vc-stepper-separator[data-state="completed"] {
429
+ border-top-color: var(--vc-color-primary-600) !important;
430
+ }
431
+
432
+ /* ────────────────────────────────────────────────────────────────────────────
433
+ * @vuecs/table — gap-fill helpers for features Bootstrap doesn't natively
434
+ * cover. Bootstrap's theme strings can't carry `[aria-sort=…]` attribute
435
+ * selectors, so sort-indicator state lives in dedicated `vc-table-sort-{asc,desc}`
436
+ * helpers. Same approach as the overlay animation helpers.
437
+ * ──────────────────────────────────────────────────────────────────────── */
438
+
439
+ .vc-table-sort-asc,
440
+ .vc-table-sort-desc {
441
+ color: var(--vc-color-fg);
442
+ }
443
+
444
+ .vc-table-sticky-header thead th {
445
+ position: sticky;
446
+ top: 0;
447
+ background: var(--vc-color-bg);
448
+ z-index: 10;
449
+ }
450
+
451
+ .vc-table-sticky-column {
452
+ background: var(--vc-color-bg);
453
+ z-index: 1;
454
+ }
455
+
456
+ .vc-table-row-focused {
457
+ outline: 2px solid var(--vc-color-primary-500);
458
+ outline-offset: -2px;
459
+ }
460
+
461
+
462
+ /* ────────────────────────────────────────────────────────────────────────────
463
+ * @vuecs/elements Alert — `outline` variant gap-fill. Bootstrap's
464
+ * `.alert-<color>` ships tinted background + border + text in one
465
+ * package; the `outline` variant flattens the background to transparent
466
+ * while keeping the border and color. Used together: e.g.
467
+ * `vc-alert-outline alert-danger`.
468
+ * ──────────────────────────────────────────────────────────────────────── */
469
+
470
+ .vc-alert-outline {
471
+ background-color: transparent !important;
472
+ }
@@ -0,0 +1,3 @@
1
+ import type { Theme } from '@vuecs/core';
2
+ export default function bootstrapTheme(): Theme;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,OAAO,UAAU,cAAc,IAAI,KAAK,CAi+B9C"}