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
|
@@ -109,6 +109,8 @@ useOnTruthy(active, () => emit('active'));
|
|
|
109
109
|
|
|
110
110
|
const {
|
|
111
111
|
getter,
|
|
112
|
+
clientReproducible,
|
|
113
|
+
hydratedFromSsr,
|
|
112
114
|
items: internalItems,
|
|
113
115
|
loading,
|
|
114
116
|
} = useItemsGetter({
|
|
@@ -122,6 +124,8 @@ const alignToCoherenceSettings = () => {
|
|
|
122
124
|
};
|
|
123
125
|
|
|
124
126
|
const { hasPrefilled } = usePrefill({
|
|
127
|
+
alreadyLoaded: hydratedFromSsr,
|
|
128
|
+
clientReproducible,
|
|
125
129
|
trigger: true,
|
|
126
130
|
currentValue: props.modelValue,
|
|
127
131
|
multiple: props.multiple,
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
</template>
|
|
187
187
|
|
|
188
188
|
<script setup lang="ts">
|
|
189
|
-
import {
|
|
189
|
+
import { useConfig } from '@/composables/useConfig';
|
|
190
190
|
import { computed, onBeforeUnmount, ref, watch } from 'vue';
|
|
191
191
|
import { createReusableTemplate } from '@vueuse/core';
|
|
192
192
|
import { isEmpty } from '@/utilities/functions/empty';
|
|
@@ -222,9 +222,13 @@ const props = withDefaults(defineProps<BaseTimePickerInputProps>(), {
|
|
|
222
222
|
disableWriting: false,
|
|
223
223
|
autocomplete: 'off',
|
|
224
224
|
});
|
|
225
|
+
|
|
225
226
|
const emit = defineEmits<BaseTimePickerInputEvents>();
|
|
227
|
+
|
|
226
228
|
defineSlots<BaseTimePickerInputSlots>();
|
|
227
229
|
|
|
230
|
+
const config = useConfig();
|
|
231
|
+
|
|
228
232
|
const { t } = useLocale();
|
|
229
233
|
const logger = useLogger();
|
|
230
234
|
|
|
@@ -802,6 +802,37 @@ export type BbBreadcrumbsSlots = {
|
|
|
802
802
|
display: none;
|
|
803
803
|
}
|
|
804
804
|
|
|
805
|
+
/*
|
|
806
|
+
* Flush outer edge. A crumb paints no background in ANY state (base, hover
|
|
807
|
+
* and `aria-current` are all transparent, and BbBaseButton's ring is
|
|
808
|
+
* zero-spread), so its 4px inline padding is visible only as rhythm
|
|
809
|
+
* BETWEEN crumbs — at the component's own edge it is an invisible box
|
|
810
|
+
* pushing the first glyph off the text column it should align with. The
|
|
811
|
+
* list adds `--bb-ring-size` more, which is NOT dead: `overflow: hidden`
|
|
812
|
+
* clips at the padding box, so without it the ellipsis focus ring loses
|
|
813
|
+
* its outer 2px. Hence two different moves — zero the padding that buys
|
|
814
|
+
* nothing, bleed back the padding that does.
|
|
815
|
+
*
|
|
816
|
+
* Both are scoped to a list that IS the outer edge. With a prepend/append
|
|
817
|
+
* edge slot the list is interior, and the crumb next to that slot keeps
|
|
818
|
+
* its padding so the spacing there stays the same as between two crumbs.
|
|
819
|
+
*/
|
|
820
|
+
&__container > &__list:first-child {
|
|
821
|
+
margin-inline-start: calc(-1 * var(--bb-ring-size));
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
&__container > &__list:last-child {
|
|
825
|
+
margin-inline-end: calc(-1 * var(--bb-ring-size));
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
&__container > &__list:first-child > &__item:first-of-type &__breadcrumb {
|
|
829
|
+
padding-inline-start: 0;
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
&__container > &__list:last-child > &__item:last-of-type &__breadcrumb {
|
|
833
|
+
padding-inline-end: 0;
|
|
834
|
+
}
|
|
835
|
+
|
|
805
836
|
&__breadcrumb[aria-disabled='true'],
|
|
806
837
|
&__breadcrumb:disabled {
|
|
807
838
|
cursor: not-allowed;
|
|
@@ -27,8 +27,18 @@
|
|
|
27
27
|
<!-- v-if'd so idle buttons carry no spinner node (and no running
|
|
28
28
|
keyframe animation). The <Transition> keeps the fade smooth: the
|
|
29
29
|
node persists through the leave phase, so the sibling cross-fade
|
|
30
|
-
and label-slide CSS keep matching while everything animates back.
|
|
31
|
-
|
|
30
|
+
and label-slide CSS keep matching while everything animates back.
|
|
31
|
+
|
|
32
|
+
The <Transition> itself waits for the first load. It is two component
|
|
33
|
+
instances (the wrapper and BaseTransition) that render nothing at all
|
|
34
|
+
until `loading` first turns true, and a button that never loads —
|
|
35
|
+
every button in a table cell, and most buttons anywhere — paid for
|
|
36
|
+
both on every mount. `appear` is what makes the deferral invisible:
|
|
37
|
+
mounting the transition WITH its child already inside runs the enter
|
|
38
|
+
animation, exactly as a plain toggle would have. From then on
|
|
39
|
+
`hasLoadedOnce` stays true, so the leave animation has its transition
|
|
40
|
+
to run in. -->
|
|
41
|
+
<Transition v-if="hasLoadedOnce" appear name="bb-button-spinner">
|
|
32
42
|
<BbSpinner v-if="loading" class="bb-button__spinner" />
|
|
33
43
|
</Transition>
|
|
34
44
|
<BbIcon
|
|
@@ -59,11 +69,12 @@
|
|
|
59
69
|
<script setup lang="ts">
|
|
60
70
|
import { BbBaseButton, BbSpinner } from '@/index';
|
|
61
71
|
import BbIcon from '../BbIcon/BbIcon.vue';
|
|
62
|
-
import { computed, ref,
|
|
72
|
+
import { computed, ref, useAttrs, watchEffect } from 'vue';
|
|
63
73
|
import { pickBy } from '@/utilities/functions/pickBy';
|
|
64
74
|
import { noop } from '@/utilities/functions/noop';
|
|
65
75
|
import { useLocale } from '@/composables/useLocale';
|
|
66
76
|
import { useLogger } from '@/composables/useLogger';
|
|
77
|
+
import { useUntil } from '@/composables/useUntil';
|
|
67
78
|
import { removedPropsFor } from '@/deprecation/removedProps';
|
|
68
79
|
import { warnRemovedAttrs } from '@/utilities/functions/warnRemovedAttrs';
|
|
69
80
|
import { extractDomContainer } from '@/utilities/functions/extractDomContainer';
|
|
@@ -128,6 +139,9 @@ const loading = computed(
|
|
|
128
139
|
() => props.loading || (!!internalLoading.value && !props.disableAutoLoading)
|
|
129
140
|
);
|
|
130
141
|
|
|
142
|
+
/** Latches on the first load; gates the spinner's <Transition> — see the template. */
|
|
143
|
+
const hasLoadedOnce = useUntil(loading);
|
|
144
|
+
|
|
131
145
|
const onClick = async (event: Event) => {
|
|
132
146
|
if (loading.value && !props.interactiveWhileLoading) {
|
|
133
147
|
// router-link doesn't allow for prevent default but the logic stays
|
|
@@ -141,9 +155,20 @@ const onClick = async (event: Event) => {
|
|
|
141
155
|
const falseVal = props.falseValue;
|
|
142
156
|
modelValue.value = isEqual(modelValue.value, trueVal) ? falseVal : trueVal;
|
|
143
157
|
}
|
|
158
|
+
// Call the handler FIRST, then decide. Auto-loading is documented as
|
|
159
|
+
// tracking *async* click handlers, but the counter used to increment before
|
|
160
|
+
// the call, so a plain sync handler still passed through a loading state for
|
|
161
|
+
// one microtask. In isolation that never paints — the flip and Vue's
|
|
162
|
+
// re-render settle in the same drain. In a real app it does: a consumer's
|
|
163
|
+
// sync handler that opened a dialog flickered the spinner on every click,
|
|
164
|
+
// and `disable-auto-loading` was the only cure. A sync handler now never
|
|
165
|
+
// touches the counter at all, so there is no window to catch.
|
|
166
|
+
const result = ((attrs.onClick ?? noop) as (...args: any[]) => any)(event);
|
|
167
|
+
if (!result || typeof result.then !== 'function') return result;
|
|
168
|
+
|
|
144
169
|
internalLoading.value++;
|
|
145
170
|
try {
|
|
146
|
-
await
|
|
171
|
+
return await result;
|
|
147
172
|
} finally {
|
|
148
173
|
// Always release the auto-loading counter, even if the handler rejects,
|
|
149
174
|
// so a failing async onClick doesn't leave the button stuck loading.
|
|
@@ -176,27 +201,29 @@ const sizeClasses = computed(() => {
|
|
|
176
201
|
);
|
|
177
202
|
});
|
|
178
203
|
|
|
179
|
-
|
|
204
|
+
/** Props consumed here, never forwarded to the base button. */
|
|
205
|
+
const OWN_PROPS = new Set([
|
|
206
|
+
'append:icon',
|
|
207
|
+
'disableAutoLoading',
|
|
208
|
+
'disabled',
|
|
209
|
+
'interactiveWhileLoading',
|
|
210
|
+
'falseValue',
|
|
211
|
+
'group',
|
|
212
|
+
'icon',
|
|
213
|
+
'loading',
|
|
214
|
+
'modelValue',
|
|
215
|
+
'prepend:icon',
|
|
216
|
+
'size',
|
|
217
|
+
'trueValue',
|
|
218
|
+
'variant',
|
|
219
|
+
]);
|
|
220
|
+
|
|
221
|
+
// A `computed`, not a getter `toRef`: the getter re-ran the whole pick on
|
|
222
|
+
// every read — once per render of every button — which a virtualized table
|
|
223
|
+
// mounting a couple of buttons per row turned into measurable scroll cost.
|
|
224
|
+
const propsToPass = computed(() => ({
|
|
180
225
|
...forwardedAttrs.value,
|
|
181
|
-
...pickBy(
|
|
182
|
-
props,
|
|
183
|
-
(_, key) =>
|
|
184
|
-
![
|
|
185
|
-
'append:icon',
|
|
186
|
-
'disableAutoLoading',
|
|
187
|
-
'disabled',
|
|
188
|
-
'interactiveWhileLoading',
|
|
189
|
-
'falseValue',
|
|
190
|
-
'group',
|
|
191
|
-
'icon',
|
|
192
|
-
'loading',
|
|
193
|
-
'modelValue',
|
|
194
|
-
'prepend:icon',
|
|
195
|
-
'size',
|
|
196
|
-
'trueValue',
|
|
197
|
-
'variant',
|
|
198
|
-
].includes(key)
|
|
199
|
-
),
|
|
226
|
+
...pickBy(props, (_, key) => !OWN_PROPS.has(key)),
|
|
200
227
|
}));
|
|
201
228
|
|
|
202
229
|
/**
|
|
@@ -315,9 +315,23 @@ export type BbCheckboxSlots = {
|
|
|
315
315
|
.bb-base-input-container__layout--horizontal {
|
|
316
316
|
align-items: flex-start;
|
|
317
317
|
|
|
318
|
+
/*
|
|
319
|
+
* `align-items` + `min-height` are what pin the control to the
|
|
320
|
+
* LABEL'S FIRST LINE instead of the block centre — measured: with a
|
|
321
|
+
* 4-line label the control's mid sits exactly on the first line's
|
|
322
|
+
* mid, and 28px above the block centre.
|
|
323
|
+
*
|
|
324
|
+
* There used to be a `display: inline-flex` here too, and it was
|
|
325
|
+
* doing none of that vertical work — but it silently killed
|
|
326
|
+
* `input-position`, whose only lever is `justify-items` (a grid
|
|
327
|
+
* property, inert on a flex container). So a described row with
|
|
328
|
+
* `input-position="right"` painted its control at the START of the
|
|
329
|
+
* column: 182px out on a 198px column (Q20.2). Removing the one
|
|
330
|
+
* declaration restores left/center/right and leaves the vertical
|
|
331
|
+
* geometry byte-identical.
|
|
332
|
+
*/
|
|
318
333
|
.bb-base-input-container__control {
|
|
319
334
|
align-items: center;
|
|
320
|
-
display: inline-flex;
|
|
321
335
|
min-height: var(--bb-label-lh);
|
|
322
336
|
}
|
|
323
337
|
}
|
|
@@ -282,7 +282,8 @@ export type BbCheckboxGroupProps<T> = {
|
|
|
282
282
|
/**
|
|
283
283
|
* Legend rendering mode. `'outside'` renders the legend above the fieldset in the normal flow;
|
|
284
284
|
* `'inside'` overlays the legend inside the fieldset border.
|
|
285
|
-
* Floating mode is not supported for checkbox
|
|
285
|
+
* Floating mode is not supported for option groups (checkbox, radio or
|
|
286
|
+
* switch) — there is no single field for the legend to float against.
|
|
286
287
|
*/
|
|
287
288
|
legendMode?: 'outside' | 'inside';
|
|
288
289
|
|
|
@@ -68,9 +68,15 @@ export type BbCollapsibleProps = {
|
|
|
68
68
|
/**
|
|
69
69
|
* Used by v-model to trigger opening / closing the collapsible.
|
|
70
70
|
*
|
|
71
|
+
* Optional, matching the runtime: `withDefaults` supplies `false`, so an
|
|
72
|
+
* omitted binding renders closed and Vue never warns. It was typed required
|
|
73
|
+
* while carrying that default, which made the manifest publish a row that
|
|
74
|
+
* was `required: true` AND `default: false` — a contradiction that read as
|
|
75
|
+
* a generator bug.
|
|
76
|
+
*
|
|
71
77
|
* @defaultValue `false`
|
|
72
78
|
*/
|
|
73
|
-
modelValue
|
|
79
|
+
modelValue?: boolean;
|
|
74
80
|
};
|
|
75
81
|
|
|
76
82
|
export type BbCollapsibleSlots = {
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
|
|
67
67
|
<script setup lang="ts">
|
|
68
68
|
import { ref, computed } from 'vue';
|
|
69
|
-
import {
|
|
69
|
+
import { useConfig } from '@/composables/useConfig';
|
|
70
70
|
import { isNotNil } from '@/utilities/functions/isNotNil';
|
|
71
71
|
import { removedPropsFor } from '@/deprecation/removedProps';
|
|
72
72
|
import { warnRemovedAttrs } from '@/utilities/functions/warnRemovedAttrs';
|
|
@@ -78,7 +78,6 @@ import type {
|
|
|
78
78
|
BbColorInputEvents,
|
|
79
79
|
BbColorInputSlots,
|
|
80
80
|
} from './types';
|
|
81
|
-
export type { BbColorInputProps, BbColorInputEvents, BbColorInputSlots };
|
|
82
81
|
|
|
83
82
|
const props = withDefaults(defineProps<BbColorInputProps>(), {
|
|
84
83
|
// `undefined` (declared, not omitted) keeps `adaptive` three-state: it
|
|
@@ -87,10 +86,10 @@ const props = withDefaults(defineProps<BbColorInputProps>(), {
|
|
|
87
86
|
// keeping the Boolean type so the valueless `adaptive` shorthand → `true`.
|
|
88
87
|
adaptive: undefined,
|
|
89
88
|
});
|
|
90
|
-
|
|
91
89
|
const emit = defineEmits<BaseColorInputEvents>();
|
|
92
|
-
|
|
93
90
|
defineSlots<BbColorInputSlots>();
|
|
91
|
+
const config = useConfig();
|
|
92
|
+
export type { BbColorInputProps, BbColorInputEvents, BbColorInputSlots };
|
|
94
93
|
|
|
95
94
|
if (process.env.NODE_ENV !== 'production')
|
|
96
95
|
warnRemovedAttrs('BbColorInput', removedPropsFor('BbColorInput'));
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
|
|
81
81
|
<script setup lang="ts">
|
|
82
82
|
import { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue';
|
|
83
|
-
import {
|
|
83
|
+
import { useConfig } from '@/composables/useConfig';
|
|
84
84
|
import { createReusableTemplate } from '@vueuse/core';
|
|
85
85
|
import { extractDomContainer } from '@/utilities/functions/extractDomContainer';
|
|
86
86
|
import { useClosingInert } from '@/composables/useClosingInert';
|
|
@@ -98,7 +98,6 @@ import type {
|
|
|
98
98
|
BbColorPaletteSlots,
|
|
99
99
|
} from './types';
|
|
100
100
|
import { transitions } from '@/utilities/misc/transitions';
|
|
101
|
-
export type { BbColorPaletteProps, BbColorPaletteEvents, BbColorPaletteSlots };
|
|
102
101
|
|
|
103
102
|
const props = withDefaults(defineProps<BbColorPaletteProps>(), {
|
|
104
103
|
// `undefined` (declared, not omitted) keeps `adaptive` three-state: it disables
|
|
@@ -112,10 +111,10 @@ const props = withDefaults(defineProps<BbColorPaletteProps>(), {
|
|
|
112
111
|
eyeDropper: false,
|
|
113
112
|
transitionDuration: transitions.medium,
|
|
114
113
|
});
|
|
115
|
-
|
|
116
114
|
const emit = defineEmits<BbColorPaletteEvents>();
|
|
117
|
-
|
|
118
115
|
defineSlots<BbColorPaletteSlots>();
|
|
116
|
+
const config = useConfig();
|
|
117
|
+
export type { BbColorPaletteProps, BbColorPaletteEvents, BbColorPaletteSlots };
|
|
119
118
|
|
|
120
119
|
if (process.env.NODE_ENV !== 'production')
|
|
121
120
|
warnRemovedAttrs('BbColorPalette', removedPropsFor('BbColorPalette'));
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
</template>
|
|
105
105
|
|
|
106
106
|
<script setup lang="ts">
|
|
107
|
-
import {
|
|
107
|
+
import { useConfig } from '@/composables/useConfig';
|
|
108
108
|
import { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue';
|
|
109
109
|
import { createReusableTemplate } from '@vueuse/core';
|
|
110
110
|
import { extractDomContainer } from '@/utilities/functions/extractDomContainer';
|
|
@@ -144,7 +144,11 @@ const props = withDefaults(defineProps<BbDatePickerProps>(), {
|
|
|
144
144
|
});
|
|
145
145
|
|
|
146
146
|
const emit = defineEmits<BbDatePickerEvents>();
|
|
147
|
+
|
|
147
148
|
defineSlots<BbDatePickerSlots>();
|
|
149
|
+
|
|
150
|
+
const config = useConfig();
|
|
151
|
+
|
|
148
152
|
/**
|
|
149
153
|
* The time rail is a `datetime` affordance only. Every former `props.datetime`
|
|
150
154
|
* read goes through this, so the type union stays the single source of truth.
|
|
@@ -88,7 +88,7 @@ import BaseDatePickerInput from '../BbBaseDatePickerInput/BbBaseDatePickerInput.
|
|
|
88
88
|
import BaseInputContainer from '../BbBaseInputContainer/BbBaseInputContainer.vue';
|
|
89
89
|
import type { BaseDatePickerInputEvents } from '../BbBaseDatePickerInput/types';
|
|
90
90
|
import { ref, computed, onBeforeUnmount, onDeactivated } from 'vue';
|
|
91
|
-
import {
|
|
91
|
+
import { useConfig } from '@/composables/useConfig';
|
|
92
92
|
import { removedPropsFor } from '@/deprecation/removedProps';
|
|
93
93
|
import { warnRemovedAttrs } from '@/utilities/functions/warnRemovedAttrs';
|
|
94
94
|
import { isNotEmpty } from '@/utilities/functions/isNotEmpty';
|
|
@@ -106,9 +106,13 @@ const props = withDefaults(defineProps<BbDatePickerInputProps>(), {
|
|
|
106
106
|
// resolves to `true`.
|
|
107
107
|
adaptive: undefined,
|
|
108
108
|
});
|
|
109
|
+
|
|
109
110
|
const emit = defineEmits<BaseDatePickerInputEvents>();
|
|
111
|
+
|
|
110
112
|
defineSlots<BbDatePickerInputSlots>();
|
|
111
113
|
|
|
114
|
+
const config = useConfig();
|
|
115
|
+
|
|
112
116
|
if (process.env.NODE_ENV !== 'production')
|
|
113
117
|
warnRemovedAttrs('BbDatePickerInput', removedPropsFor('BbDatePickerInput'));
|
|
114
118
|
|