bitboss-ui 3.0.0-beta.2 → 3.0.0-beta.21
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 +72 -33
- package/dist/ai/BbAccordion.md +3 -3
- package/dist/ai/BbAlert.md +9 -5
- package/dist/ai/BbAsterisk.md +17 -0
- package/dist/ai/BbAvatar.md +12 -3
- package/dist/ai/BbBadge.md +15 -10
- package/dist/ai/BbBadgeButton.md +16 -16
- package/dist/ai/BbBaseButton.md +16 -16
- package/dist/ai/BbBaseCheckbox.md +8 -8
- package/dist/ai/BbBaseCheckboxGroup.md +13 -13
- package/dist/ai/BbBaseCheckboxIcon.md +26 -9
- package/dist/ai/BbBaseColorInput.md +11 -11
- package/dist/ai/BbBaseDatePicker.md +6 -6
- package/dist/ai/BbBaseDatePickerInput.md +15 -15
- package/dist/ai/BbBaseInputContainer.md +12 -12
- package/dist/ai/BbBaseNumberInput.md +8 -8
- package/dist/ai/BbBaseRadio.md +5 -5
- package/dist/ai/BbBaseRadioGroup.md +7 -7
- package/dist/ai/BbBaseRadioIcon.md +25 -9
- package/dist/ai/BbBaseRating.md +5 -5
- package/dist/ai/BbBaseSelect.md +22 -21
- package/dist/ai/BbBaseSlider.md +9 -9
- package/dist/ai/BbBaseSwitch.md +8 -8
- package/dist/ai/BbBaseSwitchGroup.md +13 -13
- package/dist/ai/BbBaseSwitchIcon.md +28 -10
- package/dist/ai/BbBaseTag.md +10 -10
- package/dist/ai/BbBaseTextInput.md +9 -9
- package/dist/ai/BbBaseTextarea.md +9 -9
- package/dist/ai/BbBaseTimePickerInput.md +13 -13
- package/dist/ai/BbBreadcrumbs.md +2 -2
- package/dist/ai/BbButton.md +15 -15
- package/dist/ai/BbCheckbox.md +18 -17
- package/dist/ai/BbCheckboxGroup.md +15 -14
- package/dist/ai/BbCollapsible.md +11 -9
- package/dist/ai/BbColorInput.md +15 -15
- package/dist/ai/BbColorPalette.md +12 -6
- package/dist/ai/BbConfirm.md +12 -5
- package/dist/ai/BbDatePicker.md +13 -13
- package/dist/ai/BbDatePickerInput.md +20 -20
- package/dist/ai/BbDialog.md +78 -12
- package/dist/ai/BbDropdown.md +132 -22
- package/dist/ai/BbDropdownButton.md +12 -12
- package/dist/ai/BbDropdownGroup.md +1 -1
- package/dist/ai/BbDropzone.md +4 -4
- package/dist/ai/BbForm.md +49 -14
- package/dist/ai/BbIcon.md +6 -0
- package/dist/ai/BbIndicator.md +5 -5
- package/dist/ai/BbNumberInput.md +11 -11
- package/dist/ai/BbOffCanvas.md +90 -20
- package/dist/ai/BbPagination.md +3 -3
- package/dist/ai/BbPopover.md +32 -17
- package/dist/ai/BbProgress.md +7 -4
- package/dist/ai/BbRadio.md +16 -15
- package/dist/ai/BbRadioGroup.md +20 -17
- package/dist/ai/BbRating.md +11 -11
- package/dist/ai/BbSelect.md +138 -37
- package/dist/ai/BbSelectPopover.md +40 -41
- package/dist/ai/BbSlider.md +37 -22
- package/dist/ai/BbSmoothHeight.md +1 -1
- package/dist/ai/BbSwitch.md +25 -10
- package/dist/ai/BbSwitchGroup.md +17 -14
- package/dist/ai/BbTable.md +920 -109
- package/dist/ai/BbTabs.md +28 -14
- package/dist/ai/BbTabsList.md +1 -1
- package/dist/ai/BbTabsPanes.md +1 -1
- package/dist/ai/BbTabsRoot.md +10 -10
- package/dist/ai/BbTag.md +14 -14
- package/dist/ai/BbTextInput.md +16 -15
- package/dist/ai/BbTextarea.md +13 -13
- package/dist/ai/BbTimePicker.md +10 -10
- package/dist/ai/BbTimePickerInput.md +17 -17
- package/dist/ai/BbToast.md +1 -1
- package/dist/ai/BbToastPortal.md +1 -1
- package/dist/ai/BbTooltip.md +12 -10
- package/dist/ai/BbTree.md +1 -1
- package/dist/ai/ChipsBox.md +1 -1
- package/dist/ai/CommonInputWrapper.md +10 -10
- package/dist/ai/CommonPopover.md +6 -6
- package/dist/ai/FlatListBox.md +5 -5
- package/dist/ai/GroupedListBox.md +5 -5
- package/dist/ai/ListBox.md +4 -4
- package/dist/ai/OptionsContainer.md +4 -4
- package/dist/ai/changelog.json +128 -2
- package/dist/ai/components.json +917 -100
- package/dist/ai/composables/useBbConfig.md +72 -11
- package/dist/ai/composables/useConfirm.md +5 -3
- package/dist/ai/guides/ai-router.md +9 -4
- package/dist/ai/guides/component-picker.md +18 -18
- package/dist/ai/guides/design-language.md +14 -14
- package/dist/ai/guides/design-tokens.md +25 -18
- package/dist/ai/guides/fetch-items-playbook.md +1 -1
- package/dist/ai/guides/icons-policy.md +11 -5
- package/dist/ai/guides/installation-and-plugin-setup.md +85 -23
- package/dist/ai/guides/migration/components/bb-checkbox-group.md +30 -0
- package/dist/ai/guides/migration/components/bb-checkbox.md +37 -3
- package/dist/ai/guides/migration/components/bb-collapsible.md +5 -5
- package/dist/ai/guides/migration/components/bb-dialog.md +62 -34
- package/dist/ai/guides/migration/components/bb-offcanvas.md +29 -13
- package/dist/ai/guides/migration/components/bb-rating.md +8 -2
- package/dist/ai/guides/migration/components/bb-select.md +5 -2
- package/dist/ai/guides/migration/components/bb-table.md +560 -28
- package/dist/ai/guides/migration/components/bb-text-input.md +6 -6
- package/dist/ai/guides/migration/v2-to-v3.md +260 -89
- package/dist/ai/guides/ssr-prefill.md +120 -0
- package/dist/ai/index.md +10 -9
- package/dist/ai/recipes/inertia/approvals-inbox.md +0 -1
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +0 -1
- package/dist/ai/recipes/inertia/layout-scaffold.md +5 -1
- package/dist/ai/recipes/inertia/ownership-atlas.md +49 -29
- package/dist/ai/recipes/inertia/record-form.md +0 -1
- package/dist/ai/recipes/inertia/records-workspace.md +26 -8
- package/dist/ai/recipes/inertia/upload-center.md +0 -1
- package/dist/ai/recipes/nuxt/approvals-inbox.md +0 -1
- package/dist/ai/recipes/nuxt/inline-edit-workspace.md +0 -1
- package/dist/ai/recipes/nuxt/layout-scaffold.md +5 -1
- package/dist/ai/recipes/nuxt/record-form.md +0 -1
- package/dist/ai/recipes/nuxt/records-workspace.md +26 -8
- package/dist/ai/recipes/nuxt/upload-center.md +0 -1
- package/dist/ai/recipes/vue/approvals-inbox.md +0 -1
- package/dist/ai/recipes/vue/inline-edit-workspace.md +0 -1
- package/dist/ai/recipes/vue/layout-scaffold.md +5 -1
- package/dist/ai/recipes/vue/records-workspace.md +26 -8
- package/dist/ai/recipes/vue/upload-center.md +0 -1
- package/dist/ai/source/BbAlert.md +60 -2
- package/dist/ai/source/BbAvatar.md +3 -3
- package/dist/ai/source/BbBadge.md +60 -15
- package/dist/ai/source/BbBadgeButton.md +8 -2
- package/dist/ai/source/BbBaseButton.md +3 -1
- package/dist/ai/source/BbBaseCheckboxGroup.md +6 -2
- package/dist/ai/source/BbBaseDatePicker.md +3 -1
- package/dist/ai/source/BbBaseDatePickerInput.md +5 -1
- package/dist/ai/source/BbBaseInputContainer.md +52 -1
- package/dist/ai/source/BbBaseRadioGroup.md +4 -0
- package/dist/ai/source/BbBaseRating.md +3 -1
- package/dist/ai/source/BbBaseSelect.md +71 -16
- package/dist/ai/source/BbBaseSwitchGroup.md +4 -0
- package/dist/ai/source/BbBaseTimePickerInput.md +5 -1
- package/dist/ai/source/BbBreadcrumbs.md +31 -0
- package/dist/ai/source/BbButton.md +51 -24
- package/dist/ai/source/BbCheckbox.md +15 -1
- package/dist/ai/source/BbCheckboxGroup.md +2 -1
- package/dist/ai/source/BbCollapsible.md +7 -1
- package/dist/ai/source/BbColorInput.md +3 -4
- package/dist/ai/source/BbColorPalette.md +3 -4
- package/dist/ai/source/BbDatePicker.md +5 -1
- package/dist/ai/source/BbDatePickerInput.md +5 -1
- package/dist/ai/source/BbDialog.md +175 -19
- package/dist/ai/source/BbDropdown.md +376 -69
- package/dist/ai/source/BbDropdownGroup.md +330 -59
- package/dist/ai/source/BbForm.md +93 -5
- package/dist/ai/source/BbIcon.md +46 -36
- package/dist/ai/source/BbNumberInput.md +3 -4
- package/dist/ai/source/BbOffCanvas.md +474 -194
- package/dist/ai/source/BbPopover.md +24 -17
- package/dist/ai/source/BbProgress.md +2 -2
- package/dist/ai/source/BbRadio.md +15 -1
- package/dist/ai/source/BbRadioGroup.md +3 -1
- package/dist/ai/source/BbSelect.md +50 -2
- package/dist/ai/source/BbSelectPopover.md +171 -23
- package/dist/ai/source/BbSlider.md +3 -4
- package/dist/ai/source/BbSwitch.md +15 -1
- package/dist/ai/source/BbSwitchGroup.md +8 -5
- package/dist/ai/source/BbTable.md +5092 -1446
- package/dist/ai/source/BbTabs.md +6 -7
- package/dist/ai/source/BbTabsList.md +6 -7
- package/dist/ai/source/BbTabsPanes.md +6 -7
- package/dist/ai/source/BbTabsRoot.md +6 -7
- package/dist/ai/source/BbTag.md +3 -4
- package/dist/ai/source/BbTextInput.md +3 -4
- package/dist/ai/source/BbTextarea.md +3 -4
- package/dist/ai/source/BbTimePicker.md +4 -1
- package/dist/ai/source/BbTimePickerInput.md +5 -1
- package/dist/ai/source/BbToast.md +3 -1
- package/dist/ai/source/BbTooltip.md +5 -1
- package/dist/ai/source/CommonInputWrapper.md +4 -0
- package/dist/ai/source/CommonPopover.md +6 -0
- package/dist/ai/source/FlatListBox.md +11 -5
- package/dist/ai/source/GroupedListBox.md +7 -5
- package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/components/BbAlert/types.d.ts +10 -1
- package/dist/components/BbAvatar/BbAvatar.vue.d.ts +1 -1
- package/dist/components/BbAvatar/BbAvatar.vue_vue_type_script_setup_true_lang.js +33 -33
- package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +22 -16
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +36 -15
- package/dist/components/BbBadge/badgeButtonContext.d.ts +21 -8
- package/dist/components/BbBadge/types.d.ts +8 -2
- package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +47 -47
- package/dist/components/BbBaseButton/RouterComponent.vue_vue_type_script_setup_true_lang.js +14 -14
- package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue_vue_type_script_setup_true_lang.js +30 -28
- package/dist/components/BbBaseCheckboxGroup/types.d.ts +2 -2
- package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +167 -167
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.d.ts +9 -9
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +78 -78
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue_vue_type_script_setup_true_lang.js +64 -64
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.d.ts +1 -1
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +138 -138
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue_vue_type_script_setup_true_lang.js +24 -22
- package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +40 -40
- package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +74 -65
- package/dist/components/BbBaseSelect/types.d.ts +22 -0
- package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue_vue_type_script_setup_true_lang.js +30 -28
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.d.ts +1 -1
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +104 -104
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +35 -35
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +85 -81
- package/dist/components/BbCheckboxGroup/types.d.ts +2 -1
- package/dist/components/BbCollapsible/types.d.ts +7 -1
- package/dist/components/BbColorInput/BbColorInput.vue.d.ts +1 -1
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +18 -18
- package/dist/components/BbColorPalette/BbColorPalette.vue.d.ts +2 -2
- package/dist/components/BbColorPalette/BbColorPalette.vue_vue_type_script_setup_true_lang.js +50 -50
- package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +17 -17
- package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
- package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +100 -100
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +21 -21
- package/dist/components/BbDialog/BbDialog.vue.d.ts +1 -1
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +133 -107
- package/dist/components/BbDialog/types.d.ts +29 -2
- package/dist/components/BbDropdown/AdaptiveDropdown.vue.d.ts +2 -0
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +99 -100
- package/dist/components/BbDropdown/BbDropdown.vue.d.ts +2 -2
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +208 -201
- package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +225 -208
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +21 -21
- package/dist/components/BbDropdown/types.d.ts +20 -5
- package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +46 -46
- package/dist/components/BbIcon/iconCache.d.ts +33 -0
- package/dist/components/BbIcon/iconCache.js +17 -0
- package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +1 -1
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +15 -15
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +254 -208
- package/dist/components/BbOffCanvas/types.d.ts +30 -5
- package/dist/components/BbPagination/BbPagination.vue.d.ts +1 -1
- package/dist/components/BbPopover/BbPopover.vue.d.ts +2 -2
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +149 -146
- package/dist/components/BbPopover/types.d.ts +3 -2
- package/dist/components/BbRadioGroup/types.d.ts +3 -1
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +27 -23
- package/dist/components/BbSelect/types.d.ts +32 -0
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +221 -213
- package/dist/components/BbSlider/BbSlider.vue.d.ts +1 -1
- package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +20 -20
- package/dist/components/BbTable/BbTable.vue.d.ts +10 -4
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1433 -600
- package/dist/components/BbTable/BbTableDataRow.d.ts +162 -0
- package/dist/components/BbTable/BbTableDataRow.js +136 -0
- package/dist/components/BbTable/BbTableExpandRow.d.ts +73 -0
- package/dist/components/BbTable/BbTableExpandRow.js +52 -0
- package/dist/components/BbTable/types.d.ts +324 -111
- package/dist/components/BbTable/utils.d.ts +92 -4
- package/dist/components/BbTable/utils.js +71 -36
- package/dist/components/BbTabs/types.d.ts +0 -8
- package/dist/components/BbTag/BbTag.vue.d.ts +1 -1
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +18 -18
- package/dist/components/BbTextInput/BbTextInput.vue.d.ts +1 -1
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +18 -18
- package/dist/components/BbTextarea/BbTextarea.vue.d.ts +1 -1
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +54 -54
- package/dist/components/BbTimePicker/BbTimePicker.vue.d.ts +1 -1
- package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +80 -80
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +61 -61
- package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +17 -17
- package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +13 -13
- package/dist/components/BbTooltip/types.d.ts +5 -1
- package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +17 -17
- package/dist/components/ClearableButton/ClearableButton.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +83 -83
- package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +56 -56
- package/dist/composables/useBaseOptions.js +30 -20
- package/dist/composables/useBbConfig.d.ts +27 -6
- package/dist/composables/useBbConfig.js +8 -2
- package/dist/composables/useConfig.d.ts +59 -0
- package/dist/composables/useConfig.js +9 -0
- package/dist/composables/useItemsGetter.d.ts +11 -0
- package/dist/composables/useItemsGetter.js +44 -18
- package/dist/composables/useLocale.js +10 -7
- package/dist/composables/useMobile.js +5 -5
- package/dist/composables/usePrefill.d.ts +21 -2
- package/dist/composables/usePrefill.js +25 -19
- package/dist/composables/useSsrState.d.ts +20 -0
- package/dist/composables/useSsrState.js +13 -0
- package/dist/composables/useTableWidthContext.d.ts +24 -4
- package/dist/composables/useTableWidthContext.js +31 -28
- package/dist/composables/useToast.js +5 -5
- package/dist/deprecation/ai-deprecations.json.d.ts +121 -11
- package/dist/deprecation/ai-deprecations.json.js +1 -1
- package/dist/directives/bbDropdown.d.ts +15 -4
- package/dist/directives/bbDropdown.js +31 -9
- package/dist/directives/createPopoverDirective.d.ts +62 -0
- package/dist/directives/createPopoverDirective.js +63 -23
- package/dist/i18n/locales/cs.json +4 -1
- package/dist/i18n/locales/da.json +4 -1
- package/dist/i18n/locales/de.json +4 -1
- package/dist/i18n/locales/el.json +4 -1
- package/dist/i18n/locales/en.json +4 -1
- package/dist/i18n/locales/es.json +4 -1
- package/dist/i18n/locales/fi.json +4 -1
- package/dist/i18n/locales/fr.json +4 -1
- package/dist/i18n/locales/hu.json +4 -1
- package/dist/i18n/locales/it.json +4 -1
- package/dist/i18n/locales/ja.json +4 -1
- package/dist/i18n/locales/ko.json +4 -1
- package/dist/i18n/locales/nb.json +4 -1
- package/dist/i18n/locales/nl.json +4 -1
- package/dist/i18n/locales/pl.json +4 -1
- package/dist/i18n/locales/pt.json +4 -1
- package/dist/i18n/locales/ro.json +4 -1
- package/dist/i18n/locales/ru.json +4 -1
- package/dist/i18n/locales/sv.json +4 -1
- package/dist/i18n/locales/tr.json +4 -1
- package/dist/i18n/locales/uk.json +4 -1
- package/dist/i18n/locales/zh-cn.json +4 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.js +69 -67
- package/dist/llms-full.txt +3997 -1458
- package/dist/llms-medium.txt +140 -73
- package/dist/llms.txt +7 -6
- package/dist/locale-blueprint.json +4 -1
- package/dist/nuxt-auto-imports.d.ts +100 -0
- package/dist/nuxt-auto-imports.js +55 -0
- package/dist/nuxt-module.d.ts +22 -1
- package/dist/nuxt.js +22 -8
- package/dist/plugin.d.ts +10 -1
- package/dist/plugin.js +20 -19
- package/dist/runtime/nuxt-plugin.js +28 -21
- package/dist/styles.css +1 -1
- package/dist/utilities/misc/listboxMetrics.d.ts +3 -3
- package/dist/utilities/misc/listboxMetrics.js +2 -2
- package/dist/utilities/misc/ssrStateInjectionKey.d.ts +42 -0
- package/dist/utilities/misc/ssrStateInjectionKey.js +4 -0
- package/dist/validated/BbForm.vue_vue_type_script_setup_true_lang.js +45 -27
- package/dist/validated/BbSelect.vue.d.ts +2 -0
- package/dist/validated/BbSelect.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/useValidatedField.js +25 -23
- package/dist/vite.js +7 -3
- package/llms.txt +8 -7
- package/package.json +2 -2
- package/scripts/lib/eslint-plugin.d.ts +19 -1
- package/scripts/lib/eslint-plugin.mjs +155 -14
- package/scripts/lib/html-attributes.mjs +91 -0
- package/scripts/lib/validate-bb-markup.mjs +59 -11
- package/dist/assets/svgs/sort.svg_raw.js +0 -4
- package/dist/components/BbBadge/BadgeAppendIcon.vue.d.ts +0 -3
- package/dist/components/BbBadge/BadgeAppendIcon.vue.js +0 -5
- package/dist/components/BbBadge/BadgeAppendIcon.vue_vue_type_script_setup_true_lang.js +0 -22
package/dist/ai/BbOffCanvas.md
CHANGED
|
@@ -161,13 +161,68 @@ header and footer stay pinned.
|
|
|
161
161
|
|
|
162
162
|
- Use the `title` slot to restyle just the title text — it stays wired to
|
|
163
163
|
`aria-labelledby` and receives the `title` prop as `text`.
|
|
164
|
-
-
|
|
165
|
-
the
|
|
166
|
-
|
|
167
|
-
`
|
|
164
|
+
- **`description`** adds one muted line under the title — the panel's subtitle,
|
|
165
|
+
and the only thing `aria-describedby` points at. Keep it to a sentence; the
|
|
166
|
+
body is deliberately not described. The `description` slot takes markup and
|
|
167
|
+
receives the prop as `text`. A panel without one keeps its original
|
|
168
|
+
single-row header.
|
|
169
|
+
- The **`header` slot** replaces the whole header section; it receives
|
|
170
|
+
`titleId`, `title` and `close`, so you can build a custom header and still
|
|
171
|
+
keep the accessible name wired through `titleId`. `BbDialog` supports the
|
|
172
|
+
same slot with the same payload, and forwards it to its adaptive sheet — the
|
|
173
|
+
two surfaces are symmetric here.
|
|
168
174
|
- Omitting `title` (and the `header` slot) removes the header entirely — you
|
|
169
175
|
then own the accessible name.
|
|
170
176
|
|
|
177
|
+
**A described panel (via the #description slot)**
|
|
178
|
+
|
|
179
|
+
```vue
|
|
180
|
+
<template>
|
|
181
|
+
<BbButton
|
|
182
|
+
prepend:icon="lucide:user-plus"
|
|
183
|
+
variant="outline"
|
|
184
|
+
@click="open = true"
|
|
185
|
+
>
|
|
186
|
+
Invite teammate
|
|
187
|
+
</BbButton>
|
|
188
|
+
<BbOffCanvas v-model="open" side="right" title="Invite teammate">
|
|
189
|
+
<!-- The slot takes markup where the prop would only take a string. -->
|
|
190
|
+
<template #description>
|
|
191
|
+
They join the <strong>Northwind</strong> workspace as a viewer.
|
|
192
|
+
</template>
|
|
193
|
+
<div class="grid gap-3">
|
|
194
|
+
<BbTextInput
|
|
195
|
+
v-model="email"
|
|
196
|
+
compact
|
|
197
|
+
label="Email"
|
|
198
|
+
placeholder="ada@northwind.co"
|
|
199
|
+
type="email"
|
|
200
|
+
/>
|
|
201
|
+
</div>
|
|
202
|
+
<template #footer>
|
|
203
|
+
<div class="flex justify-end gap-2">
|
|
204
|
+
<BbButton variant="ghost" @click="open = false">Cancel</BbButton>
|
|
205
|
+
<BbButton
|
|
206
|
+
:disabled="!email.trim()"
|
|
207
|
+
variant="primary"
|
|
208
|
+
@click="open = false"
|
|
209
|
+
>
|
|
210
|
+
Send invite
|
|
211
|
+
</BbButton>
|
|
212
|
+
</div>
|
|
213
|
+
</template>
|
|
214
|
+
</BbOffCanvas>
|
|
215
|
+
</template>
|
|
216
|
+
|
|
217
|
+
<script setup lang="ts">
|
|
218
|
+
import { ref } from 'vue';
|
|
219
|
+
import { BbButton, BbOffCanvas, BbTextInput } from 'bitboss-ui';
|
|
220
|
+
|
|
221
|
+
const open = ref(false);
|
|
222
|
+
const email = ref('');
|
|
223
|
+
</script>
|
|
224
|
+
```
|
|
225
|
+
|
|
171
226
|
### A filters drawer
|
|
172
227
|
|
|
173
228
|
The archetypal off-canvas: search + toggles in the `default` slot, Apply/Reset
|
|
@@ -566,15 +621,26 @@ Set `draggable` to let the user flick the panel toward its edge to dismiss; a
|
|
|
566
621
|
grab handle appears on the inner edge as the affordance. A draggable,
|
|
567
622
|
`auto`-sized bottom panel is the canonical mobile sheet.
|
|
568
623
|
|
|
569
|
-
The gesture is
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
624
|
+
The gesture is powered by VueUse `useSwipe` with a **fixed pixel threshold**
|
|
625
|
+
(not a fraction of the panel height), so a tall filters sheet and a short menu
|
|
626
|
+
dismiss with the same motion:
|
|
627
|
+
|
|
628
|
+
- Swiping **about 50px toward the exit edge** dismisses it; a shorter swipe
|
|
629
|
+
springs back. Motion matches Vaul: the sheet exits on inline `transform`
|
|
630
|
+
(iOS easing, 500ms) while the backdrop fades on the same clock. Styles stay
|
|
631
|
+
frozen off-screen until the normal close wait finishes, so `dialog.close()`
|
|
632
|
+
does not flash the panel or jump the blur. Escape / backdrop / × still use
|
|
633
|
+
the open/close `translate` path.
|
|
634
|
+
- Only travel on the dismiss axis counts — a mostly horizontal flick on a short
|
|
635
|
+
bottom sheet does not latch or close it.
|
|
636
|
+
- On a vertical sheet with a scrollable body, the swipe **hands off to native
|
|
637
|
+
scrolling** first — you only drag the sheet once every scrollable ancestor
|
|
638
|
+
under the finger is at its dismiss edge (latched at touchstart, so a row
|
|
639
|
+
button and the empty panel chrome behave the same). A downward flick that
|
|
640
|
+
starts by scrolling _into_ the list stays a scroll for the rest of the
|
|
641
|
+
gesture; once the sheet is following the finger, reversing back to rest
|
|
642
|
+
does not start a scroll — lift to cancel.
|
|
643
|
+
- `persistent` / `disabled` still win: a swipe that would dismiss instead plays
|
|
578
644
|
the "deny" nudge and springs back.
|
|
579
645
|
|
|
580
646
|
**A draggable bottom sheet**
|
|
@@ -912,6 +978,8 @@ The panel is a native `<dialog>` opened with `showModal()` — the same mechanic
|
|
|
912
978
|
- The panel is a true modal (`showModal()`): focus is contained within it, the
|
|
913
979
|
page behind is inert, and focus returns to the trigger when it closes.
|
|
914
980
|
`focus-target` only chooses where focus **starts**.
|
|
981
|
+
- `description` is what `aria-describedby` points at, so the panel announces
|
|
982
|
+
its purpose and not just its name.
|
|
915
983
|
- The header close button carries a localized `aria-label` out of the box
|
|
916
984
|
(`config.locale`).
|
|
917
985
|
- Draggable dismissal is a convenience, not the only way out — the close button,
|
|
@@ -928,20 +996,21 @@ The panel is a native `<dialog>` opened with `showModal()` — the same mechanic
|
|
|
928
996
|
|
|
929
997
|
| Prop | Type | Default | Required | Description |
|
|
930
998
|
| --- | --- | --- | --- | --- |
|
|
931
|
-
| `
|
|
932
|
-
| `
|
|
933
|
-
| `
|
|
999
|
+
| `description` | `string \| undefined` | | | One short line under the title, in the header — the shadcn `DialogDescription` shape: same block as the title, lower hierarchy, muted. It is also what `aria-describedby` points at. That wiring was dropped in v3 along with the old `descripti… |
|
|
1000
|
+
| `disabled` | `boolean \| undefined` | `false` | | Disable EVERY user-initiated dismissal: backdrop click, Escape, drag-to-dismiss AND the header close (×) button (denied attempts play the deny nudge). Use it while an operation is in flight (e.g. a save) so the drawer cannot be dismissed mi… |
|
|
1001
|
+
| `draggable` | `boolean \| undefined` | `false` | | Enable drag-to-dismiss via VueUse `useSwipe` (fixed ~50px threshold toward the exit edge, including from the scrollable body once it is at its scroll edge). A grab handle on the inner edge is the visual cue. When `false`, the panel is stati… |
|
|
1002
|
+
| `eager` | `boolean \| undefined` | `false` | | Render offcanvas content immediately instead of waiting for the first open. |
|
|
934
1003
|
| `focusTarget` | `string \| undefined` | | | CSS selector of the element to focus after opening. Defaults to the first tabbable element. |
|
|
935
1004
|
| `fullscreen` | `boolean \| "mobile" \| undefined` | | | Display the offcanvas fullscreen. Use `'mobile'` to restrict fullscreen to small devices. |
|
|
936
|
-
| `hideClose` | `boolean \| undefined` |
|
|
1005
|
+
| `hideClose` | `boolean \| undefined` | `false` | | Hides the default close (×) button in the header (e.g. for a `persistent` drawer you don't want dismissible — the × otherwise still closes a persistent drawer). |
|
|
937
1006
|
| `modelValue` | `boolean \| undefined` | `false` | | Used by v-model to open / close the panel. A panel with no `v-model` starts closed. |
|
|
938
|
-
| `persistent` | `boolean \| undefined` |
|
|
1007
|
+
| `persistent` | `boolean \| undefined` | `false` | | Prevent closing via outside clicks, Escape key or drag-to-dismiss. The header close (×) button STILL closes a persistent drawer — that is the documented escape hatch; combine with `hideClose` to remove it, or use `disabled` to block every d… |
|
|
939
1008
|
| `side` | `"left" \| "right" \| "top" \| "bottom" \| undefined` | `"left"` | | Which viewport edge the offcanvas docks to (and slides in from). |
|
|
940
1009
|
| `size` | `Responsive<OffCanvasSize> \| undefined` | `"sm"` | | Controls the maximum size of the offcanvas panel. Accepts named presets from `'xs'` to `'2xl'`, `'auto'`, a custom CSS size string, or a numeric pixel value — or a per-breakpoint map (e.g. `{ default: 'sm', lg: 'lg' }`) to switch responsive… |
|
|
941
1010
|
| `stack` | `string \| undefined` | | | Name of the stack this drawer belongs to. Drawers sharing the same `stack` value step back behind one another as later ones open; drawers in different stacks never affect each other. When omitted, the drawer stacks with nothing. |
|
|
942
1011
|
| `stackGap` | `number \| undefined` | `60` | | Pixels each stacked parent drawer shifts inward when a child opens on top, leaving a peeking band of the parent visible. |
|
|
943
1012
|
| `title` | `string \| undefined` | | | Title text announced to assistive technologies. If omitted, no header is rendered and accessibility must be handled manually. |
|
|
944
|
-
| `transitionDuration` | `number \| undefined` | `
|
|
1013
|
+
| `transitionDuration` | `number \| undefined` | `250` | | Controls the duration of the open and close animations. |
|
|
945
1014
|
|
|
946
1015
|
## Events
|
|
947
1016
|
|
|
@@ -954,9 +1023,10 @@ The panel is a native `<dialog>` opened with `showModal()` — the same mechanic
|
|
|
954
1023
|
## Slots
|
|
955
1024
|
|
|
956
1025
|
- `default` — scope: `{ close: () => void; }` — Primary body content of the off-canvas panel, rendered in the scrollable body area.
|
|
1026
|
+
- `description` — scope: `BbOffCanvasDescriptionSlotProps` — Replaces the description text under the title. Renders the header even when `title` and `description` are unset — a slotted description is a description, the same rule `#title` follows.
|
|
957
1027
|
- `footer` — scope: `object` — Content rendered in the panel footer, below the body area. Typically used for action buttons.
|
|
958
1028
|
- `header` — scope: `BbOffCanvasHeaderSlotProps` — Replaces the entire off-canvas header section (title + close button). Maintains accessibility wiring via the provided props.
|
|
959
|
-
- `title` — scope: `BbOffCanvasTitleSlotProps` — Replaces the default title text inside the header. Remains linked to the panel through `aria-labelledby`.
|
|
1029
|
+
- `title` — scope: `BbOffCanvasTitleSlotProps` — Replaces the default title text inside the header. Remains linked to the panel through `aria-labelledby`. Providing this slot renders the header even when `title` is unset — a slotted title is a title.
|
|
960
1030
|
|
|
961
1031
|
## See Also
|
|
962
1032
|
|
package/dist/ai/BbPagination.md
CHANGED
|
@@ -494,15 +494,15 @@ reach invalid pages.
|
|
|
494
494
|
| Prop | Type | Default | Required | Description |
|
|
495
495
|
| --- | --- | --- | --- | --- |
|
|
496
496
|
| `align` | `"left" \| "center" \| "right" \| undefined` | `"right"` | | Alignment of the pagination control. |
|
|
497
|
-
| `disabled` | `boolean \| undefined` |
|
|
497
|
+
| `disabled` | `boolean \| undefined` | `false` | | Disables the component |
|
|
498
498
|
| `ellipsis` | `string \| undefined` | `"..."` | | String of text displayed in place of hidden pages. |
|
|
499
499
|
| `label` | `string \| undefined` | | | Label of the pagination navigation landmark. When unset, falls back to the localized `pagination.label` (`'Pagination'` / `'Paginazione'`). |
|
|
500
500
|
| `maxSize` | `string \| number \| undefined` | `6` | | Maximum number of clickable pages displayed at all times. This has a tolerance of +/- 1 for odd / even numbering. It does not include ellipses. |
|
|
501
501
|
| `modelValue` | `number \| undefined` | `1` | | Used by v-model. The 1-based index of the current page — pagination starts on the first page, not page `0`. |
|
|
502
|
-
| `navigation` | `boolean \| undefined` |
|
|
502
|
+
| `navigation` | `boolean \| undefined` | `false` | | Synchronizes the current page with the URL. Pair it with `replace` — see that prop. |
|
|
503
503
|
| `perPage` | `string \| number \| undefined` | | | Number of items per page. Together with `totalItems` it derives the page count (`ceil(totalItems / perPage)`); when unset, one page holds everything. With a `tableId` it is also published to the shared table context, exactly like the table'… |
|
|
504
504
|
| `queryKey` | `string \| undefined` | `"page"` | | Defines the query key to reference for maintaining navigation. |
|
|
505
|
-
| `replace` | `boolean \| undefined` |
|
|
505
|
+
| `replace` | `boolean \| undefined` | `false` | | Replaces history rather than pushing it when changing page. Recommended default whenever `navigation` is on: the URL keeps the current page (deep-linkable, survives reload) while Back returns to the page the user came from, instead of stepp… |
|
|
506
506
|
| `tableId` | `string \| undefined` | | | Id of a `BbTable` to pair with through the shared table context (see `useBbTableContext`). The current page is kept two-way synced with the table's context state, and the context's page count drives the control, overriding the local props. … |
|
|
507
507
|
| `totalItems` | `string \| number \| undefined` | | | Total number of items across all pages. When set, the page count is derived as `ceil(totalItems / perPage)` and wins over `totalPages`. With a `tableId` it is also published to the shared table context, exactly like the table's own `total-i… |
|
|
508
508
|
| `totalPages` | `string \| number \| undefined` | | | Total number of pages. A shortcut for when the server reports a page count rather than a row count — a page count derived from `totalItems` (locally or through the shared table context) always wins over it. Falls back to `1` when nothing pr… |
|
package/dist/ai/BbPopover.md
CHANGED
|
@@ -27,9 +27,12 @@ Pick a sibling when the shape is more specific:
|
|
|
27
27
|
- A focused, page-blocking task → `BbDialog`; supplementary side content →
|
|
28
28
|
`BbOffCanvas`.
|
|
29
29
|
|
|
30
|
-
`BbPopover`
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
`BbPopover` looks lightweight — it does not dim the page, and an outside click
|
|
31
|
+
dismisses it — but it **is** modal underneath: a `<dialog>` opened with
|
|
32
|
+
`showModal()`, so focus is trapped and the page behind is inert while it is
|
|
33
|
+
open (see Accessibility). Plan for that: the user cannot interact with the page
|
|
34
|
+
until they dismiss it. If the surface should also _look_ like it owns the
|
|
35
|
+
user's attention until resolved, that is `BbDialog`.
|
|
33
36
|
|
|
34
37
|
### Activator and content
|
|
35
38
|
|
|
@@ -235,10 +238,12 @@ import {
|
|
|
235
238
|
BbIcon,
|
|
236
239
|
BbPopover,
|
|
237
240
|
} from 'bitboss-ui';
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
241
|
+
// Inlined rather than imported from BbAvatar's example folder: every example
|
|
242
|
+
// must be copy-pasteable into a consumer project on its own, and a
|
|
243
|
+
// cross-example import is the one thing that breaks that.
|
|
244
|
+
const demoAvatarTimeout = 4000;
|
|
245
|
+
const demoAvatarSrc = (photoId: string, size = 256) =>
|
|
246
|
+
`https://images.unsplash.com/${photoId}?w=${size}&h=${size}&fit=crop&crop=faces&auto=format`;
|
|
242
247
|
|
|
243
248
|
const member = {
|
|
244
249
|
name: 'Maria Bianchi',
|
|
@@ -246,7 +251,7 @@ const member = {
|
|
|
246
251
|
role: 'Platform engineer · Infra',
|
|
247
252
|
email: 'maria.bianchi@acme.dev',
|
|
248
253
|
location: 'Milan, Italy (UTC+2)',
|
|
249
|
-
src: demoAvatarSrc('
|
|
254
|
+
src: demoAvatarSrc('photo-1573496359142-b8d87734a5a2'),
|
|
250
255
|
};
|
|
251
256
|
</script>
|
|
252
257
|
```
|
|
@@ -596,8 +601,18 @@ falls back to `config.adaptive`.
|
|
|
596
601
|
`aria-haspopup` and makes the trigger operable by keyboard.
|
|
597
602
|
- Focus moves into the panel on open and returns to the activator on close;
|
|
598
603
|
`focus-target` overrides where it lands first.
|
|
599
|
-
- The popover is
|
|
600
|
-
|
|
604
|
+
- **The popover is modal, despite looking like it isn't.** It renders as a
|
|
605
|
+
`<dialog>` opened with `showModal()` (`CommonPopover.vue:271`), so while it is
|
|
606
|
+
open Tab is trapped inside it and the rest of the document is inert —
|
|
607
|
+
`dialog.matches(':modal')` is `true`. What makes it _read_ as non-modal is
|
|
608
|
+
that the `::backdrop` is merely `background-color: transparent`: the page
|
|
609
|
+
behind stays fully visible and un-dimmed. That transparent backdrop is also
|
|
610
|
+
what makes click-outside-to-close work — the outside click lands on it, and
|
|
611
|
+
`@click.self` closes the panel.
|
|
612
|
+
Consequence for design: do **not** plan a flow where the user keeps working
|
|
613
|
+
behind an open popover. They cannot. If the surrounding page must stay live,
|
|
614
|
+
use a non-modal surface instead. For a blocking task that should _look_
|
|
615
|
+
blocking, use `BbDialog`, which dims its backdrop.
|
|
601
616
|
- Give an icon-only activator its own `aria-label`; the popover does not name it.
|
|
602
617
|
|
|
603
618
|
## v-model
|
|
@@ -609,19 +624,19 @@ falls back to `config.adaptive`.
|
|
|
609
624
|
| Prop | Type | Default | Required | Description |
|
|
610
625
|
| --- | --- | --- | --- | --- |
|
|
611
626
|
| `activator` | `ElementOrComponentRef \| undefined` | | | External activator element or component ref. When provided, the activator slot is not rendered and click events are attached programmatically to the referenced element. |
|
|
612
|
-
| `adaptive` | `boolean \| undefined` | `
|
|
627
|
+
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | On mobile viewports (below `config.mobileMaxWidth`), render the popover as a bottom-anchored, auto-sized off-canvas sheet instead of a floating panel. The `header`, `default` and `footer` slots are forwarded to the sheet. The `width` prop i… |
|
|
613
628
|
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the popover within a bounding element. When provided, the popover will not overflow this container's bounds (e.g. a sidebar). Accepts an HTMLElement, a Vue component ref, or a CSS selector string. |
|
|
614
|
-
| `disabled` | `boolean \| undefined` |
|
|
615
|
-
| `eager` | `boolean \| undefined` |
|
|
629
|
+
| `disabled` | `boolean \| undefined` | `false` | | Disables the component. |
|
|
630
|
+
| `eager` | `boolean \| undefined` | `false` | | Prevents rendering content before it's made visible. |
|
|
616
631
|
| `focusTarget` | `string \| undefined` | | | Selector for the element that receives focus after opening. Defaults to the first focusable element inside the popover. |
|
|
617
632
|
| `id` | `string \| undefined` | | | The identifier of the component. |
|
|
618
633
|
| `modelValue` | `boolean \| undefined` | `false` | | Used by v-model to open / close the popover. A popover with no `v-model` starts closed and is driven by its `trigger`. |
|
|
619
|
-
| `offCanvasProps` | `Partial<BbOffCanvasProps> \| undefined` | | | Overrides forwarded to the underlying `BbOffCanvas` when `adaptive` renders the sheet on mobile. Merged over the adaptive defaults (`
|
|
634
|
+
| `offCanvasProps` | `Partial<BbOffCanvasProps> \| undefined` | | | Overrides forwarded to the underlying `BbOffCanvas` when `adaptive` renders the sheet on mobile. Merged over the adaptive defaults (`side: 'bottom'`, `size: 'auto'`, `draggable: true`). Ignored when `adaptive` is `false`. |
|
|
620
635
|
| `offset` | `number \| undefined` | `3` | | Space the floating container will maintain from the activator. |
|
|
621
636
|
| `padding` | `number \| undefined` | `10` | | Minimum empty space to keep from the edge of the page. |
|
|
622
|
-
| `placement` | `Placement \| "cursor" \| undefined` | `"bottom"` | | Position of the popover relative to the activator. Use `'cursor'` to anchor at the mouse/touch coordinates (
|
|
637
|
+
| `placement` | `Placement \| "cursor" \| undefined` | `"bottom"` | | Position of the popover relative to the activator. Use `'cursor'` to anchor at the mouse/touch coordinates. (BbPopover never draws an arrow — arrows are tooltip-only in v3.) |
|
|
623
638
|
| `scrollable` | `boolean \| undefined` | `false` | | Caps the popover height to the available viewport space and enables internal scrolling. Useful for tall content like filter panels. Not recommended for atomic popovers (calendars, color pickers). |
|
|
624
|
-
| `transitionDuration` | `number \| undefined` | `
|
|
639
|
+
| `transitionDuration` | `number \| undefined` | `250` | | How long the transition has to last in milliseconds. |
|
|
625
640
|
| `trigger` | `PopoverTrigger \| PopoverTrigger[] \| undefined` | `"click"` | | Interaction(s) that open the popover. Accepts a single trigger or an array to combine them. - `'click'` — left-click / tap (default) - `'contextMenu'` — right-click on desktop, long-press on mobile |
|
|
626
641
|
| `width` | `string \| number \| undefined` | | | Width of the popover. Accepts pixels or percentage (relative to activator width). |
|
|
627
642
|
|
|
@@ -644,4 +659,4 @@ falls back to `config.adaptive`.
|
|
|
644
659
|
|
|
645
660
|
- [BbTooltip](./BbTooltip.md) — Displays contextual helper text on interaction.
|
|
646
661
|
- [BbDialog](./BbDialog.md) — Presents modal dialogs for focused user interactions.
|
|
647
|
-
- [BbDropdown](./BbDropdown.md) — Displays contextual action menus and menu content.
|
|
662
|
+
- [BbDropdown](./BbDropdown.md) — Displays contextual action menus and menu content (includes the co-located BbDropdownGroup export, which is how a selectable group is bound).
|
package/dist/ai/BbProgress.md
CHANGED
|
@@ -95,7 +95,8 @@ const nearLimit = usedGb / maxGb >= 0.8;
|
|
|
95
95
|
`min` shifts the lower bound for ranges that don't start at zero (a sales floor,
|
|
96
96
|
a level's XP band). Out-of-range values are clamped — below `min` renders empty,
|
|
97
97
|
above `max` renders full — and a degenerate range (`max <= min`) safely renders
|
|
98
|
-
an empty bar.
|
|
98
|
+
an empty bar. Value changes animate over 250 ms on their own — via `transform`,
|
|
99
|
+
not `width`, so the bar composites instead of relaying out. Don't add your own
|
|
99
100
|
transition.
|
|
100
101
|
|
|
101
102
|
**A range that does not start at zero**
|
|
@@ -444,8 +445,10 @@ another `role="progressbar"`.
|
|
|
444
445
|
|
|
445
446
|
What's still on you:
|
|
446
447
|
|
|
447
|
-
- **An accessible name.**
|
|
448
|
-
|
|
448
|
+
- **An accessible name.** Prefer the **`label` prop** — it forwards to
|
|
449
|
+
`aria-label` on the progressbar and is the same naming prop `BbSpinner` and
|
|
450
|
+
`BbIcon` carry, so one spelling covers all three. A raw `aria-label` (or
|
|
451
|
+
`aria-labelledby`) still falls through if you need it.
|
|
449
452
|
- **A visible textual value** beside the bar (`72%`, `220 / 500 GB`) so the
|
|
450
453
|
number is legible, not just the geometry. Add `aria-valuetext` when raw
|
|
451
454
|
numbers read poorly (units, steps).
|
|
@@ -471,7 +474,7 @@ What's still on you:
|
|
|
471
474
|
|
|
472
475
|
| Prop | Type | Default | Required | Description |
|
|
473
476
|
| --- | --- | --- | --- | --- |
|
|
474
|
-
| `label` | `string \| undefined` |
|
|
477
|
+
| `label` | `string \| undefined` | `undefined` | | Accessible name for the progress bar, forwarded to `aria-label`. A `progressbar` with no name is announced only as a bare percentage, so give it one whenever the surrounding text doesn't already name it (e.g. `"Upload"`). Matches the `label… |
|
|
475
478
|
| `max` | `number \| undefined` | `100` | | Maximum value. Upper cap. |
|
|
476
479
|
| `min` | `number \| undefined` | `0` | | Minimum value. Lower cap. |
|
|
477
480
|
| `modelValue` | `number \| null` | `0` | yes | The current progress value — a number between `min` and `max`. This is a one-way input prop (BbProgress is a display component and never emits `update:modelValue`); `null` means no value and renders an empty bar. |
|
package/dist/ai/BbRadio.md
CHANGED
|
@@ -279,11 +279,12 @@ ring itself.
|
|
|
279
279
|
- `input-position` / `label-position` (`'left' | 'center' | 'right'`) align the
|
|
280
280
|
button and label text within their columns.
|
|
281
281
|
- `hide-label` keeps the label for screen readers but hides it visually.
|
|
282
|
-
- **`reverse
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
282
|
+
- **`reverse`** swaps the label in front of the button. It is an ordinary
|
|
283
|
+
opt-in boolean: unset and `:reverse="false"` both put the button first,
|
|
284
|
+
`reverse` puts the label first. (The source negates it internally to cancel
|
|
285
|
+
`BbBaseInputContainer`'s own polarity; that is invisible from outside.
|
|
286
|
+
Earlier revisions of this guide called it a consumer-facing quirk — it is
|
|
287
|
+
not, and the same correction applies to `BbCheckbox` and `BbSwitch`.)
|
|
287
288
|
|
|
288
289
|
### Events and focus
|
|
289
290
|
|
|
@@ -309,8 +310,8 @@ listen to them for side concerns only. `autofocus` focuses the input on mount.
|
|
|
309
310
|
back to its own generated name.
|
|
310
311
|
- Hand-composed groups have **no** fieldset semantics on their own — wrap them in
|
|
311
312
|
a `role="radiogroup"` element with an accessible name (see Accessibility).
|
|
312
|
-
- `reverse` is
|
|
313
|
-
|
|
313
|
+
- `reverse` is an opt-in, not a toggle you turn off: unset already means
|
|
314
|
+
button-first. Setting `:reverse="false"` is legal but says nothing.
|
|
314
315
|
- `checked` + `v-model` together fight; pick one.
|
|
315
316
|
- `readonly` still submits and stays focusable; use `disabled` when the value
|
|
316
317
|
must not post.
|
|
@@ -347,11 +348,11 @@ listen to them for side concerns only. `autofocus` focuses the input on mount.
|
|
|
347
348
|
| `checked` | `boolean \| undefined` | `undefined` | | Defines the input as checked. |
|
|
348
349
|
| `description` | `string \| undefined` | | | Descriptive text displayed below the label and above the input. Unlike the hint it is always visible, and it is linked to the input via `aria-describedby` (after any `errors` / `warnings`, before the `hint`). |
|
|
349
350
|
| `direction` | `InputDirection \| undefined` | `"auto"` | | Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`. |
|
|
350
|
-
| `disabled` | `boolean \| undefined` |
|
|
351
|
+
| `disabled` | `boolean \| undefined` | `false` | | Disables the component. |
|
|
351
352
|
| `errors` | `string \| string[] \| undefined` | | | Can be a string or an array of string containing the messages to display. They render in an `aria-live="polite"` region (announced when they appear) and, while the list is non-empty, are referenced FIRST from the control's `aria-describedby… |
|
|
352
|
-
| `hasErrors` | `boolean \| undefined` |
|
|
353
|
-
| `hasWarning` | `boolean \| undefined` |
|
|
354
|
-
| `hideLabel` | `boolean \| undefined` |
|
|
353
|
+
| `hasErrors` | `boolean \| undefined` | `false` | | Define if the component should be in an error state. It usually attaches a CSS class for styling purposes. |
|
|
354
|
+
| `hasWarning` | `boolean \| undefined` | `false` | | Define if the component should be in a warning state. Same chrome as errors with `--bb-warn`; errors take priority. |
|
|
355
|
+
| `hideLabel` | `boolean \| undefined` | `false` | | Visually hides the label of the input while maintaining accessibility. |
|
|
355
356
|
| `hint` | `string \| undefined` | | | Text box to be displayed near the input, usually to indicate instructions. |
|
|
356
357
|
| `id` | `string \| undefined` | | | The identifier of the component. |
|
|
357
358
|
| `inputPosition` | `"left" \| "center" \| "right" \| undefined` | `"left"` | | Sets the alignment of the input. Since inputs are inline block they can be aligned just as text can. |
|
|
@@ -359,10 +360,10 @@ listen to them for side concerns only. `autofocus` focuses the input on mount.
|
|
|
359
360
|
| `labelPosition` | `"left" \| "center" \| "right" \| undefined` | | | Sets the text alignment of the label. |
|
|
360
361
|
| `modelValue` | `any` | | | Used by v-model. Can be any serializable type. |
|
|
361
362
|
| `name` | `string \| undefined` | | | Defines the name of the input. Optional: an omitted name falls back to a generated one, unique to this button and stable for its lifetime, so a lone radio needs no name at all. Buttons that must form ONE exclusive group still have to share … |
|
|
362
|
-
| `persistentHint` | `boolean \| undefined` |
|
|
363
|
-
| `readonly` | `boolean \| undefined` |
|
|
364
|
-
| `required` | `boolean \| undefined` |
|
|
365
|
-
| `reverse` | `boolean \| undefined` |
|
|
363
|
+
| `persistentHint` | `boolean \| undefined` | `false` | | Keeps the hint displayed. |
|
|
364
|
+
| `readonly` | `boolean \| undefined` | `false` | | Sets the input in a readonly state. |
|
|
365
|
+
| `required` | `boolean \| undefined` | `false` | | Sets the input as required. |
|
|
366
|
+
| `reverse` | `boolean \| undefined` | `false` | | Reverses the layout: in every direction the order of the label and the input is swapped from the standard arrangement. |
|
|
366
367
|
| `value` | `any` | | yes | Defines the value of the radio input. It can be any serializable value. |
|
|
367
368
|
| `warnings` | `string \| string[] \| undefined` | | | Warning messages to display beneath the field, in their own `aria-live` region and amber (`--bb-text-warn`). A string or array; a non-empty list implies the warning state. Errors suppress warnings when both are set. While displayed they are… |
|
|
368
369
|
|
package/dist/ai/BbRadioGroup.md
CHANGED
|
@@ -98,9 +98,11 @@ option for it rather than expecting a cleared model.
|
|
|
98
98
|
|
|
99
99
|
### Layout and density
|
|
100
100
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
Options flow in a **wrapping row by default** — `BbBaseRadioGroup` defaults its
|
|
102
|
+
direction to `'horizontal'`, which suits segmented-style choices (shipping
|
|
103
|
+
speed, billing cycle). Pass `input-direction="vertical"` to stack them one per
|
|
104
|
+
line, which is what you want for long option text or a scannable list.
|
|
105
|
+
`compact` tightens spacing. Because a radio group binds a single value, it drives cleanly
|
|
104
106
|
from `v-model` inline.
|
|
105
107
|
|
|
106
108
|
**Horizontal shipping speed**
|
|
@@ -313,9 +315,9 @@ const loadStrategies = (
|
|
|
313
315
|
|
|
314
316
|
### Slots
|
|
315
317
|
|
|
316
|
-
`#label` replaces an option's text (`{ item, text }`); `#icon` replaces the
|
|
318
|
+
`#label` replaces an option's text (`{ item, text, checked }` — `checked` is what tile layouts key off); `#icon` replaces the
|
|
317
319
|
default radio-dot visual for each option (you then own its selected/focus
|
|
318
|
-
styling). `#legend` replaces the fieldset legend (`{ text, hasErrors }`);
|
|
320
|
+
styling). `#legend` replaces the fieldset legend (`{ text, hasErrors, hasWarning }`; the validated wrappers add `showAsterisk`);
|
|
319
321
|
`#prepend` / `#append` inject content inside the options container.
|
|
320
322
|
|
|
321
323
|
### Selection tiles
|
|
@@ -416,7 +418,8 @@ Two width facts worth knowing before you reach for `width: 100%` anywhere:
|
|
|
416
418
|
`update:modelValue` (the `v-model` channel) carries the single selected value —
|
|
417
419
|
the only source of selection truth. Native `blur`, `change`, `click`, `focus`,
|
|
418
420
|
`input`, `keydown`, `mousedown`, `mouseup` re-emit with raw payloads, plus
|
|
419
|
-
`
|
|
421
|
+
`active` when focus enters the group (it drives the hint internally) and
|
|
422
|
+
`inactive` when focus leaves; use them for side effects, never to
|
|
420
423
|
compute selection. `autofocus` focuses the first option on mount.
|
|
421
424
|
|
|
422
425
|
### Works well with
|
|
@@ -478,18 +481,18 @@ compute selection. `autofocus` focuses the first option on mount.
|
|
|
478
481
|
| Prop | Type | Default | Required | Description |
|
|
479
482
|
| --- | --- | --- | --- | --- |
|
|
480
483
|
| `autofocus` | `Booleanish \| undefined` | | | Sets autofocus on page load. |
|
|
481
|
-
| `compact` | `boolean \| undefined` |
|
|
484
|
+
| `compact` | `boolean \| undefined` | `false` | | Sets the component in a compact state. |
|
|
482
485
|
| `dependencies` | `unknown[] \| undefined` | | | Defines an array of dependencies that will trigger actions in the component upon change. |
|
|
483
486
|
| `depsDebounceTime` | `number \| undefined` | | | Timeout used to debounce response to changes to dependencies. |
|
|
484
487
|
| `description` | `string \| undefined` | | | Descriptive text displayed below the label and above the input. Unlike the hint it is always visible, and it is linked to the input via `aria-describedby` (after any `errors` / `warnings`, before the `hint`). |
|
|
485
488
|
| `direction` | `InputDirection \| undefined` | | | Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`. |
|
|
486
|
-
| `disabled` | `boolean \| undefined` |
|
|
487
|
-
| `enforceCoherence` | `boolean \| undefined` |
|
|
489
|
+
| `disabled` | `boolean \| undefined` | `false` | | Disables the component. |
|
|
490
|
+
| `enforceCoherence` | `boolean \| undefined` | `false` | | If coherence is enforced the input cannot have a modelValue that is incoherent with its current items. e.g. You cannot set v-model to a user that is not present in the items passed. modelValue will be reset upon incoherence. |
|
|
488
491
|
| `errors` | `string \| string[] \| undefined` | | | Can be a string or an array of string containing the messages to display. They render in an `aria-live="polite"` region (announced when they appear) and, while the list is non-empty, are referenced FIRST from the control's `aria-describedby… |
|
|
489
|
-
| `hasErrors` | `boolean \| undefined` |
|
|
490
|
-
| `hasWarning` | `boolean \| undefined` |
|
|
491
|
-
| `hideLabel` | `boolean \| undefined` |
|
|
492
|
-
| `hideLegend` | `boolean \| undefined` |
|
|
492
|
+
| `hasErrors` | `boolean \| undefined` | `false` | | Define if the component should be in an error state. It usually attaches a CSS class for styling purposes. |
|
|
493
|
+
| `hasWarning` | `boolean \| undefined` | `false` | | Define if the component should be in a warning state. Same chrome as errors with `--bb-warn`; errors take priority. |
|
|
494
|
+
| `hideLabel` | `boolean \| undefined` | `false` | | Visually hides each option's label text (the text rendered next to every input) while keeping it accessible to screen readers. Does not affect the fieldset legend — use `hideLegend` for that. |
|
|
495
|
+
| `hideLegend` | `boolean \| undefined` | `false` | | Visually hides the legend of the fieldset while maintaining accessibility. |
|
|
493
496
|
| `hint` | `string \| undefined` | | | Text box to be displayed near the input, usually to indicate instructions. |
|
|
494
497
|
| `id` | `string \| undefined` | | | The identifier of the component. |
|
|
495
498
|
| `inputDirection` | `"horizontal" \| "vertical" \| undefined` | | | Defines the direction of the inputs in the fieldset. |
|
|
@@ -505,10 +508,10 @@ compute selection. `autofocus` focuses the first option on mount.
|
|
|
505
508
|
| `modelValueDebounceTime` | `number \| undefined` | | | Timeout used to debounce response to changes to modelValue. |
|
|
506
509
|
| `name` | `string \| undefined` | | | Defines the name of the option inputs. Optional: the options live inside a single component instance, so an omitted name falls back to a generated one that groups them correctly on its own — unique per group, so two groups never clear each … |
|
|
507
510
|
| `noDataText` | `string \| undefined` | | | String displayed when there are no items to display. |
|
|
508
|
-
| `persistentHint` | `boolean \| undefined` |
|
|
509
|
-
| `readonly` | `boolean \| undefined` |
|
|
510
|
-
| `required` | `boolean \| undefined` |
|
|
511
|
-
| `reverse` | `boolean \| undefined` |
|
|
511
|
+
| `persistentHint` | `boolean \| undefined` | `false` | | Keeps the hint displayed. |
|
|
512
|
+
| `readonly` | `boolean \| undefined` | `false` | | Sets the input in a readonly state. |
|
|
513
|
+
| `required` | `boolean \| undefined` | `false` | | Sets the input as required. |
|
|
514
|
+
| `reverse` | `boolean \| undefined` | `false` | | Reverses the layout. Applicable in every direction the order of the label and the input is swapped. |
|
|
512
515
|
| `selectable` | `boolean \| ((item: T) => boolean) \| undefined` | `true` | | Defines whether options are selectable. Can be a global boolean that affects all options or a function that accepts an item and returns a boolean that only affects that item. Non-selectable options are rendered disabled. |
|
|
513
516
|
| `warnings` | `string \| string[] \| undefined` | | | Warning messages to display beneath the field, in their own `aria-live` region and amber (`--bb-text-warn`). A string or array; a non-empty list implies the warning state. Errors suppress warnings when both are set. While displayed they are… |
|
|
514
517
|
|
package/dist/ai/BbRating.md
CHANGED
|
@@ -330,15 +330,15 @@ renders SSR-safe markup in Nuxt and Inertia apps.
|
|
|
330
330
|
| Prop | Type | Default | Required | Description |
|
|
331
331
|
| --- | --- | --- | --- | --- |
|
|
332
332
|
| `autofocus` | `Booleanish \| undefined` | | | Sets autofocus on page load. |
|
|
333
|
-
| `clearable` | `boolean \| undefined` |
|
|
334
|
-
| `compact` | `boolean \| undefined` |
|
|
333
|
+
| `clearable` | `boolean \| undefined` | `false` | | Allows clearing the selected rating by clicking the current value. |
|
|
334
|
+
| `compact` | `boolean \| undefined` | `false` | | Sets the component in a compact state. |
|
|
335
335
|
| `description` | `string \| undefined` | | | Descriptive text displayed below the label and above the input. Unlike the hint it is always visible, and it is linked to the input via `aria-describedby` (after any `errors` / `warnings`, before the `hint`). |
|
|
336
336
|
| `direction` | `InputDirection \| undefined` | | | Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`. |
|
|
337
|
-
| `disabled` | `boolean \| undefined` |
|
|
337
|
+
| `disabled` | `boolean \| undefined` | `false` | | Disables the component. |
|
|
338
338
|
| `errors` | `string \| string[] \| undefined` | | | Can be a string or an array of string containing the messages to display. They render in an `aria-live="polite"` region (announced when they appear) and, while the list is non-empty, are referenced FIRST from the control's `aria-describedby… |
|
|
339
|
-
| `hasErrors` | `boolean \| undefined` |
|
|
340
|
-
| `hasWarning` | `boolean \| undefined` |
|
|
341
|
-
| `hideLegend` | `boolean \| undefined` |
|
|
339
|
+
| `hasErrors` | `boolean \| undefined` | `false` | | Define if the component should be in an error state. It usually attaches a CSS class for styling purposes. |
|
|
340
|
+
| `hasWarning` | `boolean \| undefined` | `false` | | Define if the component should be in a warning state. Same chrome as errors with `--bb-warn`; errors take priority. |
|
|
341
|
+
| `hideLegend` | `boolean \| undefined` | `false` | | Visually hides the legend of the fieldset while maintaining accessibility. |
|
|
342
342
|
| `hint` | `string \| undefined` | | | Text box to be displayed near the input, usually to indicate instructions. |
|
|
343
343
|
| `id` | `string \| undefined` | | | The identifier of the component. |
|
|
344
344
|
| `inputPosition` | `"left" \| "center" \| "right" \| undefined` | `"left"` | | Sets the alignment of the input. Since inputs are inline block they can be aligned just as text can. |
|
|
@@ -347,11 +347,11 @@ renders SSR-safe markup in Nuxt and Inertia apps.
|
|
|
347
347
|
| `legendPosition` | `"left" \| "center" \| "right" \| undefined` | | | Sets the text alignment of the legend. |
|
|
348
348
|
| `modelValue` | `number \| null` | | yes | Used by v-model. |
|
|
349
349
|
| `name` | `string \| undefined` | | | Defines the name of the star radio inputs. Optional: the stars live inside a single component instance, so an omitted name falls back to a generated one that groups them correctly on its own. Pass a name only when the value has to be submit… |
|
|
350
|
-
| `persistentHint` | `boolean \| undefined` |
|
|
351
|
-
| `readonly` | `boolean \| undefined` |
|
|
352
|
-
| `required` | `boolean \| undefined` |
|
|
353
|
-
| `reverse` | `boolean \| undefined` |
|
|
354
|
-
| `size` | `number \| ({ size?: any; } & string) \| keyof Sizes \| undefined` |
|
|
350
|
+
| `persistentHint` | `boolean \| undefined` | `false` | | Keeps the hint displayed. |
|
|
351
|
+
| `readonly` | `boolean \| undefined` | `false` | | Sets the input in a readonly state. |
|
|
352
|
+
| `required` | `boolean \| undefined` | `false` | | Sets the input as required. |
|
|
353
|
+
| `reverse` | `boolean \| undefined` | `false` | | Reverses the layout. Applicable in every direction the order of the label and the input is swapped. |
|
|
354
|
+
| `size` | `number \| ({ size?: any; } & string) \| keyof Sizes \| undefined` | `'md'` | | Defines the component size. Accepted values: - A key from the provided size map (`keyof T`), e.g. `'sm' \| 'md' \| 'lg'` - A custom CSS size string (e.g. `'20px'`, `'1.5rem'`, `'2em'`) - A number, typically interpreted as pixels by size par… |
|
|
355
355
|
| `stars` | `number \| undefined` | | | Maximum number of stars to render and maximum value of the component. |
|
|
356
356
|
| `warnings` | `string \| string[] \| undefined` | | | Warning messages to display beneath the field, in their own `aria-live` region and amber (`--bb-text-warn`). A string or array; a non-empty list implies the warning state. Errors suppress warnings when both are set. While displayed they are… |
|
|
357
357
|
|