@vuecs/theme-bootstrap 7.0.2 → 7.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.
- package/assets/index.css +38 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +59 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +14 -14
package/assets/index.css
CHANGED
|
@@ -393,6 +393,7 @@
|
|
|
393
393
|
* the theme's `position-fixed top-50 start-50 translate-middle`.
|
|
394
394
|
* ──────────────────────────────────────────────────────────────────────── */
|
|
395
395
|
|
|
396
|
+
.vc-modal-content.vc-modal-xs { max-width: 260px; width: calc(100% - 1rem); }
|
|
396
397
|
.vc-modal-content.modal-sm { max-width: 300px; width: calc(100% - 1rem); }
|
|
397
398
|
.vc-modal-content.modal-lg { max-width: 800px; width: calc(100% - 1rem); }
|
|
398
399
|
.vc-modal-content.modal-xl { max-width: 1140px; width: calc(100% - 1rem); }
|
|
@@ -470,3 +471,40 @@
|
|
|
470
471
|
.vc-alert-outline {
|
|
471
472
|
background-color: transparent !important;
|
|
472
473
|
}
|
|
474
|
+
|
|
475
|
+
/* ────────────────────────────────────────────────────────────────────────────
|
|
476
|
+
* Size: `xs` gap-fill. Bootstrap 5 ships `-sm` / `-lg` size modifiers but
|
|
477
|
+
* nothing below `sm`. The vuecs size axis adds `xs` (one notch under `sm`);
|
|
478
|
+
* these helpers supply it by tightening the relevant BS CSS variables /
|
|
479
|
+
* utilities. Referenced from the `size.xs` theme entries in
|
|
480
|
+
* `themes/bootstrap/src/index.ts`.
|
|
481
|
+
* ──────────────────────────────────────────────────────────────────────── */
|
|
482
|
+
|
|
483
|
+
/* Generic font shrink for text-bearing surfaces (alert, popover, tooltip,
|
|
484
|
+
menus, nav, list, badge, tag) — BS has no font step below `.small`. */
|
|
485
|
+
.vc-fs-xs { font-size: 0.7rem; }
|
|
486
|
+
|
|
487
|
+
/* Button — BS5 buttons resolve sizing from these vars (set by `.btn-sm`). */
|
|
488
|
+
.vc-btn-xs {
|
|
489
|
+
--bs-btn-padding-y: 0.12rem;
|
|
490
|
+
--bs-btn-padding-x: 0.4rem;
|
|
491
|
+
--bs-btn-font-size: 0.7rem;
|
|
492
|
+
--bs-btn-border-radius: 0.2rem;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
/* Pagination — BS5 reads these vars (set by `.pagination-sm`). */
|
|
496
|
+
.vc-pagination-xs {
|
|
497
|
+
--bs-pagination-padding-y: 0.05rem;
|
|
498
|
+
--bs-pagination-padding-x: 0.4rem;
|
|
499
|
+
--bs-pagination-font-size: 0.7rem;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/* Text inputs / selects / textareas — every BS theme slot that takes the
|
|
503
|
+
`xs` size carries the `.form-control` base class (the FormSelect trigger
|
|
504
|
+
included), and `.form-control-sm` sets padding+font directly, so override
|
|
505
|
+
both. Element-qualified (0,2,0) beats `.form-control-sm`. */
|
|
506
|
+
.form-control.vc-form-control-xs {
|
|
507
|
+
padding: 0.1rem 0.4rem;
|
|
508
|
+
font-size: 0.7rem;
|
|
509
|
+
border-radius: 0.2rem;
|
|
510
|
+
}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +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,
|
|
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,CAwmC9C"}
|
package/dist/index.mjs
CHANGED
|
@@ -17,6 +17,10 @@ function bootstrapTheme() {
|
|
|
17
17
|
},
|
|
18
18
|
variants: {
|
|
19
19
|
size: {
|
|
20
|
+
xs: {
|
|
21
|
+
root: "form-control-sm vc-form-control-xs",
|
|
22
|
+
group: "input-group-sm"
|
|
23
|
+
},
|
|
20
24
|
sm: {
|
|
21
25
|
root: "form-control-sm",
|
|
22
26
|
group: "input-group-sm"
|
|
@@ -42,6 +46,10 @@ function bootstrapTheme() {
|
|
|
42
46
|
group: ""
|
|
43
47
|
},
|
|
44
48
|
variants: { size: {
|
|
49
|
+
xs: {
|
|
50
|
+
root: "vc-form-checkbox-xs",
|
|
51
|
+
label: "vc-fs-xs"
|
|
52
|
+
},
|
|
45
53
|
sm: {
|
|
46
54
|
root: "vc-form-checkbox-sm",
|
|
47
55
|
label: "small"
|
|
@@ -63,6 +71,10 @@ function bootstrapTheme() {
|
|
|
63
71
|
group: ""
|
|
64
72
|
},
|
|
65
73
|
variants: { size: {
|
|
74
|
+
xs: {
|
|
75
|
+
root: "vc-form-switch-xs",
|
|
76
|
+
label: "vc-fs-xs"
|
|
77
|
+
},
|
|
66
78
|
sm: {
|
|
67
79
|
root: "vc-form-switch-sm",
|
|
68
80
|
label: "small"
|
|
@@ -90,6 +102,7 @@ function bootstrapTheme() {
|
|
|
90
102
|
},
|
|
91
103
|
variants: {
|
|
92
104
|
size: {
|
|
105
|
+
xs: { trigger: "form-control-sm vc-form-control-xs" },
|
|
93
106
|
sm: { trigger: "form-control-sm" },
|
|
94
107
|
md: { trigger: "" },
|
|
95
108
|
lg: { trigger: "form-control-lg" }
|
|
@@ -126,6 +139,10 @@ function bootstrapTheme() {
|
|
|
126
139
|
group: ""
|
|
127
140
|
},
|
|
128
141
|
variants: { size: {
|
|
142
|
+
xs: {
|
|
143
|
+
root: "vc-form-radio-xs",
|
|
144
|
+
label: "vc-fs-xs"
|
|
145
|
+
},
|
|
129
146
|
sm: {
|
|
130
147
|
root: "vc-form-radio-sm",
|
|
131
148
|
label: "small"
|
|
@@ -158,6 +175,12 @@ function bootstrapTheme() {
|
|
|
158
175
|
},
|
|
159
176
|
variants: {
|
|
160
177
|
size: {
|
|
178
|
+
xs: {
|
|
179
|
+
root: "input-group-sm",
|
|
180
|
+
input: "form-control-sm vc-form-control-xs",
|
|
181
|
+
decrement: "btn-sm vc-btn-xs",
|
|
182
|
+
increment: "btn-sm vc-btn-xs"
|
|
183
|
+
},
|
|
161
184
|
sm: {
|
|
162
185
|
root: "input-group-sm",
|
|
163
186
|
input: "form-control-sm",
|
|
@@ -189,6 +212,10 @@ function bootstrapTheme() {
|
|
|
189
212
|
},
|
|
190
213
|
variants: {
|
|
191
214
|
size: {
|
|
215
|
+
xs: {
|
|
216
|
+
root: "form-control-sm vc-form-control-xs p-1",
|
|
217
|
+
item: "vc-fs-xs"
|
|
218
|
+
},
|
|
192
219
|
sm: {
|
|
193
220
|
root: "form-control-sm p-1",
|
|
194
221
|
item: "small"
|
|
@@ -209,6 +236,7 @@ function bootstrapTheme() {
|
|
|
209
236
|
button: {
|
|
210
237
|
classes: { root: "btn d-inline-flex align-items-center justify-content-center gap-2" },
|
|
211
238
|
variants: { size: {
|
|
239
|
+
xs: { root: "btn-sm vc-btn-xs" },
|
|
212
240
|
sm: { root: "btn-sm" },
|
|
213
241
|
md: { root: "" },
|
|
214
242
|
lg: { root: "btn-lg" }
|
|
@@ -435,6 +463,7 @@ function bootstrapTheme() {
|
|
|
435
463
|
classes: { root: "form-control" },
|
|
436
464
|
variants: {
|
|
437
465
|
size: {
|
|
466
|
+
xs: { root: "form-control-sm vc-form-control-xs" },
|
|
438
467
|
sm: { root: "form-control-sm" },
|
|
439
468
|
md: { root: "" },
|
|
440
469
|
lg: { root: "form-control-lg" }
|
|
@@ -499,6 +528,10 @@ function bootstrapTheme() {
|
|
|
499
528
|
content: "ps-3"
|
|
500
529
|
},
|
|
501
530
|
variants: { size: {
|
|
531
|
+
xs: {
|
|
532
|
+
link: "vc-fs-xs py-0 px-2",
|
|
533
|
+
trigger: "vc-fs-xs py-0 px-2"
|
|
534
|
+
},
|
|
502
535
|
sm: {
|
|
503
536
|
link: "small py-1 px-2",
|
|
504
537
|
trigger: "small py-1 px-2"
|
|
@@ -519,6 +552,7 @@ function bootstrapTheme() {
|
|
|
519
552
|
remove: "focus-ring p-0 d-inline-flex align-items-center justify-content-center bg-transparent border-0 text-white lh-1"
|
|
520
553
|
},
|
|
521
554
|
variants: { size: {
|
|
555
|
+
xs: { root: "vc-fs-xs px-2 py-0" },
|
|
522
556
|
sm: { root: "small px-2 py-1" },
|
|
523
557
|
md: { root: "" },
|
|
524
558
|
lg: { root: "fs-6 px-3 py-2" }
|
|
@@ -531,6 +565,7 @@ function bootstrapTheme() {
|
|
|
531
565
|
item: ""
|
|
532
566
|
},
|
|
533
567
|
variants: { size: {
|
|
568
|
+
xs: { root: "gap-1" },
|
|
534
569
|
sm: { root: "gap-1" },
|
|
535
570
|
md: { root: "" },
|
|
536
571
|
lg: { root: "gap-3" }
|
|
@@ -544,6 +579,7 @@ function bootstrapTheme() {
|
|
|
544
579
|
fallback: "d-inline-flex align-items-center justify-content-center w-100 h-100 fw-medium small lh-1"
|
|
545
580
|
},
|
|
546
581
|
variants: { size: {
|
|
582
|
+
xs: { root: "vc-avatar-xs" },
|
|
547
583
|
sm: { root: "vc-avatar-sm" },
|
|
548
584
|
md: { root: "" },
|
|
549
585
|
lg: { root: "vc-avatar-lg" }
|
|
@@ -615,6 +651,7 @@ function bootstrapTheme() {
|
|
|
615
651
|
close: "btn btn-sm"
|
|
616
652
|
},
|
|
617
653
|
variants: { size: {
|
|
654
|
+
xs: { root: "py-1 vc-fs-xs" },
|
|
618
655
|
sm: { root: "py-2 small" },
|
|
619
656
|
md: { root: "" },
|
|
620
657
|
lg: { root: "py-3 fs-6" }
|
|
@@ -758,6 +795,7 @@ function bootstrapTheme() {
|
|
|
758
795
|
badge: {
|
|
759
796
|
classes: { root: "badge rounded-pill" },
|
|
760
797
|
variants: { size: {
|
|
798
|
+
xs: { root: "vc-fs-xs px-2 py-0" },
|
|
761
799
|
sm: { root: "small px-2 py-1" },
|
|
762
800
|
md: { root: "" },
|
|
763
801
|
lg: { root: "fs-6 px-3 py-2" }
|
|
@@ -1000,6 +1038,7 @@ function bootstrapTheme() {
|
|
|
1000
1038
|
ghost: { link: "border-0 bg-transparent" }
|
|
1001
1039
|
},
|
|
1002
1040
|
size: {
|
|
1041
|
+
xs: { root: "pagination-sm vc-pagination-xs" },
|
|
1003
1042
|
sm: { root: "pagination-sm" },
|
|
1004
1043
|
md: { root: "" },
|
|
1005
1044
|
lg: { root: "pagination-lg" }
|
|
@@ -1025,6 +1064,7 @@ function bootstrapTheme() {
|
|
|
1025
1064
|
back: "btn btn-sm btn-link p-1"
|
|
1026
1065
|
},
|
|
1027
1066
|
variants: { size: {
|
|
1067
|
+
xs: { content: "vc-modal-xs" },
|
|
1028
1068
|
sm: { content: "modal-sm" },
|
|
1029
1069
|
md: { content: "" },
|
|
1030
1070
|
lg: { content: "modal-lg" },
|
|
@@ -1041,6 +1081,7 @@ function bootstrapTheme() {
|
|
|
1041
1081
|
closeIcon: "btn-close position-absolute top-0 end-0 m-1"
|
|
1042
1082
|
},
|
|
1043
1083
|
variants: { size: {
|
|
1084
|
+
xs: { content: "vc-fs-xs p-2" },
|
|
1044
1085
|
sm: { content: "small p-2" },
|
|
1045
1086
|
md: { content: "" },
|
|
1046
1087
|
lg: { content: "fs-6 p-4" }
|
|
@@ -1054,6 +1095,7 @@ function bootstrapTheme() {
|
|
|
1054
1095
|
arrow: "popover-arrow"
|
|
1055
1096
|
},
|
|
1056
1097
|
variants: { size: {
|
|
1098
|
+
xs: { content: "vc-fs-xs p-2" },
|
|
1057
1099
|
sm: { content: "small p-2" },
|
|
1058
1100
|
md: { content: "" },
|
|
1059
1101
|
lg: { content: "fs-6 p-4" }
|
|
@@ -1071,6 +1113,10 @@ function bootstrapTheme() {
|
|
|
1071
1113
|
separator: "flex-grow-1 border-top border-secondary-subtle"
|
|
1072
1114
|
},
|
|
1073
1115
|
variants: { size: {
|
|
1116
|
+
xs: {
|
|
1117
|
+
indicator: "vc-stepper-indicator-xs",
|
|
1118
|
+
title: "vc-fs-xs"
|
|
1119
|
+
},
|
|
1074
1120
|
sm: {
|
|
1075
1121
|
indicator: "vc-stepper-indicator-sm",
|
|
1076
1122
|
title: "small"
|
|
@@ -1245,6 +1291,7 @@ function bootstrapTheme() {
|
|
|
1245
1291
|
arrow: "tooltip-arrow"
|
|
1246
1292
|
},
|
|
1247
1293
|
variants: { size: {
|
|
1294
|
+
xs: { content: "vc-fs-xs px-2 py-0" },
|
|
1248
1295
|
sm: { content: "small px-2 py-1" },
|
|
1249
1296
|
md: { content: "" },
|
|
1250
1297
|
lg: { content: "fs-6 px-3 py-2" }
|
|
@@ -1268,6 +1315,12 @@ function bootstrapTheme() {
|
|
|
1268
1315
|
arrow: ""
|
|
1269
1316
|
},
|
|
1270
1317
|
variants: { size: {
|
|
1318
|
+
xs: {
|
|
1319
|
+
content: "vc-fs-xs p-1",
|
|
1320
|
+
item: "py-0 px-2",
|
|
1321
|
+
subTrigger: "py-0 px-2",
|
|
1322
|
+
subContent: "vc-fs-xs p-1"
|
|
1323
|
+
},
|
|
1271
1324
|
sm: {
|
|
1272
1325
|
content: "small p-1",
|
|
1273
1326
|
item: "py-1 px-2",
|
|
@@ -1300,6 +1353,12 @@ function bootstrapTheme() {
|
|
|
1300
1353
|
subContent: "dropdown-menu show vc-overlay-anim"
|
|
1301
1354
|
},
|
|
1302
1355
|
variants: { size: {
|
|
1356
|
+
xs: {
|
|
1357
|
+
content: "vc-fs-xs p-1",
|
|
1358
|
+
item: "py-0 px-2",
|
|
1359
|
+
subTrigger: "py-0 px-2",
|
|
1360
|
+
subContent: "vc-fs-xs p-1"
|
|
1361
|
+
},
|
|
1303
1362
|
sm: {
|
|
1304
1363
|
content: "small p-1",
|
|
1305
1364
|
item: "py-1 px-2",
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { Theme } from '@vuecs/core';\n\nexport default function bootstrapTheme(): Theme {\n return {\n elements: {\n formGroup: {\n classes: {\n root: 'form-group',\n label: 'form-label',\n validationError: 'form-group-error',\n validationWarning: 'form-group-warning',\n },\n },\n formInput: {\n classes: {\n root: 'form-control',\n group: 'input-group',\n groupAppend: 'input-group-text',\n groupPrepend: 'input-group-text',\n },\n // Bootstrap's `.form-control-{sm,lg}` modifies padding +\n // font-size on top of `.form-control`. There's no `-md`\n // class — md IS the default.\n //\n // Severity uses Bootstrap's native `.is-invalid` /\n // `.is-warning`-style helpers — but Bootstrap 5 only\n // ships `.is-invalid` + `.is-valid`. We map `warning` →\n // `.is-invalid` (close-enough red) and leave a comment;\n // BS doesn't really have a soft-severity slot. Consumers\n // wanting a true amber state can override.\n variants: {\n size: {\n sm: { root: 'form-control-sm', group: 'input-group-sm' },\n md: { root: '' },\n lg: { root: 'form-control-lg', group: 'input-group-lg' },\n },\n severity: {\n error: { root: 'is-invalid' },\n warning: { root: 'is-invalid' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n // Reka renders the checkbox / radio / switch as `<button role=\"…\">`,\n // not native `<input type=\"…\">`. Bootstrap's `.form-check-input`\n // selector targets inputs only, so we don't apply it. Instead we\n // layer Bootstrap shadow + bg utilities on top of the `vc-form-*`\n // structural defaults — but deliberately skip border utilities:\n // bootstrap's `.border-*` utilities carry `!important` and would\n // beat the structural CSS's `data-state=\"checked\"` border-color\n // rule, making checked / unchecked visually identical. Letting\n // structural CSS own border-color preserves the checked-state\n // visual diff (neutral border → primary border on check).\n formCheckbox: {\n classes: {\n root: 'bg-white shadow-sm',\n indicator: 'text-white',\n label: 'form-check-label',\n group: '',\n },\n // Bootstrap doesn't ship sm/lg form-check sizes, so fall\n // back to the structural CSS `vc-form-checkbox-{sm,lg}`\n // helpers (defined in @vuecs/forms styles).\n variants: {\n size: {\n sm: { root: 'vc-form-checkbox-sm', label: 'small' },\n md: { root: '' },\n lg: { root: 'vc-form-checkbox-lg', label: 'fs-5' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formCheckboxGroup: { classes: { root: 'd-flex flex-column gap-2' } },\n formSwitch: {\n classes: {\n root: 'shadow-sm',\n thumb: 'bg-white shadow-sm',\n label: 'form-check-label',\n group: '',\n },\n variants: {\n size: {\n sm: { root: 'vc-form-switch-sm', label: 'small' },\n md: { root: '' },\n lg: { root: 'vc-form-switch-lg', label: 'fs-5' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formSelect: {\n classes: {\n // Bootstrap's `.form-select` ships the chevron via background-image —\n // it works for native <select> but not for our compound trigger.\n // We use `.form-control` for the input chrome plus `d-flex` to lay\n // out the value and our own chevron <span> (rendered by SelectIcon).\n trigger: 'form-control d-flex align-items-center justify-content-between gap-2 text-start',\n value: 'text-truncate',\n icon: 'text-muted',\n content: 'dropdown-menu show vc-overlay-anim',\n viewport: '',\n item: 'dropdown-item ps-4 position-relative',\n itemIndicator: 'position-absolute start-0 ms-2',\n group: '',\n groupLabel: 'dropdown-header',\n separator: 'dropdown-divider',\n },\n variants: {\n size: {\n sm: { trigger: 'form-control-sm' },\n md: { trigger: '' },\n lg: { trigger: 'form-control-lg' },\n },\n severity: {\n error: { trigger: 'is-invalid' },\n warning: { trigger: 'is-invalid' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formSelectSearch: {\n classes: {\n root: 'position-relative',\n input: 'form-control',\n // .show flips Bootstrap's dropdown-menu visibility. The component\n // toggles its own v-show, so .show is redundant for visibility,\n // but ensures the menu picks up `display: block` if a consumer\n // upgrades to a custom toggle that relies on the bootstrap class.\n content: 'dropdown-menu show w-100 mt-1 overflow-auto',\n item: 'dropdown-item d-flex flex-column gap-1',\n // `itemActive` default is already `'active'` — Bootstrap's\n // dropdown active class — so we inherit it.\n itemCurrent: 'bg-secondary-subtle',\n itemDescription: 'small text-muted',\n selected: 'd-flex flex-wrap gap-1 mt-2',\n selectedItem: 'badge bg-secondary-subtle text-body border d-inline-flex align-items-center gap-1',\n selectedItemRemove: 'fw-bold',\n },\n variants: {\n severity: {\n error: { input: 'is-invalid' },\n warning: { input: 'is-invalid' },\n },\n },\n },\n formRadio: {\n classes: {\n root: 'bg-white shadow-sm',\n indicator: 'bg-primary',\n label: 'form-check-label',\n group: '',\n },\n variants: {\n size: {\n sm: { root: 'vc-form-radio-sm', label: 'small' },\n md: { root: '' },\n lg: { root: 'vc-form-radio-lg', label: 'fs-5' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formRadioGroup: { classes: { root: 'd-flex flex-column gap-2' } },\n // PinInputInput DOES render a real <input>, so `.form-control`\n // would technically apply — but it sets `width: 100%` and\n // collapses every cell into the container's full width. Use\n // bootstrap utilities that mirror form-control's look (border\n // + rounded + shadow + bg) without the width hint; structural\n // CSS keeps the per-cell 2.5rem sizing.\n formPin: {\n classes: {\n root: 'd-inline-flex align-items-center gap-2',\n input: 'border border-secondary-subtle bg-white shadow-sm text-center fw-semibold',\n },\n },\n // Reka Slider renders <span> elements, not <input type=\"range\">.\n // Bootstrap's `.form-range` selector is `input[type=range]` so\n // it never applies — drop it. Layer bootstrap utilities for the\n // visual: muted track, primary range fill, white thumb with a\n // bootstrap-blue ring.\n formSlider: {\n classes: {\n root: '',\n track: 'bg-secondary-subtle rounded-pill',\n range: 'bg-primary rounded-pill',\n thumb: 'rounded-circle bg-white border border-2 border-primary shadow-sm',\n },\n },\n formNumber: {\n classes: {\n root: 'input-group',\n input: 'form-control text-center',\n decrement: 'btn btn-outline-secondary',\n increment: 'btn btn-outline-secondary',\n },\n variants: {\n size: {\n sm: {\n root: 'input-group-sm',\n input: 'form-control-sm',\n decrement: 'btn-sm',\n increment: 'btn-sm',\n },\n md: { root: '' },\n lg: {\n root: 'input-group-lg',\n input: 'form-control-lg',\n decrement: 'btn-lg',\n increment: 'btn-lg',\n },\n },\n severity: {\n error: { input: 'is-invalid' },\n warning: { input: 'is-invalid' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formTags: {\n classes: {\n root: 'form-control d-flex flex-wrap align-items-center gap-2 p-2',\n item: 'badge rounded-pill text-bg-primary d-inline-flex align-items-center gap-1',\n itemText: '',\n // Plain styled button — `.btn-close` was wrong here: it\n // renders an × via background-image SVG, which combined\n // with the slot's literal \"×\" text produced a doubled\n // delete glyph in every chip.\n itemDelete: 'd-inline-flex align-items-center justify-content-center bg-transparent border-0 text-white p-0 ms-1 lh-1',\n input: 'form-control border-0 flex-grow-1 p-0 shadow-none',\n },\n variants: {\n size: {\n sm: { root: 'form-control-sm p-1', item: 'small' },\n md: { root: '' },\n lg: { root: 'form-control-lg p-3', item: 'fs-6' },\n },\n severity: {\n error: { root: 'is-invalid' },\n warning: { root: 'is-invalid' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n button: {\n // `.btn` is `display: inline-block` by default — gives the\n // leading icon / spinner no gap from the label. Force\n // inline-flex so Bootstrap's `.gap-2` utility takes effect\n // (only affects layout when there are multiple children;\n // single-label buttons render identically).\n classes: { root: 'btn d-inline-flex align-items-center justify-content-center gap-2' },\n variants: {\n size: {\n sm: { root: 'btn-sm' },\n md: { root: '' },\n lg: { root: 'btn-lg' },\n },\n },\n // Map each (variant, color) pair onto a Bootstrap button\n // class. `outline` uses Bootstrap's own `btn-outline-*`\n // family; `soft` uses Bootstrap 5.3+'s `*-subtle` /\n // `*-emphasis` token pair (tint bg + dark colored text);\n // `ghost` strips the link underline so it reads as a\n // borderless button rather than a hyperlink.\n compoundVariants: [\n // solid\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'btn-primary' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'btn-secondary' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'btn-success' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'btn-warning' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'btn-danger' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'btn-info' } },\n // outline\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'btn-outline-primary' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'btn-outline-secondary' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'btn-outline-success' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'btn-outline-warning' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'btn-outline-danger' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'btn-outline-info' } },\n // soft — Bootstrap 5.3+'s subtle bg + emphasis text.\n // Both tokens are bridged onto design-system shades by\n // theme-bootstrap/assets/index.css.\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-subtle text-primary-emphasis border-0' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-secondary-subtle text-secondary-emphasis border-0' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-subtle text-success-emphasis border-0' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-subtle text-warning-emphasis border-0' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-danger-subtle text-danger-emphasis border-0' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-subtle text-info-emphasis border-0' } },\n // ghost — borderless / no underline, colored text\n { variants: { variant: 'ghost', color: 'primary' }, class: { root: 'btn-link text-decoration-none' } },\n { variants: { variant: 'ghost', color: 'neutral' }, class: { root: 'btn-link text-decoration-none text-secondary' } },\n { variants: { variant: 'ghost', color: 'success' }, class: { root: 'btn-link text-decoration-none text-success' } },\n { variants: { variant: 'ghost', color: 'warning' }, class: { root: 'btn-link text-decoration-none text-warning' } },\n { variants: { variant: 'ghost', color: 'error' }, class: { root: 'btn-link text-decoration-none text-danger' } },\n { variants: { variant: 'ghost', color: 'info' }, class: { root: 'btn-link text-decoration-none text-info' } },\n // link — underlined hyperlink-style, color via text-*\n { variants: { variant: 'link', color: 'primary' }, class: { root: 'btn-link' } },\n { variants: { variant: 'link', color: 'neutral' }, class: { root: 'btn-link text-secondary' } },\n { variants: { variant: 'link', color: 'success' }, class: { root: 'btn-link text-success' } },\n { variants: { variant: 'link', color: 'warning' }, class: { root: 'btn-link text-warning' } },\n { variants: { variant: 'link', color: 'error' }, class: { root: 'btn-link text-danger' } },\n { variants: { variant: 'link', color: 'info' }, class: { root: 'btn-link text-info' } },\n ],\n defaultVariants: {\n variant: 'solid', \n color: 'primary', \n size: 'md', \n },\n },\n formTextarea: {\n classes: { root: 'form-control' },\n variants: {\n size: {\n sm: { root: 'form-control-sm' },\n md: { root: '' },\n lg: { root: 'form-control-lg' },\n },\n severity: {\n error: { root: 'is-invalid' },\n warning: { root: 'is-invalid' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n // Severity-aware per-message colour. Bootstrap's `.text-danger`\n // / `.text-warning` / `.text-success` utilities are `!important`,\n // so a single class wins cleanly — no need for a default\n // colour on `item` (messages stay neutral when no severity).\n validationGroup: {\n classes: { item: 'small' },\n variants: {\n severity: {\n error: { item: 'text-danger' },\n warning: { item: 'text-warning' },\n success: { item: 'text-success' },\n },\n },\n },\n list: {\n classes: {\n // `position-relative` anchors `<VCListLoading :overlay>`'s\n // absolute positioning to the list container.\n root: 'd-flex flex-column gap-1 position-relative',\n header: 'd-flex align-items-center',\n footer: 'd-flex align-items-center',\n },\n variants: {\n density: {\n compact: { root: 'gap-0' },\n normal: { root: '' },\n spacious: { root: 'gap-3' },\n },\n },\n defaultVariants: { density: 'normal' },\n },\n listBody: { classes: { root: 'list-unstyled m-0' } },\n listItem: {\n classes: {\n root: 'd-flex flex-row align-items-center gap-1',\n text: 'd-inline-flex flex-column flex-grow-1 text-truncate',\n actions: 'd-inline-flex align-items-center gap-1',\n },\n variants: {\n density: {\n compact: { root: 'py-0' },\n normal: { root: 'py-1' },\n spacious: { root: 'py-3' },\n },\n disabled: { true: { root: 'opacity-50 pe-none' } },\n active: { true: { root: 'bg-primary-subtle text-primary-emphasis' } },\n selected: { true: { root: 'bg-body-secondary' } },\n },\n defaultVariants: { density: 'normal' },\n },\n listLoading: {\n classes: { root: 'py-2 text-center text-muted small' },\n // Translucent veil (`bg-body bg-opacity-75`) so underlying\n // rows stay partly visible during refresh — matches the\n // tailwind theme's `bg-bg/75 backdrop-blur-sm`.\n variants: { overlay: { true: { root: 'position-absolute top-0 start-0 end-0 bottom-0 d-flex align-items-center justify-content-center bg-body bg-opacity-75' } } },\n },\n listEmpty: { classes: { root: 'alert alert-warning small p-2' } },\n navigation: {\n classes: {\n group: 'nav-items',\n link: 'nav-link',\n // The structural `.vc-nav-trigger` already resets the\n // native <button> chrome; `.nav-link` layers Bootstrap's\n // link styling on top.\n trigger: 'nav-link',\n content: 'ps-3',\n },\n variants: {\n size: {\n sm: { link: 'small py-1 px-2', trigger: 'small py-1 px-2' },\n md: { link: '' },\n lg: { link: 'fs-6 py-3 px-4', trigger: 'fs-6 py-3 px-4' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n // Reka encodes orientation as `data-orientation`; Bootstrap has\n // `<hr>` styling for horizontal but no built-in vertical rule —\n // the structural CSS does both. We just remove the default\n // margins so consumers control spacing via parent flex gaps.\n separator: { classes: { root: 'm-0' } },\n tag: {\n classes: {\n // Use `text-bg-primary` so Bootstrap's contrast pair handles\n // light/dark text-on-bg automatically. `rounded-pill` matches\n // the chip aesthetic of Bootstrap badges.\n root: 'badge rounded-pill text-bg-primary d-inline-flex align-items-center gap-1',\n icon: 'd-inline-flex align-items-center',\n // Deliberately NOT `.btn`: `.btn` sets an absolute\n // `font-size: 1rem` which overrides the badge's\n // inherited `0.75em`, stretching the line-box and\n // making removable tags taller than non-removable\n // ones. Plain utilities + `.focus-ring` keep\n // keyboard-focus styling without leaking the .btn\n // sizing into the chip.\n remove: 'focus-ring p-0 d-inline-flex align-items-center justify-content-center bg-transparent border-0 text-white lh-1',\n },\n variants: {\n size: {\n sm: { root: 'small px-2 py-1' },\n md: { root: '' },\n lg: { root: 'fs-6 px-3 py-2' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n tags: {\n classes: {\n root: 'd-flex flex-wrap align-items-center gap-2',\n item: '',\n },\n variants: {\n size: {\n sm: { root: 'gap-1' },\n md: { root: '' },\n lg: { root: 'gap-3' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n avatar: {\n classes: {\n root: 'd-inline-flex align-items-center justify-content-center overflow-hidden rounded-circle bg-secondary-subtle text-secondary-emphasis',\n image: 'w-100 h-100 object-fit-cover',\n fallback: 'd-inline-flex align-items-center justify-content-center w-100 h-100 fw-medium small lh-1',\n },\n // Bootstrap doesn't ship h-8/h-10/h-14 utilities. `md` is\n // the no-op default — the structural `.vc-avatar` rule\n // already sets the medium size. `vc-avatar-{sm,lg}` are\n // shipped in @vuecs/elements/assets/avatar.css.\n variants: {\n size: {\n sm: { root: 'vc-avatar-sm' },\n md: { root: '' },\n lg: { root: 'vc-avatar-lg' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n aspectRatio: { classes: { root: 'd-block w-100' } },\n // VCGravatar wraps VCAvatar — sizing comes from the structural\n // `vc-gravatar` class (5rem default, ships with @vuecs/gravatar).\n // Theme adds bootstrap aesthetics; override visual size via\n // per-instance `themeClass`.\n gravatar: { classes: { root: 'rounded-circle overflow-hidden d-inline-block' } },\n card: {\n // Bootstrap `.card` brings the border + radius + bg-body.\n // Theme bridge (`assets/index.css`) maps `--bs-card-*` onto\n // `--vc-color-*` so runtime palette switches propagate.\n classes: { root: 'card' },\n variants: {\n variant: {\n // Bootstrap's default `.card` is already the outline look.\n outline: { root: '' },\n // Soft = subtle muted bg; we drop the border for visual lift.\n soft: { root: 'bg-body-tertiary border-0' },\n // Elevated = drop a shadow on the default `.card`.\n elevated: { root: 'shadow' },\n },\n interactive: { true: { root: 'shadow-sm' } },\n },\n defaultVariants: { variant: 'outline' },\n },\n cardHeader: {\n classes: { root: 'card-header' },\n variants: {\n padding: {\n compact: { root: 'py-2 px-3' },\n normal: { root: '' },\n spacious: { root: 'py-3 px-4' },\n },\n },\n defaultVariants: { padding: 'normal' },\n },\n cardTitle: { classes: { root: 'card-title mb-0' } },\n cardDescription: { classes: { root: 'card-subtitle text-body-secondary mb-0' } },\n cardBody: {\n classes: { root: 'card-body' },\n variants: {\n padding: {\n compact: { root: 'p-2' },\n normal: { root: '' },\n spacious: { root: 'p-4' },\n },\n },\n defaultVariants: { padding: 'normal' },\n },\n cardFooter: {\n classes: { root: 'card-footer d-flex justify-content-end gap-2' },\n variants: {\n padding: {\n compact: { root: 'py-2 px-3' },\n normal: { root: '' },\n spacious: { root: 'py-3 px-4' },\n },\n },\n defaultVariants: { padding: 'normal' },\n },\n collapse: { classes: { root: '' } },\n collapseTrigger: {\n classes: {\n root: 'btn btn-link p-0 d-inline-flex align-items-center gap-2 text-decoration-none',\n chevron: 'small',\n },\n variants: {\n chevron: {\n auto: { chevron: 'd-inline-flex' },\n none: { chevron: 'd-none' },\n },\n },\n defaultVariants: { chevron: 'auto' },\n },\n collapseContent: { classes: { root: 'vc-collapse-anim' } },\n alert: {\n // Bootstrap's `.alert` ships padding + border-radius +\n // border-width baseline; per-variant color comes from\n // `.alert-<color>`. Outline variant has no native BS class\n // — bridge CSS adds `.vc-alert.vc-alert-outline.alert-<color>`\n // rules that flip background to transparent.\n classes: {\n root: 'alert d-flex align-items-start gap-3 mb-0 position-relative pe-5',\n icon: 'flex-shrink-0 d-inline-flex align-items-center justify-content-center',\n content: 'flex-grow-1 min-w-0 d-flex flex-column gap-1',\n closeIcon: 'btn-close position-absolute top-0 end-0 m-2',\n close: 'btn btn-sm',\n },\n variants: {\n // Size variants only adjust vertical padding + font-size.\n // Right-padding (reserved for the absolute corner-close\n // button) comes from the base `.pe-5` class; overriding\n // with `px-*` here would let text overlap the close icon\n // because BS `.px-*` utilities clobber both sides.\n size: {\n sm: { root: 'py-2 small' },\n md: { root: '' },\n lg: { root: 'py-3 fs-6' },\n },\n },\n compoundVariants: [\n // solid — BS `.alert-<color>` uses the subtle/tinted style\n // which matches our `soft` variant; for `solid` use the\n // `text-bg-<color>` contrast-aware utility.\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'text-bg-primary' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'text-bg-secondary' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'text-bg-success' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'text-bg-warning' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'text-bg-danger' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'text-bg-info' } },\n // soft → BS's native `.alert-<color>`\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'alert-primary' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'alert-secondary' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'alert-success' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'alert-warning' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'alert-danger' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'alert-info' } },\n // outline — bridge CSS picks these up\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'vc-alert-outline alert-primary' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'vc-alert-outline alert-secondary' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'vc-alert-outline alert-success' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'vc-alert-outline alert-warning' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'vc-alert-outline alert-danger' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'vc-alert-outline alert-info' } },\n ],\n defaultVariants: {\n variant: 'soft', \n color: 'neutral', \n size: 'md', \n },\n },\n alertTitle: { classes: { root: 'fw-semibold mb-1' } },\n alertDescription: { classes: { root: 'mb-0' } },\n badge: {\n classes: { root: 'badge rounded-pill' },\n variants: {\n size: {\n sm: { root: 'small px-2 py-1' },\n md: { root: '' },\n lg: { root: 'fs-6 px-3 py-2' },\n },\n },\n // Map (variant, color) onto Bootstrap's `text-bg-*` (solid),\n // `*-subtle` + `*-emphasis` (soft), and `border *-emphasis`\n // (outline) families. Same structure as the button matrix\n // for visual family consistency.\n compoundVariants: [\n // solid — text-bg-* picks the contrast pair\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'text-bg-primary' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'text-bg-secondary' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'text-bg-success' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'text-bg-warning' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'text-bg-danger' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'text-bg-info' } },\n // soft — *-subtle bg + *-emphasis text\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-subtle text-primary-emphasis' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-secondary-subtle text-secondary-emphasis' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-subtle text-success-emphasis' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-subtle text-warning-emphasis' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-danger-subtle text-danger-emphasis' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-subtle text-info-emphasis' } },\n // outline — border + *-emphasis text on transparent\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'border border-primary text-primary-emphasis' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'border border-secondary text-secondary-emphasis' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'border border-success text-success-emphasis' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'border border-warning text-warning-emphasis' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'border border-danger text-danger-emphasis' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'border border-info text-info-emphasis' } },\n ],\n defaultVariants: {\n variant: 'soft',\n color: 'neutral',\n size: 'md',\n },\n },\n // Bootstrap ships `.table` family natively. Compose those\n // utility classes plus the design-token bridge for\n // dark-mode + runtime palette propagation.\n table: {\n classes: {\n root: 'table align-middle mb-0',\n scrollContainer: 'table-responsive border rounded',\n },\n variants: {\n density: {\n compact: { root: 'table-sm' },\n normal: { root: '' },\n spacious: { root: '' },\n },\n striped: { true: { root: 'table-striped' } },\n bordered: { true: { root: 'table-bordered' } },\n hover: { true: { root: 'table-hover' } },\n stickyHeader: { true: { root: 'vc-table-sticky-header' } },\n },\n defaultVariants: { density: 'normal' },\n },\n tableHeader: { classes: { root: 'text-uppercase small text-body-secondary' } },\n tableBody: { classes: { root: '' } },\n tableFooter: { classes: { root: 'fw-medium' } },\n tableRow: {\n variants: {\n disabled: { true: { root: 'opacity-50 pe-none' } },\n selected: { true: { root: 'table-active' } },\n focused: { true: { root: 'vc-table-row-focused' } },\n rowVariant: {\n success: { root: 'table-success' },\n warning: { root: 'table-warning' },\n error: { root: 'table-danger' },\n info: { root: 'table-info' },\n neutral: { root: 'table-secondary' },\n primary: { root: 'table-primary' },\n },\n },\n },\n tableCell: {\n variants: {\n align: {\n left: { root: 'text-start' },\n center: { root: 'text-center' },\n right: { root: 'text-end' },\n },\n stickyColumn: { true: { root: 'vc-table-sticky-column' } },\n cellVariant: {\n success: { root: 'text-success' },\n warning: { root: 'text-warning' },\n error: { root: 'text-danger' },\n info: { root: 'text-info' },\n neutral: { root: 'text-body-secondary' },\n primary: { root: 'text-primary' },\n },\n },\n },\n tableHeadCell: {\n classes: { sortIcon: 'ms-1 small lh-1' },\n variants: {\n align: {\n left: { root: 'text-start' },\n center: { root: 'text-center' },\n right: { root: 'text-end' },\n },\n stickyColumn: { true: { root: 'vc-table-sticky-column' } },\n sorted: {\n asc: { root: 'vc-table-sort-asc' },\n desc: { root: 'vc-table-sort-desc' },\n none: { root: '' },\n },\n },\n },\n tableEmpty: {\n classes: { root: '' },\n variants: {\n filtered: {\n true: { root: 'text-center text-body-secondary fst-italic py-4' },\n false: { root: 'text-center text-body-secondary py-4' },\n },\n },\n },\n tableLoading: {\n classes: {\n root: 'text-center text-body-secondary py-4',\n overlay: 'bg-body bg-opacity-75 text-body-secondary',\n },\n },\n tableSortIndicators: {\n classes: {\n root: 'd-flex flex-wrap align-items-center gap-2 bg-body-tertiary border rounded px-3 py-2 small',\n label: 'fw-semibold text-body-secondary me-1',\n empty: 'fst-italic text-body-secondary',\n // The chip is now a non-interactive wrapper. We\n // restyle two real `<button>`s inside (toggle +\n // remove), each borderless to inherit the chip\n // pill look as one unit.\n chip: 'd-inline-flex align-items-center border rounded-pill bg-body',\n chipToggle: 'btn btn-sm d-inline-flex align-items-center gap-2 border-0 rounded-start-pill rounded-end-0',\n chipPosition: 'fw-bold text-body-secondary',\n chipLabel: '',\n chipArrow: 'fw-bold text-primary',\n chipRemove: 'btn btn-sm d-inline-flex align-items-center justify-content-center border-0 rounded-end-pill rounded-start-0 px-2 text-body-secondary',\n // addWrapper omitted — Bootstrap styles the\n // <select> directly via `.form-select`.\n add: 'form-select form-select-sm rounded-pill w-auto',\n clear: 'btn btn-sm btn-link text-body-secondary text-decoration-none ms-auto',\n },\n },\n pagination: {\n classes: {\n root: 'd-flex justify-content-center pagination',\n // Apply Bootstrap's `page-item` / `page-link` so Bootstrap\n // CSS picks up the joined-button styling (border, hover,\n // disabled state, focus ring). Active state uses\n // Bootstrap's own `.active.page-link` rules; we merge\n // `active` into linkActive below.\n item: 'page-item',\n // `d-inline-flex align-items-center gap-1` layers on top of\n // Bootstrap's `.page-link` so the icon + label pair (e.g.\n // <chevron> \"Previous\") sits on a single baseline with\n // breathing room between them. `.page-link` is `display: block`\n // by default, which would otherwise stack them.\n link: 'page-link d-inline-flex align-items-center gap-1',\n // `linkActive` default is already `'active'` — Bootstrap's\n // pagination active class — so we inherit it.\n // Wrapper composes `link + ellipsis` onto PaginationEllipsis\n // so it inherits the page-link box. Disable interactivity.\n ellipsis: 'pe-none text-muted',\n },\n variants: {\n // Bootstrap pagination is a single visual style. We\n // expose the same variant catalog as the Tailwind theme\n // for API parity; soft / ghost are minor tweaks rather\n // than a different visual treatment.\n variant: {\n outline: { link: '' },\n soft: { link: 'border-0' },\n ghost: { link: 'border-0 bg-transparent' },\n },\n size: {\n sm: { root: 'pagination-sm' },\n md: { root: '' },\n lg: { root: 'pagination-lg' },\n },\n },\n defaultVariants: { variant: 'outline', size: 'md' },\n },\n // Reka primitives drive open/close via `data-state=\"open|closed\"`,\n // not Bootstrap's `.show` class. The mappings below give consumers\n // Bootstrap's chrome (border, padding, typography) plus enter+exit\n // animations via vuecs's dual-state helpers from @vuecs/design's\n // animations.css (`vc-overlay-anim`, `vc-overlay-fade-anim`,\n // `vc-tooltip-anim`). These helpers package the per-state gating\n // into a single class because BS5 theme strings can't carry the\n // `data-[state=]:` attribute-selector prefix that theme-tailwind\n // uses. Reka's Presence (already wrapping every *Content\n // primitive) keeps the element mounted until the exit animation\n // finishes.\n modal: {\n classes: {\n overlay: 'modal-backdrop fade show vc-overlay-fade-anim',\n content: 'modal-content position-fixed top-50 start-50 translate-middle shadow vc-overlay-anim',\n header: 'modal-header',\n title: 'modal-title',\n description: 'text-muted small',\n body: 'modal-body',\n footer: 'modal-footer',\n trigger: '',\n // Generic close trigger — neutral baseline so consumer\n // classes (`<VCModalClose class=\"...\">`) compose cleanly.\n // The corner-X pattern lives in `closeIcon` below.\n close: '',\n closeIcon: 'btn-close position-absolute top-0 end-0 m-2',\n back: 'btn btn-sm btn-link p-1',\n },\n // Bootstrap maps modal sizes via `.modal-sm` / `.modal-lg` /\n // `.modal-xl` on the .modal element. Our content slot stands\n // in for `.modal-dialog` so we apply the size class there.\n variants: {\n size: {\n sm: { content: 'modal-sm' },\n md: { content: '' },\n lg: { content: 'modal-lg' },\n xl: { content: 'modal-xl' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n popover: {\n classes: {\n trigger: '',\n content: 'popover bs-popover-auto show vc-overlay-anim',\n arrow: 'popover-arrow',\n // Generic close trigger — neutral baseline so consumer\n // classes compose cleanly. Corner-X lives in `closeIcon`.\n close: '',\n closeIcon: 'btn-close position-absolute top-0 end-0 m-1',\n },\n // Bootstrap doesn't ship size variants for popovers — adjust\n // font-size + padding via utility classes; the popover\n // shrinks/grows to content, so explicit width tuning is left\n // to consumers via per-instance themeClass.\n variants: {\n size: {\n sm: { content: 'small p-2' },\n md: { content: '' },\n lg: { content: 'fs-6 p-4' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n hoverCard: {\n classes: {\n trigger: '',\n content: 'popover bs-popover-auto show vc-overlay-anim',\n arrow: 'popover-arrow',\n },\n variants: {\n size: {\n sm: { content: 'small p-2' },\n md: { content: '' },\n lg: { content: 'fs-6 p-4' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n // Bootstrap doesn't ship a stepper component — we wire the rough\n // shape with utility classes (gap-* + rounded-circle for the\n // indicator). data-state=\"completed\" / \"active\" drives bg-* via\n // attribute selectors; without those the indicator stays muted.\n stepper: {\n classes: {\n root: 'd-flex align-items-center gap-2',\n item: 'd-flex align-items-center gap-2 flex-grow-1',\n trigger: 'btn p-0 border-0 bg-transparent d-inline-flex align-items-center justify-content-center',\n indicator: 'rounded-circle border border-secondary-subtle bg-light text-muted d-inline-flex align-items-center justify-content-center fw-semibold',\n title: 'small fw-medium',\n description: 'small text-muted',\n separator: 'flex-grow-1 border-top border-secondary-subtle',\n },\n // Bootstrap doesn't ship circular size utilities; use the\n // structural `vc-stepper-indicator-{sm,lg}` helpers added to\n // @vuecs/navigation's stepper structural CSS.\n variants: {\n size: {\n sm: { indicator: 'vc-stepper-indicator-sm', title: 'small' },\n md: { indicator: '' },\n lg: { indicator: 'vc-stepper-indicator-lg', title: 'fs-6' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n // Bootstrap doesn't ship a Toast viewport / queue idiom (the\n // toasts CSS exists but `.toast-container` is a static\n // layout). We compose `.toast-container` + position helpers\n // for the viewport, and `.toast.show` for each entry so\n // Bootstrap's per-color contrast (`text-bg-*`) propagates.\n // Slide-in/out animations use the `vc-toast-anim` dual-state\n // helper in the bridge CSS (BS theme strings can't carry\n // `data-[state=]:` attribute selectors).\n toastViewport: {\n classes: { root: 'toast-container position-fixed d-flex flex-column p-3 list-unstyled m-0' },\n variants: {\n position: {\n 'top-left': { root: 'top-0 start-0' },\n 'top-right': { root: 'top-0 end-0' },\n 'top-center': { root: 'top-0 start-50 translate-middle-x' },\n 'bottom-left': { root: 'bottom-0 start-0 flex-column-reverse' },\n 'bottom-right': { root: 'bottom-0 end-0 flex-column-reverse' },\n 'bottom-center': { root: 'bottom-0 start-50 translate-middle-x flex-column-reverse' },\n },\n },\n defaultVariants: { position: 'top-right' },\n },\n toast: {\n classes: {\n root: 'toast show vc-toast-anim d-flex align-items-start gap-3 position-relative pe-5',\n body: 'flex-grow-1 min-w-0',\n close: 'btn-close-white btn btn-sm align-self-start',\n closeIcon: 'btn-close position-absolute top-0 end-0 m-2',\n },\n compoundVariants: [\n // solid via Bootstrap's contrast-aware `text-bg-*`\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'text-bg-primary' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'text-bg-secondary' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'text-bg-success' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'text-bg-warning' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'text-bg-danger' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'text-bg-info' } },\n // soft — subtle bg + emphasis text\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-subtle text-primary-emphasis border border-primary-subtle' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-body-tertiary text-body border' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-subtle text-success-emphasis border border-success-subtle' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-subtle text-warning-emphasis border border-warning-subtle' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-danger-subtle text-danger-emphasis border border-danger-subtle' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-subtle text-info-emphasis border border-info-subtle' } },\n // outline — border + emphasis text on transparent\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'border border-primary text-primary-emphasis bg-body' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'border text-body bg-body' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'border border-success text-success-emphasis bg-body' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'border border-warning text-warning-emphasis bg-body' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'border border-danger text-danger-emphasis bg-body' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'border border-info text-info-emphasis bg-body' } },\n ],\n defaultVariants: { variant: 'soft', color: 'neutral' },\n },\n toastTitle: { classes: { root: 'toast-header bg-transparent border-0 p-0 mb-1 fw-semibold' } },\n toastDescription: { classes: { root: 'toast-body p-0' } },\n toastAction: { classes: { root: 'btn btn-sm btn-outline-secondary flex-shrink-0' } },\n tooltip: {\n classes: {\n trigger: '',\n content: 'tooltip bs-tooltip-auto show tooltip-inner vc-tooltip-anim',\n arrow: 'tooltip-arrow',\n },\n variants: {\n size: {\n sm: { content: 'small px-2 py-1' },\n md: { content: '' },\n lg: { content: 'fs-6 px-3 py-2' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n dropdownMenu: {\n classes: {\n trigger: '',\n content: 'dropdown-menu show vc-overlay-anim',\n item: 'dropdown-item',\n checkboxItem: 'dropdown-item ps-4',\n radioItem: 'dropdown-item ps-4',\n radioGroup: '',\n itemIndicator: 'position-absolute start-0 ms-2',\n label: 'dropdown-header',\n separator: 'dropdown-divider',\n group: '',\n subTrigger: 'dropdown-item dropdown-toggle',\n subContent: 'dropdown-menu show vc-overlay-anim',\n arrow: '',\n },\n // Bootstrap doesn't ship dropdown size variants. Layer\n // utility classes for spacing/font-size; the structural\n // dropdown chrome stays untouched.\n variants: {\n size: {\n sm: {\n content: 'small p-1', \n item: 'py-1 px-2', \n subTrigger: 'py-1 px-2', \n subContent: 'small p-1', \n },\n md: { content: '' },\n lg: {\n content: 'fs-6', \n item: 'py-2 px-3', \n subTrigger: 'py-2 px-3', \n subContent: 'fs-6', \n },\n },\n },\n defaultVariants: { size: 'md' },\n },\n contextMenu: {\n classes: {\n trigger: '',\n content: 'dropdown-menu show vc-overlay-anim',\n item: 'dropdown-item',\n checkboxItem: 'dropdown-item ps-4',\n radioItem: 'dropdown-item ps-4',\n radioGroup: '',\n itemIndicator: 'position-absolute start-0 ms-2',\n label: 'dropdown-header',\n separator: 'dropdown-divider',\n group: '',\n subTrigger: 'dropdown-item dropdown-toggle',\n subContent: 'dropdown-menu show vc-overlay-anim',\n },\n variants: {\n size: {\n sm: {\n content: 'small p-1', \n item: 'py-1 px-2', \n subTrigger: 'py-1 px-2', \n subContent: 'small p-1', \n },\n md: { content: '' },\n lg: {\n content: 'fs-6', \n item: 'py-2 px-3', \n subTrigger: 'py-2 px-3', \n subContent: 'fs-6', \n },\n },\n },\n defaultVariants: { size: 'md' },\n },\n placeholder: {\n // Bootstrap 5 ships native `.placeholder`,\n // `.placeholder-wave`, and `.placeholder-glow` —\n // map onto those directly.\n classes: {\n root: 'placeholder',\n wave: 'placeholder-wave',\n glow: 'placeholder-glow',\n },\n },\n tablePlaceholder: {\n classes: {\n root: 'table table-borderless mb-0',\n header: 'border-bottom',\n body: '',\n footer: 'border-top',\n row: '',\n cell: '',\n },\n },\n cardPlaceholder: {\n classes: {\n root: 'card',\n image: 'ratio ratio-16x9',\n header: 'card-header',\n body: 'card-body',\n footer: 'card-footer d-flex gap-2',\n },\n },\n placeholderWrapper: { classes: { root: 'position-relative' } },\n tableRowExpansion: {\n classes: {\n root: 'bg-body-tertiary',\n cell: 'p-0',\n panel: 'overflow-hidden',\n panelInner: 'px-3 py-2',\n },\n },\n tableExpandTrigger: {\n classes: {\n root: 'btn btn-link p-1 d-inline-flex align-items-center justify-content-center text-body-secondary',\n icon: 'small',\n },\n },\n tableExpandTriggerCell: { classes: { root: 'text-center align-middle' } },\n },\n /*\n * Theme-runtime hook (plan 021): mirror the resolved color mode\n * onto Bootstrap's `data-bs-theme` attribute so framework chrome\n * (navbar, dropdown, form-control, etc.) follows vuecs's `.dark`\n * toggle without a per-app `watchEffect` mirror. Bootstrap 5.3+\n * reads `data-bs-theme` as its own dark-mode source of truth;\n * the bridge `assets/index.css` keeps `--vc-color-*` aligned.\n */\n colorMode: {\n handle(doc, mode) {\n doc.documentElement.setAttribute('data-bs-theme', mode);\n },\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { Theme } from '@vuecs/core';\n\nexport default function bootstrapTheme(): Theme {\n return {\n elements: {\n formGroup: {\n classes: {\n root: 'form-group',\n label: 'form-label',\n validationError: 'form-group-error',\n validationWarning: 'form-group-warning',\n },\n },\n formInput: {\n classes: {\n root: 'form-control',\n group: 'input-group',\n groupAppend: 'input-group-text',\n groupPrepend: 'input-group-text',\n },\n // Bootstrap's `.form-control-{sm,lg}` modifies padding +\n // font-size on top of `.form-control`. There's no `-md`\n // class — md IS the default.\n //\n // Severity uses Bootstrap's native `.is-invalid` /\n // `.is-warning`-style helpers — but Bootstrap 5 only\n // ships `.is-invalid` + `.is-valid`. We map `warning` →\n // `.is-invalid` (close-enough red) and leave a comment;\n // BS doesn't really have a soft-severity slot. Consumers\n // wanting a true amber state can override.\n variants: {\n size: {\n xs: { root: 'form-control-sm vc-form-control-xs', group: 'input-group-sm' },\n sm: { root: 'form-control-sm', group: 'input-group-sm' },\n md: { root: '' },\n lg: { root: 'form-control-lg', group: 'input-group-lg' },\n },\n severity: {\n error: { root: 'is-invalid' },\n warning: { root: 'is-invalid' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n // Reka renders the checkbox / radio / switch as `<button role=\"…\">`,\n // not native `<input type=\"…\">`. Bootstrap's `.form-check-input`\n // selector targets inputs only, so we don't apply it. Instead we\n // layer Bootstrap shadow + bg utilities on top of the `vc-form-*`\n // structural defaults — but deliberately skip border utilities:\n // bootstrap's `.border-*` utilities carry `!important` and would\n // beat the structural CSS's `data-state=\"checked\"` border-color\n // rule, making checked / unchecked visually identical. Letting\n // structural CSS own border-color preserves the checked-state\n // visual diff (neutral border → primary border on check).\n formCheckbox: {\n classes: {\n root: 'bg-white shadow-sm',\n indicator: 'text-white',\n label: 'form-check-label',\n group: '',\n },\n // Bootstrap doesn't ship sm/lg form-check sizes, so fall\n // back to the structural CSS `vc-form-checkbox-{sm,lg}`\n // helpers (defined in @vuecs/forms styles).\n variants: {\n size: {\n xs: { root: 'vc-form-checkbox-xs', label: 'vc-fs-xs' },\n sm: { root: 'vc-form-checkbox-sm', label: 'small' },\n md: { root: '' },\n lg: { root: 'vc-form-checkbox-lg', label: 'fs-5' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formCheckboxGroup: { classes: { root: 'd-flex flex-column gap-2' } },\n formSwitch: {\n classes: {\n root: 'shadow-sm',\n thumb: 'bg-white shadow-sm',\n label: 'form-check-label',\n group: '',\n },\n variants: {\n size: {\n xs: { root: 'vc-form-switch-xs', label: 'vc-fs-xs' },\n sm: { root: 'vc-form-switch-sm', label: 'small' },\n md: { root: '' },\n lg: { root: 'vc-form-switch-lg', label: 'fs-5' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formSelect: {\n classes: {\n // Bootstrap's `.form-select` ships the chevron via background-image —\n // it works for native <select> but not for our compound trigger.\n // We use `.form-control` for the input chrome plus `d-flex` to lay\n // out the value and our own chevron <span> (rendered by SelectIcon).\n trigger: 'form-control d-flex align-items-center justify-content-between gap-2 text-start',\n value: 'text-truncate',\n icon: 'text-muted',\n content: 'dropdown-menu show vc-overlay-anim',\n viewport: '',\n item: 'dropdown-item ps-4 position-relative',\n itemIndicator: 'position-absolute start-0 ms-2',\n group: '',\n groupLabel: 'dropdown-header',\n separator: 'dropdown-divider',\n },\n variants: {\n size: {\n xs: { trigger: 'form-control-sm vc-form-control-xs' },\n sm: { trigger: 'form-control-sm' },\n md: { trigger: '' },\n lg: { trigger: 'form-control-lg' },\n },\n severity: {\n error: { trigger: 'is-invalid' },\n warning: { trigger: 'is-invalid' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formSelectSearch: {\n classes: {\n root: 'position-relative',\n input: 'form-control',\n // .show flips Bootstrap's dropdown-menu visibility. The component\n // toggles its own v-show, so .show is redundant for visibility,\n // but ensures the menu picks up `display: block` if a consumer\n // upgrades to a custom toggle that relies on the bootstrap class.\n content: 'dropdown-menu show w-100 mt-1 overflow-auto',\n item: 'dropdown-item d-flex flex-column gap-1',\n // `itemActive` default is already `'active'` — Bootstrap's\n // dropdown active class — so we inherit it.\n itemCurrent: 'bg-secondary-subtle',\n itemDescription: 'small text-muted',\n selected: 'd-flex flex-wrap gap-1 mt-2',\n selectedItem: 'badge bg-secondary-subtle text-body border d-inline-flex align-items-center gap-1',\n selectedItemRemove: 'fw-bold',\n },\n variants: {\n severity: {\n error: { input: 'is-invalid' },\n warning: { input: 'is-invalid' },\n },\n },\n },\n formRadio: {\n classes: {\n root: 'bg-white shadow-sm',\n indicator: 'bg-primary',\n label: 'form-check-label',\n group: '',\n },\n variants: {\n size: {\n xs: { root: 'vc-form-radio-xs', label: 'vc-fs-xs' },\n sm: { root: 'vc-form-radio-sm', label: 'small' },\n md: { root: '' },\n lg: { root: 'vc-form-radio-lg', label: 'fs-5' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formRadioGroup: { classes: { root: 'd-flex flex-column gap-2' } },\n // PinInputInput DOES render a real <input>, so `.form-control`\n // would technically apply — but it sets `width: 100%` and\n // collapses every cell into the container's full width. Use\n // bootstrap utilities that mirror form-control's look (border\n // + rounded + shadow + bg) without the width hint; structural\n // CSS keeps the per-cell 2.5rem sizing.\n formPin: {\n classes: {\n root: 'd-inline-flex align-items-center gap-2',\n input: 'border border-secondary-subtle bg-white shadow-sm text-center fw-semibold',\n },\n },\n // Reka Slider renders <span> elements, not <input type=\"range\">.\n // Bootstrap's `.form-range` selector is `input[type=range]` so\n // it never applies — drop it. Layer bootstrap utilities for the\n // visual: muted track, primary range fill, white thumb with a\n // bootstrap-blue ring.\n formSlider: {\n classes: {\n root: '',\n track: 'bg-secondary-subtle rounded-pill',\n range: 'bg-primary rounded-pill',\n thumb: 'rounded-circle bg-white border border-2 border-primary shadow-sm',\n },\n },\n formNumber: {\n classes: {\n root: 'input-group',\n input: 'form-control text-center',\n decrement: 'btn btn-outline-secondary',\n increment: 'btn btn-outline-secondary',\n },\n variants: {\n size: {\n xs: {\n root: 'input-group-sm', \n input: 'form-control-sm vc-form-control-xs', \n decrement: 'btn-sm vc-btn-xs', \n increment: 'btn-sm vc-btn-xs', \n },\n sm: {\n root: 'input-group-sm',\n input: 'form-control-sm',\n decrement: 'btn-sm',\n increment: 'btn-sm',\n },\n md: { root: '' },\n lg: {\n root: 'input-group-lg',\n input: 'form-control-lg',\n decrement: 'btn-lg',\n increment: 'btn-lg',\n },\n },\n severity: {\n error: { input: 'is-invalid' },\n warning: { input: 'is-invalid' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formTags: {\n classes: {\n root: 'form-control d-flex flex-wrap align-items-center gap-2 p-2',\n item: 'badge rounded-pill text-bg-primary d-inline-flex align-items-center gap-1',\n itemText: '',\n // Plain styled button — `.btn-close` was wrong here: it\n // renders an × via background-image SVG, which combined\n // with the slot's literal \"×\" text produced a doubled\n // delete glyph in every chip.\n itemDelete: 'd-inline-flex align-items-center justify-content-center bg-transparent border-0 text-white p-0 ms-1 lh-1',\n input: 'form-control border-0 flex-grow-1 p-0 shadow-none',\n },\n variants: {\n size: {\n xs: { root: 'form-control-sm vc-form-control-xs p-1', item: 'vc-fs-xs' },\n sm: { root: 'form-control-sm p-1', item: 'small' },\n md: { root: '' },\n lg: { root: 'form-control-lg p-3', item: 'fs-6' },\n },\n severity: {\n error: { root: 'is-invalid' },\n warning: { root: 'is-invalid' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n button: {\n // `.btn` is `display: inline-block` by default — gives the\n // leading icon / spinner no gap from the label. Force\n // inline-flex so Bootstrap's `.gap-2` utility takes effect\n // (only affects layout when there are multiple children;\n // single-label buttons render identically).\n classes: { root: 'btn d-inline-flex align-items-center justify-content-center gap-2' },\n variants: {\n size: {\n xs: { root: 'btn-sm vc-btn-xs' },\n sm: { root: 'btn-sm' },\n md: { root: '' },\n lg: { root: 'btn-lg' },\n },\n },\n // Map each (variant, color) pair onto a Bootstrap button\n // class. `outline` uses Bootstrap's own `btn-outline-*`\n // family; `soft` uses Bootstrap 5.3+'s `*-subtle` /\n // `*-emphasis` token pair (tint bg + dark colored text);\n // `ghost` strips the link underline so it reads as a\n // borderless button rather than a hyperlink.\n compoundVariants: [\n // solid\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'btn-primary' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'btn-secondary' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'btn-success' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'btn-warning' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'btn-danger' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'btn-info' } },\n // outline\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'btn-outline-primary' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'btn-outline-secondary' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'btn-outline-success' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'btn-outline-warning' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'btn-outline-danger' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'btn-outline-info' } },\n // soft — Bootstrap 5.3+'s subtle bg + emphasis text.\n // Both tokens are bridged onto design-system shades by\n // theme-bootstrap/assets/index.css.\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-subtle text-primary-emphasis border-0' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-secondary-subtle text-secondary-emphasis border-0' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-subtle text-success-emphasis border-0' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-subtle text-warning-emphasis border-0' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-danger-subtle text-danger-emphasis border-0' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-subtle text-info-emphasis border-0' } },\n // ghost — borderless / no underline, colored text\n { variants: { variant: 'ghost', color: 'primary' }, class: { root: 'btn-link text-decoration-none' } },\n { variants: { variant: 'ghost', color: 'neutral' }, class: { root: 'btn-link text-decoration-none text-secondary' } },\n { variants: { variant: 'ghost', color: 'success' }, class: { root: 'btn-link text-decoration-none text-success' } },\n { variants: { variant: 'ghost', color: 'warning' }, class: { root: 'btn-link text-decoration-none text-warning' } },\n { variants: { variant: 'ghost', color: 'error' }, class: { root: 'btn-link text-decoration-none text-danger' } },\n { variants: { variant: 'ghost', color: 'info' }, class: { root: 'btn-link text-decoration-none text-info' } },\n // link — underlined hyperlink-style, color via text-*\n { variants: { variant: 'link', color: 'primary' }, class: { root: 'btn-link' } },\n { variants: { variant: 'link', color: 'neutral' }, class: { root: 'btn-link text-secondary' } },\n { variants: { variant: 'link', color: 'success' }, class: { root: 'btn-link text-success' } },\n { variants: { variant: 'link', color: 'warning' }, class: { root: 'btn-link text-warning' } },\n { variants: { variant: 'link', color: 'error' }, class: { root: 'btn-link text-danger' } },\n { variants: { variant: 'link', color: 'info' }, class: { root: 'btn-link text-info' } },\n ],\n defaultVariants: {\n variant: 'solid', \n color: 'primary', \n size: 'md', \n },\n },\n formTextarea: {\n classes: { root: 'form-control' },\n variants: {\n size: {\n xs: { root: 'form-control-sm vc-form-control-xs' },\n sm: { root: 'form-control-sm' },\n md: { root: '' },\n lg: { root: 'form-control-lg' },\n },\n severity: {\n error: { root: 'is-invalid' },\n warning: { root: 'is-invalid' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n // Severity-aware per-message colour. Bootstrap's `.text-danger`\n // / `.text-warning` / `.text-success` utilities are `!important`,\n // so a single class wins cleanly — no need for a default\n // colour on `item` (messages stay neutral when no severity).\n validationGroup: {\n classes: { item: 'small' },\n variants: {\n severity: {\n error: { item: 'text-danger' },\n warning: { item: 'text-warning' },\n success: { item: 'text-success' },\n },\n },\n },\n list: {\n classes: {\n // `position-relative` anchors `<VCListLoading :overlay>`'s\n // absolute positioning to the list container.\n root: 'd-flex flex-column gap-1 position-relative',\n header: 'd-flex align-items-center',\n footer: 'd-flex align-items-center',\n },\n variants: {\n density: {\n compact: { root: 'gap-0' },\n normal: { root: '' },\n spacious: { root: 'gap-3' },\n },\n },\n defaultVariants: { density: 'normal' },\n },\n listBody: { classes: { root: 'list-unstyled m-0' } },\n listItem: {\n classes: {\n root: 'd-flex flex-row align-items-center gap-1',\n text: 'd-inline-flex flex-column flex-grow-1 text-truncate',\n actions: 'd-inline-flex align-items-center gap-1',\n },\n variants: {\n density: {\n compact: { root: 'py-0' },\n normal: { root: 'py-1' },\n spacious: { root: 'py-3' },\n },\n disabled: { true: { root: 'opacity-50 pe-none' } },\n active: { true: { root: 'bg-primary-subtle text-primary-emphasis' } },\n selected: { true: { root: 'bg-body-secondary' } },\n },\n defaultVariants: { density: 'normal' },\n },\n listLoading: {\n classes: { root: 'py-2 text-center text-muted small' },\n // Translucent veil (`bg-body bg-opacity-75`) so underlying\n // rows stay partly visible during refresh — matches the\n // tailwind theme's `bg-bg/75 backdrop-blur-sm`.\n variants: { overlay: { true: { root: 'position-absolute top-0 start-0 end-0 bottom-0 d-flex align-items-center justify-content-center bg-body bg-opacity-75' } } },\n },\n listEmpty: { classes: { root: 'alert alert-warning small p-2' } },\n navigation: {\n classes: {\n group: 'nav-items',\n link: 'nav-link',\n // The structural `.vc-nav-trigger` already resets the\n // native <button> chrome; `.nav-link` layers Bootstrap's\n // link styling on top.\n trigger: 'nav-link',\n content: 'ps-3',\n },\n variants: {\n size: {\n xs: { link: 'vc-fs-xs py-0 px-2', trigger: 'vc-fs-xs py-0 px-2' },\n sm: { link: 'small py-1 px-2', trigger: 'small py-1 px-2' },\n md: { link: '' },\n lg: { link: 'fs-6 py-3 px-4', trigger: 'fs-6 py-3 px-4' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n // Reka encodes orientation as `data-orientation`; Bootstrap has\n // `<hr>` styling for horizontal but no built-in vertical rule —\n // the structural CSS does both. We just remove the default\n // margins so consumers control spacing via parent flex gaps.\n separator: { classes: { root: 'm-0' } },\n tag: {\n classes: {\n // Use `text-bg-primary` so Bootstrap's contrast pair handles\n // light/dark text-on-bg automatically. `rounded-pill` matches\n // the chip aesthetic of Bootstrap badges.\n root: 'badge rounded-pill text-bg-primary d-inline-flex align-items-center gap-1',\n icon: 'd-inline-flex align-items-center',\n // Deliberately NOT `.btn`: `.btn` sets an absolute\n // `font-size: 1rem` which overrides the badge's\n // inherited `0.75em`, stretching the line-box and\n // making removable tags taller than non-removable\n // ones. Plain utilities + `.focus-ring` keep\n // keyboard-focus styling without leaking the .btn\n // sizing into the chip.\n remove: 'focus-ring p-0 d-inline-flex align-items-center justify-content-center bg-transparent border-0 text-white lh-1',\n },\n variants: {\n size: {\n xs: { root: 'vc-fs-xs px-2 py-0' },\n sm: { root: 'small px-2 py-1' },\n md: { root: '' },\n lg: { root: 'fs-6 px-3 py-2' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n tags: {\n classes: {\n root: 'd-flex flex-wrap align-items-center gap-2',\n item: '',\n },\n variants: {\n size: {\n xs: { root: 'gap-1' },\n sm: { root: 'gap-1' },\n md: { root: '' },\n lg: { root: 'gap-3' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n avatar: {\n classes: {\n root: 'd-inline-flex align-items-center justify-content-center overflow-hidden rounded-circle bg-secondary-subtle text-secondary-emphasis',\n image: 'w-100 h-100 object-fit-cover',\n fallback: 'd-inline-flex align-items-center justify-content-center w-100 h-100 fw-medium small lh-1',\n },\n // Bootstrap doesn't ship h-8/h-10/h-14 utilities. `md` is\n // the no-op default — the structural `.vc-avatar` rule\n // already sets the medium size. `vc-avatar-{sm,lg}` are\n // shipped in @vuecs/elements/assets/avatar.css.\n variants: {\n size: {\n xs: { root: 'vc-avatar-xs' },\n sm: { root: 'vc-avatar-sm' },\n md: { root: '' },\n lg: { root: 'vc-avatar-lg' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n aspectRatio: { classes: { root: 'd-block w-100' } },\n // VCGravatar wraps VCAvatar — sizing comes from the structural\n // `vc-gravatar` class (5rem default, ships with @vuecs/gravatar).\n // Theme adds bootstrap aesthetics; override visual size via\n // per-instance `themeClass`.\n gravatar: { classes: { root: 'rounded-circle overflow-hidden d-inline-block' } },\n card: {\n // Bootstrap `.card` brings the border + radius + bg-body.\n // Theme bridge (`assets/index.css`) maps `--bs-card-*` onto\n // `--vc-color-*` so runtime palette switches propagate.\n classes: { root: 'card' },\n variants: {\n variant: {\n // Bootstrap's default `.card` is already the outline look.\n outline: { root: '' },\n // Soft = subtle muted bg; we drop the border for visual lift.\n soft: { root: 'bg-body-tertiary border-0' },\n // Elevated = drop a shadow on the default `.card`.\n elevated: { root: 'shadow' },\n },\n interactive: { true: { root: 'shadow-sm' } },\n },\n defaultVariants: { variant: 'outline' },\n },\n cardHeader: {\n classes: { root: 'card-header' },\n variants: {\n padding: {\n compact: { root: 'py-2 px-3' },\n normal: { root: '' },\n spacious: { root: 'py-3 px-4' },\n },\n },\n defaultVariants: { padding: 'normal' },\n },\n cardTitle: { classes: { root: 'card-title mb-0' } },\n cardDescription: { classes: { root: 'card-subtitle text-body-secondary mb-0' } },\n cardBody: {\n classes: { root: 'card-body' },\n variants: {\n padding: {\n compact: { root: 'p-2' },\n normal: { root: '' },\n spacious: { root: 'p-4' },\n },\n },\n defaultVariants: { padding: 'normal' },\n },\n cardFooter: {\n classes: { root: 'card-footer d-flex justify-content-end gap-2' },\n variants: {\n padding: {\n compact: { root: 'py-2 px-3' },\n normal: { root: '' },\n spacious: { root: 'py-3 px-4' },\n },\n },\n defaultVariants: { padding: 'normal' },\n },\n collapse: { classes: { root: '' } },\n collapseTrigger: {\n classes: {\n root: 'btn btn-link p-0 d-inline-flex align-items-center gap-2 text-decoration-none',\n chevron: 'small',\n },\n variants: {\n chevron: {\n auto: { chevron: 'd-inline-flex' },\n none: { chevron: 'd-none' },\n },\n },\n defaultVariants: { chevron: 'auto' },\n },\n collapseContent: { classes: { root: 'vc-collapse-anim' } },\n alert: {\n // Bootstrap's `.alert` ships padding + border-radius +\n // border-width baseline; per-variant color comes from\n // `.alert-<color>`. Outline variant has no native BS class\n // — bridge CSS adds `.vc-alert.vc-alert-outline.alert-<color>`\n // rules that flip background to transparent.\n classes: {\n root: 'alert d-flex align-items-start gap-3 mb-0 position-relative pe-5',\n icon: 'flex-shrink-0 d-inline-flex align-items-center justify-content-center',\n content: 'flex-grow-1 min-w-0 d-flex flex-column gap-1',\n closeIcon: 'btn-close position-absolute top-0 end-0 m-2',\n close: 'btn btn-sm',\n },\n variants: {\n // Size variants only adjust vertical padding + font-size.\n // Right-padding (reserved for the absolute corner-close\n // button) comes from the base `.pe-5` class; overriding\n // with `px-*` here would let text overlap the close icon\n // because BS `.px-*` utilities clobber both sides.\n size: {\n xs: { root: 'py-1 vc-fs-xs' },\n sm: { root: 'py-2 small' },\n md: { root: '' },\n lg: { root: 'py-3 fs-6' },\n },\n },\n compoundVariants: [\n // solid — BS `.alert-<color>` uses the subtle/tinted style\n // which matches our `soft` variant; for `solid` use the\n // `text-bg-<color>` contrast-aware utility.\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'text-bg-primary' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'text-bg-secondary' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'text-bg-success' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'text-bg-warning' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'text-bg-danger' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'text-bg-info' } },\n // soft → BS's native `.alert-<color>`\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'alert-primary' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'alert-secondary' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'alert-success' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'alert-warning' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'alert-danger' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'alert-info' } },\n // outline — bridge CSS picks these up\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'vc-alert-outline alert-primary' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'vc-alert-outline alert-secondary' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'vc-alert-outline alert-success' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'vc-alert-outline alert-warning' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'vc-alert-outline alert-danger' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'vc-alert-outline alert-info' } },\n ],\n defaultVariants: {\n variant: 'soft', \n color: 'neutral', \n size: 'md', \n },\n },\n alertTitle: { classes: { root: 'fw-semibold mb-1' } },\n alertDescription: { classes: { root: 'mb-0' } },\n badge: {\n classes: { root: 'badge rounded-pill' },\n variants: {\n size: {\n xs: { root: 'vc-fs-xs px-2 py-0' },\n sm: { root: 'small px-2 py-1' },\n md: { root: '' },\n lg: { root: 'fs-6 px-3 py-2' },\n },\n },\n // Map (variant, color) onto Bootstrap's `text-bg-*` (solid),\n // `*-subtle` + `*-emphasis` (soft), and `border *-emphasis`\n // (outline) families. Same structure as the button matrix\n // for visual family consistency.\n compoundVariants: [\n // solid — text-bg-* picks the contrast pair\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'text-bg-primary' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'text-bg-secondary' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'text-bg-success' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'text-bg-warning' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'text-bg-danger' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'text-bg-info' } },\n // soft — *-subtle bg + *-emphasis text\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-subtle text-primary-emphasis' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-secondary-subtle text-secondary-emphasis' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-subtle text-success-emphasis' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-subtle text-warning-emphasis' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-danger-subtle text-danger-emphasis' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-subtle text-info-emphasis' } },\n // outline — border + *-emphasis text on transparent\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'border border-primary text-primary-emphasis' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'border border-secondary text-secondary-emphasis' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'border border-success text-success-emphasis' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'border border-warning text-warning-emphasis' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'border border-danger text-danger-emphasis' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'border border-info text-info-emphasis' } },\n ],\n defaultVariants: {\n variant: 'soft',\n color: 'neutral',\n size: 'md',\n },\n },\n // Bootstrap ships `.table` family natively. Compose those\n // utility classes plus the design-token bridge for\n // dark-mode + runtime palette propagation.\n table: {\n classes: {\n root: 'table align-middle mb-0',\n scrollContainer: 'table-responsive border rounded',\n },\n variants: {\n density: {\n compact: { root: 'table-sm' },\n normal: { root: '' },\n spacious: { root: '' },\n },\n striped: { true: { root: 'table-striped' } },\n bordered: { true: { root: 'table-bordered' } },\n hover: { true: { root: 'table-hover' } },\n stickyHeader: { true: { root: 'vc-table-sticky-header' } },\n },\n defaultVariants: { density: 'normal' },\n },\n tableHeader: { classes: { root: 'text-uppercase small text-body-secondary' } },\n tableBody: { classes: { root: '' } },\n tableFooter: { classes: { root: 'fw-medium' } },\n tableRow: {\n variants: {\n disabled: { true: { root: 'opacity-50 pe-none' } },\n selected: { true: { root: 'table-active' } },\n focused: { true: { root: 'vc-table-row-focused' } },\n rowVariant: {\n success: { root: 'table-success' },\n warning: { root: 'table-warning' },\n error: { root: 'table-danger' },\n info: { root: 'table-info' },\n neutral: { root: 'table-secondary' },\n primary: { root: 'table-primary' },\n },\n },\n },\n tableCell: {\n variants: {\n align: {\n left: { root: 'text-start' },\n center: { root: 'text-center' },\n right: { root: 'text-end' },\n },\n stickyColumn: { true: { root: 'vc-table-sticky-column' } },\n cellVariant: {\n success: { root: 'text-success' },\n warning: { root: 'text-warning' },\n error: { root: 'text-danger' },\n info: { root: 'text-info' },\n neutral: { root: 'text-body-secondary' },\n primary: { root: 'text-primary' },\n },\n },\n },\n tableHeadCell: {\n classes: { sortIcon: 'ms-1 small lh-1' },\n variants: {\n align: {\n left: { root: 'text-start' },\n center: { root: 'text-center' },\n right: { root: 'text-end' },\n },\n stickyColumn: { true: { root: 'vc-table-sticky-column' } },\n sorted: {\n asc: { root: 'vc-table-sort-asc' },\n desc: { root: 'vc-table-sort-desc' },\n none: { root: '' },\n },\n },\n },\n tableEmpty: {\n classes: { root: '' },\n variants: {\n filtered: {\n true: { root: 'text-center text-body-secondary fst-italic py-4' },\n false: { root: 'text-center text-body-secondary py-4' },\n },\n },\n },\n tableLoading: {\n classes: {\n root: 'text-center text-body-secondary py-4',\n overlay: 'bg-body bg-opacity-75 text-body-secondary',\n },\n },\n tableSortIndicators: {\n classes: {\n root: 'd-flex flex-wrap align-items-center gap-2 bg-body-tertiary border rounded px-3 py-2 small',\n label: 'fw-semibold text-body-secondary me-1',\n empty: 'fst-italic text-body-secondary',\n // The chip is now a non-interactive wrapper. We\n // restyle two real `<button>`s inside (toggle +\n // remove), each borderless to inherit the chip\n // pill look as one unit.\n chip: 'd-inline-flex align-items-center border rounded-pill bg-body',\n chipToggle: 'btn btn-sm d-inline-flex align-items-center gap-2 border-0 rounded-start-pill rounded-end-0',\n chipPosition: 'fw-bold text-body-secondary',\n chipLabel: '',\n chipArrow: 'fw-bold text-primary',\n chipRemove: 'btn btn-sm d-inline-flex align-items-center justify-content-center border-0 rounded-end-pill rounded-start-0 px-2 text-body-secondary',\n // addWrapper omitted — Bootstrap styles the\n // <select> directly via `.form-select`.\n add: 'form-select form-select-sm rounded-pill w-auto',\n clear: 'btn btn-sm btn-link text-body-secondary text-decoration-none ms-auto',\n },\n },\n pagination: {\n classes: {\n root: 'd-flex justify-content-center pagination',\n // Apply Bootstrap's `page-item` / `page-link` so Bootstrap\n // CSS picks up the joined-button styling (border, hover,\n // disabled state, focus ring). Active state uses\n // Bootstrap's own `.active.page-link` rules; we merge\n // `active` into linkActive below.\n item: 'page-item',\n // `d-inline-flex align-items-center gap-1` layers on top of\n // Bootstrap's `.page-link` so the icon + label pair (e.g.\n // <chevron> \"Previous\") sits on a single baseline with\n // breathing room between them. `.page-link` is `display: block`\n // by default, which would otherwise stack them.\n link: 'page-link d-inline-flex align-items-center gap-1',\n // `linkActive` default is already `'active'` — Bootstrap's\n // pagination active class — so we inherit it.\n // Wrapper composes `link + ellipsis` onto PaginationEllipsis\n // so it inherits the page-link box. Disable interactivity.\n ellipsis: 'pe-none text-muted',\n },\n variants: {\n // Bootstrap pagination is a single visual style. We\n // expose the same variant catalog as the Tailwind theme\n // for API parity; soft / ghost are minor tweaks rather\n // than a different visual treatment.\n variant: {\n outline: { link: '' },\n soft: { link: 'border-0' },\n ghost: { link: 'border-0 bg-transparent' },\n },\n size: {\n xs: { root: 'pagination-sm vc-pagination-xs' },\n sm: { root: 'pagination-sm' },\n md: { root: '' },\n lg: { root: 'pagination-lg' },\n },\n },\n defaultVariants: { variant: 'outline', size: 'md' },\n },\n // Reka primitives drive open/close via `data-state=\"open|closed\"`,\n // not Bootstrap's `.show` class. The mappings below give consumers\n // Bootstrap's chrome (border, padding, typography) plus enter+exit\n // animations via vuecs's dual-state helpers from @vuecs/design's\n // animations.css (`vc-overlay-anim`, `vc-overlay-fade-anim`,\n // `vc-tooltip-anim`). These helpers package the per-state gating\n // into a single class because BS5 theme strings can't carry the\n // `data-[state=]:` attribute-selector prefix that theme-tailwind\n // uses. Reka's Presence (already wrapping every *Content\n // primitive) keeps the element mounted until the exit animation\n // finishes.\n modal: {\n classes: {\n overlay: 'modal-backdrop fade show vc-overlay-fade-anim',\n content: 'modal-content position-fixed top-50 start-50 translate-middle shadow vc-overlay-anim',\n header: 'modal-header',\n title: 'modal-title',\n description: 'text-muted small',\n body: 'modal-body',\n footer: 'modal-footer',\n trigger: '',\n // Generic close trigger — neutral baseline so consumer\n // classes (`<VCModalClose class=\"...\">`) compose cleanly.\n // The corner-X pattern lives in `closeIcon` below.\n close: '',\n closeIcon: 'btn-close position-absolute top-0 end-0 m-2',\n back: 'btn btn-sm btn-link p-1',\n },\n // Bootstrap maps modal sizes via `.modal-sm` / `.modal-lg` /\n // `.modal-xl` on the .modal element. Our content slot stands\n // in for `.modal-dialog` so we apply the size class there.\n variants: {\n size: {\n xs: { content: 'vc-modal-xs' },\n sm: { content: 'modal-sm' },\n md: { content: '' },\n lg: { content: 'modal-lg' },\n xl: { content: 'modal-xl' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n popover: {\n classes: {\n trigger: '',\n content: 'popover bs-popover-auto show vc-overlay-anim',\n arrow: 'popover-arrow',\n // Generic close trigger — neutral baseline so consumer\n // classes compose cleanly. Corner-X lives in `closeIcon`.\n close: '',\n closeIcon: 'btn-close position-absolute top-0 end-0 m-1',\n },\n // Bootstrap doesn't ship size variants for popovers — adjust\n // font-size + padding via utility classes; the popover\n // shrinks/grows to content, so explicit width tuning is left\n // to consumers via per-instance themeClass.\n variants: {\n size: {\n xs: { content: 'vc-fs-xs p-2' },\n sm: { content: 'small p-2' },\n md: { content: '' },\n lg: { content: 'fs-6 p-4' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n hoverCard: {\n classes: {\n trigger: '',\n content: 'popover bs-popover-auto show vc-overlay-anim',\n arrow: 'popover-arrow',\n },\n variants: {\n size: {\n xs: { content: 'vc-fs-xs p-2' },\n sm: { content: 'small p-2' },\n md: { content: '' },\n lg: { content: 'fs-6 p-4' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n // Bootstrap doesn't ship a stepper component — we wire the rough\n // shape with utility classes (gap-* + rounded-circle for the\n // indicator). data-state=\"completed\" / \"active\" drives bg-* via\n // attribute selectors; without those the indicator stays muted.\n stepper: {\n classes: {\n root: 'd-flex align-items-center gap-2',\n item: 'd-flex align-items-center gap-2 flex-grow-1',\n trigger: 'btn p-0 border-0 bg-transparent d-inline-flex align-items-center justify-content-center',\n indicator: 'rounded-circle border border-secondary-subtle bg-light text-muted d-inline-flex align-items-center justify-content-center fw-semibold',\n title: 'small fw-medium',\n description: 'small text-muted',\n separator: 'flex-grow-1 border-top border-secondary-subtle',\n },\n // Bootstrap doesn't ship circular size utilities; use the\n // structural `vc-stepper-indicator-{sm,lg}` helpers added to\n // @vuecs/navigation's stepper structural CSS.\n variants: {\n size: {\n xs: { indicator: 'vc-stepper-indicator-xs', title: 'vc-fs-xs' },\n sm: { indicator: 'vc-stepper-indicator-sm', title: 'small' },\n md: { indicator: '' },\n lg: { indicator: 'vc-stepper-indicator-lg', title: 'fs-6' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n // Bootstrap doesn't ship a Toast viewport / queue idiom (the\n // toasts CSS exists but `.toast-container` is a static\n // layout). We compose `.toast-container` + position helpers\n // for the viewport, and `.toast.show` for each entry so\n // Bootstrap's per-color contrast (`text-bg-*`) propagates.\n // Slide-in/out animations use the `vc-toast-anim` dual-state\n // helper in the bridge CSS (BS theme strings can't carry\n // `data-[state=]:` attribute selectors).\n toastViewport: {\n classes: { root: 'toast-container position-fixed d-flex flex-column p-3 list-unstyled m-0' },\n variants: {\n position: {\n 'top-left': { root: 'top-0 start-0' },\n 'top-right': { root: 'top-0 end-0' },\n 'top-center': { root: 'top-0 start-50 translate-middle-x' },\n 'bottom-left': { root: 'bottom-0 start-0 flex-column-reverse' },\n 'bottom-right': { root: 'bottom-0 end-0 flex-column-reverse' },\n 'bottom-center': { root: 'bottom-0 start-50 translate-middle-x flex-column-reverse' },\n },\n },\n defaultVariants: { position: 'top-right' },\n },\n toast: {\n classes: {\n root: 'toast show vc-toast-anim d-flex align-items-start gap-3 position-relative pe-5',\n body: 'flex-grow-1 min-w-0',\n close: 'btn-close-white btn btn-sm align-self-start',\n closeIcon: 'btn-close position-absolute top-0 end-0 m-2',\n },\n compoundVariants: [\n // solid via Bootstrap's contrast-aware `text-bg-*`\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'text-bg-primary' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'text-bg-secondary' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'text-bg-success' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'text-bg-warning' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'text-bg-danger' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'text-bg-info' } },\n // soft — subtle bg + emphasis text\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-subtle text-primary-emphasis border border-primary-subtle' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-body-tertiary text-body border' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-subtle text-success-emphasis border border-success-subtle' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-subtle text-warning-emphasis border border-warning-subtle' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-danger-subtle text-danger-emphasis border border-danger-subtle' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-subtle text-info-emphasis border border-info-subtle' } },\n // outline — border + emphasis text on transparent\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'border border-primary text-primary-emphasis bg-body' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'border text-body bg-body' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'border border-success text-success-emphasis bg-body' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'border border-warning text-warning-emphasis bg-body' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'border border-danger text-danger-emphasis bg-body' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'border border-info text-info-emphasis bg-body' } },\n ],\n defaultVariants: { variant: 'soft', color: 'neutral' },\n },\n toastTitle: { classes: { root: 'toast-header bg-transparent border-0 p-0 mb-1 fw-semibold' } },\n toastDescription: { classes: { root: 'toast-body p-0' } },\n toastAction: { classes: { root: 'btn btn-sm btn-outline-secondary flex-shrink-0' } },\n tooltip: {\n classes: {\n trigger: '',\n content: 'tooltip bs-tooltip-auto show tooltip-inner vc-tooltip-anim',\n arrow: 'tooltip-arrow',\n },\n variants: {\n size: {\n xs: { content: 'vc-fs-xs px-2 py-0' },\n sm: { content: 'small px-2 py-1' },\n md: { content: '' },\n lg: { content: 'fs-6 px-3 py-2' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n dropdownMenu: {\n classes: {\n trigger: '',\n content: 'dropdown-menu show vc-overlay-anim',\n item: 'dropdown-item',\n checkboxItem: 'dropdown-item ps-4',\n radioItem: 'dropdown-item ps-4',\n radioGroup: '',\n itemIndicator: 'position-absolute start-0 ms-2',\n label: 'dropdown-header',\n separator: 'dropdown-divider',\n group: '',\n subTrigger: 'dropdown-item dropdown-toggle',\n subContent: 'dropdown-menu show vc-overlay-anim',\n arrow: '',\n },\n // Bootstrap doesn't ship dropdown size variants. Layer\n // utility classes for spacing/font-size; the structural\n // dropdown chrome stays untouched.\n variants: {\n size: {\n xs: {\n content: 'vc-fs-xs p-1', \n item: 'py-0 px-2', \n subTrigger: 'py-0 px-2', \n subContent: 'vc-fs-xs p-1', \n },\n sm: {\n content: 'small p-1', \n item: 'py-1 px-2', \n subTrigger: 'py-1 px-2', \n subContent: 'small p-1', \n },\n md: { content: '' },\n lg: {\n content: 'fs-6', \n item: 'py-2 px-3', \n subTrigger: 'py-2 px-3', \n subContent: 'fs-6', \n },\n },\n },\n defaultVariants: { size: 'md' },\n },\n contextMenu: {\n classes: {\n trigger: '',\n content: 'dropdown-menu show vc-overlay-anim',\n item: 'dropdown-item',\n checkboxItem: 'dropdown-item ps-4',\n radioItem: 'dropdown-item ps-4',\n radioGroup: '',\n itemIndicator: 'position-absolute start-0 ms-2',\n label: 'dropdown-header',\n separator: 'dropdown-divider',\n group: '',\n subTrigger: 'dropdown-item dropdown-toggle',\n subContent: 'dropdown-menu show vc-overlay-anim',\n },\n variants: {\n size: {\n xs: {\n content: 'vc-fs-xs p-1', \n item: 'py-0 px-2', \n subTrigger: 'py-0 px-2', \n subContent: 'vc-fs-xs p-1', \n },\n sm: {\n content: 'small p-1', \n item: 'py-1 px-2', \n subTrigger: 'py-1 px-2', \n subContent: 'small p-1', \n },\n md: { content: '' },\n lg: {\n content: 'fs-6', \n item: 'py-2 px-3', \n subTrigger: 'py-2 px-3', \n subContent: 'fs-6', \n },\n },\n },\n defaultVariants: { size: 'md' },\n },\n placeholder: {\n // Bootstrap 5 ships native `.placeholder`,\n // `.placeholder-wave`, and `.placeholder-glow` —\n // map onto those directly.\n classes: {\n root: 'placeholder',\n wave: 'placeholder-wave',\n glow: 'placeholder-glow',\n },\n },\n tablePlaceholder: {\n classes: {\n root: 'table table-borderless mb-0',\n header: 'border-bottom',\n body: '',\n footer: 'border-top',\n row: '',\n cell: '',\n },\n },\n cardPlaceholder: {\n classes: {\n root: 'card',\n image: 'ratio ratio-16x9',\n header: 'card-header',\n body: 'card-body',\n footer: 'card-footer d-flex gap-2',\n },\n },\n placeholderWrapper: { classes: { root: 'position-relative' } },\n tableRowExpansion: {\n classes: {\n root: 'bg-body-tertiary',\n cell: 'p-0',\n panel: 'overflow-hidden',\n panelInner: 'px-3 py-2',\n },\n },\n tableExpandTrigger: {\n classes: {\n root: 'btn btn-link p-1 d-inline-flex align-items-center justify-content-center text-body-secondary',\n icon: 'small',\n },\n },\n tableExpandTriggerCell: { classes: { root: 'text-center align-middle' } },\n },\n /*\n * Theme-runtime hook (plan 021): mirror the resolved color mode\n * onto Bootstrap's `data-bs-theme` attribute so framework chrome\n * (navbar, dropdown, form-control, etc.) follows vuecs's `.dark`\n * toggle without a per-app `watchEffect` mirror. Bootstrap 5.3+\n * reads `data-bs-theme` as its own dark-mode source of truth;\n * the bridge `assets/index.css` keeps `--vc-color-*` aligned.\n */\n colorMode: {\n handle(doc, mode) {\n doc.documentElement.setAttribute('data-bs-theme', mode);\n },\n },\n };\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vuecs/theme-bootstrap",
|
|
3
|
-
"version": "7.0
|
|
3
|
+
"version": "7.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Bootstrap theme for vuecs components. Currently targets Bootstrap 5; the version number tracks vuecs theme breaking changes, not Bootstrap's.",
|
|
6
6
|
"exports": {
|
|
@@ -41,21 +41,21 @@
|
|
|
41
41
|
"test:coverage": "vitest --config test/vitest.config.ts --run --coverage"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@vuecs/button": "^1.
|
|
45
|
-
"@vuecs/core": "^3.2.
|
|
46
|
-
"@vuecs/countdown": "^2.0.
|
|
47
|
-
"@vuecs/elements": "^1.
|
|
48
|
-
"@vuecs/forms": "^5.
|
|
49
|
-
"@vuecs/gravatar": "^2.0.
|
|
50
|
-
"@vuecs/list": "^1.0.
|
|
51
|
-
"@vuecs/navigation": "^4.0
|
|
52
|
-
"@vuecs/overlays": "^1.1.
|
|
53
|
-
"@vuecs/pagination": "^2.1.
|
|
54
|
-
"@vuecs/placeholder": "^1.0.
|
|
55
|
-
"@vuecs/timeago": "^2.1.
|
|
44
|
+
"@vuecs/button": "^1.2.0",
|
|
45
|
+
"@vuecs/core": "^3.2.2",
|
|
46
|
+
"@vuecs/countdown": "^2.0.6",
|
|
47
|
+
"@vuecs/elements": "^1.3.0",
|
|
48
|
+
"@vuecs/forms": "^5.3.0",
|
|
49
|
+
"@vuecs/gravatar": "^2.0.8",
|
|
50
|
+
"@vuecs/list": "^1.0.6",
|
|
51
|
+
"@vuecs/navigation": "^4.1.0",
|
|
52
|
+
"@vuecs/overlays": "^1.1.2",
|
|
53
|
+
"@vuecs/pagination": "^2.1.5",
|
|
54
|
+
"@vuecs/placeholder": "^1.0.6",
|
|
55
|
+
"@vuecs/timeago": "^2.1.2"
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|
|
58
|
-
"@vuecs/core": "^3.2.
|
|
58
|
+
"@vuecs/core": "^3.2.2"
|
|
59
59
|
},
|
|
60
60
|
"engines": {
|
|
61
61
|
"node": ">=22.0.0"
|