bitboss-ui 3.0.0-beta.21 → 3.0.0-beta.23
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/README.md +55 -3
- package/bin/bitboss-ui-mcp.mjs +419 -9
- package/bin/bitboss-ui.mjs +293 -22
- package/dist/ai/BbAccordion.md +21 -23
- package/dist/ai/BbAlert.md +6 -12
- package/dist/ai/BbAvatar.md +60 -24
- package/dist/ai/BbBadge.md +12 -20
- package/dist/ai/BbBaseButton.md +14 -16
- package/dist/ai/BbBaseCheckboxIcon.md +6 -10
- package/dist/ai/BbBaseColorInput.md +1 -0
- package/dist/ai/BbBaseDatePickerInput.md +1 -0
- package/dist/ai/BbBaseNumberInput.md +1 -0
- package/dist/ai/BbBaseRadioIcon.md +6 -10
- package/dist/ai/BbBaseSelect.md +1 -0
- package/dist/ai/BbBaseSwitchIcon.md +5 -9
- package/dist/ai/BbBaseTag.md +1 -0
- package/dist/ai/BbBaseTextInput.md +2 -1
- package/dist/ai/BbBaseTextarea.md +1 -0
- package/dist/ai/BbBaseTimePickerInput.md +1 -0
- package/dist/ai/BbBreadcrumbs.md +23 -34
- package/dist/ai/BbButton.md +35 -47
- package/dist/ai/BbCheckbox.md +21 -37
- package/dist/ai/BbCheckboxGroup.md +13 -13
- package/dist/ai/BbCollapsible.md +14 -26
- package/dist/ai/BbColorInput.md +27 -23
- package/dist/ai/BbColorPalette.md +23 -35
- package/dist/ai/BbConfirm.md +17 -32
- package/dist/ai/BbDatePickerInput.md +29 -21
- package/dist/ai/BbDialog.md +159 -62
- package/dist/ai/BbDropdown.md +21 -25
- package/dist/ai/BbDropdownButton.md +13 -30
- package/dist/ai/BbDropzone.md +9 -11
- package/dist/ai/BbIcon.md +44 -33
- package/dist/ai/BbIndicator.md +2 -2
- package/dist/ai/BbNumberInput.md +32 -20
- package/dist/ai/BbOffCanvas.md +42 -42
- package/dist/ai/BbPagination.md +21 -23
- package/dist/ai/BbPopover.md +15 -17
- package/dist/ai/BbProgress.md +40 -51
- package/dist/ai/BbRadio.md +9 -9
- package/dist/ai/BbRadioGroup.md +7 -11
- package/dist/ai/BbRating.md +8 -12
- package/dist/ai/BbSelect.md +46 -36
- package/dist/ai/BbSelectPopover.md +19 -31
- package/dist/ai/BbSlider.md +15 -19
- package/dist/ai/BbSmoothHeight.md +16 -31
- package/dist/ai/BbSpinner.md +118 -74
- package/dist/ai/BbSwitch.md +25 -18
- package/dist/ai/BbSwitchGroup.md +9 -14
- package/dist/ai/BbTable.md +102 -55
- package/dist/ai/BbTabs.md +59 -82
- package/dist/ai/BbTag.md +26 -23
- package/dist/ai/BbTextInput.md +63 -27
- package/dist/ai/BbTextarea.md +42 -34
- package/dist/ai/BbTimePickerInput.md +14 -0
- package/dist/ai/BbToast.md +14 -34
- package/dist/ai/BbTooltip.md +22 -20
- package/dist/ai/BbTree.md +46 -72
- package/dist/ai/CommonInputWrapper.md +1 -0
- package/dist/ai/changelog.json +170 -62
- package/dist/ai/components.json +1678 -11
- package/dist/ai/composables/useConfirm.md +5 -2
- package/dist/ai/composables/useToast.md +4 -2
- package/dist/ai/guides/agent-contract.md +7 -4
- package/dist/ai/guides/ai-router.md +37 -22
- package/dist/ai/guides/component-picker.md +23 -18
- package/dist/ai/guides/design-language.md +151 -21
- package/dist/ai/guides/design-tokens.md +29 -4
- package/dist/ai/guides/icons-policy.md +46 -21
- package/dist/ai/guides/installation-and-plugin-setup.md +286 -17
- package/dist/ai/guides/migration/components/bb-rating.md +26 -1
- package/dist/ai/guides/migration/components/bb-tooltip.md +18 -0
- package/dist/ai/guides/migration/v2-to-v3.md +50 -23
- package/dist/ai/index.md +1 -1
- package/dist/ai/recipes/inertia/approvals-inbox.md +3 -3
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +2 -2
- package/dist/ai/recipes/inertia/onboarding.md +2 -2
- package/dist/ai/recipes/inertia/ownership-atlas.md +6 -6
- package/dist/ai/recipes/inertia/record-form.md +5 -5
- package/dist/ai/recipes/inertia/records-workspace.md +4 -4
- package/dist/ai/recipes/inertia/upload-center.md +6 -6
- package/dist/ai/recipes/inertia/wizard-form.md +5 -5
- package/dist/ai/recipes/nuxt/approvals-inbox.md +3 -3
- package/dist/ai/recipes/nuxt/inline-edit-workspace.md +2 -2
- package/dist/ai/recipes/nuxt/onboarding.md +2 -2
- package/dist/ai/recipes/nuxt/record-form.md +5 -5
- package/dist/ai/recipes/nuxt/records-workspace.md +4 -4
- package/dist/ai/recipes/nuxt/upload-center.md +6 -6
- package/dist/ai/recipes/nuxt/wizard-form.md +5 -5
- package/dist/ai/recipes/vue/approvals-inbox.md +3 -3
- package/dist/ai/recipes/vue/inline-edit-workspace.md +2 -2
- package/dist/ai/recipes/vue/onboarding.md +2 -2
- package/dist/ai/recipes/vue/record-form.md +10 -10
- package/dist/ai/recipes/vue/records-workspace.md +4 -4
- package/dist/ai/recipes/vue/upload-center.md +6 -6
- package/dist/ai/recipes/vue/wizard-form.md +5 -5
- package/dist/ai/source/BbBadge.md +1 -1
- package/dist/ai/source/BbBaseCheckbox.md +1 -1
- package/dist/ai/source/BbBaseColorInput.md +7 -0
- package/dist/ai/source/BbBaseDatePicker.md +5 -5
- package/dist/ai/source/BbBaseDatePickerInput.md +9 -2
- package/dist/ai/source/BbBaseNumberInput.md +7 -0
- package/dist/ai/source/BbBaseRadio.md +1 -1
- package/dist/ai/source/BbBaseRating.md +5 -5
- package/dist/ai/source/BbBaseSelect.md +8 -1
- package/dist/ai/source/BbBaseSlider.md +5 -5
- package/dist/ai/source/BbBaseSwitch.md +1 -1
- package/dist/ai/source/BbBaseTag.md +7 -0
- package/dist/ai/source/BbBaseTextInput.md +7 -0
- package/dist/ai/source/BbBaseTextarea.md +7 -0
- package/dist/ai/source/BbBaseTimePickerInput.md +8 -1
- package/dist/ai/source/BbBreadcrumbs.md +20 -1
- package/dist/ai/source/BbButton.md +2 -2
- package/dist/ai/source/BbColorInput.md +14 -0
- package/dist/ai/source/BbDatePickerInput.md +14 -0
- package/dist/ai/source/BbDialog.md +39 -8
- package/dist/ai/source/BbDropdown.md +1 -1
- package/dist/ai/source/BbDropzone.md +5 -5
- package/dist/ai/source/BbIcon.md +23 -10
- package/dist/ai/source/BbNumberInput.md +14 -0
- package/dist/ai/source/BbOffCanvas.md +50 -28
- package/dist/ai/source/BbPagination.md +2 -2
- package/dist/ai/source/BbPopover.md +12 -1
- package/dist/ai/source/BbSelect.md +14 -0
- package/dist/ai/source/BbSelectPopover.md +45 -7
- package/dist/ai/source/BbSpinner.md +2 -2
- package/dist/ai/source/BbTable.md +11 -11
- package/dist/ai/source/BbTag.md +14 -0
- package/dist/ai/source/BbTextInput.md +14 -0
- package/dist/ai/source/BbTextarea.md +14 -0
- package/dist/ai/source/BbTimePickerInput.md +14 -0
- package/dist/ai/source/BbTooltip.md +57 -10
- package/dist/ai/source/ChipsBox.md +1 -1
- package/dist/ai/source/CommaBox.md +1 -1
- package/dist/ai/source/CommonInputWrapper.md +128 -33
- package/dist/ai/source/GuidesComponent.md +14 -7
- package/dist/ai/source/OptionsContainer.md +1 -1
- package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseColorInput/BbBaseColorInput.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/BbBaseColorInput/types.d.ts +5 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbBaseDatePickerInput/types.d.ts +5 -0
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.d.ts +1 -1
- package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/BbBaseNumberInput/types.d.ts +5 -0
- package/dist/components/BbBaseRadio/BbBaseRadio.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/BbBaseSelect/types.d.ts +5 -0
- package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/BbBaseSwitch/BbBaseSwitch.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseTag/BbBaseTag.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/BbBaseTag/types.d.ts +5 -0
- package/dist/components/BbBaseTextInput/BbBaseTextInput.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/BbBaseTextInput/types.d.ts +5 -0
- package/dist/components/BbBaseTextarea/BbBaseTextarea.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/BbBaseTextarea/types.d.ts +5 -0
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbBaseTimePickerInput/types.d.ts +5 -0
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +71 -71
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbColorInput/types.d.ts +12 -0
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/components/BbDatePickerInput/types.d.ts +12 -0
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +102 -97
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +58 -58
- package/dist/components/BbDropzone/BbDropzone.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +33 -35
- package/dist/components/BbIcon/iconCache.d.ts +30 -0
- package/dist/components/BbIcon/iconCache.js +21 -3
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbNumberInput/types.d.ts +12 -0
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +57 -56
- package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +138 -138
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/components/BbSelect/types.d.ts +12 -0
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +43 -43
- package/dist/components/BbSpinner/BbSpinner.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbSpinner/types.d.ts +1 -1
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/BbTable/BbTableDataRow.js +2 -2
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbTag/types.d.ts +12 -0
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbTextInput/types.d.ts +12 -0
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/BbTextarea/types.d.ts +12 -0
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/components/BbTimePickerInput/types.d.ts +12 -0
- package/dist/components/BbToast/BbToastRegion.vue_vue_type_script_setup_true_lang.js +62 -62
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +81 -78
- package/dist/components/BbTooltip/types.d.ts +8 -1
- package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/CommaBox/CommaBox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/CommonInputWrapper/CommonInputWrapper.vue.d.ts +1 -0
- package/dist/components/CommonInputWrapper/CommonInputWrapper.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/components/CommonInputWrapper/types.d.ts +10 -0
- package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/composables/useConfirm.d.ts +22 -0
- package/dist/composables/useConfirm.js +43 -40
- package/dist/composables/useSafeAreaInternal.js +1 -1
- package/dist/composables/useToast.d.ts +16 -0
- package/dist/composables/useToast.js +20 -16
- package/dist/composables/useViewportWidth.d.ts +20 -6
- package/dist/composables/useViewportWidth.js +8 -7
- package/dist/icon-scan.d.ts +276 -0
- package/dist/icon-scan.js +485 -0
- package/dist/icons-whitelist.d.ts +5 -4
- package/dist/index.d.ts +2 -0
- package/dist/input-variants.d.ts +18 -0
- package/dist/llms-full.txt +2173 -1537
- package/dist/llms-medium.txt +504 -82
- package/dist/llms.txt +1 -1
- package/dist/nuxt-module.d.ts +1 -0
- package/dist/nuxt.js +10 -7
- package/dist/plugin.js +1 -0
- package/dist/runtime/nuxt-plugin.js +2 -1
- package/dist/styles.css +1 -1
- package/dist/types/Config.d.ts +18 -0
- package/dist/types/InputVariant.d.ts +22 -0
- package/dist/utils/cssLayers.d.ts +91 -0
- package/dist/utils/cssLayers.js +43 -0
- package/dist/utils/injectLibraryStyles.d.ts +3 -1
- package/dist/utils/injectLibraryStyles.js +24 -23
- package/dist/validated/BbColorInput.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbNumberInput.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbSelect.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbTag.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbTextInput.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbTextarea.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/index.d.ts +1 -0
- package/dist/vite-plugin.d.ts +89 -12
- package/dist/vite.js +331 -281
- package/llms.txt +1 -1
- package/package.json +7 -5
- package/scripts/lib/ensure-manifest.mjs +28 -5
- package/scripts/lib/eslint-plugin.d.ts +35 -0
- package/scripts/lib/eslint-plugin.mjs +299 -3
- package/scripts/lib/hand-roll-hints.mjs +50 -6
- package/scripts/lib/html-attributes.mjs +42 -0
- package/scripts/lib/mcp-config.mjs +38 -34
- package/scripts/lib/public-type-exports.mjs +246 -0
- package/scripts/lib/validate-bb-markup.mjs +205 -12
|
@@ -1108,7 +1108,7 @@ const today = new Date().toISOString().slice(0, 10);
|
|
|
1108
1108
|
>
|
|
1109
1109
|
<div class="flex items-center justify-between gap-2">
|
|
1110
1110
|
<h3
|
|
1111
|
-
class="text-xs font-semibold
|
|
1111
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1112
1112
|
>
|
|
1113
1113
|
Audience
|
|
1114
1114
|
</h3>
|
|
@@ -1155,7 +1155,7 @@ const today = new Date().toISOString().slice(0, 10);
|
|
|
1155
1155
|
>
|
|
1156
1156
|
<div class="flex items-center justify-between gap-2">
|
|
1157
1157
|
<h3
|
|
1158
|
-
class="text-xs font-semibold
|
|
1158
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1159
1159
|
>
|
|
1160
1160
|
Content
|
|
1161
1161
|
</h3>
|
|
@@ -1186,7 +1186,7 @@ const today = new Date().toISOString().slice(0, 10);
|
|
|
1186
1186
|
>
|
|
1187
1187
|
<div class="flex items-center justify-between gap-2">
|
|
1188
1188
|
<h3
|
|
1189
|
-
class="text-xs font-semibold
|
|
1189
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1190
1190
|
>
|
|
1191
1191
|
Schedule
|
|
1192
1192
|
</h3>
|
|
@@ -1352,7 +1352,7 @@ const isReview = computed(() => ctx.step.value === 'review');
|
|
|
1352
1352
|
<!-- The segment's definition, so "who is in here" is answerable in place. -->
|
|
1353
1353
|
<section class="flex flex-col gap-1.5">
|
|
1354
1354
|
<h3
|
|
1355
|
-
class="text-xs font-semibold
|
|
1355
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1356
1356
|
>
|
|
1357
1357
|
Conditions
|
|
1358
1358
|
</h3>
|
|
@@ -1371,7 +1371,7 @@ const isReview = computed(() => ctx.step.value === 'review');
|
|
|
1371
1371
|
<!-- Recent campaigns to this segment: fatigue check before sending. -->
|
|
1372
1372
|
<section class="flex flex-col gap-1.5">
|
|
1373
1373
|
<h3
|
|
1374
|
-
class="text-xs font-semibold
|
|
1374
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1375
1375
|
>
|
|
1376
1376
|
Recent campaigns
|
|
1377
1377
|
</h3>
|
|
@@ -1174,7 +1174,7 @@ const clearSelection = () => {
|
|
|
1174
1174
|
<!-- Receipt: bigger than the row thumbnail, with a full-size link out. -->
|
|
1175
1175
|
<section class="flex flex-col gap-1.5">
|
|
1176
1176
|
<h3
|
|
1177
|
-
class="text-xs font-semibold
|
|
1177
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1178
1178
|
>
|
|
1179
1179
|
Receipt
|
|
1180
1180
|
</h3>
|
|
@@ -1221,7 +1221,7 @@ const clearSelection = () => {
|
|
|
1221
1221
|
<!-- Activity feed. -->
|
|
1222
1222
|
<section class="flex flex-col gap-1.5">
|
|
1223
1223
|
<h3
|
|
1224
|
-
class="text-xs font-semibold
|
|
1224
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1225
1225
|
>
|
|
1226
1226
|
Activity
|
|
1227
1227
|
</h3>
|
|
@@ -1373,7 +1373,7 @@ const statusLabel = (status: ExpenseStatus) =>
|
|
|
1373
1373
|
<!-- Recent expenses: names drill down again — the stack keeps growing. -->
|
|
1374
1374
|
<section class="flex flex-col gap-1.5">
|
|
1375
1375
|
<h3
|
|
1376
|
-
class="text-xs font-semibold
|
|
1376
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1377
1377
|
>
|
|
1378
1378
|
Recent expenses
|
|
1379
1379
|
</h3>
|
|
@@ -1455,7 +1455,7 @@ const clearSelection = () => {
|
|
|
1455
1455
|
<!-- Description. -->
|
|
1456
1456
|
<section class="flex flex-col gap-1.5">
|
|
1457
1457
|
<h3
|
|
1458
|
-
class="text-xs font-semibold
|
|
1458
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1459
1459
|
>
|
|
1460
1460
|
Description
|
|
1461
1461
|
</h3>
|
|
@@ -1467,7 +1467,7 @@ const clearSelection = () => {
|
|
|
1467
1467
|
<!-- Activity feed. -->
|
|
1468
1468
|
<section class="flex flex-col gap-1.5">
|
|
1469
1469
|
<h3
|
|
1470
|
-
class="text-xs font-semibold
|
|
1470
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1471
1471
|
>
|
|
1472
1472
|
Activity
|
|
1473
1473
|
</h3>
|
|
@@ -769,7 +769,7 @@ const ctx = useOnboardingWorkspace();
|
|
|
769
769
|
</span>
|
|
770
770
|
<span
|
|
771
771
|
v-if="step.status === 'skipped'"
|
|
772
|
-
class="shrink-0 text-xs
|
|
772
|
+
class="shrink-0 text-xs tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
773
773
|
>
|
|
774
774
|
Skipped
|
|
775
775
|
</span>
|
|
@@ -1375,7 +1375,7 @@ const cadences: { value: ReminderCadence; label: string }[] = [
|
|
|
1375
1375
|
<!-- What you'll get. -->
|
|
1376
1376
|
<section class="flex flex-col gap-2.5">
|
|
1377
1377
|
<h3
|
|
1378
|
-
class="text-xs font-semibold
|
|
1378
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1379
1379
|
>
|
|
1380
1380
|
What you'll get
|
|
1381
1381
|
</h3>
|
|
@@ -712,7 +712,7 @@ const trail = computed(() => [
|
|
|
712
712
|
<template>
|
|
713
713
|
<section class="flex flex-col gap-3">
|
|
714
714
|
<h2
|
|
715
|
-
class="text-xs font-semibold
|
|
715
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
716
716
|
>
|
|
717
717
|
Details
|
|
718
718
|
</h2>
|
|
@@ -834,7 +834,7 @@ const ctx = useInvoiceForm();
|
|
|
834
834
|
<section class="flex flex-col gap-3">
|
|
835
835
|
<div class="flex items-center justify-between">
|
|
836
836
|
<h2
|
|
837
|
-
class="text-xs font-semibold
|
|
837
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
838
838
|
>
|
|
839
839
|
Line items
|
|
840
840
|
</h2>
|
|
@@ -926,7 +926,7 @@ const currency = new Intl.NumberFormat('en-US', {
|
|
|
926
926
|
<div class="grid min-w-0 flex-1 grid-cols-3 gap-3">
|
|
927
927
|
<div>
|
|
928
928
|
<p
|
|
929
|
-
class="mb-1 text-right text-xs font-semibold
|
|
929
|
+
class="mb-1 text-right text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
930
930
|
>
|
|
931
931
|
Qty
|
|
932
932
|
</p>
|
|
@@ -934,7 +934,7 @@ const currency = new Intl.NumberFormat('en-US', {
|
|
|
934
934
|
</div>
|
|
935
935
|
<div>
|
|
936
936
|
<p
|
|
937
|
-
class="mb-1 text-right text-xs font-semibold
|
|
937
|
+
class="mb-1 text-right text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
938
938
|
>
|
|
939
939
|
Unit price
|
|
940
940
|
</p>
|
|
@@ -942,7 +942,7 @@ const currency = new Intl.NumberFormat('en-US', {
|
|
|
942
942
|
</div>
|
|
943
943
|
<div>
|
|
944
944
|
<p
|
|
945
|
-
class="mb-1 text-right text-xs font-semibold
|
|
945
|
+
class="mb-1 text-right text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
946
946
|
>
|
|
947
947
|
Amount
|
|
948
948
|
</p>
|
|
@@ -975,7 +975,7 @@ const currency = new Intl.NumberFormat('en-US', {
|
|
|
975
975
|
|
|
976
976
|
<div>
|
|
977
977
|
<p
|
|
978
|
-
class="mb-1 text-xs font-semibold
|
|
978
|
+
class="mb-1 text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
979
979
|
>
|
|
980
980
|
Description
|
|
981
981
|
</p>
|
|
@@ -1024,7 +1024,7 @@ const currency = new Intl.NumberFormat('en-US', {
|
|
|
1024
1024
|
/>
|
|
1025
1025
|
<button
|
|
1026
1026
|
v-else
|
|
1027
|
-
class="w-full
|
|
1027
|
+
class="w-full rounded-[var(--bb-radius)] px-1 py-0.5 text-left whitespace-pre-wrap hover:bg-[color:var(--bb-hover)]"
|
|
1028
1028
|
:class="{
|
|
1029
1029
|
'text-[color:var(--bb-text-muted)]': !line.description,
|
|
1030
1030
|
'text-[color:var(--bb-danger)]': hasError,
|
|
@@ -1409,7 +1409,7 @@ const ctx = useInvoiceForm();
|
|
|
1409
1409
|
<!-- Billing profile: exactly the fields this form negotiates. -->
|
|
1410
1410
|
<section class="flex flex-col gap-1.5">
|
|
1411
1411
|
<h3
|
|
1412
|
-
class="text-xs font-semibold
|
|
1412
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1413
1413
|
>
|
|
1414
1414
|
Billing profile
|
|
1415
1415
|
</h3>
|
|
@@ -1439,7 +1439,7 @@ const ctx = useInvoiceForm();
|
|
|
1439
1439
|
through the route-leave guard. -->
|
|
1440
1440
|
<section class="flex flex-col gap-1.5">
|
|
1441
1441
|
<h3
|
|
1442
|
-
class="text-xs font-semibold
|
|
1442
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1443
1443
|
>
|
|
1444
1444
|
Recent invoices
|
|
1445
1445
|
</h3>
|
|
@@ -1453,7 +1453,7 @@ const ctx = useInvoiceForm();
|
|
|
1453
1453
|
{{ recent.number }}
|
|
1454
1454
|
</BbBaseButton>
|
|
1455
1455
|
<BbBadge variant="outline">{{ recent.status }}</BbBadge>
|
|
1456
|
-
<span class="text-xs
|
|
1456
|
+
<span class="text-xs text-[color:var(--bb-text-muted)] tabular-nums">
|
|
1457
1457
|
{{ currency.format(recent.amount) }}
|
|
1458
1458
|
</span>
|
|
1459
1459
|
</li>
|
|
@@ -1074,7 +1074,7 @@ const clearSelection = () => {
|
|
|
1074
1074
|
<!-- Line items: a real mini-table, not a summary sentence. -->
|
|
1075
1075
|
<section class="flex flex-col gap-1.5">
|
|
1076
1076
|
<h3
|
|
1077
|
-
class="text-xs font-semibold
|
|
1077
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1078
1078
|
>
|
|
1079
1079
|
Line items
|
|
1080
1080
|
</h3>
|
|
@@ -1098,7 +1098,7 @@ const clearSelection = () => {
|
|
|
1098
1098
|
<!-- Payments so far. -->
|
|
1099
1099
|
<section v-if="invoice.payments.length" class="flex flex-col gap-1.5">
|
|
1100
1100
|
<h3
|
|
1101
|
-
class="text-xs font-semibold
|
|
1101
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1102
1102
|
>
|
|
1103
1103
|
Payments
|
|
1104
1104
|
</h3>
|
|
@@ -1121,7 +1121,7 @@ const clearSelection = () => {
|
|
|
1121
1121
|
<!-- Activity feed. -->
|
|
1122
1122
|
<section class="flex flex-col gap-1.5">
|
|
1123
1123
|
<h3
|
|
1124
|
-
class="text-xs font-semibold
|
|
1124
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1125
1125
|
>
|
|
1126
1126
|
Activity
|
|
1127
1127
|
</h3>
|
|
@@ -1242,7 +1242,7 @@ const longDate = (value: string) =>
|
|
|
1242
1242
|
variant — same identity-cell rule as the invoices table. -->
|
|
1243
1243
|
<section class="flex flex-col gap-1.5">
|
|
1244
1244
|
<h3
|
|
1245
|
-
class="text-xs font-semibold
|
|
1245
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1246
1246
|
>
|
|
1247
1247
|
Recent invoices
|
|
1248
1248
|
</h3>
|
|
@@ -1074,7 +1074,7 @@ const formattedSize = computed(() => {
|
|
|
1074
1074
|
class="flex-1"
|
|
1075
1075
|
:model-value="upload.progress"
|
|
1076
1076
|
/>
|
|
1077
|
-
<span class="text-xs
|
|
1077
|
+
<span class="text-xs text-[color:var(--bb-text-muted)] tabular-nums"
|
|
1078
1078
|
>{{ upload.progress }}%</span
|
|
1079
1079
|
>
|
|
1080
1080
|
</div>
|
|
@@ -1508,7 +1508,7 @@ const clearSelection = () => {
|
|
|
1508
1508
|
<section class="flex flex-col gap-1.5">
|
|
1509
1509
|
<div class="flex items-center justify-between">
|
|
1510
1510
|
<h3
|
|
1511
|
-
class="text-xs font-semibold
|
|
1511
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1512
1512
|
>
|
|
1513
1513
|
Extracted fields
|
|
1514
1514
|
</h3>
|
|
@@ -1548,7 +1548,7 @@ const clearSelection = () => {
|
|
|
1548
1548
|
one-click cell as in the table. -->
|
|
1549
1549
|
<section class="flex flex-col gap-1.5">
|
|
1550
1550
|
<h3
|
|
1551
|
-
class="text-xs font-semibold
|
|
1551
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1552
1552
|
>
|
|
1553
1553
|
Details
|
|
1554
1554
|
</h3>
|
|
@@ -1565,7 +1565,7 @@ const clearSelection = () => {
|
|
|
1565
1565
|
<!-- Activity feed. -->
|
|
1566
1566
|
<section class="flex flex-col gap-1.5">
|
|
1567
1567
|
<h3
|
|
1568
|
-
class="text-xs font-semibold
|
|
1568
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1569
1569
|
>
|
|
1570
1570
|
Activity
|
|
1571
1571
|
</h3>
|
|
@@ -1712,7 +1712,7 @@ const longDate = (value: string) =>
|
|
|
1712
1712
|
<!-- Recent receipts: names drill down again — the stack keeps growing. -->
|
|
1713
1713
|
<section class="flex flex-col gap-1.5">
|
|
1714
1714
|
<h3
|
|
1715
|
-
class="text-xs font-semibold
|
|
1715
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1716
1716
|
>
|
|
1717
1717
|
Recent receipts
|
|
1718
1718
|
</h3>
|
|
@@ -1730,7 +1730,7 @@ const longDate = (value: string) =>
|
|
|
1730
1730
|
{{ recent.filename }}
|
|
1731
1731
|
</BbButton>
|
|
1732
1732
|
<BbBadge variant="outline">{{ recent.status }}</BbBadge>
|
|
1733
|
-
<span class="text-xs
|
|
1733
|
+
<span class="text-xs text-[color:var(--bb-text-muted)] tabular-nums">
|
|
1734
1734
|
{{ currency.format(recent.amount) }}
|
|
1735
1735
|
</span>
|
|
1736
1736
|
</li>
|
|
@@ -1042,7 +1042,7 @@ const today = new Date().toISOString().slice(0, 10);
|
|
|
1042
1042
|
>
|
|
1043
1043
|
<div class="flex items-center justify-between gap-2">
|
|
1044
1044
|
<h3
|
|
1045
|
-
class="text-xs font-semibold
|
|
1045
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1046
1046
|
>
|
|
1047
1047
|
Audience
|
|
1048
1048
|
</h3>
|
|
@@ -1089,7 +1089,7 @@ const today = new Date().toISOString().slice(0, 10);
|
|
|
1089
1089
|
>
|
|
1090
1090
|
<div class="flex items-center justify-between gap-2">
|
|
1091
1091
|
<h3
|
|
1092
|
-
class="text-xs font-semibold
|
|
1092
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1093
1093
|
>
|
|
1094
1094
|
Content
|
|
1095
1095
|
</h3>
|
|
@@ -1120,7 +1120,7 @@ const today = new Date().toISOString().slice(0, 10);
|
|
|
1120
1120
|
>
|
|
1121
1121
|
<div class="flex items-center justify-between gap-2">
|
|
1122
1122
|
<h3
|
|
1123
|
-
class="text-xs font-semibold
|
|
1123
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1124
1124
|
>
|
|
1125
1125
|
Schedule
|
|
1126
1126
|
</h3>
|
|
@@ -1286,7 +1286,7 @@ const isReview = computed(() => ctx.step.value === 'review');
|
|
|
1286
1286
|
<!-- The segment's definition, so "who is in here" is answerable in place. -->
|
|
1287
1287
|
<section class="flex flex-col gap-1.5">
|
|
1288
1288
|
<h3
|
|
1289
|
-
class="text-xs font-semibold
|
|
1289
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1290
1290
|
>
|
|
1291
1291
|
Conditions
|
|
1292
1292
|
</h3>
|
|
@@ -1305,7 +1305,7 @@ const isReview = computed(() => ctx.step.value === 'review');
|
|
|
1305
1305
|
<!-- Recent campaigns to this segment: fatigue check before sending. -->
|
|
1306
1306
|
<section class="flex flex-col gap-1.5">
|
|
1307
1307
|
<h3
|
|
1308
|
-
class="text-xs font-semibold
|
|
1308
|
+
class="text-xs font-semibold tracking-wide text-[color:var(--bb-text-muted)] uppercase"
|
|
1309
1309
|
>
|
|
1310
1310
|
Recent campaigns
|
|
1311
1311
|
</h3>
|
|
@@ -166,7 +166,7 @@ const inputAttributes = computed(() => {
|
|
|
166
166
|
// readonly is announced only via aria-readonly.
|
|
167
167
|
'aria-readonly': props.readonly ? true : undefined,
|
|
168
168
|
checked: internalChecked.value,
|
|
169
|
-
class: 'sr-only',
|
|
169
|
+
class: 'bb-sr-only',
|
|
170
170
|
disabled: props.disabled,
|
|
171
171
|
id: props.id,
|
|
172
172
|
indeterminate: props.indeterminate,
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
:loading="props.loading"
|
|
22
22
|
:prepend:icon="props['prepend:icon']"
|
|
23
23
|
:readonly="props.readonly"
|
|
24
|
+
:variant="props.variant"
|
|
24
25
|
@click:clear="$emit('update:modelValue', null)"
|
|
25
26
|
>
|
|
26
27
|
<template #prepend-outer><slot name="prepend-outer"></slot></template>
|
|
@@ -166,6 +167,7 @@ const options = computed<MaskInputOptions>(() => ({
|
|
|
166
167
|
## Types
|
|
167
168
|
|
|
168
169
|
```ts
|
|
170
|
+
import type { InputVariantType } from '@/types/InputVariant';
|
|
169
171
|
import type { IconType } from '@/types/Icon';
|
|
170
172
|
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
171
173
|
|
|
@@ -218,6 +220,11 @@ export type BaseColorInputProps = {
|
|
|
218
220
|
* Display the component in a compact layout.
|
|
219
221
|
*/
|
|
220
222
|
compact?: boolean;
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Visual variant of the field box, forwarded to `CommonInputWrapper`.
|
|
226
|
+
*/
|
|
227
|
+
variant?: InputVariantType;
|
|
221
228
|
/**
|
|
222
229
|
* Disable all interactions.
|
|
223
230
|
*/
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
:class="isCoarse ? `bb-base-date-picker--unit-${homeMode}` : undefined"
|
|
14
14
|
:style="{ '--weeks': weeksInMonth }"
|
|
15
15
|
>
|
|
16
|
-
<span aria-live="polite" class="sr-only">{{ formattedYear }}</span>
|
|
17
|
-
<div aria-live="polite" class="sr-only">{{ cursorAnnouncement }}</div>
|
|
16
|
+
<span aria-live="polite" class="bb-sr-only">{{ formattedYear }}</span>
|
|
17
|
+
<div aria-live="polite" class="bb-sr-only">{{ cursorAnnouncement }}</div>
|
|
18
18
|
<div class="bb-base-date-picker__body">
|
|
19
19
|
<!-- No controls row under `type="year"`: the year list scrolls itself
|
|
20
20
|
(and extends lazily at both ends), so there is nothing for the
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
stroke-width="1.5"
|
|
43
43
|
/>
|
|
44
44
|
</svg>
|
|
45
|
-
<span class="sr-only">{{ previousPageLabel }}</span>
|
|
45
|
+
<span class="bb-sr-only">{{ previousPageLabel }}</span>
|
|
46
46
|
</BbBaseButton>
|
|
47
47
|
|
|
48
48
|
<div class="bb-base-date-picker__nav-center">
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
stroke-width="1.5"
|
|
99
99
|
/>
|
|
100
100
|
</svg>
|
|
101
|
-
<span class="sr-only">{{ nextPageLabel }}</span>
|
|
101
|
+
<span class="bb-sr-only">{{ nextPageLabel }}</span>
|
|
102
102
|
</BbBaseButton>
|
|
103
103
|
</div>
|
|
104
104
|
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
:id="`${globalId}-status`"
|
|
142
142
|
aria-atomic="true"
|
|
143
143
|
aria-live="polite"
|
|
144
|
-
class="sr-only"
|
|
144
|
+
class="bb-sr-only"
|
|
145
145
|
role="status"
|
|
146
146
|
>
|
|
147
147
|
{{ modeAnnouncement }}
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
:loading="props.loading"
|
|
26
26
|
:prepend:icon="props['prepend:icon']"
|
|
27
27
|
:readonly="props.readonly"
|
|
28
|
+
:variant="props.variant"
|
|
28
29
|
@click:clear="onClickClear"
|
|
29
30
|
@focusin="onFocusIn"
|
|
30
31
|
>
|
|
@@ -165,7 +166,7 @@
|
|
|
165
166
|
|
|
166
167
|
<span
|
|
167
168
|
:id="descriptionId"
|
|
168
|
-
class="bb-base-date-picker-input__accessible-description sr-only"
|
|
169
|
+
class="bb-base-date-picker-input__accessible-description bb-sr-only"
|
|
169
170
|
>{{ t('baseDatePickerInput.dateFormat') }} {{ formatHint }}</span
|
|
170
171
|
>
|
|
171
172
|
<template v-if="$slots.suffix" #suffix><slot name="suffix" /></template>
|
|
@@ -1006,7 +1007,7 @@ const timeHintKey = computed(() =>
|
|
|
1006
1007
|
: 'baseDatePickerInput.timeFormat'
|
|
1007
1008
|
);
|
|
1008
1009
|
|
|
1009
|
-
/** Localized format hint used by the placeholder and the sr-only description. */
|
|
1010
|
+
/** Localized format hint used by the placeholder and the bb-sr-only description. */
|
|
1010
1011
|
const formatHint = computed(() => {
|
|
1011
1012
|
// The hint has to describe the fields that are actually there — promising
|
|
1012
1013
|
// DD/MM/YYYY to a two-field month input is worse than no hint at all.
|
|
@@ -1564,6 +1565,7 @@ onBeforeUnmount(() => {
|
|
|
1564
1565
|
## Types
|
|
1565
1566
|
|
|
1566
1567
|
```ts
|
|
1568
|
+
import type { InputVariantType } from '@/types/InputVariant';
|
|
1567
1569
|
import type { DatePickerType } from '@/types/DatePickerType';
|
|
1568
1570
|
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
1569
1571
|
import type { IconType } from '@/types/Icon';
|
|
@@ -1630,6 +1632,11 @@ export type BaseDatePickerInputProps = {
|
|
|
1630
1632
|
*/
|
|
1631
1633
|
compact?: boolean;
|
|
1632
1634
|
|
|
1635
|
+
/**
|
|
1636
|
+
* Visual variant of the field box, forwarded to `CommonInputWrapper`.
|
|
1637
|
+
*/
|
|
1638
|
+
variant?: InputVariantType;
|
|
1639
|
+
|
|
1633
1640
|
/**
|
|
1634
1641
|
* Disables the input, calendar trigger, and popover.
|
|
1635
1642
|
*/
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
:prepend:icon="props['prepend:icon']"
|
|
22
22
|
:readonly="props.readonly"
|
|
23
23
|
:reserve-append-space="props.clearable"
|
|
24
|
+
:variant="props.variant"
|
|
24
25
|
@click:clear="$emit('update:modelValue', null)"
|
|
25
26
|
>
|
|
26
27
|
<template #prepend-outer
|
|
@@ -372,6 +373,7 @@ defineExpose({
|
|
|
372
373
|
## Types
|
|
373
374
|
|
|
374
375
|
```ts
|
|
376
|
+
import type { InputVariantType } from '@/types/InputVariant';
|
|
375
377
|
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
376
378
|
import type { IconType } from '@/types/Icon';
|
|
377
379
|
|
|
@@ -410,6 +412,11 @@ export type BaseNumberInputProps = {
|
|
|
410
412
|
*/
|
|
411
413
|
compact?: boolean;
|
|
412
414
|
|
|
415
|
+
/**
|
|
416
|
+
* Visual variant of the field box, forwarded to `CommonInputWrapper`.
|
|
417
|
+
*/
|
|
418
|
+
variant?: InputVariantType;
|
|
419
|
+
|
|
413
420
|
/**
|
|
414
421
|
* Disable manual input and the exposed increase/decrease helpers.
|
|
415
422
|
*/
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
:role="groupRole"
|
|
21
21
|
>
|
|
22
22
|
<slot name="prepend"></slot>
|
|
23
|
-
<span v-if="showClearHint" :id="clearHintId" class="sr-only">{{
|
|
23
|
+
<span v-if="showClearHint" :id="clearHintId" class="bb-sr-only">{{
|
|
24
24
|
clearHintText
|
|
25
25
|
}}</span>
|
|
26
26
|
<label
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
'bb-base-rating__option--readonly': readonly,
|
|
35
35
|
}"
|
|
36
36
|
>
|
|
37
|
-
<span class="bb-base-rating__label-text sr-only">{{
|
|
37
|
+
<span class="bb-base-rating__label-text bb-sr-only">{{
|
|
38
38
|
option.value == 1
|
|
39
39
|
? t('rating.singleStar', option.value, props.stars).value
|
|
40
40
|
: t('rating.multipleStars', option.value, props.stars).value
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
:aria-describedby="computedAriaDescribedby"
|
|
45
45
|
:autofocus="autofocus && !index"
|
|
46
46
|
:checked="option.checked"
|
|
47
|
-
class="sr-only"
|
|
47
|
+
class="bb-sr-only"
|
|
48
48
|
:disabled="option.disabled"
|
|
49
49
|
:name="option.name"
|
|
50
50
|
:required="required"
|
|
@@ -508,7 +508,7 @@ export const sizeMap: Sizes = {
|
|
|
508
508
|
--color: var(--bb-primary);
|
|
509
509
|
--ring-color: var(--bb-ring);
|
|
510
510
|
--size: 24px;
|
|
511
|
-
--
|
|
511
|
+
--space: 0px;
|
|
512
512
|
|
|
513
513
|
/* Highlights all previous and current stars when hovering the component so it previews stars */
|
|
514
514
|
&:not(.bb-base-rating--disabled):not(.bb-base-rating--readonly):not(
|
|
@@ -558,7 +558,7 @@ export const sizeMap: Sizes = {
|
|
|
558
558
|
}
|
|
559
559
|
|
|
560
560
|
&__inner-container {
|
|
561
|
-
column-gap: var(--
|
|
561
|
+
column-gap: var(--space);
|
|
562
562
|
display: inline-flex;
|
|
563
563
|
flex-wrap: wrap;
|
|
564
564
|
}
|
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
:loading="activatorLoading"
|
|
88
88
|
:prepend:icon="props['prepend:icon']"
|
|
89
89
|
:readonly="readonly"
|
|
90
|
+
:variant="variant"
|
|
90
91
|
@click:clear="
|
|
91
92
|
() => {
|
|
92
93
|
clear();
|
|
@@ -190,7 +191,7 @@
|
|
|
190
191
|
so a visually-hidden copy nested inside it would double every reading.
|
|
191
192
|
The chips keep their ✕ buttons — those are real tab stops and must stay
|
|
192
193
|
named; the activator's name just stops reading them. -->
|
|
193
|
-
<span :id="`${id}__selection`" class="sr-only">{{
|
|
194
|
+
<span :id="`${id}__selection`" class="bb-sr-only">{{
|
|
194
195
|
accessibleSelectionText(text)
|
|
195
196
|
}}</span>
|
|
196
197
|
<template #append-outer
|
|
@@ -462,6 +463,7 @@ const hiddenInputs = computed(() =>
|
|
|
462
463
|
## Types
|
|
463
464
|
|
|
464
465
|
```ts
|
|
466
|
+
import type { InputVariantType } from '@/types/InputVariant';
|
|
465
467
|
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
466
468
|
import type { IconType } from '@/types/Icon';
|
|
467
469
|
import type { BbSelectResolvedOption } from '../BbSelectPopover/types';
|
|
@@ -532,6 +534,11 @@ export type BaseSelectProps<Item = any> = {
|
|
|
532
534
|
*/
|
|
533
535
|
compact?: boolean;
|
|
534
536
|
|
|
537
|
+
/**
|
|
538
|
+
* Visual variant of the field box, forwarded to `CommonInputWrapper`.
|
|
539
|
+
*/
|
|
540
|
+
variant?: InputVariantType;
|
|
541
|
+
|
|
535
542
|
/**
|
|
536
543
|
* Additional dependencies that trigger item reloading when changed.
|
|
537
544
|
* @defaultValue `[]`
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<input
|
|
31
31
|
:id="id"
|
|
32
32
|
ref="hiddenInput"
|
|
33
|
-
class="sr-only"
|
|
33
|
+
class="bb-sr-only"
|
|
34
34
|
:disabled="disabled"
|
|
35
35
|
:name="name"
|
|
36
36
|
:readonly="true"
|
|
@@ -132,10 +132,10 @@
|
|
|
132
132
|
<!-- Localized qualifiers referenced by the range thumbs' aria-labelledby
|
|
133
133
|
so the two identical role=slider spans are distinguishable to AT. -->
|
|
134
134
|
<template v-if="props.range && props.id">
|
|
135
|
-
<span :id="`${props.id}__thumb_label_lower`" class="sr-only">{{
|
|
135
|
+
<span :id="`${props.id}__thumb_label_lower`" class="bb-sr-only">{{
|
|
136
136
|
t('slider.minimumThumb').value
|
|
137
137
|
}}</span>
|
|
138
|
-
<span :id="`${props.id}__thumb_label_higher`" class="sr-only">{{
|
|
138
|
+
<span :id="`${props.id}__thumb_label_higher`" class="bb-sr-only">{{
|
|
139
139
|
t('slider.maximumThumb').value
|
|
140
140
|
}}</span>
|
|
141
141
|
</template>
|
|
@@ -181,11 +181,11 @@ const { t } = useLocale();
|
|
|
181
181
|
|
|
182
182
|
/**
|
|
183
183
|
* `role="slider"` is name-from-author: the container's visible `<label>`
|
|
184
|
-
* targets the sr-only hidden input (`for`/`id`), which never names these
|
|
184
|
+
* targets the bb-sr-only hidden input (`for`/`id`), which never names these
|
|
185
185
|
* sibling thumb spans — without an explicit reference the focused thumb
|
|
186
186
|
* announces as an unnamed "slider, N". The wrapped layer (BbSlider →
|
|
187
187
|
* BbBaseInputContainer) renders that label as `${id}__label`, so the thumbs
|
|
188
|
-
* point at it; range mode appends a localized sr-only qualifier so the two
|
|
188
|
+
* point at it; range mode appends a localized bb-sr-only qualifier so the two
|
|
189
189
|
* thumbs are distinguishable. Bare BbBaseSlider without a container keeps its
|
|
190
190
|
* documented hole: the reference targets nothing and the name stays empty.
|
|
191
191
|
*/
|
|
@@ -158,7 +158,7 @@ const inputAttributes = computed(() => {
|
|
|
158
158
|
// readonly is NOT disabled — native `disabled` conveys disabled.
|
|
159
159
|
'aria-readonly': props.readonly ? true : undefined,
|
|
160
160
|
checked: internalChecked.value,
|
|
161
|
-
class: 'sr-only',
|
|
161
|
+
class: 'bb-sr-only',
|
|
162
162
|
disabled: props.disabled,
|
|
163
163
|
id: props.id,
|
|
164
164
|
indeterminate: props.indeterminate,
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
:loading="loading"
|
|
27
27
|
:prepend:icon="props['prepend:icon']"
|
|
28
28
|
:readonly="readonly"
|
|
29
|
+
:variant="variant"
|
|
29
30
|
@click="onWrapperClick"
|
|
30
31
|
@click:clear="onClear"
|
|
31
32
|
@focusin="onWrapperFocusIn"
|
|
@@ -413,6 +414,7 @@ onBeforeUnmount(() => {
|
|
|
413
414
|
## Types
|
|
414
415
|
|
|
415
416
|
```ts
|
|
417
|
+
import type { InputVariantType } from '@/types/InputVariant';
|
|
416
418
|
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
417
419
|
import type { IconType } from '@/types/Icon';
|
|
418
420
|
|
|
@@ -466,6 +468,11 @@ export type BaseTagProps = {
|
|
|
466
468
|
*/
|
|
467
469
|
compact?: boolean;
|
|
468
470
|
|
|
471
|
+
/**
|
|
472
|
+
* Visual variant of the field box, forwarded to `CommonInputWrapper`.
|
|
473
|
+
*/
|
|
474
|
+
variant?: InputVariantType;
|
|
475
|
+
|
|
469
476
|
/**
|
|
470
477
|
* Disable all interactions with the tag input.
|
|
471
478
|
*/
|