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
|
@@ -17,7 +17,8 @@ The three single controls share their prop surface (`BbSwitch` re-exports
|
|
|
17
17
|
| `color?: string` | removed | style via theme tokens / CSS |
|
|
18
18
|
| `indeterminate` loose type (checkbox) | `boolean` | retype |
|
|
19
19
|
| `name: string` required (**BbRadio** only; checkbox/switch already optional) | `name?: string` (auto-generated per button when omitted) | relaxation — a hand-composed group still needs one shared explicit `name`, since generated ones differ per button |
|
|
20
|
-
| — | `description
|
|
20
|
+
| — | `description` | additive (all three) |
|
|
21
|
+
| — | `compact` — **group components only** | additive on `BbCheckboxGroup` / `BbRadioGroup` / `BbSwitchGroup`; the three single controls have no `compact` prop |
|
|
21
22
|
|
|
22
23
|
## The `reverse` flip, precisely
|
|
23
24
|
|
|
@@ -42,5 +43,38 @@ So explicit values translate **by inversion**:
|
|
|
42
43
|
+ <BbCheckbox v-model="ok" reverse label="I agree" />
|
|
43
44
|
```
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
### Finding every site
|
|
47
|
+
|
|
48
|
+
The compiler cannot catch a boolean that changed meaning — it is a declared
|
|
49
|
+
prop, correctly typed, holding its own default value. **`bitboss-ui/eslint-plugin`
|
|
50
|
+
can**, and does: `bitboss-ui/no-reverse-false` (in `recommended`) flags every
|
|
51
|
+
literal `:reverse="false"` on these three components and offers both
|
|
52
|
+
corrections as editor suggestions.
|
|
53
|
+
|
|
54
|
+
For a codebase that used the v2 spelling **extensively**, do the sweep in one
|
|
55
|
+
pass instead of clicking through them:
|
|
56
|
+
|
|
57
|
+
```js
|
|
58
|
+
// eslint.config.js — temporarily, for the migration run
|
|
59
|
+
{
|
|
60
|
+
rules: {
|
|
61
|
+
// Rewrites `:reverse="false"` → `reverse` (the v2 layout) everywhere.
|
|
62
|
+
'bitboss-ui/no-reverse-false': ['error', { assumeV2: true }],
|
|
63
|
+
},
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
npx eslint --fix 'src/**/*.vue'
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Then drop `assumeV2` again. It is **off by default on purpose**: the two
|
|
72
|
+
readings of `:reverse="false"` produce opposite layouts, so an unrequested
|
|
73
|
+
`--fix` would silently flip every row in a codebase that wrote the redundant
|
|
74
|
+
prop meaning nothing by it. Turn it on only when you know the file you are
|
|
75
|
+
sweeping came from v2.
|
|
76
|
+
|
|
77
|
+
What the rule deliberately leaves alone: a dynamic `:reverse="isRtl"` that
|
|
78
|
+
merely evaluates false is legitimate v3 code, and only the template AST can
|
|
79
|
+
tell the two apart. It also flags `reverse="false"` — the unbound string form,
|
|
80
|
+
which is truthy, so it reads as off and behaves as on.
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: 'Migration v2→v3: BbCollapsible'
|
|
3
|
-
summary: The tag prop is removed; the root is always a
|
|
3
|
+
summary: The tag prop is removed; the root is always a span.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# BbCollapsible — v2 → v3
|
|
7
7
|
|
|
8
8
|
## Changes
|
|
9
9
|
|
|
10
|
-
| v2 | v3 | Kind
|
|
11
|
-
| ------------------------------------------- | --------- |
|
|
12
|
-
| `tag?: string` (default `'div'`) | removed | root is a `
|
|
13
|
-
| `modelValue`, `eager`, `transitionDuration` | unchanged | —
|
|
10
|
+
| v2 | v3 | Kind |
|
|
11
|
+
| ------------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
12
|
+
| `tag?: string` (default `'div'`) | removed | the root is a **`span`** (`display: grid`) — an inline element, so it is valid inside a `<p>`; wrap in a semantic element if you passed `tag="section"` etc. |
|
|
13
|
+
| `modelValue`, `eager`, `transitionDuration` | unchanged | — |
|
|
14
14
|
|
|
15
15
|
## Edits
|
|
16
16
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: 'Migration v2→v3: BbDialog'
|
|
3
|
-
summary: 'showClose inverted to hideClose,
|
|
3
|
+
summary: 'showClose inverted to hideClose, #close removed (description restored in beta.19), default widths changed, adaptive bottom sheet on mobile by default, --bb-dialog-* tokens replaced by --bb-panel-p plus locals.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# BbDialog — v2 → v3
|
|
@@ -13,8 +13,8 @@ v2's `BbDialog` was a re-export of `BaseDialog`; v3 makes it first-class
|
|
|
13
13
|
| v2 | v3 | Kind |
|
|
14
14
|
| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
|
15
15
|
| `showClose?: boolean` (default `true`) | `hideClose?: boolean` (default `false`) | rename, polarity inverted |
|
|
16
|
-
| `description` |
|
|
17
|
-
| `#description` slot |
|
|
16
|
+
| `description` | **kept** (restored in 3.0.0-beta.19) | carries over unchanged; see below |
|
|
17
|
+
| `#description` slot | **kept** (restored in 3.0.0-beta.19) | carries over unchanged |
|
|
18
18
|
| `#close` slot | removed | a custom close control goes inside `#header`, which replaces the default ✕ — no `hide-close` alongside it |
|
|
19
19
|
| `hideHeader` | removed | omit `title` and the header collapses; or use the `header` slot |
|
|
20
20
|
| `compact` | removed | spacing is token-driven now (`--bb-panel-p`) |
|
|
@@ -39,27 +39,49 @@ v2's `BbDialog` was a re-export of `BaseDialog`; v3 makes it first-class
|
|
|
39
39
|
|
|
40
40
|
```diff
|
|
41
41
|
- <BbDialog v-model="open" :show-close="false" size="md" description="Review before sending">
|
|
42
|
-
+ <BbDialog v-model="open" hide-close size="md">
|
|
43
|
-
+ <template #header="{ titleId }">
|
|
44
|
-
+ <h2 :id="titleId">Review before sending</h2>
|
|
45
|
-
+ </template>
|
|
42
|
+
+ <BbDialog v-model="open" hide-close size="md" description="Review before sending">
|
|
46
43
|
…
|
|
47
44
|
</BbDialog>
|
|
48
45
|
```
|
|
49
46
|
|
|
47
|
+
## `description` came back in 3.0.0-beta.19
|
|
48
|
+
|
|
49
|
+
Early v3 (beta.18 and before) dropped `description` and `#description`, and
|
|
50
|
+
told you to move the copy into `#header` or the body. That reversed in
|
|
51
|
+
**3.0.0-beta.19**: both are back, unchanged from v2, and `aria-describedby` is
|
|
52
|
+
wired again.
|
|
53
|
+
|
|
54
|
+
If you already migrated away from it, nothing is broken — `#header` still
|
|
55
|
+
works. You can move back for the shorter form:
|
|
56
|
+
|
|
57
|
+
```diff
|
|
58
|
+
<BbDialog v-model="open" title="Review before sending">
|
|
59
|
+
- <template #header="{ titleId }">
|
|
60
|
+
- <h2 :id="titleId">Review before sending</h2>
|
|
61
|
+
- <p class="muted">This sends to all 412 subscribers.</p>
|
|
62
|
+
- </template>
|
|
63
|
+
+ <template #description>This sends to all 412 subscribers.</template>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
It renders one muted line under the title, and it is the only thing
|
|
67
|
+
`aria-describedby` points at — the body is deliberately not described, since
|
|
68
|
+
arbitrary body markup would be read aloud in full. Keep it to a sentence.
|
|
69
|
+
|
|
50
70
|
## CSS and tokens
|
|
51
71
|
|
|
52
72
|
The `--bb-dialog-*` family is gone. Padding comes from the shared
|
|
53
|
-
`--bb-panel-p
|
|
54
|
-
|
|
73
|
+
`--bb-panel-p` and the local axis pair `--px` / `--py` on `.bb-dialog`; the
|
|
74
|
+
rest are unprefixed locals on `.bb-dialog` or plain CSS rules. `BbOffCanvas`
|
|
75
|
+
is identical throughout with `.bb-offcanvas__*` parts and the same `--px` /
|
|
76
|
+
`--py` names.
|
|
55
77
|
|
|
56
78
|
| v2 token | v3 |
|
|
57
79
|
| -------------------------------------------- | -------------------------------------------------------------------------------------- |
|
|
58
|
-
| `--bb-dialog-px` / `--bb-dialog-py` (`24px`) | `--bb-panel-p` (`16px`)
|
|
80
|
+
| `--bb-dialog-px` / `--bb-dialog-py` (`24px`) | local `--px` / `--py` on `.bb-dialog`, each branching off `--bb-panel-p` (`16px`) |
|
|
59
81
|
| `--bb-dialog-close` (`12px`) | **delete it** — v3's default already reproduces v2's control size |
|
|
60
82
|
| `--bb-dialog-title-size` (`18px`) | local `--dialog-title-fs` on `.bb-dialog`, default `calc(var(--bb-fs) + 2px)` = `16px` |
|
|
61
83
|
| `--bb-dialog-title-weight` (`600`) | no knob — `500` is hard-coded; override with a CSS rule |
|
|
62
|
-
| — | local `--dialog-gap`, default `--
|
|
84
|
+
| — | local `--dialog-gap`, default `--py` — the body↔footer vertical rhythm |
|
|
63
85
|
|
|
64
86
|
### `--bb-dialog-close` → delete it
|
|
65
87
|
|
|
@@ -102,43 +124,48 @@ specificity — a two-class `.my-dialog .bb-dialog__title` loses.
|
|
|
102
124
|
|
|
103
125
|
### Asymmetric padding
|
|
104
126
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
127
|
+
The local pair `--px` / `--py` splits the axes; each branches off
|
|
128
|
+
`var(--bb-panel-p)`, so setting `--bb-panel-p` alone still moves both. Like
|
|
129
|
+
every unprefixed component token, set the pair on the component's class, never
|
|
130
|
+
`:root` (other components also use `--px` as a sealed local of their own, so a
|
|
131
|
+
dialog-scoped value never leaks into the buttons or alerts inside). v2's `--bb-dialog-px` / `--bb-dialog-py` map onto it directly:
|
|
110
132
|
|
|
111
133
|
```css
|
|
112
|
-
/* v2: --bb-dialog-px: 24px;
|
|
134
|
+
/* v2: --bb-dialog-px: 24px; --bb-dialog-py: 10px */
|
|
113
135
|
.my-dialog {
|
|
114
|
-
--
|
|
136
|
+
--px: 24px; /* horizontal padding + close-button inline inset */
|
|
137
|
+
--py: 10px; /* vertical padding + close-button block inset */
|
|
115
138
|
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Per-**part** vertical differences (header `py: 10px`, body `py: 20px`) work by
|
|
142
|
+
scoping the token to the part class — the padding rules resolve it on the part
|
|
143
|
+
elements and the token inherits:
|
|
144
|
+
|
|
145
|
+
```css
|
|
116
146
|
.my-dialog .bb-dialog__header {
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
.my-dialog .bb-dialog__body .bb-dialog__body-content {
|
|
120
|
-
padding-block: 0 20px;
|
|
121
|
-
}
|
|
122
|
-
.my-dialog .bb-dialog__body:first-child .bb-dialog__body-content {
|
|
123
|
-
padding-top: 20px;
|
|
147
|
+
--py: 10px; /* top 10px, bottom py/2 = 5px; the × inset follows */
|
|
124
148
|
}
|
|
125
|
-
.my-dialog .bb-
|
|
126
|
-
|
|
149
|
+
.my-dialog .bb-dialog__body-content {
|
|
150
|
+
--py: 20px; /* bottom padding, and top in the headerless case */
|
|
127
151
|
}
|
|
128
152
|
```
|
|
129
153
|
|
|
130
|
-
|
|
131
|
-
|
|
154
|
+
Derived spacings scale with it (header bottom is `py / 2`; the close button's
|
|
155
|
+
block inset tracks the header's `py`). For exact literals instead of those
|
|
156
|
+
ratios, use a `padding-block` rule on the part class — `padding-block`, not
|
|
157
|
+
the `padding` shorthand, so the horizontal half keeps tracking
|
|
158
|
+
`--px`. Library selectors are `.bb-dialog .bb-dialog__header`
|
|
132
159
|
(0,2,0), `.bb-dialog__body-content` (0,1,0),
|
|
133
160
|
`.bb-dialog__body:first-child .bb-dialog__body-content` (0,2,1) and
|
|
134
|
-
`.bb-dialog .bb-dialog__footer` (0,2,0) —
|
|
135
|
-
|
|
161
|
+
`.bb-dialog .bb-dialog__footer` (0,2,0) — a three-class app rule beats all
|
|
162
|
+
four.
|
|
136
163
|
|
|
137
164
|
### `--dialog-gap`
|
|
138
165
|
|
|
139
166
|
If only the vertical rhythm _between parts_ differs, `--dialog-gap` does it
|
|
140
|
-
without a padding rule — it replaces `--
|
|
141
|
-
and the footer's block padding:
|
|
167
|
+
without a padding rule — it replaces `--py` in the body's bottom
|
|
168
|
+
padding and the footer's block padding:
|
|
142
169
|
|
|
143
170
|
```css
|
|
144
171
|
.my-dialog {
|
|
@@ -147,7 +174,8 @@ and the footer's block padding:
|
|
|
147
174
|
```
|
|
148
175
|
|
|
149
176
|
It does **not** reach the header's top padding, any horizontal padding, or the
|
|
150
|
-
body's top padding in the headerless case; those still read `--
|
|
177
|
+
body's top padding in the headerless case; those still read `--py` (and
|
|
178
|
+
`--px` for the horizontal slots).
|
|
151
179
|
|
|
152
180
|
### `.bb-confirm`
|
|
153
181
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: 'Migration v2→v3: BbOffCanvas'
|
|
3
|
-
summary: 'direction→side; showClose→hideClose;
|
|
3
|
+
summary: 'direction→side; showClose→hideClose; #close removed (description restored in beta.19); size defaults change; adaptive drawer configs unify on offCanvasProps.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# BbOffCanvas — v2 → v3
|
|
@@ -11,8 +11,8 @@ summary: 'direction→side; showClose→hideClose; description and the #close/#d
|
|
|
11
11
|
| ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
12
12
|
| `direction?: 'left' \| 'top' \| 'right' \| 'bottom'` (default `'left'`) | `side?: 'left' \| 'top' \| 'right' \| 'bottom'` (default `'left'`) | **⚠ silent** — a leftover `direction` is ignored and the panel falls back to `'left'` |
|
|
13
13
|
| `showClose?: boolean` (default `true`) | `hideClose?: boolean` (default `false`) | rename, polarity inverted |
|
|
14
|
-
| `description?: string` |
|
|
15
|
-
| `#description` slot |
|
|
14
|
+
| `description?: string` | **kept** (restored in 3.0.0-beta.19) | carries over unchanged; `aria-describedby` is wired again |
|
|
15
|
+
| `#description` slot | **kept** (restored in 3.0.0-beta.19) | carries over unchanged |
|
|
16
16
|
| `#close` slot | removed | a custom close control goes inside `#header`, see below |
|
|
17
17
|
| `size?: 'sm' \| 'md' \| 'lg'` | `size?: Responsive<'xs'…'2xl' \| 'auto' \| CSS length>` | widened — **defaults changed**, same trap as BbDialog: v2 `{ sm: 384, md: 652, lg: 896 }` → v3 `{ xs: 320, sm: 384, md: 448, lg: 512, xl: 576, '2xl': 672 }`. Pin via `offCanvasDefaultSizes` if needed. |
|
|
18
18
|
| — | `draggable`, `stack` / `stackGap`, `persistent`, `disabled`, `fullscreen`, `eager`, `focusTarget`, `title` | additive |
|
|
@@ -41,9 +41,24 @@ renames to `side` for the same reason:
|
|
|
41
41
|
+ <BbDialog :off-canvas-props="{ side: 'bottom' }" />
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
The
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
**The two leftovers fail differently — check both.** Measured with `vue-tsc`
|
|
45
|
+
against this repo:
|
|
46
|
+
|
|
47
|
+
- **Inside `offCanvasProps`** (`:off-canvas-props="{ direction: 'bottom' }"`) a
|
|
48
|
+
typed template **does** catch it: the value is a fresh object literal typed
|
|
49
|
+
`Partial<BbOffCanvasProps>`, so TypeScript's excess-property check fires —
|
|
50
|
+
`TS2353: 'direction' does not exist in type 'Partial<BbOffCanvasProps>'`.
|
|
51
|
+
- **As an attribute on the component** (`<BbOffCanvas direction="right">`) it is
|
|
52
|
+
**silent**, and `vue-tsc` does **not** catch it by default: an unknown
|
|
53
|
+
attribute is legal Vue, lands on `$attrs`, and type-checks clean. Verified —
|
|
54
|
+
a made-up `totallyBogusProp` passes too. The panel just falls back to
|
|
55
|
+
`'left'`.
|
|
56
|
+
|
|
57
|
+
For that second case `vueCompilerOptions.checkUnknownProps` would catch it, but
|
|
58
|
+
it is blunt: it also rejects legitimate fallthrough like `aria-label` /
|
|
59
|
+
`aria-describedby`, which these guides tell you to use. Prefer
|
|
60
|
+
**`npx bitboss-ui check`**, which knows the difference, or
|
|
61
|
+
`bitboss-ui/eslint-plugin`, which catches it everywhere and
|
|
47
62
|
**`eslint --fix` auto-renames it**. Grep: `rg -i 'direction' --type vue` in
|
|
48
63
|
offcanvas markup.
|
|
49
64
|
|
|
@@ -65,15 +80,16 @@ Pure rename — the `Partial<BbOffCanvasProps>` object is unchanged.
|
|
|
65
80
|
|
|
66
81
|
Also silent on upgrade; `eslint --fix` auto-renames it.
|
|
67
82
|
|
|
68
|
-
## `description`
|
|
83
|
+
## `#close` is gone; `description` came back in beta.19
|
|
69
84
|
|
|
70
|
-
v3's slot set is `header | title | default | footer` — no
|
|
71
|
-
`#
|
|
72
|
-
[BbDialog](./bb-dialog.md).
|
|
85
|
+
v3's slot set is `header | title | description | default | footer` — no
|
|
86
|
+
`#close`.
|
|
73
87
|
|
|
74
|
-
`description`
|
|
75
|
-
|
|
76
|
-
|
|
88
|
+
`description` and `#description` were dropped in early v3 and **restored in
|
|
89
|
+
3.0.0-beta.19**, unchanged from v2 and with `aria-describedby` wired again —
|
|
90
|
+
same reversal as [BbDialog](./bb-dialog.md). One muted line under the title;
|
|
91
|
+
keep it to a sentence, and leave longer copy in the default slot (which is
|
|
92
|
+
deliberately not described).
|
|
77
93
|
|
|
78
94
|
**`#header` replaces the ✕, so `hide-close` is redundant beside it.** The
|
|
79
95
|
default header renders `#title` + a `CloseButton`; providing `#header` replaces
|
|
@@ -38,7 +38,12 @@ The block name is unchanged; the star's state modifier is not.
|
|
|
38
38
|
| — | `.bb-base-rating--warnings`, `--forced-clear` (new) |
|
|
39
39
|
|
|
40
40
|
v2 styled unfilled stars with `:not(--highlighted)`; v3 gives them a positive
|
|
41
|
-
name.
|
|
41
|
+
name. `--empty` is a **hook for your CSS**, not a painted default: the shipped
|
|
42
|
+
sheet has no `&--empty` rule, because an empty star is just the base
|
|
43
|
+
`__option` colour. So porting `:not(--highlighted)` to `--empty` works, and
|
|
44
|
+
writing nothing also works.
|
|
45
|
+
|
|
46
|
+
Everything else survives unchanged: `.bb-base-rating`, `--disabled`,
|
|
42
47
|
`--errors`, `--readonly`, `--has-value`, `__inner-container`, `__option`,
|
|
43
48
|
`__label-text`. Nothing warns — a `--highlighted` rule just stops matching.
|
|
44
49
|
|
|
@@ -61,7 +66,8 @@ rule now fights the library's. Delete the workaround and keep the prop.
|
|
|
61
66
|
|
|
62
67
|
`--bb-rating-size` was a `:root` global in v2, read as
|
|
63
68
|
`.bb-base-rating { --size: var(--bb-rating-size) }`. v3 drops the global and
|
|
64
|
-
hard-defaults the local:
|
|
69
|
+
hard-defaults the local to **`24px`** (`BbBaseRating/index.css:4`). Move your
|
|
70
|
+
override off `:root` and onto the block — the value itself is yours to keep:
|
|
65
71
|
|
|
66
72
|
```diff
|
|
67
73
|
- :root { --bb-rating-size: 32px; }
|
|
@@ -139,5 +139,8 @@ virtualizer's `estimateSize`; a CSS override desynchronises the paint from the
|
|
|
139
139
|
scroll math and the list mispositions. Use `item-height` / `header-height` (or
|
|
140
140
|
`compact`) instead — they move both halves together.
|
|
141
141
|
|
|
142
|
-
The panel is teleported
|
|
143
|
-
|
|
142
|
+
The panel is **not** teleported — there is no `Teleport` anywhere in
|
|
143
|
+
`BbSelect`, `BbBaseSelect` or `BbSelectPopover` — so it stays inside your
|
|
144
|
+
`<BbSelect>` and a wrapper class does reach it. Scoping on `.bb-select-popover`
|
|
145
|
+
is still the clearer target, and CSS custom properties inherit into the panel
|
|
146
|
+
either way.
|